diff --git a/.clj-kondo/babashka/fs/config.edn b/.clj-kondo/babashka/fs/config.edn new file mode 100644 index 00000000000..23f36094841 --- /dev/null +++ b/.clj-kondo/babashka/fs/config.edn @@ -0,0 +1 @@ +{:lint-as {babashka.fs/with-temp-dir clojure.core/let}} diff --git a/.clj-kondo/babashka/sci/config.edn b/.clj-kondo/babashka/sci/config.edn new file mode 100644 index 00000000000..60ea30d04f3 --- /dev/null +++ b/.clj-kondo/babashka/sci/config.edn @@ -0,0 +1 @@ +{:hooks {:macroexpand {sci.core/copy-ns sci.core/copy-ns}}} diff --git a/.clj-kondo/babashka/sci/sci/core.clj b/.clj-kondo/babashka/sci/sci/core.clj new file mode 100644 index 00000000000..ac324eecad5 --- /dev/null +++ b/.clj-kondo/babashka/sci/sci/core.clj @@ -0,0 +1,9 @@ +(ns sci.core) + +(defmacro copy-ns + ([ns-sym sci-ns] + `(copy-ns ~ns-sym ~sci-ns nil)) + ([ns-sym sci-ns opts] + `[(quote ~ns-sym) + ~sci-ns + (quote ~opts)])) diff --git a/.clj-kondo/config.edn b/.clj-kondo/config.edn new file mode 100644 index 00000000000..c653dc1048d --- /dev/null +++ b/.clj-kondo/config.edn @@ -0,0 +1,113 @@ +{:config-paths ["status-im"] + :output {:exclude-files ["src/user.cljs" "src/dev/user.cljs"]} + :lint-as {legacy.status-im.utils.views/defview clojure.core/defn + legacy.status-im.utils.views/letsubs clojure.core/let + reagent.core/with-let clojure.core/let + legacy.status-im.utils.fx/defn clj-kondo.lint-as/def-catch-all + utils.re-frame/defn clojure.core/defn + quo.react/with-deps-check clojure.core/fn + quo.previews.preview/list-comp clojure.core/for + legacy.status-im.utils.styles/def clojure.core/def + legacy.status-im.utils.styles/defn clojure.core/defn + test-helpers.unit/deftest-sub clojure.core/defn + test-helpers.unit/deftest-event clojure.core/defn + + taoensso.tufte/defnp clojure.core/defn} + :linters {:clojure-lsp/unused-public-var {:exclude-when-defined-by #{utils.re-frame/defn} + :exclude #{ + ;; even if we are not + ;; using color now, we + ;; will need it later + quo.foundations.colors + + ;; same for funcs from + ;; native-module + native-module.core + + ;; some funcs used + ;; temporarily during + ;; development + test-helpers.component + test-helpers.unit + + ;; not sure if unused + ;; functions here should + ;; be removed: + keycard.keycard + react-native.fs}} + :case-duplicate-test {:level :error} + :case-quoted-test {:level :error} + :case-symbol-test {:level :error} + :clj-kondo-config {:level :error} + :cond-else {:level :error} + :condition-always-true {:level :error} + :conflicting-alias {:level :error} + :consistent-alias {:level :error + :aliases {clojure.set set + clojure.string string + clojure.walk walk + malli.core malli + malli.dev.pretty malli.pretty + malli.dev.virhe malli.virhe + malli.error malli.error + malli.generator malli.generator + malli.transform malli.transform + malli.util malli.util + promesa.core promesa + schema.core schema + status-im.feature-flags ff + taoensso.timbre log}} + :deprecated-namespace {:level :warning} + :docstring-blank {:level :error} + :equals-true {:level :error} + :inline-def {:level :error} + :invalid-arity {:skip-args [legacy.status-im.utils.fx/defn + utils.re-frame/defn + utils.re-frame/merge]} + :loop-without-recur {:level :error} + :minus-one {:level :error} + :misplaced-docstring {:level :error} + :missing-body-in-when {:level :error} + :missing-clause-in-try {:level :error} + :missing-else-branch {:level :error} + :multiple-async-in-deftest {:level :error} + :not-empty? {:level :error} + :plus-one {:level :error} + :redundant-do {:level :error} + :redundant-let {:level :error} + :refer-all {:level :error} + ;; ignore error in config itself saying that `:shadowed-fn-param` is unknown + #_{:clj-kondo/ignore [:clj-kondo-config]} + :shadowed-fn-param {:level :error} + :shadowed-var {:level :error + ;; We temporarily use :include to define an + ;; allowlist of core Clojure vars. In the + ;; future, as we progressively fix shadowed + ;; vars, we should be able to delete this + ;; option and lint all vars. + :exclude [type name]} + :self-requiring-namespace {:level :error} + :single-operand-comparison {:level :error} + :syntax {:level :error} + :unbound-destructuring-default {:level :error} + :underscore-in-namespace {:level :error} + :uninitialized-var {:level :error} + :unknown-require-option {:level :error} + :unreachable-code {:level :error} + :unresolved-namespace {:level :error} + ;; TODO remove number when this is fixed + ;; https://github.com/borkdude/clj-kondo/issues/867 + :unresolved-symbol {:exclude [PersistentPriorityMap.EMPTY + number + legacy.status-im.test-helpers/restore-app-db + (cljs.test/is [match-strict?])]} + :unresolved-var {:level :error} + :unsorted-required-namespaces {:level :error} + :unused-alias {:level :warning} + :unused-binding {:level :error} + :unused-import {:level :error} + :unused-namespace {:level :error} + :unused-private-var {:level :error} + :unused-referred-var {:level :error} + :use {:level :error}} + :config-in-ns {mocks.js-dependencies {:linters {:clojure-lsp/unused-public-var {:level :off}}}}} diff --git a/.clj-kondo/funcool/promesa/config.edn b/.clj-kondo/funcool/promesa/config.edn new file mode 100644 index 00000000000..1844f77c5a6 --- /dev/null +++ b/.clj-kondo/funcool/promesa/config.edn @@ -0,0 +1,9 @@ +{:lint-as {promesa.core/-> clojure.core/-> + promesa.core/->> clojure.core/->> + promesa.core/as-> clojure.core/as-> + promesa.core/let clojure.core/let + promesa.core/plet clojure.core/let + promesa.core/loop clojure.core/loop + promesa.core/recur clojure.core/recur + promesa.core/with-redefs clojure.core/with-redefs + promesa.core/doseq clojure.core/doseq}} diff --git a/.clj-kondo/metosin/malli/config.edn b/.clj-kondo/metosin/malli/config.edn new file mode 100644 index 00000000000..0f8b25ccfd9 --- /dev/null +++ b/.clj-kondo/metosin/malli/config.edn @@ -0,0 +1,2 @@ +{:lint-as {malli.experimental/defn schema.core/defn} + :linters {:unresolved-symbol {:exclude [(malli.core/=>)]}}} diff --git a/.clj-kondo/nubank/matcher-combinators/config.edn b/.clj-kondo/nubank/matcher-combinators/config.edn new file mode 100644 index 00000000000..ea4ded7232f --- /dev/null +++ b/.clj-kondo/nubank/matcher-combinators/config.edn @@ -0,0 +1,4 @@ +{:linters + {:unresolved-symbol + {:exclude [(cljs.test/is [match? thrown-match?]) + (clojure.test/is [match? thrown-match?])]}}} diff --git a/.clj-kondo/rewrite-clj/rewrite-clj/config.edn b/.clj-kondo/rewrite-clj/rewrite-clj/config.edn new file mode 100644 index 00000000000..19ecae96a0f --- /dev/null +++ b/.clj-kondo/rewrite-clj/rewrite-clj/config.edn @@ -0,0 +1,5 @@ +{:lint-as + {rewrite-clj.zip/subedit-> clojure.core/-> + rewrite-clj.zip/subedit->> clojure.core/->> + rewrite-clj.zip/edit-> clojure.core/-> + rewrite-clj.zip/edit->> clojure.core/->>}} diff --git a/.clj-kondo/status-im/cljs/test.clj b/.clj-kondo/status-im/cljs/test.clj new file mode 100644 index 00000000000..6e3fa07f487 --- /dev/null +++ b/.clj-kondo/status-im/cljs/test.clj @@ -0,0 +1,21 @@ +(ns cljs.test + (:require [clj-kondo.hooks-api :as hooks])) + +(defn deftest + "Verify test name passed to `cljs.test/deftest` is suffixed with -test and not + prefixed with test-." + [{:keys [node]}] + (let [[_ test-name-node & _] (:children node) + test-name (str (hooks/sexpr test-name-node))] + (when (and (hooks/token-node? test-name-node) + (or (not (re-find #"^.*-test$" test-name)) + (re-find #"^test-.*$" test-name))) + (hooks/reg-finding! (assoc (meta test-name-node) + :message "Test name should be suffixed with -test" + :type :status-im.linter/inconsistent-test-name))))) + +(comment + ;; Invalid + (deftest {:node (hooks/parse-string "(deftest foo-tes (println :hello))")}) + (deftest {:node (hooks/parse-string "(deftest test-foo-test (println :hello))")}) +) diff --git a/.clj-kondo/status-im/config.edn b/.clj-kondo/status-im/config.edn new file mode 100644 index 00000000000..e2af52c1949 --- /dev/null +++ b/.clj-kondo/status-im/config.edn @@ -0,0 +1,11 @@ +{:hooks + {:analyze-call + {utils.i18n/label utils.i18n/label + test-helpers.component/get-all-by-translation-text utils.i18n/label + test-helpers.component/get-by-translation-text utils.i18n/label + test-helpers.component/query-all-by-translation-text utils.i18n/label + test-helpers.component/query-by-translation-text utils.i18n/label + + cljs.test/deftest cljs.test/deftest}} + :linters {:status-im.linter/invalid-translation-keyword {:level :error} + :status-im.linter/inconsistent-test-name {:level :error}}} diff --git a/.clj-kondo/status-im/utils/i18n.clj b/.clj-kondo/status-im/utils/i18n.clj new file mode 100644 index 00000000000..bde1603bae5 --- /dev/null +++ b/.clj-kondo/status-im/utils/i18n.clj @@ -0,0 +1,26 @@ +(ns utils.i18n + (:require [clj-kondo.hooks-api :as hooks])) + +(defn label + "Verify call to `utils.i18n/label` pass the translation keyword qualified with `t`." + [{:keys [node]}] + (let [[_ translation-key-node & _] (:children node)] + (when (and (hooks/keyword-node? translation-key-node) + (not= "t" (-> translation-key-node hooks/sexpr namespace))) + (hooks/reg-finding! (assoc (meta translation-key-node) + :message "Translation keyword should be qualified with \"t\"" + :type :status-im.linter/invalid-translation-keyword))))) + +(comment + ;; Valid + (label {:node (hooks/parse-string "(i18n/label :t/foo {:var \"hello\"})") + :cljc false + :lang :cljs + :filename "" + :config {} + :ns "" + :context nil}) + + ;; Invalid + (label {:node (hooks/parse-string "(i18n/label :foo)")}) +) diff --git a/.clj-kondo/taoensso/encore/config.edn b/.clj-kondo/taoensso/encore/config.edn new file mode 100644 index 00000000000..7b0ff3c2b7b --- /dev/null +++ b/.clj-kondo/taoensso/encore/config.edn @@ -0,0 +1 @@ +{:hooks {:analyze-call {taoensso.encore/defalias taoensso.encore/defalias}}} diff --git a/.clj-kondo/taoensso/encore/taoensso/encore.clj b/.clj-kondo/taoensso/encore/taoensso/encore.clj new file mode 100644 index 00000000000..7f6d30ac94e --- /dev/null +++ b/.clj-kondo/taoensso/encore/taoensso/encore.clj @@ -0,0 +1,16 @@ +(ns taoensso.encore + (:require + [clj-kondo.hooks-api :as hooks])) + +(defn defalias [{:keys [node]}] + (let [[sym-raw src-raw] (rest (:children node)) + src (if src-raw src-raw sym-raw) + sym (if src-raw + sym-raw + (symbol (name (hooks/sexpr src))))] + {:node (with-meta + (hooks/list-node + [(hooks/token-node 'def) + (hooks/token-node (hooks/sexpr sym)) + (hooks/token-node (hooks/sexpr src))]) + (meta src))})) diff --git a/.dependabot/config.yml b/.dependabot/config.yml new file mode 100755 index 00000000000..e94d38dc945 --- /dev/null +++ b/.dependabot/config.yml @@ -0,0 +1,22 @@ +# https://dependabot.com/docs/config-file/ + +version: 1 +update_configs: + # Keep build.gradle files up to date, batching pull requests weekly + - package_manager: "java:gradle" + directory: "/android" + update_schedule: "weekly" + default_reviewers: + - "jakubgs" + allowed_updates: + - match: + update_type: "security" + # Keep /mobile/js_files/yarn.lock up to date, batching pull requests weekly + - package_manager: "javascript" + directory: "/" + update_schedule: "weekly" + allowed_updates: + - match: + update_type: security + default_reviewers: + - "jakubgs" diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000000..a6e9f8eeeac --- /dev/null +++ b/.dockerignore @@ -0,0 +1,107 @@ + +.dockerignore +docker-build +env/dev/env/config.cljs +modules/react-native-status/android/build + + +# OSX +# +.DS_Store +.projectile +.cljs_rhino_repl/ +.#* + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IJ +# +.idea +.gradle +*.iml + +# Atom +.tags* + +# node.js +# +node_modules/ +npm-debug.log + +# BUCK +buck-out/ +\.buckd/ +android/app/libs +android/app/obj +android/app/build +android/build +android/keystores/debug.keystore + +# Generated by clj-rn +# +index.android.js +index.ios.js +target/ +env/dev/env/config.cljs +externs/ +shim.js + +# Generated by lein voom +# +/pom.xml + + +# Figwheel +# +figwheel_server.log +.nrepl-port + +# Lein +# +.lein-failures +.lein-repl-history + +## Doo +# +out +doo-index.html + +# Status +Statusgo.framework +status-dev-cli + +#ios +ios/Pods +ios/StatusIm.xcworkspace +.ruby-version + +#python +*.pyc +*.cache + +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots diff --git a/.env b/.env new file mode 100644 index 00000000000..75cb04aac3a --- /dev/null +++ b/.env @@ -0,0 +1,42 @@ +CACHED_WEBVIEWS_ENABLED=1 +DEBUG_WEBVIEW=1 +DEV_BUILD=1 +ETHEREUM_DEV_CLUSTER=1 +EXTENSIONS=0 +GROUP_CHATS_ENABLED=1 +LOG_LEVEL=info +MAILSERVER_CONFIRMATIONS_ENABLED=1 +PFS_ENCRYPTION_ENABLED=1 +PFS_TOGGLE_VISIBLE=1 +POW_TARGET=0.002 +POW_TIME=1 +SNOOPY=0 +RPC_NETWORKS_ONLY=0 +PARTITIONED_TOPIC=0 +CONTRACT_NODES=1 +STATUS_GO_PROTOCOL=0 +STATUS_GO_ENABLE_NIMBUS=0 +KEYCARD_TEST_MENU=0 +QR_READ_TEST_MENU=1 +ENABLE_ROOT_ALERT=1 +DEBUG_OR_PR_BUILD=1 +APN_TOPIC=im.status.ethereum.pr +COMMUNITIES_ENABLED=1 +DATABASE_MANAGEMENT_ENABLED=1 +DELETE_MESSAGE_ENABLED=1 +COMMANDS_ENABLED=1 +TWO_MINUTES_SYNCING=1 +SWAP_ENABLED=1 +STICKERS_TEST_ENABLED=1 +LOCAL_PAIRING_ENABLED=1 +TEST_STATEOFUS=1 +FAST_CREATE_COMMUNITY_ENABLED=1 +TEST_NETWORKS_ENABLED=1 +SHOW_NOT_IMPLEMENTED_FEATURES=0 +ENABLE_ALERT_BANNER=0 +FLAG_WALLET_CONNECT_ENABLED=1 +API_LOGGING_ENABLED=1 +SENTRY_ENABLED=0 +SENTRY_ENVIRONMENT=ci-main +USE_PUBLIC_LOG_DIR=0 +FLAG_MARKET_ENABLED=0 diff --git a/.env.e2e b/.env.e2e new file mode 100644 index 00000000000..17e9982f543 --- /dev/null +++ b/.env.e2e @@ -0,0 +1,46 @@ +DEBUG_WEBVIEW=1 +ETHEREUM_DEV_CLUSTER=1 +EXTENSIONS=0 +FLEET=status.staging +GROUP_CHATS_ENABLED=1 +LOG_LEVEL=debug +MAILSERVER_CONFIRMATIONS_ENABLED=0 +PAIRING_POPUP_DISABLED=1 +PFS_ENCRYPTION_ENABLED=1 +PFS_TOGGLE_VISIBLE=1 +POW_TARGET=0.002 +POW_TIME=1 +SNOOPY=0 +STICKERS_ENABLED=1 +PARTITIONED_TOPIC=0 +CONTRACT_NODES=1 +BLANK_PREVIEW=0 +TOOLTIP_EVENTS=1 +COMMANDS_ENABLED=1 +KEYCARD_TEST_MENU=1 +QR_READ_TEST_MENU=1 +ENABLE_ROOT_ALERT=0 +APN_TOPIC=im.status.ethereum.pr +VERIFY_TRANSACTION_CHAIN_ID=11155111 +VERIFY_ENS_CHAIN_ID=11155111 +TEST_STATEOFUS=1 +DATABASE_MANAGEMENT_ENABLED=1 +COMMUNITIES_ENABLED=1 +COMMUNITIES_MANAGEMENT_ENABLED=1 +DELETE_MESSAGE_ENABLED=1 +TWO_MINUTES_SYNCING=1 +STICKERS_TEST_ENABLED=1 +LOCAL_PAIRING_ENABLED=1 +FAST_CREATE_COMMUNITY_ENABLED=1 +TEST_NETWORKS_ENABLED=1 +SHOW_NOT_IMPLEMENTED_FEATURES=1 +DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000 +DELETE_MESSAGE_UNDO_TIME_LIMIT=10000 +ENABLE_ALERT_BANNER=1 +FLAG_WALLET_CONNECT_ENABLED=1 +MOBILE_DATA_SYNCING_TOGGLE_ENABLE=0 +API_LOGGING_ENABLED=1 +SENTRY_ENABLED=0 +SENTRY_ENVIRONMENT=ci-main +USE_PUBLIC_LOG_DIR=1 +VIEW_ID_TRACKER=1 diff --git a/.env.jenkins b/.env.jenkins new file mode 100644 index 00000000000..05d2b95ab84 --- /dev/null +++ b/.env.jenkins @@ -0,0 +1,44 @@ +CACHED_WEBVIEWS_ENABLED=1 +DEBUG_WEBVIEW=1 +ETHEREUM_DEV_CLUSTER=1 +EXTENSIONS=0 +GROUP_CHATS_ENABLED=1 +LOG_LEVEL=debug +MAILSERVER_CONFIRMATIONS_ENABLED=1 +MAINNET_WARNING_ENABLED=1 +PFS_ENCRYPTION_ENABLED=1 +PFS_TOGGLE_VISIBLE=1 +POW_TARGET=0.002 +POW_TIME=1 +SNOOPY=0 +RPC_NETWORKS_ONLY=0 +PARTITIONED_TOPIC=0 +CONTRACT_NODES=1 +STATUS_GO_ENABLE_NIMBUS=0 +COMMANDS_ENABLED=1 +KEYCARD_TEST_MENU=0 +ENABLE_ROOT_ALERT=1 +DISABLE_WALLET_ON_MOBILE_NETWORK=1 +APN_TOPIC=im.status.ethereum.pr +VERIFY_TRANSACTION_CHAIN_ID=11155111 +VERIFY_ENS_CHAIN_ID=11155111 +TEST_STATEOFUS=1 +BLANK_PREVIEW=0 +DATABASE_MANAGEMENT_ENABLED=1 +COMMUNITIES_ENABLED=1 +COMMUNITIES_MANAGEMENT_ENABLED=1 +DELETE_MESSAGE_ENABLED=1 +TWO_MINUTES_SYNCING=1 +DEBUG_OR_PR_BUILD=1 +STICKERS_TEST_ENABLED=1 +LOCAL_PAIRING_ENABLED=1 +FAST_CREATE_COMMUNITY_ENABLED=1 +TEST_NETWORKS_ENABLED=1 +ENABLE_ALERT_BANNER=1 +FLAG_WALLET_CONNECT_ENABLED=1 +API_LOGGING_ENABLED=1 +SENTRY_ENABLED=0 +SENTRY_ENVIRONMENT=ci-main +USE_PUBLIC_LOG_DIR=0 +VIEW_ID_TRACKER=1 +GOOGLE_FREE=0 diff --git a/.env.nightly b/.env.nightly new file mode 100644 index 00000000000..c6c4471d072 --- /dev/null +++ b/.env.nightly @@ -0,0 +1,29 @@ +DEBUG_WEBVIEW=1 +ETHEREUM_DEV_CLUSTER=1 +EXTENSIONS=0 +GROUP_CHATS_ENABLED=1 +LOG_LEVEL=debug +MAILSERVER_CONFIRMATIONS_ENABLED=1 +MAINNET_WARNING_ENABLED=1 +PFS_ENCRYPTION_ENABLED=1 +PFS_TOGGLE_VISIBLE=1 +POW_TARGET=0.002 +POW_TIME=1 +SNOOPY=0 +KEYCARD_TEST_MENU=0 +RPC_NETWORKS_ONLY=0 +PARTITIONED_TOPIC=0 +CONTRACT_NODES=1 +ENABLE_ROOT_ALERT=1 +BLANK_PREVIEW=0 +COMMUNITIES_ENABLED=1 +DATABASE_MANAGEMENT_ENABLED=1 +DELETE_MESSAGE_ENABLED=1 +FAST_CREATE_COMMUNITY_ENABLED=0 +TEST_NETWORKS_ENABLED=0 +ENABLE_ALERT_BANNER=1 +FLAG_WALLET_CONNECT_ENABLED=1 +API_LOGGING_ENABLED=1 +SENTRY_ENABLED=1 +SENTRY_ENVIRONMENT=ci-nightly +USE_PUBLIC_LOG_DIR=0 diff --git a/.env.release b/.env.release new file mode 100644 index 00000000000..74a88a0409a --- /dev/null +++ b/.env.release @@ -0,0 +1,26 @@ +DEBUG_WEBVIEW=0 +ETHEREUM_DEV_CLUSTER=0 +EXTENSIONS=0 +GROUP_CHATS_ENABLED=1 +LOG_LEVEL=error +MAILSERVER_CONFIRMATIONS_ENABLED=1 +MAINNET_WARNING_ENABLED=1 +PFS_ENCRYPTION_ENABLED=1 +PFS_TOGGLE_VISIBLE=0 +POW_TARGET=0.002 +POW_TIME=1 +SNOOPY=0 +KEYCARD_TEST_MENU=0 +RPC_NETWORKS_ONLY=1 +PARTITIONED_TOPIC=0 +ENABLE_ROOT_ALERT=1 +MAX_IMAGES_BATCH=1 +DELETE_MESSAGE_ENABLED=1 +FAST_CREATE_COMMUNITY_ENABLED=0 +TEST_NETWORKS_ENABLED=0 +STATUS_PROXY_STAGE_NAME=prod +FLAG_WALLET_CONNECT_ENABLED=1 +API_LOGGING_ENABLED=0 +SENTRY_ENABLED=1 +SENTRY_ENVIRONMENT=production +USE_PUBLIC_LOG_DIR=0 diff --git a/.envrc b/.envrc new file mode 100644 index 00000000000..a8a760658e1 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +layout node diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000000..187894b6af2 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: '@react-native', +}; diff --git a/.flowconfig b/.flowconfig index b69d071bc27..9beb474135b 100644 --- a/.flowconfig +++ b/.flowconfig @@ -20,39 +20,78 @@ # Ignore duplicate module providers # For RN Apps installed via npm, "Libraries" folder is inside node_modules/react-native but in the source repo it is in the root -.*/Libraries/react-native/React.js +node_modules/react-native/Libraries/react-native/React.js .*/Libraries/react-native/ReactNative.js .*/node_modules/jest-runtime/build/__tests__/.* +; Ignore polyfills +node_modules/react-native/Libraries/polyfills/.* + +; These should not be required directly +; require from fbjs/lib instead: require('fbjs/lib/warning') +node_modules/warning/.* +; Flow doesn't support platforms +.*/Libraries/Utilities/LoadingView.js +[untyped] +.*/node_modules/@react-native-community/cli/.*/.* + [include] [libs] node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow -flow/ +node_modules/react-native/flow/ [options] -module.system=haste +esproposal.optional_chaining=enable +esproposal.nullish_coalescing=enable esproposal.class_static_fields=enable esproposal.class_instance_fields=enable +module.file_ext=.js +module.file_ext=.json +module.file_ext=.ios.js + +module.system=haste +module.system.haste.use_name_reducers=true +# get basename +# get basename +module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' +module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' +module.system.haste.paths.blacklist=.*/__tests__/.* +module.system.haste.paths.blacklist=.*/__tests__/.* +module.system.haste.paths.blacklist=.*/__mocks__/.* +module.system.haste.paths.blacklist=.*/__mocks__/.* +module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* +module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* +module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* +module.system.haste.paths.whitelist=/node_modules/react-native/RNTester/.* +module.system.haste.paths.whitelist=/node_modules/react-native/IntegrationTests/.* +module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/react-native/react-native-implementation.js +module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* + experimental.strict_type_args=true munge_underscores=true module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' +module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' +module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' + +module.file_ext=.js +module.file_ext=.jsx +module.file_ext=.json +module.file_ext=.native.js suppress_type=$FlowIssue suppress_type=$FlowFixMe -suppress_type=$FixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(30\\|[1-2][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(30\\|1[0-9]\\|[1-2][0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy -unsafe.enable_getters_and_setters=true - [version] -^0.30.0 +^0.122.0 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000000..95394c8d3b4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.pbxproj -text +*.patch eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 00000000000..5a2cd5ee9e0 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,25 @@ +# This is a comment. +# Each line is a file pattern followed by one or more owners. + +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# @global-owner1 and @global-owner2 will be requested for +# review when someone opens a pull request. +/ci @jakubgs +/fastlane @jakubgs +/scripts @jakubgs +/.env* @jakubgs +/.TOOLVERSIONS @jakubgs +/STATUS_GO_* @jakubgs + +# Order is important; the last matching pattern takes the most +# precedence. When someone opens a pull request that only +# modifies Nix files, only @js-owner and not the global +# owner(s) will be requested for a review. +*.nix @jakubgs +/nix @jakubgs +/.github/ @jakubgs + +/components @status-im/status-core-ui + +/test/appium/ @churik diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 32f9fb581f8..a7c860c6d29 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -8,10 +8,9 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p #### What should I know before I get started? -* [Mission and Core Values](http://wiki.status.im/getting-started/mission-and-core-values/) -* [Code of Conduct](http://wiki.status.im/getting-started/code-of-conduct/) -* [Read our FAQ](http://wiki.status.im/getting-started/faq/) -* [Join our Slack](http://slack.status.im/) and chat in `#dev-status` -* [Developer Introduction](http://wiki.status.im/contributing/development/introduction/) -* [How to Build Status](http://wiki.status.im/contributing/development/building-status/) -* [Finding issues to work on](http://wiki.status.im/contributing/development/introduction/#finding-issues-to-work-on) \ No newline at end of file +* [Mission and Principles](https://status.im/about) +* [Read our FAQ](https://status.im/docs/FAQs.html) +* [Join our Chat](http://join.status.im/chat/public/status-core-dev) +* [Developer Introduction](https://status.im/developer_tools/) +* [Build Status Yourself](https://status.im/technical/build_status) +* [Find issues to work on](https://github.com/status-im/) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index ce3ccf0f0b9..eb3ab87db83 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -43,4 +43,4 @@ As a , I want to so that . [comment]: # (if on Android please replicate bug whilst running adb logcat) ``` ... -``` \ No newline at end of file +``` diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 00000000000..b8c3f5b25a7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,34 @@ +--- +name: Bug Report +about: Bug Report +title: '' +type: 'Bug' +assignees: '' + +--- + +# Bug Report + + +## Problem +[comment]: # (A problem description) + + +#### Expected behavior + + +#### Actual behavior + + +### Reproduction + +1. + +### Additional Information + +- Status version: nightly +- Operating System: Android, iOS + + +[comment]: # (Please, add logs/notes if necessary) + diff --git a/.github/ISSUE_TEMPLATE/feature-issue.md b/.github/ISSUE_TEMPLATE/feature-issue.md new file mode 100644 index 00000000000..198b1a06453 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-issue.md @@ -0,0 +1,30 @@ +--- +name: Feature Issue +about: Feature Issue +title: '' +labels: feature +assignees: '' + +--- + +# Feature Issue + +[comment]: # (Please replace ... with your information. Remove < and >) + +### User Story + +As a , I want to **so that** . + +### Description + +[comment]: # (Describe the feature you would like and include designs and Figma links if available.) +[comment]: # (Describe the use cases the implementation should cover. E.g. New users, existing users, public chat, group chat, etc) +*Summary*: ... + +### Acceptance Criteria + +[comment]: # (Rules for the future PR to be accepted.) + +### Notes + +[comment]: # (For the developer who will implement. Include planning poker estimates, guidance, etc.) diff --git a/.github/ISSUE_TEMPLATE/release-issue.md b/.github/ISSUE_TEMPLATE/release-issue.md new file mode 100644 index 00000000000..cb095713d18 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/release-issue.md @@ -0,0 +1,77 @@ +--- +name: Release umbrella issue +about: Release Issue +title: 'Mobile release ' +labels: release +assignees: '' + +--- +Issue to manage mobile release + +### Scope +[comment]: # (Add milestone from github) +https://github.com/status-im/status-mobile/milestone/ + +- release notes: +- release branch: + + +### Testing info +[comment]: # (TestRail info, added by QA) +Main test suite: +Upgrade (e2e): + +### Builds in TestFlight and PlayStore to push as a release +[comment]: # (Will be added by QA after testing approving of build) + +### Process +#### 1) Kick-off +- [ ] 1. Translation PRs is merged before cutting branch (Jinho) +- [ ] 2. Prepare scope of visible changes based on commits history, started from previous release branch cut ([guide](https://notes.status.im/how-to-prepare-release-notes)) +- [ ] 3. Update [RELEASES.md](https://github.com/status-im/status-mobile/blob/develop/RELEASES.md) with release notes (make PR based on previous step) +- [ ] 4. Create release branch using this [guide](https://github.com/status-im/status-mobile/blob/develop/doc/RELEASE_GUIDE.md), bump VERSION (merge created PR ([example](https://github.com/status-im/status-mobile/pull/12504) ) to develop) and get successful release builds (so, testing can be started) +- [ ] 5. Based on release scope, ask for comms (Jonny) +- [ ] 6. Make sure that assets (screenshots, video) in stores are up-to-date, more info [here](https://notes.status.im/how-to-update-assets) + +#### 2) Testing +[comment]: # (Section will be maintained by QA) +- [ ] Dogfooding (add notes, if it was held) +- [ ] Regression testing for release candidate build +- [ ] Upgrade tests +- [ ] Fix known blocker(s) found during regression testing + +##### Blockers +[comment]: # (Section for blocker issues; should be fixed and merged by release-manager. Remove if no blockers found) +- [ ] 1 blocker: + +============================================================================================= + +- [ ] Cherry-pick fix(es) to the release branch +- [ ] Verify fix(es) on new release candidate build +- [ ] Retest +- [ ] Keep release build forever (button in Jenkins) + +#### 3) Submission + +- [ ] 1. Prepare PR for F-droid build ([instruction]( https://github.com/status-im/status-mobile/blob/develop/doc/FDROID.md)) +- [ ] 2. Release notes written and added (500 character limit for updates (Android) and PR for [RELEASES.md](https://github.com/status-im/status-mobile/blob/develop/RELEASES.md) is ready to be merged (from 1.3 step) +- [ ] 3. Submit beta version for Android (Open Testing in Play Store) +- [ ] 4. Submit iOS build to Apple review ([instruction](https://drive.google.com/file/d/10Cl7PBB7TFPkZiVbfzdFGpfMRP9bxXuq/view?usp=sharing), be careful - low quality of audio) +- [ ] 5. Play store content reviewed and updated +- [ ] 6. Privacy policy reviewed and updated (ask in channel) +- [ ] 7. Countries to be excluded (ask in channel) +- [ ] 8. Changes to our FAQ made (should be checked and if any changes needed, ask Jakub to made them) + + +#### 4) Before publishing +- [ ] 1. Translations for comms available (marketing, ask in the channel) +- [ ] 2. Promotional content ready (marketing, ask in channel) +- [ ] 3. Upload builds for DO store, https://dev.status.im/ (Jakub) + +#### 5) At time of publishing +- [ ] 1. Notify marketing to push comms and blog post (Jonny + get review on blog from QA team) +- [ ] 2. Publish release to app store and playstore +- [ ] 3. Final push to update prod site https://status.im/, [instructions](https://github.com/status-im/infra-docs/blob/master/articles/status_release_upload.md) (Jakub - requires credentials to upload) +- [ ] 4. Add the link to the post about the release and publish the release: https://github.com/status-im/status-mobile/releases (Jakub) +- [ ] 5. Merge PR for updating [RELEASES.md](https://github.com/status-im/status-mobile/blob/develop/RELEASES.md) (from 1.3 step) + diff --git a/.github/ISSUE_TEMPLATE/simple-issue.md b/.github/ISSUE_TEMPLATE/simple-issue.md new file mode 100644 index 00000000000..fa5afd64697 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/simple-issue.md @@ -0,0 +1,26 @@ +--- +name: Simple Issue Report +about: Simple issue report. +--- + +# Problem + +An overview of the background required to understand the problem. +A problem description. + +## Implementation + +Known steps towards feature implementation. +What needs further specifying and investigating. + +## Acceptance Criteria + +Rules for the future PR to be accepted. + +## Notes + +Random notes to keep in mind while implementing it. Mostly about related issues and future plans and thoughts. + +## Future Steps + +Steps which should be taken after this issue has been resolved. diff --git a/.github/ISSUE_TEMPLATE/wont-fix-bug.md b/.github/ISSUE_TEMPLATE/wont-fix-bug.md new file mode 100644 index 00000000000..d42b0b959dc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/wont-fix-bug.md @@ -0,0 +1,30 @@ +--- +name: Wont fix Report +about: to facilitate future handling, identify and address non-urgent issues that won't be prioritized in the near future +title: '' +labels: likely_wont_fix +assignees: '' + +--- + +## Problem + + +#### Expected behavior + + +#### Actual behavior + + +### Reproduction + +1. + +### Additional Information + +- Status version: release +- Operating System: Android, iOS + + +[comment]: # (Please, add logs/notes if necessary) + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4dfa4916d5c..e0c1425a1a7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,16 +1,70 @@ -[comment]: # (Please replace ... with your information. Remove < and >) [comment]: # (To auto-close issue on merge, please insert the related issue number after # i.e fixes #566) fixes #... -### Summary: +## Summary [comment]: # (Summarise the problem and how the pull request solves it) ... -### Steps to test: +## Review notes +[comment]: # (Optional. Specify if something in particular should be looked at, or ignored, during review) + +## Testing notes +[comment]: # (Optional) + +### Platforms +[comment]: # (Optional. Specify which platforms should be tested) + +- Android +- iOS + +### Areas that may be impacted +[comment]: # (Optional. Specify if some specific areas need to be tested, such as 1-1 chats) + +#### Functional + +- 1-1 chats +- public chats +- group chats +- wallet / transactions +- dapps / app browsing +- account recovery +- new account +- user profile updates +- networks +- mailservers +- fleet +- bootnodes + +#### Non-functional + +- battery performance +- CPU performance / speed of the app +- network consumption + +## Steps to test +[comment]: # (Specify exact steps to test if there are such) + - Open Status - ... - Step 3, etc. -[comment]: # (PRs will only be accepted if squashed into single commit.) -status: +[comment]: # (Can be ready or wip) +status: ready + + + diff --git a/.github/auto_assign.yml b/.github/auto_assign.yml new file mode 100644 index 00000000000..67c74b27405 --- /dev/null +++ b/.github/auto_assign.yml @@ -0,0 +1,26 @@ +# Set to true to add reviewers to pull requests +addReviewers: true + +# Set to true to add assignees to pull requests +addAssignees: false + +# A list of reviewers to be added to pull requests (GitHub user name) +reviewers: + - status-im/status-core + +# A number of reviewers added to the pull request +# Set 0 to add all the reviewers (default: 0) +numberOfReviewers: 0 + +# A list of assignees, overrides reviewers if set +# assignees: +# - status-im/status-core + +# A number of assignees to add to the pull request +# Set to 0 to add all of the assignees. +# Uses numberOfReviewers if unset. +# numberOfAssignees: 2 + +# A list of keywords to be skipped the process that add reviewers if pull requests include it +skipKeywords: + - wip \ No newline at end of file diff --git a/.github/github-bot.yml b/.github/github-bot.yml new file mode 100644 index 00000000000..a9398013a9f --- /dev/null +++ b/.github/github-bot.yml @@ -0,0 +1,17 @@ +_extends: probot-settings + +project-board: + name: 'Pipeline for QA' + min-reviewers: 1 + tested-pr-label-name: 'Tested - Issues' + contributor-column-name: 'CONTRIBUTOR' + review-column-name: 'REVIEW' + test-column-name: 'E2E Tests' + +automated-tests: + repo-full-name: 'status-im/status-mobile' + job-full-name: 'status-mobile/e2e/status-app-prs' + kickoff-column-name: 'E2E Tests' + +github-team: + slug: 'clojure' diff --git a/.github/package-lock-snitch.config.json b/.github/package-lock-snitch.config.json new file mode 100644 index 00000000000..a1cc767d29d --- /dev/null +++ b/.github/package-lock-snitch.config.json @@ -0,0 +1,6 @@ +{ + "recipients": [ + "jakubgs", + "corpetty" + ] +} diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000000..4ebcca875a0 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,16 @@ +daysUntilStale: 90 +daysUntilClose: 7 +exemptLabels: + - 'wall of shame' + - security +staleLabel: stale +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +closeComment: > + This issue has been automatically closed. Please re-open if this issue + is important to you. + +pulls: + daysUntilStale: 14 diff --git a/.gitignore b/.gitignore index cc3ade16648..41a0f621bd0 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ # Xcode # +/ios/.xcode.env.local +/component-spec +result/ build/ *.pbxuser !default.pbxuser @@ -29,25 +32,46 @@ project.xcworkspace # .idea .gradle +*.iml +**/android/.project +**/android/.settings/org.eclipse.buildship.core.prefs local.properties -status-im.iml +*.hprof +.cxx/ +*.keystore +!debug.keystore + +# Atom +.tags* + +# VS Code +.vscode/ +workspace.code-workspace # node.js # node_modules/ +node_modules.tmp/ npm-debug.log +yarn-error.log +default.realm/ # BUCK buck-out/ \.buckd/ android/app/libs +android/app/obj android/keystores/debug.keystore +!debug.keystore -# Generated by re-natal +# Generated by clj-rn # index.android.js index.ios.js target/ +env/dev/env/config.cljs +externs/ +shim.js # Generated by lein voom # @@ -59,23 +83,122 @@ target/ figwheel_server.log .nrepl-port +# FlowStorm (Clojure debugger) +repl-client-debug + # Lein # .lein-failures .lein-repl-history +# Shadow +.shadow-cljs + ## Doo # out doo-index.html -# Re-natal -re-natal +# Bundler +.bundle # Status Statusgo.framework -status-dev-cli +Statusgo.xcframework #ios -ios/Pods -ios/StatusIm.xcworkspace +/ios/Pods/ +/ios/logs/ +/ios/StatusIm.xcworkspace +.ruby-version +status-e2e/ + +#python +*.pyc +*.cache + +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots +fastlane/README.md + +# Clj + +.cpcache/ +src/user.cljs +src/dev/user.cljs + +# emacs +.dir-locals.el + +# We don't use NPM +/package-lock.json +/.re-natal +/re-natal + +# Jenkins +pkg +/BUILD_NUMBER + +# Conan +conan*.txt +conanbuildinfo.* +conan.cmake + +# Env +.env.bkp + +# nix +/.ran-setup +/.nix-gcroots/ +/result + +# modules +status-modules/translations +status-modules/cljs +status-modules/resources + +## coverage +/.nyc_output +/coverage-report + +## fiddle +/fiddle/node_modules/ +/fiddle/target/ +/fiddle/resources/public/images/ + +trace.edn + +/app/ +project.clj + +##appium +test/appium/report/ +result.xml +test/appium/tests/users.py + +##node bindings +/bin/ +/lib/ + +## visual tests +/artifacts + +/.calva/ + +## component-tests +*.log + +## local xcode env introduced in react-native 0.69 +.xcode.env.local + +## git hooks +lefthook.yml + +## build time logs +/logs/*.log diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000000..560ca6c0c68 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "legal-docs"] + path = legal-docs + url = https://github.com/status-im/status-software-legal-documents.git diff --git a/.lsp/config.edn b/.lsp/config.edn new file mode 100644 index 00000000000..232387f7bf2 --- /dev/null +++ b/.lsp/config.edn @@ -0,0 +1 @@ +{:clean {:ns-inner-blocks-indentation :keep}} diff --git a/.mailmap b/.mailmap new file mode 100644 index 00000000000..21ddfa3c01c --- /dev/null +++ b/.mailmap @@ -0,0 +1,16 @@ +Andrea Maria Piana +Aleksandr Pantyukhov +Aleksandr Pantyukhov +Anton Danchenko +Chad Jackson +Dmitry Shulyak +Eric Dvorsak +Eric Dvorsak +Eric Dvorsak +George Lipov +Goran Jović +Jan Herich +Jan Herich +Jakub Sokołowski +Jarrad Hope +Oskar Thorén diff --git a/.nycrc b/.nycrc new file mode 100644 index 00000000000..e648fc1158d --- /dev/null +++ b/.nycrc @@ -0,0 +1,17 @@ +{ + "include": [ + "target/test/legacy/status_im/**" + ], + "exclude": [ + "target/test/legacy/status_im/test/**", + "target/test/legacy/status_im/ui/**" + ], + "report-dir": "./coverage-report", + "all": true, + "source-map": true, + "produce-source-map": true, + "instrument": true, + "exclude-after-remap": false, + "extension": [".js"], + "reporter": ["lcovonly"] +} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000000..238132a6987 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,15 @@ +/* + +# Format top-level js files. +!*.js + +# Ignore all except src/js/**/*.js +!/src/ +/src/* +!/src/js +!/src/js/**/*.js + +# Ignore all except translations/en.json +!/translations/ +/translations/* +!/translations/en.json diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000000..a000e79b5ca --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,13 @@ +module.exports = { + arrowParens: 'always', + printWidth: 120, + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'all', + useTabs: false, + + // JSON sorting + jsonSortOrder: '{ "/.*/": "caseInsensitiveLexical" } ', + plugins: ['prettier-plugin-sort-json'], +}; diff --git a/.re-natal b/.re-natal deleted file mode 100644 index ca36c67259b..00000000000 --- a/.re-natal +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "StatusIm", - "interface": "reagent", - "androidHost": "10.0.3.2", - "modules": [ - "react-native-contacts", - "react-native-invertible-scroll-view", - "awesome-phonenumber", - "realm", - "react-native-i18n", - "realm/react-native", - "react-native-action-button", - "react-native-vector-icons/Ionicons", - "react-native-vector-icons/Octicons", - "react-native-circle-checkbox", - "react-native-randombytes", - "dismissKeyboard", - "react-native-linear-gradient", - "react-native-splash-screen", - "react-native-android-sms-listener", - "react-native-status", - "react-native-camera", - "react-native-qrcode", - "react-native-orientation", - "identicon.js", - "react-native-fs", - "react-native-dialogs", - "react-native-popup-menu", - "react-native-sortable-listview", - "react-native-image-resizer", - "react-native-image-crop-picker", - "react-native-webview-bridge", - "react-native-drawer-layout", - "homoglyph-finder", - "web3", - "eccjs", - "chance", - "react-native-swiper", - "react-native-emoji-picker", - "react-native-autolink", - "instabug-reactnative", - "nfc-react-native", - "react-native-http-bridge", - "react-native-autogrow-textinput" - ], - "imageDirs": [ - "images" - ], - "iosHost": "localhost", - "envRoots": { - "dev": "env/dev", - "prod": "env/prod" - } -} \ No newline at end of file diff --git a/.vscode/settings.example.json b/.vscode/settings.example.json new file mode 100644 index 00000000000..f81330dbc5b --- /dev/null +++ b/.vscode/settings.example.json @@ -0,0 +1,12 @@ +{ + "editor.formatOnSave": true, + "clojure.format.enable": false, + "[clojure]": { + "editor.defaultFormatter": "rflagreca.vscode-clj-zprint" + }, + "vscode-clj-zprint.IgnoreExternalFiles": false, + "vscode-clj-zprint.CommunityFormatting": false, + "vscode-clj-zprint.OptionsMap": "", + "vscode-clj-zprint.width": "", + "vscode-clj-zprint.Styles.UseOnlyTheseStyles": false +} diff --git a/.watchmanconfig b/.watchmanconfig index 9e26dfeeb6e..6712d024ced 100644 --- a/.watchmanconfig +++ b/.watchmanconfig @@ -1 +1,8 @@ -{} \ No newline at end of file +{ + "ignore_dirs": [ + "android/build", + "target", + ".clj-kondo", + ".shadow-cljs" + ] +} \ No newline at end of file diff --git a/.zprintrc b/.zprintrc new file mode 100644 index 00000000000..f7764fa3c4c --- /dev/null +++ b/.zprintrc @@ -0,0 +1,64 @@ +;; -*- mode: clojure -*- +;; vi: ft=clojure +{:width 105 + :remove {:fn-force-nl #{:noarg1-body}} + + :style + [;; community style https://github.com/kkinnear/zprint/blob/main/doc/reference.md#community + :community + + ;; no comma in map + :no-comma + + :custom-justify + + ;; respect all newlines https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-nl + :respect-nl + + ;; respect blank line https://github.com/kkinnear/zprint/blob/main/doc/reference.md#respect-bl + :respect-bl + + ;; hang multiline left-hand-thing https://github.com/kkinnear/zprint/issues/273 + :multi-lhs-hang] + + :fn-map + {"reg-sub" :arg1-pair + "h/describe" :arg1-body + "h/describe-skip" :arg1-body + "h/describe-only" :arg1-body + "h/test" :arg1-body + "h/test-skip" :arg1-body + "h/test-only" :arg1-body + "test/async" :arg1-body + "test/use-fixtures" :arg1-body + "global.describe" :arg1-body + "global.test" :arg1-body + "list-comp" :binding + "defview" :arg1-body + "letsubs" :binding + "with-let" "let" + "reg-event-fx" :arg1-pair + "reg-fx" :arg1-pair + "testing" :arg1-body + "deftest-sub" :arg1-body + "deftest-event" :arg1-body + "test-async" :arg1-body + "wait-for" :arg1-body + "with-deps-check" :arg1-body + "schema/=>" :arg1-body + "->" [:noarg1-body + {:list {:constant-pair? false :force-nl? false} + :next-inner-restore [[:list :constant-pair?]]}] + "set!" "reset!" + "assoc-when" "assoc" + "assoc-some" "assoc" + "conj-when" "conj" + "conj-some" "conj"} + + :style-map + {:no-comma {:map {:comma? false}} + :custom-justify + {:doc "Justify everything using pre-1.1.2 approach" + :binding {:justify? true :justify {:max-variance 1000}} + :map {:justify? true :justify {:max-variance 1000}} + :pair {:justify? true :justify {:max-variance 1000}}}}} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 77afa770917..00000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,24 +0,0 @@ -# Change Log -All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/). - -## [Unreleased][unreleased] -### Changed -- Add a new arity to `make-widget-async` to provide a different widget shape. - -## [0.1.1] - 2016-03-23 -### Changed -- Documentation on how to make the widgets. - -### Removed -- `make-widget-sync` - we're all async, all the time. - -### Fixed -- Fixed widget maker to keep working when daylight savings switches over. - -## 0.1.0 - 2016-03-23 -### Added -- Files from the new template. -- Widget maker public API - `make-widget-sync`. - -[unreleased]: https://github.com/your-name/status-im/compare/0.1.1...HEAD -[0.1.1]: https://github.com/your-name/status-im/compare/0.1.0...0.1.1 diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 2abc70bca7f..00000000000 --- a/Jenkinsfile +++ /dev/null @@ -1,78 +0,0 @@ -node { - def apkUrl = '' - def ipaUrl = '' - def testPassed = true - - sh 'source /etc/profile' - - try { - - stage('Git & Dependencies') { - git([url: 'https://github.com/status-im/status-react.git', branch: env.BRANCH_NAME]) - // Checkout master because used for iOS Plist version information - sh 'git checkout -- .' - sh 'git checkout master' - sh 'git checkout ' + env.BRANCH_NAME - sh 'rm -rf node_modules' - sh 'lein deps && npm install && ./re-natal deps' - sh 'sed -i "" "s/301000/601000/g" node_modules/react-native/packager/src/JSTransformer/index.js' - sh 'lein generate-externs' - sh 'mvn -f modules/react-native-status/ios/RCTStatus dependency:unpack' - sh 'cd ios && pod install && cd ..' - } - stage('Build') { - sh 'lein prod-build' - } - - // Android - stage('Build (Android)') { - sh 'cd android && ./gradlew assembleRelease' - } - stage('Deploy (Android)') { - def artifact_dir = pwd() + '/android/app/build/outputs/apk/' - def artifact = new File(artifact_dir + 'app-release.apk') - assert artifact.exists() - def server = Artifactory.server('artifacts') - def shortCommit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim().take(6) - def filename = 'im.status.ethereum-' + shortCommit + '.apk' - artifact.renameTo artifact_dir + filename - def uploadSpec = '{ "files": [ { "pattern": "*apk/' + filename + '", "target": "pull-requests" }]}' - def buildInfo = server.upload(uploadSpec) - apkUrl = 'http://artifacts.status.im:8081/artifactory/pull-requests/' + filename - } - - // try { - // stage('Test (Android)') { - // sauce('b9aded57-5cc1-4f6b-b5ea-42d989987852') { - // sh 'cd test/appium && mvn -DapkUrl=' + apkUrl + ' test' - // saucePublisher() - // } - // } - // } catch(e) { - // testPassed = false - // } - - // iOS - stage('Build (iOS)') { - sh 'export RCT_NO_LAUNCH_PACKAGER=true && xcodebuild -workspace ios/StatusIm.xcworkspace -scheme StatusIm -configuration release -archivePath status clean archive' - sh 'xcodebuild -exportArchive -exportPath status -archivePath status.xcarchive -exportOptionsPlist /Users/Xcloud/archive.plist' - } - stage('Deploy (iOS)') { - withCredentials([string(credentialsId: 'diawi-token', variable: 'token')]) { - def job = sh(returnStdout: true, script: 'curl https://upload.diawi.com/ -F token='+token+' -F file=@status/StatusIm.ipa -F find_by_udid=0 -F wall_of_apps=0 | jq -r ".job"').trim() - sh 'sleep 10' - def hash = sh(returnStdout: true, script: "curl -vvv 'https://upload.diawi.com/status?token="+token+"&job="+job+"'|jq -r '.hash'").trim() - ipaUrl = 'https://i.diawi.com/' + hash - } - } - - } catch (e) { - slackSend color: 'bad', message: env.BRANCH_NAME + ' failed to build. ' + env.BUILD_URL - throw e - } - - stage('Slack Notification') { - def c = (testPassed ? 'good' : 'warning' ) - slackSend color: c, message: 'Branch: ' + env.BRANCH_NAME + '\nTests: ' + (testPassed ? ':+1:' : ':-1:') + ')\nAndroid: ' + apkUrl + '\n iOS: ' + ipaUrl - } -} diff --git a/Makefile b/Makefile new file mode 100644 index 00000000000..1a27ab282f9 --- /dev/null +++ b/Makefile @@ -0,0 +1,517 @@ +.PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-rm + +help: SHELL := /bin/sh +help: ##@other Show this help + @perl -e '$(HELP_FUN)' $(MAKEFILE_LIST) + +# This is a code for automatic help generator. +# It supports ANSI colors and categories. +# To add new item into help output, simply add comments +# starting with '##'. To add category, use @category. +GREEN := $(shell tput -Txterm setaf 2) +RED := $(shell tput -Txterm setaf 1) +WHITE := $(shell tput -Txterm setaf 7) +YELLOW := $(shell tput -Txterm setaf 3) +RESET := $(shell tput -Txterm sgr0) +HELP_FUN = \ + %help; \ + while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \ + print "Usage: make [target]\n\nSee STARTING_GUIDE.md for more info.\n\n"; \ + for (sort keys %help) { \ + print "${WHITE}$$_:${RESET}\n"; \ + for (@{$$help{$$_}}) { \ + $$sep = " " x (32 - length $$_->[0]); \ + print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \ + }; \ + print "\n"; \ + } +HOST_OS := $(shell uname | tr '[:upper:]' '[:lower:]') + +# This can come from Jenkins +ifndef BUILD_TAG +export BUILD_TAG := $(shell git rev-parse --short HEAD) +endif + +# We don't want to use /run/user/$UID because it runs out of space too easily. +export TMPDIR = /tmp/tmp-status-mobile-$(BUILD_TAG) +# This has to be specified for both the Node.JS server process and the Qt process. +export REACT_SERVER_PORT ?= 5001 +# Default metro port used by scripts/run-android.sh. +export RCT_METRO_PORT ?= 8081 +# Fix for ERR_OSSL_EVP_UNSUPPORTED error. +export NODE_OPTIONS += --openssl-legacy-provider +# The path can be anything, but home is usually safest. +export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore + +# Location of symlinks to derivations that should not be garbage collected +export _NIX_GCROOTS = ./.nix-gcroots +# Defines which variables will be kept for Nix pure shell, use semicolon as divider +export _NIX_KEEP ?= TMPDIR,BUILD_ENV,\ + BUILD_TYPE,BUILD_NUMBER,COMMIT_HASH,\ + ANDROID_GRADLE_OPTS,ANDROID_ABI_SPLIT,ANDROID_ABI_INCLUDE,\ + STATUS_GO_SRC_OVERRIDE,STATUS_GO_IPFS_GATEWAY_URL + +# Useful for Android release builds +TMP_BUILD_NUMBER := $(shell ./scripts/version/gen_build_no.sh | cut -c1-10) + +#---------------- +# Nix targets +#---------------- + +# WARNING: This has to be located right before all the targets. +SHELL := ./nix/scripts/shell.sh + +shell: export TARGET ?= default +shell: ##@prepare Enter into a pre-configured shell +ifndef IN_NIX_SHELL + @ENTER_NIX_SHELL +else + @echo "${YELLOW}Nix shell is already active$(RESET)" +endif + +nix-repl: SHELL := /bin/sh +nix-repl: ##@nix Start an interactive Nix REPL + nix repl default.nix + +nix-gc-protected: SHELL := /bin/sh +nix-gc-protected: + @echo -e "$(YELLOW)The following paths are protected:$(RESET)" && \ + ls -1 $(_NIX_GCROOTS) | sed 's/^/ - /' + +nix-upgrade: SHELL := /bin/sh +nix-upgrade: ##@nix Upgrade Nix interpreter to current version. + nix/scripts/upgrade.sh + +nix-gc: export TARGET := nix +nix-gc: nix-gc-protected ##@nix Garbage collect all packages older than 20 days from /nix/store + nix-store --gc + +nix-clean: export TARGET := default +nix-clean: ##@nix Remove all status-mobile build artifacts from /nix/store + nix/scripts/clean.sh + +nix-purge: SHELL := /bin/sh +nix-purge: ##@nix Completely remove Nix setup, including /nix directory + nix/scripts/purge.sh + +nix-update-gradle: export TARGET := gradle +nix-update-gradle: export ORG_GRADLE_PROJECT_hermesEnabled := false +nix-update-gradle: export ORG_GRADLE_PROJECT_universalApk := false +nix-update-gradle: ##@nix Update maven nix expressions based on current gradle setup + nix/deps/gradle/generate.sh + +nix-update-clojure: export TARGET := clojure +nix-update-clojure: ##@nix Update maven Nix expressions based on current clojure setup + nix/deps/clojure/generate.sh + +nix-update-gems: export TARGET := fastlane +nix-update-gems: ##@nix Update Ruby gems in fastlane/Gemfile.lock and fastlane/gemset.nix + fastlane/update.sh + +nix-update-pods: export TARGET := ios +nix-update-pods: ##@nix Update CocoaPods in ios/Podfile.lock + cd ios && pod update + +#---------------- +# General targets +#---------------- + +_fix-node-perms: SHELL := /bin/sh +_fix-node-perms: ##@prepare Fix permissions so that directory can be cleaned + $(shell test -d node_modules && chmod -R 744 node_modules) + $(shell test -d node_modules.tmp && chmod -R 744 node_modules.tmp) + +$(TMPDIR): SHELL := /bin/sh +$(TMPDIR): ##@prepare Create a TMPDIR for temporary files + @mkdir -p "$(TMPDIR)" +# Make sure TMPDIR exists every time make is called +_tmpdir-mk: $(TMPDIR) +-include _tmpdir-mk + +_tmpdir-rm: SHELL := /bin/sh +_tmpdir-rm: ##@prepare Remove TMPDIR + rm -fr "$(TMPDIR)" + +_install-hooks: SHELL := /bin/sh +_install-hooks: ##@prepare Create prepare-commit-msg git hook symlink + @ln -s -f ../../scripts/hooks/prepare-commit-msg .git/hooks +-include _install-hooks + +# Remove directories and ignored files +clean: SHELL := /bin/sh +clean: _fix-node-perms _tmpdir-rm ios-clean android-clean ##@prepare Remove all output folders + git clean -dXf + +# Remove directories, ignored and non-ignored files +purge: SHELL := /bin/sh +purge: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders + git clean -dxf + + +watchman-clean: export TARGET := watchman +watchman-clean: ##@prepare Delete repo directory from watchman + watchman watch-del $${STATUS_MOBILE_HOME} + +pod-install: export TARGET := ios +pod-install: ##@prepare Run 'pod install' to install podfiles and update Podfile.lock + cd ios && pod install; cd -- + +FLEETS_FILE := ./resources/config/fleets.json +update-fleets: ##@prepare Download up-to-date JSON file with current fleets state + curl -s https://fleets.status.im/ \ + | sed 's/"warning": "/"warning": "DO NOT EDIT! /' \ + > $(FLEETS_FILE) + echo >> $(FLEETS_FILE) + +$(KEYSTORE_PATH): export TARGET := keytool +$(KEYSTORE_PATH): + @./scripts/generate-keystore.sh + +keystore: $(KEYSTORE_PATH) ##@prepare Generate a Keystore for signing Android APKs + +fdroid-max-watches: SHELL := /bin/sh +fdroid-max-watches: ##@prepare Bump max_user_watches to avoid ENOSPC errors + sysctl fs.inotify.max_user_watches=524288 + +fdroid-nix-dir: SHELL := /bin/sh +fdroid-nix-dir: ##@prepare Create /nix directory for F-Droid Vagrant builders + mkdir -m 0755 /nix + chown vagrant /nix + +fdroid-fix-tmp: SHELL := /bin/sh +fdroid-fix-tmp: ##@prepare Fix TMPDIR permissions so Vagrant user is the owner + chown -R vagrant "$(TMPDIR)" + +fdroid-build-env: fdroid-max-watches fdroid-nix-dir fdroid-fix-tmp ##@prepare Setup build environment for F-Droud build + +fdroid-pr: export TARGET := android-sdk +fdroid-pr: ##@prepare Create F-Droid release PR +ifndef APK + $(error APK env var not defined) +endif + scripts/fdroid-pr.sh "$(APK)" + +xcode-clean: SHELL := /bin/sh +xcode-clean: XCODE_HOME := $(HOME)/Library/Developer/Xcode +xcode-clean: ##@prepare Clean XCode derived data and archives + rm -fr $(XCODE_HOME)/DerivedData/StatusIm-* $(XCODE_HOME)/Archives/*/StatusIm* + +ios-simulator-cache-clean: SHELL := /bin/sh +ios-simulator-cache-clean: ##@prepare Clean iOS Simulator Caches + rm -rf ~/Library/Developer/CoreSimulator/Cache + +#---------------- +# Release builds +#---------------- +release: release-android release-ios ##@build Build release for Android and iOS + +build-fdroid: export BUILD_ENV = prod +build-fdroid: export BUILD_TYPE = release +build-fdroid: export ANDROID_ABI_SPLIT = false +build-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64 +build-fdroid: export ANDROID_STORE = fdroid +build-fdroid: ##@build Build release for F-Droid + @scripts/google-free.sh + @scripts/build-android.sh + +build-android: export BUILD_ENV ?= prod +build-android: export BUILD_TYPE ?= nightly +build-android: export ORG_GRADLE_PROJECT_versionCode ?= $(TMP_BUILD_NUMBER) +build-android: ##@build Build unsigned Android APK + @scripts/build-android.sh + +release-android: export TARGET := keytool +release-android: export KEYSTORE_PATH ?= $(HOME)/.gradle/status-im.keystore +release-android: keystore build-android ##@build Build signed Android APK + @scripts/sign-android.sh result/app-arm64-v8a-release-unsigned.apk + +release-ios: export TARGET := ios +release-ios: export IOS_STATUS_GO_TARGETS := ios/arm64 +release-ios: export BUILD_ENV ?= prod +release-ios: watchman-clean ios-clean jsbundle ##@build Build release for iOS release + xcodebuild \ + -scheme StatusIm \ + -configuration Release \ + -workspace ios/StatusIm.xcworkspace \ + -destination 'generic/platform=iOS' \ + -UseModernBuildSystem=N clean archive + +jsbundle: SHELL := /bin/sh +jsbundle: export BUILD_ENV ?= prod +jsbundle: ##@build Build JavaScript and Clojurescript bundle for iOS and Android + nix/scripts/build.sh targets.mobile.jsbundle + +#-------------- +# status-go lib +#-------------- + +status-go-android: SHELL := /bin/sh +status-go-android: ##@status-go Compile status-go for Android app + nix/scripts/build.sh targets.status-go.mobile.android + +status-go-ios: SHELL := /bin/sh +status-go-ios: ##@status-go Compile status-go for iOS app + nix/scripts/build.sh targets.status-go.mobile.ios + +status-go-library: SHELL := /bin/sh +status-go-library: ##@status-go Compile status-go for node-js + nix/scripts/build.sh targets.status-go.library + +#-------------- +# Watch, Build & Review changes +#-------------- + +run-clojure: export TARGET := clojure +run-clojure: ##@run Watch for and build Clojure changes for mobile + yarn shadow-cljs watch mobile + +run-metro: export TARGET := clojure +run-metro: ##@run Start Metro to build React Native changes + @scripts/run-metro.sh + +export RE_FRISK_PORT ?= 4567 + +run-re-frisk: export TARGET := clojure +run-re-frisk: ##@run Start re-frisk server + yarn shadow-cljs run re-frisk-remote.core/start ${RE_FRISK_PORT} + +# TODO: Migrate this to a Nix recipe, much the same way as nix/mobile/android/targets/release-android.nix +run-android: export TARGET := android +# Disabled for debug builds to avoid 'maximum call stack exceeded' errors. +# https://github.com/status-im/status-mobile/issues/18493 +run-android: export ORG_GRADLE_PROJECT_hermesEnabled := false +run-android: export ORG_GRADLE_PROJECT_universalApk := false +run-android: ##@run Build Android APK and start it on the device + @scripts/run-android.sh + +SIMULATOR=iPhone 13 +# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded +run-ios: export TARGET := ios +run-ios: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64 +run-ios: ##@run Build iOS app and start it in on the simulator + @scripts/run-ios.sh "${SIMULATOR}" + +show-ios-devices: ##@other shows connected ios device and its name + xcrun xctrace list devices + +# TODO: fix IOS_STATUS_GO_TARGETS to be either amd64 or arm64 when RN is upgraded +run-ios-device: export TARGET := ios +run-ios-device: export IOS_STATUS_GO_TARGETS := ios/arm64;iossimulator/amd64 +run-ios-device: ##@run iOS app and start it on the first connected iPhone + @scripts/run-ios-device.sh + +#-------------- +# Tests +#-------------- + +# Get all clojure files, including untracked, excluding removed +define find_all_clojure_files +$$(comm -23 <(sort <(git ls-files --cached --others --exclude-standard)) <(sort <(git ls-files --deleted)) | grep -E '((\.clj-kondo\/status-im)|(src).*\.clj[sc]?$$)|((\.clj-kondo\/(status-im|config))|(src).*\.edn$$)|shadow-cljs\.edn') +endef + +lint: export TARGET := clojure +lint: export CLJ_LINTER_PRINT_WARNINGS ?= false +lint: ##@test Run code style checks + @sh scripts/lint/re-frame-in-quo-components.sh && \ + sh scripts/lint/direct-require-component-outside-quo.sh && \ + sh scripts/lint/require-i18n-resource-first.sh && \ + clj-kondo --config .clj-kondo/config.edn --cache false --fail-level error --lint src $(if $(filter $(CLJ_LINTER_PRINT_WARNINGS),true),,| grep -v ': warning: ') && \ + ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \ + scripts/lint/translations.clj && \ + zprint '{:search-config? true}' -sfc $$ALL_CLOJURE_FILES && \ + sh scripts/lint/trailing-newline.sh && \ + node_modules/.bin/prettier --check . + +# NOTE: We run the linter twice because of https://github.com/kkinnear/zprint/issues/271 +lint-fix: export TARGET := clojure +lint-fix: ##@test Run code style checks and fix issues + ALL_CLOJURE_FILES=$(call find_all_clojure_files) && \ + zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \ + zprint '{:search-config? true}' -sw $$ALL_CLOJURE_FILES && \ + clojure-lsp --ns-exclude-regex ".*/\.clj-kondo/.*|.*/src/status_im/core\.cljs|.*/src/test_helpers/component_tests_preload\.cljs$$" clean-ns && \ + sh scripts/lint/trailing-newline.sh --fix && \ + node_modules/.bin/prettier --write . + +lint-commits: + @sh scripts/lint/donotmerge-git-commits.sh + +shadow-server: export TARGET := clojure +shadow-server:##@ Start shadow-cljs in server mode for watching + yarn shadow-cljs server + +_test-clojure: export TARGET := clojure +_test-clojure: export WATCH ?= false +_test-clojure: status-go-library +_test-clojure: +ifeq ($(WATCH), true) + yarn node-pre-gyp rebuild && \ + yarn shadow-cljs compile mocks && \ + nodemon --exec "yarn shadow-cljs compile test && node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO" -e cljs +else + yarn node-pre-gyp rebuild && \ + yarn shadow-cljs compile mocks && \ + yarn shadow-cljs compile test && \ + node --require ./test-resources/override.js "$$SHADOW_OUTPUT_TO" +endif + +test: export SHADOW_OUTPUT_TO := target/test/test.js +test: export SHADOW_NS_REGEXP := .*-test$$ +test: ##@test Run all Clojure tests +test: _test-clojure + +# Note: we need to override the :output-to and :ns-regexp options because +# shadow-cljs has a bug where it will not read from the env vars to expand the +# configuration when the shadow-cljs mobile target is already running. +test-watch-for-repl: export TARGET := default +test-watch-for-repl: export SHADOW_OUTPUT_TO := target/test/test.js +test-watch-for-repl: export SHADOW_NS_REGEXP := .*-test$$ +test-watch-for-repl: ##@test Watch all Clojure tests and support REPL connections + rm -f "$$SHADOW_OUTPUT_TO" && \ + yarn install && shadow-cljs compile mocks && \ + concurrently --kill-others --prefix-colors 'auto' --names 'build,repl' \ + "yarn shadow-cljs watch test --verbose --config-merge '{:output-to \"$(SHADOW_OUTPUT_TO)\" :ns-regexp \"$(SHADOW_NS_REGEXP)\"}'" \ + "until [ -f $$SHADOW_OUTPUT_TO ] ; do sleep 1 ; done ; node --require ./test-resources/override.js $$SHADOW_OUTPUT_TO --repl" + +test-unit: export SHADOW_OUTPUT_TO := target/unit_test/test.js +test-unit: export SHADOW_NS_REGEXP := ^(?!tests\.integration-test)(?!tests\.contract-test).*-test$$ +test-unit: ##@test Run unit tests +test-unit: _test-clojure + +test-integration: export SHADOW_OUTPUT_TO := target/integration_test/test.js +test-integration: export SHADOW_NS_REGEXP := ^tests\.integration-test.*$$ +test-integration: ##@test Run integration tests +test-integration: _test-clojure + +test-contract: export SHADOW_OUTPUT_TO := target/contract_test/test.js +test-contract: export SHADOW_NS_REGEXP := ^tests\.contract-test.*$$ +test-contract: ##@test Run contract tests +test-contract: _test-clojure + +test-android: jsbundle +test-android: export TARGET := android +test-android: ##@test Android Gradle test + cd android && ./gradlew test + +test-component-watch: export TARGET := clojure +test-component-watch: export COMPONENT_TEST := true +test-component-watch: export BABEL_ENV := test +test-component-watch: export JEST_USE_SILENT_REPORTER := false +test-component-watch: ##@ Watch tests and re-run no changes to cljs files + @scripts/check-metro-shadow-process.sh + rm -rf ./component-spec + nodemon --exec 'yarn shadow-cljs compile component-test && jest --config=test/jest/jest.config.js --testEnvironment node ' -e cljs + +test-component: export TARGET := clojure +test-component: export COMPONENT_TEST := true +test-component: export BABEL_ENV := test +test-component: export JEST_USE_SILENT_REPORTER := false +test-component: ##@test Run component tests once in NodeJS + @scripts/check-metro-shadow-process.sh + rm -rf ./component-spec + yarn shadow-cljs compile component-test && \ + jest --clearCache && jest --config=test/jest/jest.config.js --testEnvironment node + +# Reference: https://flow-storm.github.io/flow-storm-debugger/user_guide.html#_debugging_react_native_applications +run-flow-storm: export SHADOW_CLJS_BUILD_ID := :mobile +run-flow-storm: export TARGET := clojure +run-flow-storm: export GDK_DPI_SCALE := 1.0 +run-flow-storm: ##@run Start FlowStorm debugger + clj -Sforce -Sdeps '{:deps {com.github.jpmonettas/flow-storm-dbg {:mvn/version "3.7.5"}}}' \ + -X flow-storm.debugger.main/start-debugger \ + :port 7888 \ + :repl-type :shadow \ + :build-id $(SHADOW_CLJS_BUILD_ID) + +#-------------- +# Other +#-------------- + +geth-connect: export TARGET := android-sdk +geth-connect: ##@other Connect to Geth on the device + adb forward tcp:8545 tcp:8545 && \ + build/bin/geth attach http://localhost:8545 + +ios-clean: SHELL := /bin/sh +ios-clean: ios-simulator-cache-clean +ios-clean: ##@prepare Clean iOS build artifacts + git clean -dxf -f target/ios + +android-clean: SHELL := /bin/sh +android-clean: ##@prepare Clean Gradle state + git clean -dxf -f ./android/app/build; \ + rm -rf android/.gradle \ + rm -rf android/build \ + rm -rf ~/.gradle + + +android-ports: export FLOWSTORM_PORT ?= 7722 +android-ports: export TARGET := android-sdk +android-ports: export RCT_METRO_PORT ?= 8081 +android-ports: ##@other Add proxies to Android Device/Simulator + adb reverse tcp:$(RCT_METRO_PORT) tcp:$(RCT_METRO_PORT) && \ + adb reverse tcp:3449 tcp:3449 && \ + adb reverse tcp:$(RE_FRISK_PORT) tcp:$(RE_FRISK_PORT) && \ + adb reverse tcp:$(FLOWSTORM_PORT) tcp:$(FLOWSTORM_PORT) && \ + adb forward tcp:5561 tcp:5561 + +android-devices: export TARGET := android-sdk +android-devices: ##@other Invoke adb devices + adb devices + +android-pull-geth: export TARGET := android-sdk +android-pull-geth: export VERSION ?= debug +android-pull-geth: + adb pull "/storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log" + +android-tail-geth: export TARGET := android-sdk +android-tail-geth: export VERSION ?= debug +android-tail-geth: + adb shell 'while true; do cat; sleep 1; done < /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log' + +android-clean-geth: export TARGET := android-sdk +android-clean-geth: export VERSION ?= debug +android-clean-geth: + adb shell 'rm /storage/emulated/0/Android/data/im.status.ethereum$$( [ "$(VERSION)" = "release" ] || echo ".$(VERSION)" )/files/Download/geth.log' + + +android-logcat: export TARGET := android-sdk +android-logcat: ##@other Read status-mobile logs from Android phone using adb + adb logcat | grep -e RNBootstrap -e ReactNativeJS -e ReactNative -e StatusModule -e StatusNativeLogs -e 'F DEBUG :' -e 'Go :' -e 'GoLog :' -e 'libc :' + +android-install: export TARGET := android-sdk +android-install: export BUILD_TYPE ?= release +android-install: ##@other Install APK on device using adb + adb install result/app-$(BUILD_TYPE).apk + +_list: SHELL := /bin/sh +_list: + @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' + +patch-file: export TARGET := default +patch-file: ##@other Generates patch file for npm deps + @scripts/patch-npm-lib.sh + +#-------------- +# REPLs +#-------------- + +repl-clojure: export TARGET := clojure +repl-clojure: ##@repl Start Clojure repl for mobile App + yarn shadow-cljs cljs-repl mobile + +repl-nix: nix-repl ##@repl Start an interactive Nix REPL + +#-------------- +# Dev Automation Flows +#-------------- + +auto-login: export TARGET := default +auto-login: ##@auto runs flow for login or onboarding app on simulator/emulator + maestro test "maestro/create-account-or-login.yaml" + +auto-custom: export TARGET := default +auto-custom: ##@auto runs any custom maestro automation flow on simulator/emulator +ifndef FLOW + $(error Usage: make automate FLOW=your-maestro-flow-file.yaml) +endif + maestro test "$(FLOW)" diff --git a/README.md b/README.md index 343b0df4772..46dd4decd17 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,78 @@ -![Status - A Browser, Messenger, and gateway to the decentralised world of Ethereum](https://status.im/img/status-github-banner@2x.png?v=1.1 "Status - A Browser, Messenger, and gateway to the decentralised world of Ethereum") -[![Build Status](https://saucelabs.com/buildstatus/jarrad-status)](https://saucelabs.com/beta/builds/50ccf11ec1a44d88b6eb989929e5789f) +> [!WARNING] +> **This repository is archived and this codebase is deprecated.** +> The new mobile codebase lives at [status-im/status-app](https://github.com/status-im/status-app). # Status - a Mobile Ethereum Operating System -Join us in creating a browser, messenger, and gateway to a decentralised world. Status is a free (libre) open source mobile client targeting Android & iOS built entirely on [Ethereum](https://ethereum.org/) technologies. That's right, no middle men and `go-ethereum` running directly on your device. +[Get it on Google Play](https://play.google.com/store/apps/details?id=im.status.ethereum) +[Get it on F-Droid](https://f-droid.org/packages/im.status.ethereum/) -[![Getting started with Status](https://i.imgur.com/C0aZZEL.jpg)](https://www.youtube.com/watch?v=oDCSEmS9c3o "Getting started with Status") +[Get it on Github](https://github.com/status-im/status-mobile/releases) + +Join us in creating a browser, messenger, and gateway to a decentralized world. Status is a free (libre) open source mobile client targeting Android & iOS built entirely on [Ethereum](https://ethereum.org/) technologies. That's right, no middlemen and `go-ethereum` running directly on your device. + +[![Getting started with Status](https://i.imgur.com/C0aZZEL.jpg)](https://www.youtube.com/watch?v=oDCSEmS9c3o "Getting started with Status") ## Why? -We believe in a medium of pure free trade, economies with fair, permissionless access and a world without intermediaries. We want to create policies that can exist between friends or scale globally, we want to communicate securely and be uninhibited by legacy systems. +We believe in a medium of pure free trade, economies with fair, permission-less access and a world without intermediaries. We want to create policies that can exist between friends or scale globally, we want to communicate securely and be uninhibited by legacy systems. -We want to take responsibilty for our data, the way we conduct ourselves privately and promote this way of life to a mass audience. +We want to take responsibility for our data, and the way we conduct ourselves privately and promote this way of life to a mass audience. -We want deep insights into our own economies so we can make informed, data-driven decisions on how to make our lives better. The Ethereum blockchain, Smart Contracts, Swarm and Whisper provides us a path forward. +We want deep insights into our own economies so we can make informed, data-driven decisions on how to make our lives better. The Ethereum blockchain, Smart Contracts, Swarm and Whisper provide us with a path forward. If this interests you, **help us make Status a reality** - anyone can contribute and we need everyone at any skill level to participate. ## How to Contribute? -Go straight to the [wiki](https://wiki.status.im) or [join our Slack](http://slack.status.im) or choose what interests you: +Go straight to the [docs](doc/) and choose what interests you: -- **Developer** -Developers are the heart of software and to keep Status beating we need all the help we can get! If you're looking to code in ClojureScript or Golang then Status is the project for you! We use React Native and there is even some Java/Objective-C too! -Want to learn more about it? Start by reading our [Developer Introduction](http://wiki.status.im/contributing/development/introduction/) which guides you through the technology stack and and start browsing [beginner issues](https://github.com/status-im/status-react/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner). Then you can read how to [Build Status](http://wiki.status.im/contributing/development/building-status/), which talks about managing project dependencies, coding guidelines and testing procedures. +- **Developer** Developers are the heart of software and to keep Status beating +we need all the help we can get! If you're looking to code in ClojureScript or +Golang then Status is the project for you! We use React Native and there is even +some Java/Objective-C too! Want to learn more about it? Start by reading our +[Developer Introduction](doc/starting-guide.md) which guides you +through the technology stack and start browsing [beginner +issues](https://github.com/status-im/status-mobile/issues?utf8=%E2%9C%93&q=is%3Aopen%20is%3Aissue%20label%3A%22good%20first%20issue%22%20). +Then you can read how to [Build +Status](doc/starting-guide.md), which talks about managing +project dependencies, coding guidelines and testing procedures. +Check out our [coding guidelines](doc/new-guidelines.md). -- **Community Management** -Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes alot of work but the people you'll meet and long lasting relationships you form will be well worth it, check out our [Community Development Guide](https://wiki.status.im/community/development/) +- **Community Management** +Metcalfe's law states that the value of a network is proportional to the square of the number of connected users of the system - without community Status is meaningless. We're looking to create a positive, fun environment to explore new ideas, experiment and grow the Status community. Building a community takes a lot of work but the people you'll meet and the long-lasting relationships you form will be well worth it, check out our [Mission and Community Principles](https://status.app/manifesto) -- **Specification / Documentation** -John Dewey once said "Education is not preparation for life; education is life *itself* ". Developers & Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, head over to our [wiki](https://wiki.status.im) and see how you can improve what we have. +- **Specification / Documentation** +John Dewey once said, "Education is not preparation for life; education is life *itself* ". Developers and Designers need guidance and it all starts from documentation and specifications. Our software is only as good as its documentation, check out our [docs](doc/) and see how you can improve what we have. -- **Blog Writing** -Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page. [Jump on our Slack](http://slack.status.im) and discuss with Carl how you can contribute. +- **Blog Writing** +Content is King, keeping our blog up to date and informing the community of news helps keep everyone on the same page. -- **Marketing** -In this day and age attention is limited, we need all the help we can get to find people who are interested in Status, whether that is paid user aquisition, public relations or hype building, check out our [Community Outreach and Marketing Guide](http://wiki.status.im/contributing/outreach/) to see how you can spread the word. +- **Testers** +It's bug-hunting season! Status is currently under active development and there is sure to be a bunch of learning, [build status from scratch](doc/starting-guide.md) or if an android user checks out our [nightly builds](https://status.im/nightly). You can shake your phone to submit bug reports, or start browsing our [Github Issues](https://github.com/status-im/status-mobile/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy! -- **Testers** -It's bug hunting season! Status is currently in Alpha and there are sure to be a bunch of education, [grab your fresh copy of Status](http://TODO) and shake your phone to submit bug reports, or start browsing our [Github Issues](http://github.com/status-im/status-react/issues). Every bug you find brings Status closer to stable, usable software for everyone to enjoy! - -- **Security** +- **Security** Status is a visual interface to make permanent changes on the Blockchain, it handles crypto-tokens that have real value and allows 3rd party code execution. Security is paramount to its success. You are given permission to break Status as hard as you can, as long as you share your findings with the community! -- **Design & User Experience** -It's all about that sex appeal, we want cryptocurrencies to be easy and fun to use, ugly software doesn't help adoption. [Check out our designs](https://TODO) and show us how to make them better! - -- **Evangelism** -Help us spread the word! Tell a friend *right now*, infact tell **everyone** - yell from a mountain if you have to, every person counts! - +- **Evangelism** +Help us spread the word! Tell a friend *right now*, in fact, tell **everyone** - yell from a mountain if you have to, every person counts! If you've got a great story to tell or have some interesting way you've spread the word about Status let us know about it in our [chat](https://join.status.im/chat/public/status) + ## Give me Binaries! -Currently the fastest way to get your hands on a binary is to join our Early Access by submitting your email on our [website](https://status.im) or by [building it yourself](https://wiki.status.im/contributing/development/building-status/). - -// TODO GPlay, TestFlight Instructions & FDroid +You can get our Beta builds for both Android and iOS on our [website](https://status.app), through our [nightly builds](https://status.im/nightly/), or by [building it yourself](doc/starting-guide.md). ## Core Contributors - -Jarrad ([@jarradh](https://github.com/jarradh)) - Cofounder and Thought Leader. - - -Carl ([@carlbennetts](https://github.com/carlbennetts)) - Cofounder and Communications & Marketing. - - -Roman ([@rasom](https://github.com/rasom)) - Clojure and project lead. - - -Alexander ([@alwx](https://github.com/alwx)) - Clojure ninja! - - -Andrey ([@flexsurfer](https://github.com/flexsurfer)) - Clojure. - - -Gustavo ([@GustavoNunes](https://github.com/GustavoNunes)) - Clojure. - - -Victor ([@farazdagi](https://github.com/farazdagi)) - Golang one-man-army. - - -Andrei ([@andmironov](https://github.com/andmironov)) - Visual design and user experience conjurer. +[Core Team Members](https://github.com/orgs/status-im/people) Special thanks to [@adrian-tiberius](https://github.com/adrian-tiberius). -Without the dedication of these fine gentleman, Status would not exist. +Without the dedication of these outstanding individuals, Status would not exist. ## Contact us -Feel free to email us at [support@status.im](mailto:support@status.im) or better yet, [join our Slack](http://slack.status.im). - -Got a feature request or suggestion, download Status and shake your phone, failing that search our [Github Issues](http://github.com/status-im/status-react/issues). +Feel free to email us at [support@status.im](mailto:support@status.im). ## License -Licensed under the [Mozilla Public License v2.0](https://github.com/status-im/status-react/blob/develop/LICENSE.md) +Licensed under the [Mozilla Public License v2.0](https://github.com/status-im/status-mobile/blob/develop/LICENSE.md) diff --git a/RELEASES.md b/RELEASES.md new file mode 100644 index 00000000000..528e9860bbc --- /dev/null +++ b/RELEASES.md @@ -0,0 +1,1336 @@ +## 1.20 Release notes + +### Features + +* Add session management for wallet connect by @cammellos in https://github.com/status-im/status-mobile/pull/13799 +* [#13181] Cannot delete images or audio messages by @flexsurfer in https://github.com/status-im/status-mobile/pull/13210 +* [#13230] Show default syncing interval by @rasom in https://github.com/status-im/status-mobile/pull/13234 +* Add support for mutual contact requests by @cammellos in https://github.com/status-im/status-mobile/pull/13054 +* Implement Information box and ens banner view by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13753 +* Profile picture sync by @siphiuel in https://github.com/status-im/status-mobile/commit/fbfab9fd3bdbcfa6cdd9a24a6bce526da8252fd3 + +### Improvements + +* Improve notifications life-cycle by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13248 +* Simpledapp on Goerli by @churik in https://github.com/status-im/status-mobile/pull/13732 +* Include share action on longpress image menu by @jo-mut in https://github.com/status-im/status-mobile/pull/13359 +* fast image loading indicator by @flexsurfer in https://github.com/status-im/status-mobile/pull/13431 +* [#13355] Long time (5-15 sec) for loading chat messages by @flexsurfer in https://github.com/status-im/status-mobile/pull/13425 +* [Fixes: #13416] resize image in status-go as well, alert user if fails by @cammellos in https://github.com/status-im/status-mobile/pull/13422 +* [#12566] Remove legacy dependency on mailserver password by @erikseppanen in https://github.com/status-im/status-mobile/pull/13511 +* Wallet sync for generated accounts by @siphiuel in https://github.com/status-im/status-mobile/pull/13487 +* feat: lottie splash screen by @yqrashawn in https://github.com/status-im/status-mobile/pull/13714 +* [#13647] Update all settings on pairing with a new wallet account by @rasom in https://github.com/status-im/status-mobile/pull/13742 +* Improve ethereum.send by @qfrank in https://github.com/status-im/status-mobile/pull/13724 + +### Redesign + +* quo, Switcher Navigation by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13167 +* Switcher and Bottom Tabs Animations and UI Performance Improvements by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13470 +* feat: add token tag component (#13599) by @J-Son89 in https://github.com/status-im/status-mobile/pull/13644 +* [13565] icon-avatar component by @ibrkhalil in https://github.com/status-im/status-mobile/pull/13692 +* [13562] Wallet user avatar component by @ibrkhalil in https://github.com/status-im/status-mobile/pull/13681 +* Reply component in chat input & quoted messages redesign by @briansztamfater in https://github.com/status-im/status-mobile/pull/13706 +* Wallet redesign by @flexsurfer in https://github.com/status-im/status-mobile/pull/13172 +* [Potential: #13596] Add status-tags component by @cammellos in https://github.com/status-im/status-mobile/pull/13597 +* Chat views redesign by @briansztamfater in https://github.com/status-im/status-mobile/pull/13184 +* Implementation of React Native Blur view for android by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13663 +* feat: add token overview component (status-im#13555) by @J-Son89 in https://github.com/status-im/status-mobile/pull/13767 + +### Bug Fixes + +* fix screen orientation on android by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13218 +* Don't unmute contact while adding by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13237 +* fix chat image long press issue by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13371 +* [#13149] Timeline images stretch off screen by @siddarthkay in https://github.com/status-im/status-mobile/pull/13211 +* [#13233] Proper message after clearing history in pubchat by @rasom in https://github.com/status-im/status-mobile/pull/13241 +* [#13235] Fix opening of the last shown chat with local notifications by @rasom in https://github.com/status-im/status-mobile/pull/13252 +* [#13201] Fix handling of favourits syncing by @rasom in https://github.com/status-im/status-mobile/pull/13253 +* [#13257] Fix sync devices sorting by @rasom in https://github.com/status-im/status-mobile/pull/13282 +* [#13283] Fix syncing of adding contact after removal by @rasom in https://github.com/status-im/status-mobile/pull/13292 +* [#13263] Fix for ENS warning showing on custom domains by @daferna in https://github.com/status-im/status-mobile/pull/13312 +* fix can't share deep link from profile on ios by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13420 +* Fix sending logs from iOS by @bitgamma in https://github.com/status-im/status-mobile/pull/13619 +* fix #13642: Cannot sign in on claim.lens.xyz by @qfrank in https://github.com/status-im/status-mobile/pull/13668 +* [#13493] Can not switch to xDai chain by @flexsurfer in https://github.com/status-im/status-mobile/pull/13709 +* fix bookmarks not syncing by @Parveshdhull in https://github.com/status-im/status-mobile/pull/13727 +* fix: set max option not work when send from qrcode by @yqrashawn in https://github.com/status-im/status-mobile/pull/13733 +* [#13835] Fix Generate keys button by @rasom in https://github.com/status-im/status-mobile/pull/13841 +* Fix disappearing of the last notification when paired by @rasom in https://github.com/status-im/status-mobile/pull/13796 +* [#13766] custom networkid fix by @ flexsurfer in https://github.com/status-im/status-mobile/pull/13765 + +## New Contributors +* @siddarthkay made their first contribution in https://github.com/status-im/status-mobile/pull/13185 +* @daferna made their first contribution in https://github.com/status-im/status-mobile/pull/13312 +* @smohamedjavid made their first contribution in https://github.com/status-im/status-mobile/pull/13364 +* @ibrkhalil made their first contribution in https://github.com/status-im/status-mobile/pull/13450 +* @PEZ made their first contribution in https://github.com/status-im/status-mobile/pull/13494 +* @erikseppanen made their first contribution in https://github.com/status-im/status-mobile/pull/13511 +* @Rende11 made their first contribution in https://github.com/status-im/status-mobile/pull/13609 +* @yqrashawn made their first contribution in https://github.com/status-im/status-mobile/pull/13739 +* @ilmotta made their first contribution in https://github.com/status-im/status-mobile/pull/13747 +* @phrohdoh made their first contribution in https://github.com/status-im/status-mobile/pull/13772 +* @J-Son89 made their first contribution in https://github.com/status-im/status-mobile/pull/13767 + +**Full Changelog**: https://github.com/status-im/status-mobile/compare/1.19.0...1.20.0 + +## 1.19 Release notes + +### Features + +* 💬 Re-open app on the last open chat ([details](https://github.com/status-im/status-mobile/issues/12782)) +* 🪙 Support \$UBI token ([details](https://github.com/status-im/status-mobile/issues/12975)) +* 🔔 Implementation of remote android notifications ([details](https://github.com/status-im/status-mobile/issues/12866)) +* 🔁 Sync clear history on paired devices ([details](https://github.com/status-im/status-mobile/issues/13004)) +* 📑 Synchronize browser bookmarks/favorites across devices ([details](https://github.com/status-im/status-mobile/issues/12961)) +* 🔕 Add mute option to android ([details](https://github.com/status-im/status-mobile/issues/12890)) +* 👛 Wallet Connect 2.0 integration ([details](https://github.com/status-im/status-mobile/issues/12546)) +* 💰 Implement Wallet Connect 1.0 ([details](https://github.com/status-im/status-mobile/issues/12870)) +* ⚙️ Sync settings ([details](https://github.com/status-im/status-mobile/pull/13053)) + +### Improvements + +* Improve order of mailserver requests ([details](https://github.com/status-im/status-mobile/issues/12783)) +* Load images from an https server ([details](https://github.com/status-im/status-mobile/issues/12855)) +* Load audio messages from https server ([details](https://github.com/status-im/status-mobile/issues/13116)) +* Show message timestamps on tap, remove from bubbles 🕙 ([details](https://github.com/status-im/status-mobile/pull/12915)) +* support PUK and seed recovery during onboarding ([details](https://github.com/status-im/status-mobile/pull/12955)) +* update react-native-webview ([details](https://github.com/status-im/status-mobile/pull/12987)) +* Add group members to mentionable list ([details](https://github.com/status-im/status-mobile/pull/12994)) +* always use english for fallback text ([details](https://github.com/status-im/status-mobile/pull/13019)) +* Disable chat input for chats with a blocked user ([details](https://github.com/status-im/status-mobile/pull/13162)) +* Handle timeouts on mailserver requests ([details](https://github.com/status-im/status-mobile/issues/13022)) +* Human Readable data display when signing using eth_signTypedData_v3 ([details](https://github.com/status-im/status-mobile/issues/12535)) + +### Bug Fixes + +* Bug/fix opensea api ([details](https://github.com/status-im/status-mobile/pull/13021)) +* Show "Fetch more messages" only in public chats and communities ([details](https://github.com/status-im/status-mobile/pull/12927)) +* Chats are not synced if delete and re-add them on the first device while the second device is offline ([details](https://github.com/status-im/status-mobile/issues/12913)) +* fix distortion of app theme due to change in system theme ([details](https://github.com/status-im/status-mobile/pull/12934)) +* Unable to perform swap on 1inch.exchange if initial swap was cancelled by closing bottom sheet ([details](https://github.com/status-im/status-mobile/issues/12920)) +* Error when trying to edit 'per-gas price limit' on 1inch.exchange ([details](https://github.com/status-im/status-mobile/issues/12991)) +* Allow adding emoji in status input even if it exceeds limit ([details](https://github.com/status-im/status-mobile/pull/12949)) +* Allow adding emoji to group intro message if it exceeds limit ([details](https://github.com/status-im/status-mobile/pull/13024)) +* Use higher base fee value for default tx fee calculation ([details](https://github.com/status-im/status-mobile/pull/13020)) +* Profile QR code overlaps share menu during sharing (IOS) ([details](https://github.com/status-im/status-mobile/pull/13050)) +* No value in 'Gas amount limit' field in NFT dapps ([details](https://github.com/status-im/status-mobile/pull/13051)) +* Stop showing fetch more button for cleared history ([details](https://github.com/status-im/status-mobile/pull/13084)) +* fix ens resolve issue while following deep link ([details](https://github.com/status-im/status-mobile/pull/13080)) +* Fix deadlock on syncing all data ([details](https://github.com/status-im/status-mobile/pull/13128)) +* Fix broken username and timestamp layout for long usernames ([details](https://github.com/status-im/status-mobile/pull/13174)) + +## 1.18.0 Release notes :package: + +### Features +* 🚦Online status indicator +* 👛 Add possibility to select wallet for ENS names +* 🐞 Bug reporting and logs sharing improvements +* 🍳 Simplify Keycard onboarding by using defaults for pairing password +* 💾 Backup contacts via Waku +* 🪙 Added ENS token +* 🌠 Using react-native-fast-image for stickers +#### Message reliability improvements +* 𝌗 Show loading until all messages are processed +* 💪🏼 More robust message confirmations handling +* 📶 Allow sending messages when offline +#### Improvements on device pairing +* 🔔💻 Notification in activity centre now sync across devices +* ✅💻 Sync read messages across devices +#### Network settings improvements +* ✨ Add Binance Smart chain +* ♏︎ Added custom network symbol +* 💰 Network fee on xDai chain +* 📇 Support tx history (in a way) when on BSC chains +* 🙅🏻 Remove POA network from the list + +### Bug Fixes +* Fix activity center community invite preview +* Missing notifications for some contacts +* Fixes scrolling issues on the 'Max priority fee' bottom sheet +* Handle Keycard timeout on iOS 15 +* Allow user to be reinvited to the same group after leaving +* Fix for "TypeError: Network request failed" when switching to Goerli network +* Fix for Spin of death on adding custom NFT token contract +* Changing screen orientation results in breaking images / layout + + +## 1.17 + +### For iOS and Android + +### Features + +- 🖼️ Add ability to Share image from Status ([details](https://github.com/status-im/status-mobile/pull/12528)) +- 🕵️ Private Profile Photos ([details](https://github.com/status-im/status-mobile/pull/11768)) +- 🥥 Custom Emoji Thumbnails for Community Channels ([details](https://github.com/status-im/status-mobile/pull/12594)) +- 🔄 Sync deleted chats ([details](https://github.com/status-im/status-mobile/pull/12662)) +- 🔃 Sync removed/deleted/blocked contacts ([details](https://github.com/status-im/status-mobile/pull/12541)) +- 💸 Allow overriding nonce when sending transaction ([details](https://github.com/status-im/status-mobile/pull/12679)) +- 🗑️ Delete messages ([details](https://github.com/status-im/status-mobile/pull/12390)) +- 🎨 NFT Support via OpenSea ([details](https://github.com/status-im/status-mobile/pull/12485)) +- 🤳🏻 Enable collectibles and NFT as profile picture ([details](https://github.com/status-im/status-mobile/pull/12615)) + +### Improvements + +- Move pull to refresh to the account overview screen ([details](https://github.com/status-im/status-mobile/pull/12479)) +- Add $RARE token to our default list ([details](https://github.com/status-im/status-mobile/pull/12521)) +- Small UI Design Improvements ([details](https://github.com/status-im/status-mobile/pull/12544)) +- Chats list performance ([details](https://github.com/status-im/status-mobile/pull/12554)) +- Add push notification on group chat invite ([details](https://github.com/status-im/status-mobile/pull/12440)) +- Contacts performance ([details](https://github.com/status-im/status-mobile/pull/12643)) +- Add profile image in push notifications ([details](https://github.com/status-im/status-mobile/pull/12427)) +- Enable UI for signing legacy txs on networks without eip1559 ([details](https://github.com/status-im/status-mobile/pull/12692)) +- Doubled the character limit on timeline posts ([details](https://github.com/status-im/status-mobile/commit/a9333ad52ca71f512d5306f802927d0c20d63944)) + +### Bugfixes + +- Don't show notifications from self ([details](https://github.com/status-im/status-mobile/pull/12505)) +- Request permissions before saving images ([details](https://github.com/status-im/status-mobile/pull/12516)) +- Re-enable amount/fee validation on tx signing ([details](https://github.com/status-im/status-mobile/pull/12537)) +- Fix browser history sorting ([details](https://github.com/status-im/status-mobile/pull/12497)) +- Fix show/hide password on Android ([details](https://github.com/status-im/status-mobile/pull/12536)) +- Fix connecting autofarm.network dapps with status wallet freezes ([details](https://github.com/status-im/status-mobile/pull/12529)) +- RPC URL is lower-cased when entered in URL field when adding ([details](https://github.com/status-im/status-mobile/pull/12574)) +- Allow retrieving of profile updates after removing contact ([details](https://github.com/status-im/status-mobile/pull/12581)) +- Fetch history on receiving pubchat installation ([details](https://github.com/status-im/status-mobile/pull/12644)) +- Can't send funds to multisig - Out of gas ([details](https://github.com/status-im/status-mobile/pull/12648)) +- Fix handling errors on eth_gasPrice ([details](https://github.com/status-im/status-mobile/pull/12710)) + +## 1.16 + +### For iOS and Android + +### Features + +- EIP-1159 support ([#12369](https://github.com/status-im/status-mobile/pull/12369)) +- Hide/show option for accounts in the wallet ([#12438](https://github.com/status-im/status-mobile/pull/12438)) +- Delete accounts in wallet ([#12444](https://github.com/status-im/status-mobile/pull/12444)) +- Enable keeping database when migrating account to keycard ([#12306](https://github.com/status-im/status-mobile/pull/12306)) +- Replies from group chat in activity centre ([#12266](https://github.com/status-im/status-mobile/pull/12266)) + +### Improvements + +- Remove clear history from non-public chats ([#12384](https://github.com/status-im/status-mobile/pull/12384)) +- Clearing push notifications on read (Android) ([#12464](https://github.com/status-im/status-mobile/pull/12464)) +- Enable migration to keycard from signed-in state ([#11778](https://github.com/status-im/status-mobile/issues/11778)) + +### Bug Fixes + +#### Chat + +- Fix Error when opening 1-1 chat in Activity center for blocked user ([#12399](https://github.com/status-im/status-mobile/pull/12399)) +- Long press is long and it makes the message disappear entirely ([#12445](https://github.com/status-im/status-mobile/pull/12445)) +- Sort pinned messages by time of pinning ([#12402](https://github.com/status-im/status-mobile/pull/12402)) +- Screens with overlapping long usernames ([#12471](https://github.com/status-im/status-mobile/pull/12471)) + +#### Browser (Dapp) + +- Fix some token swap errors in Uniswap ([#12417](https://github.com/status-im/status-mobile/pull/12417)) +- Update react-native-webview for better SSL handling ([#12409](https://github.com/status-im/status-mobile/pull/12409)) + +#### Keycard + +- App freezes until reopening when signing tx with frozen Keycard ([#12473](https://github.com/status-im/status-mobile/pull/12473)) + +#### Wallet + +- Allow to add assets with same name ([#12466](https://github.com/status-im/status-mobile/pull/12466)) +- Update DATAcoin name ([#12454](https://github.com/status-im/status-mobile/pull/12454)) + +## 1.15 + +### For iOS and Android +### Features +- New improved native navigation, its very fast :dash: [[details](https://github.com/status-im/status-mobile/pull/12141)] +- Pinned messages in chats :pushpin: [[details](https://github.com/status-im/status-mobile/issues/11699)] +- Add support for ETH2x-FLI ERC20 token ⚫ [[details](https://github.com/status-im/status-mobile/issues/11885)] +- Add support for HEZ ERC20 token ⚫ [[details](https://github.com/status-im/status-mobile/issues/12233)] +- Show number of unread mentions in public and communities chats :bell: [[details](https://github.com/status-im/status-mobile/issues/12061)] +- QR code scanner for browser :ticket: [[details](https://github.com/status-im/status-mobile/issues/12195)] +- Edit messages after sending :pencil2: [[details](https://github.com/status-im/status-mobile/issues/12067)] +- Allow password reset :abcd: [[details](https://github.com/status-im/status-mobile/pull/12245)] + +### Improvements +- Native modals and tabs :house_with_garden: +- Improved time to show login screen :timer_clock: +- New, human friendly, terms of use :pencil: [[details](https://github.com/status-im/status-mobile/issues/12206)] + +### Bug Fixes +- No contact request in Activity Center after 1-1 chat deleted of non-contact user :no_good: [[details](https://github.com/status-im/status-mobile/issues/12218)] + +## 1.14 + +### For iOS and Android +### Features + +- Highlight posts that mention you ([details](https://github.com/status-im/status-mobile/pull/12146)) +- Remove PUK and Pairing Code screen from Keycard onboarding + [details](https://github.com/status-im/status-mobile/pull/12155)) +- Added unread messages count for messages with mentions in public chats ([details](https://github.com/status-im/status-mobile/pull/12152)) +- Sync history setting allowing to sync chat history up to 1 month ([details](https://github.com/status-im/status-mobile/pull/12166)) + + +### Improvements + +- "My profile" button for simplification of finding own public key ([details](https://github.com/status-im/status-mobile/pull/12044)) +- Factory reset option is available on account creation and recovery flows ([details](https://github.com/status-im/status-mobile/pull/12055)) +- Allow the creation of recovery/backup Keycard from the login interface ([details](https://github.com/status-im/status-mobile/pull/12115)) +- Reset blocked and/or frozen Keycards ([details](https://github.com/status-im/status-mobile/pull/12127)) +- Show cached balance ([details](https://github.com/status-im/status-mobile/pull/12134)) + + +### Bugfixes + +- Pending transactions are stored in the database and shown on history screen after re-login ([details](https://github.com/status-im/status-mobile/pull/12032)) +- Multiple fixes for keycard +- Fixes for resolving ENS name from chat key ([details](https://github.com/status-im/status-mobile/pull/12100)) + + +## 1.13 + +### For iOS and Android +### Features + +- New activity manager https://github.com/status-im/status-mobile/issues/11958 +New chats and group chat invitation will appear in a new section, the activity center, where a user will be able to accept or decline the request. +https://www.figma.com/file/r59kCQxl6tlC0dHkcAJOpP/Action-center-MVP---Mobile?node-id=2%3A8012 (not fully implemented) + +- Receive messages from contacts only option +Under privacy in settings a user will be able to select whether they want to receive messages and group chat invitations from contacts only. + +- Added delivered confirmation for private groups +Messages sent to private groups will now be marked as confirmed if at least one of the members received it. + +- New keycard functionalities: reset a keycard, changing PUK of a card, changing pairing code, create a new keycard backup card. + + +### Improvements + +- Improved UI for starting a new private chat + + +### Bugfixes + +- Fixed issue with crypto on ramp and requiring camera access +- Removed Wyre from list of services in buy crypto feature +- Added support for SOCKS token + + + +## 1.12 +### iOS +#### Excerpt +V1.12 Release - Keycard on iOS, Crypto Onramps, and More + +Keycard can now be used on iOS devices for hardware enforced security to your keys and accounts! Status v1.12 also introduces simpler access to obtaining crypto via onramps providers as well as some key updates to the messaging experience + +##### Added +Keycard iOS integration +Link previews for our.status.im and medium.om +List of Crypto onramps +Add “delivered” message confirmations to 1:1 messages +Keycard banner on login screen + +#### Fixed +UI issue showing up a chat on a paired device when it should not +UI issue was showing messages as pending if no one is part of the group chat* +Push notification is generated on paired account when you send message to 1-1 +UI issue for wrong notification when using two paired devices with same accounts +Improve keycard login time + +### Android +#### Excerpt +V1.12 Release - Crypto Onramps and Improved Messaging + +Status v1.12 introduces simpler access to obtaining crypto via onramp providers as well as some key updates to the messaging experience including delivered message confirmations in 1:1 private chats + +##### Added +Link previews for our.status.im and medium.om +List of Crypto onramps +Add “delivered” message confirmations to 1:1 messages +Keycard banner on login screen +Local notifications for Mentions + +#### Fixed +UI issue showing up a chat on a paired device when it should not +UI issue was showing messages as pending if no one is part of the group chat* +Push notification is generated on paired account when you send message to 1-1 +UI issue for wrong notification when using two paired devices with same accounts +Improve keycard login time + +## 1.11 +### iOS +#### Excerpt +V1.11 also makes some improvements to the overall Status experience. Improved compatibility with DApps creates a more seamless experience with your favorite DeFi, NFT, and other decentralized applications. Improvements to Status Nodes and fixes to Android notifications have been made for better performance with private, group chats and public chats. + +Update in the App Store or Google Play if you do not have auto updates enabled. + +For the full changelog, see Github https://github.com/status-im/status-mobile/milestone/49?closed=1 + +#### Added +- Add Giphy url support in chat +- The Graph (GRT) erc-20 token added to the default list + +#### Changed +- Improved compatibility with DApps +- Sync with Status Nodes improvements + +#### Fixed +- Fixes to Android notifications +- UI fixes +- Sluggish performance on private group chats bug + +### Android +#### Excerpt +V1.11 also makes some improvements to the overall Status experience. Improved compatibility with DApps creates a more seamless experience with your favorite DeFi, NFT, and other decentralized applications. Improvements to Status Nodes and fixes to Android notifications have been made for better performance with private, group chats and public chats. + +Update in the App Store or Google Play if you do not have auto updates enabled. + +For the full changelog, see Github https://github.com/status-im/status-mobile/milestone/49?closed=1 + +#### Added +- Migrate existing account to Keycard +- Add Giphy url support in chat +- The Graph (GRT) erc-20 token added to the default list + +#### Changed +- Improved compatibility with DApps +- Sync with Status Nodes improvements + +#### Fixed +- Fixes to Android notifications +- UI fixes +- Sluggish performance on private group chats bug + +## 1.10 +### iOS +#### Excerpt +Status version 1.10 is here and it is a perfect way to kick off 2021! Another feature rich update that makes the overall messaging, browsing, and transacting experience a whole lot better. Save your most frequently used DApps as favorites for one tap access to DeFi, NFTs, and more. Set a profile image to express yourself in chat. Speed up and cancel pending transactions and pull down to check for new transactions. + +#### Added +- Pull to refresh on individual account view +- Save dapps as favorite +- Switch between dapps in multiple tabs +- Banner to find dapps to buy crypto +- Sent message confirmation icon + +#### Changed +- Manage dapp permissions without leaving the browser +- Keycard pairing code updated to readible 5 symbol code +- Profile and settings back to most right position in tab bar + +#### Fixed +- Visibility of tab bar in dark mode +- Watching accounts for transaction in chat messages (update status) +- Multiple notifications for a single erc20 transfer +- Change group chat name when '/' character is included +- Show transaction in chat for small amounts +- Correction to transaction status in chat +- Rotate mailservers on error return +- Remove unused transport security entries +- Send chat messages in order so that text is always below image +- Performance of list rendering +- Alignment and image flickering issues in status updates +- Disallow multiple pop ups to be shown at the same time +- Add multiple custom history nodes without relogin + + +### Android +#### Excerpt +Status version 1.10 is here and it is a perfect way to kick off 2021! Another feature rich update that makes the overall messaging, browsing, and transacting experience a whole lot better. Bookmark your most frequently used DApps for one tap access to DeFi, NFTs, and more. Set a profile image to express yourself in chat. Speed up and cancel pending transactions and pull down to check for new transactions. + +#### Added +- Pull to refresh on individual account view +- Save dapps as favorite +- Switch between dapps in multiple tabs +- Banner to find dapps to buy crypto +- Sent message confirmations + +#### Changed +- Install with deeplink to public chat (Join to fetch messages) +- Manage dapp permissions without leaving the browser +- Keycard pairing code updated to readible 5 symbol code +- Profile and settings back to most right position in tab bar + +#### Fixed +- Visibility of tab bar in dark mode +- Watching accounts for transaction in chat messages (update status) +- Multiple notifications for a single erc20 transfer +- Change group chat name when '/' character is included +- Show transaction in chat for small amounts +- Correction to transaction status in chat +- Rotate mailservers on error return +- Remove unused transport security entries +- Send chat messages in order so that text is always below image +- Performance of list rendering +- Alignment and image flickering issues in status updates +- Disallow multiple pop ups to be shown at the same time +- Add multiple custom history nodes without relogin + + +## 1.9 +### iOS +#### Excerpt +With release 1.9, Status gives you the tools to better connect and engage with your friends and communities. You'll find a whole new tab for Status updates. Share what's on your mind and follow what your contacts are up to. + +Status updates, and any chat, are now more colorful with opt in link previews. + +#### Full + +#### Added +* Profile status updates +* Add unfurling of URLs in chats (YouTube) +* Onboarding into public chats + +#### Changed +* Add backwards compatibility for ENS Usernames +* Account cards design to accomodate high value accounts +* Rename Status account to Ethereum account for first account on onboarding +* Remove manual fetch 24h in bottom sheet +* Pinch to zoom on images + +#### Fixed +* Personal sign method +* Slow asset list +* Loading of older transactions (< April) +* Loading of message history after rejoining a public chat +* Unread message counter update when other user replies to own message +* App crash on navigation from and to generate keys in onboarding + + +### Android +#### Excerpt +With release 1.9, Status gives you the tools to better connect and engage with your friends and communities. You'll find a whole new tab for Status updates. Share what's on your mind and follow what your contacts are up to. + +Status updates, and any chat, are now more colorful with opt in link previews. + +#### Full + +#### Added +* Profile status updates +* Add unfurling of URLs in chats (YouTube) +* In-app local notifications for transactions(Beta) +* Onboarding into public chats + + +#### Changed +* Add backwards compatibility for ENS Usernames +* Account cards design to accomodate high value accounts +* Rename Status account to Ethereum account for first account on onboarding +* Remove manual fetch 24h in bottom sheet +* Pinch to zoom on images + +#### Fixed +* Personal sign method +* Slow asset list +* Loading of older transactions (< April) +* Loading of message history after rejoining a public chat +* Unread message counter update when other user replies to own message +* App crash on navigation from and to generate keys in onboarding + + + +## 1.8 +see https://notes.status.im/release-1.8-notes# +### Android + iOS +#### Excerpt + +#### Full +##### V1.8 Release - More people, more private & bug fixes + +This release includes updates that further improve private communication and your control over it. Group chats can now include up to 20 members (previously 10). With this increase, group chat preserves it's confidentiality, e2e encryption, and perfect forward secrecy that come with 1:1 private chats; Now usable with larger groups, without negatively impacting the network. Truly private group chats. + +Additionally, you can now opt out of 'History nodes' under Sync settings. With this option you control if you are ok sharing your IP address with a server in order to collect messages send while you were offline. In case you didn't know, you can also [run your own history node](https://status.im/technical/run_status_node.html) to connect to. + +Finally, when you receive a new ERC-20 token you can now add it to your wallet by tapping 'Scan tokens'. + + + +#### Added +* Increased private group chat size to 20 +* Allow users not to connect to history nodes +* Added scan button to fetch ERC-20 tokens + +#### Fixed +* Fix browser issues with logging in on github.com +* Fix bug with mentions not resolved in messages with markdown +* Fix blank view when open yearn.finance +* Fix entering “0x” in recipient field + +Update in the [App Store](https://apps.apple.com/us/app/status-private-communication/id1178893006) or [Google Play](https://play.google.com/store/apps/details?id=im.status.ethereum) if you do not have auto updates enabled. + +The APK available is [here](https://status-im-files.ams3.cdn.digitaloceanspaces.com/StatusIm-Mobile-v1.8.0.apk). + +For the full changelog, see our [Github](https://github.com/status-im/status-mobile/commits/release/1.8.x). +> [Verify APK link before publishing blog post] +> + +## 1.7.2 + +This release fixes an issue with fetching ERC20 balance. It was due to a contract that has been migrated to a different address which cause the whole request to fail. + + +## 1.7.1 +Full release commits: https://github.com/status-im/status-mobile/commits/release/1.7.1 +### Android + iOS +#### Excerpt +Several users have reported an issue in upgrading from release 1.6.1 to release 1.7. This update fixes the issue. + +#### Full +Several users have reported an issue in upgrading from release 1.6.1 to release 1.7. This update fixes the issue. + +The issue occurs when the application is killed during a migration that is part of the update. Killing the app causes the migration to fail and leaves a persistent database error. This error prevents users from unlocking their profile; Showing an error on password entry. The fix provided above resolves this issue by restarting the migration. It also prevents the issue from occuring if you haven’t updated yet. + +So far we’ve only received reports on this issue occurring on Android. We’re monitoring closely to see if further action is required and will take action to prevent this issue from occuring in future updates. Many thanks to our ambassador tbenr and others who reported this issue. + +#### Fixed +Retry failed migration + + +## 1.7 +Full release commits: https://github.com/status-im/status-mobile/commits/release/1.7.x + +### Android +#### Excerpt (446 characters including spaces) +Introducing the ability to mention and be mentioned (Beta). A host of other updates make it easier to recognize people and addresses. Status uses the infamous animal random names by default to provide pseudo-anonymity. You can now give 'Trusting Honeydew Panda' a nickname to recognize them. When sending transactions you can save and select favorite addresses. A safeguard will warn you when sending funds to a contract to prevent loss of funds. + +#### Full +Introducing the ability to mention and be mentioned. Note that this feature is in Beta, your feedback is much appreciated. Aside from Mentions, this release includes a host of other updates that are all about making it easier for you to recognize people and addresses. Status uses the infamous animal random names by default to provide pseudo-anonymity. While your best friend might be the 'Trusting Honeydew Panda' you can now give them a nickname to recognize them. Sending transactions got easier with the new feature to save and select favorite addresses. A safeguard will warn you when sending funds to a contract to prevent loss of funds. + + +#### Added +* Mentions (Beta) +* Local nicknames +* Wallet address selection (favorites, contacts, recent) +* Private group chat invite links +* Warning when attempting to send a transaction to a contract +* New tokens: UNI, COMP, BAL, AKRO, OXT, aUSDC +* Collapse long messages for more readible threads + +#### Changed +* Removed the ability to enable using Whisper instead of Waku + +#### Fixed +* Upgrade phishing detection library +* Decimal rounding when using 'Set max' +* ENS resolving for IPNS names +* SUPR support for old and new token contract + + + + +### iOS +#### Excerpt (496 characters incl spaces) +Introducing privacy preserving notifications on iOS. Paired with the ability mention and be mentioned (Beta). A host of other updates make it easier to recognize people and addresses. Status uses the infamous animal random names by default to provide pseudo-anonymity. You can now give 'Trusting Honeydew Panda' a nickname to recognize them. When sending transactions you can save and select favorite addresses. A safeguard will warn you when sending funds to a contract to prevent loss of funds. + +#### Full +Introducing privacy preserving, remote notifications on iOS. Paired with the ability mention and be mentioned. Note that this feature is in Beta, your feedback is much appreciated. Aside from Mentions, this release includes a host of other updates that are all about making it easier for you to recognize people and addresses. Status uses the infamous animal random names by default to provide pseudo-anonymity. While your best friend might be the 'Trusting Honeydew Panda' you can now give them a nickname to recognize them. Sending transactions got easier with the new feature to save and select favorite addresses. A safeguard will warn you when sending funds to a contract to prevent loss of funds. + +#### Added +* (Remote) Notifications on iOS +* Mentions (Beta) +* Local nicknames +* Wallet address selection (favorites, contacts, recent) +* Private group chat invite links +* Warning when attempting to send a transaction to a contract +* New tokens: UNI, COMP, BAL, AKRO, OXT, aUSDC +* Collapse long messages for more readible threads +#### Changed +* Removed the ability to enable using Whisper instead of Waku + +#### Fixed +* Upgrade phishing detection library +* Decimal rounding when using 'Set max' +* ENS resolving for IPNS names +* SUPR support for old and new token contract + + +## 1.6.1 +### Android + iOS +#### Excerpt +Introducing a spam mitigation +#### Full +Introducing a spam mitigation +##### Fixed +- Restrict message size on input +- Drop messages based on character length + + +## 1.6 +### Android +#### Excerpt +#### Full +This release includes a small, but important change to existing functionality: Onboard using a 'Referral URL'. You can confirm that you discovered the app through a partner of Status (Opt-in only). It also includes a fix to a persistant bug that resulted in messages not being marked as seen. + +##### Changed +- Attribute a referrer when installing and onboarding to the app using a Referral URL + +##### Fixed +- Mark 1:1 messages as seen (Badge kept reappearing when tapping 'Add as contact') + +### iOS +#### Excerpt +#### Full +This release includes a fix to a persistant bug that resulted in messages not being marked as seen as well as an issue that caused the app to crash. +##### Fixed +- Mark 1:1 messages as seen (Badge kept reappearing when tapping 'Add as contact') +- Crash on iOS when device passcode is switched off and 'Save password' is enabled inside the app + + +## 1.5 +### Excerpt (493 characters excl url) +Now including those features that make you feel connected while being miles apart. If there was a time you wondered if you could chat with friends and family, without giving up your privacy or security, wonder no more. Send images, audio messages, and show your love with emoji reactions ❤️; Not a word is sent to the cloud. #appdown is not a thing. E2E encryption is. If you have Internet you can send and receive messages. Securely. Privately. Always. +For the full changelog, see our Github + +### Full +Now including those features that make you feel connected while being miles apart. If there was a time you wondered if you could chat with friends and family, without giving up your privacy or security, wonder no more. Send images, audio messages, and show your love with emoji reactions ❤️; Not a word is sent to the cloud. #appdown is not a thing. E2E encryption is. If you have Internet you can send and receive messages. Securely. Privately. Always. + +Making new friends on open communities is now easier as well. We took the liberty of surfacing a few active public chats by category. + +For the full changelog, see our Github + + +#### Added +* Send images in 1:1 and group chats +* React with emojis to any message +* Send voice messages in 1:1 and group chats +* Discover public chats by category +* Ability to delete an account + +#### Changed +* Major interface improvements throughout, introducing our Quo component framework +* Auto-forwarding of the onboarding carousel +* Clarify and move 'Access existing keys' to import accounts +* Showing password entry and confirmation on the same screen +* Add contacts or invite friends from Contacts +* Searchbar includes search for ENS names + + +#### Fixed + + + +## 1.4.1 - Round of improvements +### Excerpt +This intermediate release, 1.4.1, includes bug fixes as well as UX and accessibility improvements. Most visibly, a gorgeous set of new icons, accessible input fields and toggling password entry visibility. Next to that the release includes updates to Notifications on Android, like being able to open Status, as well as close the notification service, directly from the notification banner. + +For the full changelog, see our [Github](https://github.com/status-im/status-mobile/commits/release/1.4.x) + + +### Full +While focused on building new features there are a few improvements we did not want to hold off on sharing. This intermediate release, 1.4.1, includes bug fixes as well as UX and accessibility improvements. Most visibly, a gorgeous set of new icons, accessible input fields and toggling password entry visibility. Next to that the release includes updates to Notifications on Android, like being able to open Status, as well as close the notification service, directly from the notification banner. + +For the full changelog, see our [Github](https://github.com/status-im/status-mobile/commits/release/1.4.x). + + + +#### Added +- Language support for Keycard use with Status (see our supported languages in [FAQ](https://status.im/faq/)) + +#### Changed +- Open the app and close the notification service from the notification banner +- More informative error messages for transaction overview contract and network fees +- Added a check for encoded characters in urls to increase browser security +- More accessible text input +- Replace icons with a more unified, carefully crafted set +- Update connectivity snackbar to explain messages can still be send and received when offline; only history does not sync + +#### Fixed +- ENS name is no longer infinitely pending when transaction has failed +- Added explainer that restart of the app is required to Disable logs +- Changed notification icon styling to follow convention of other apps +- Fixed critical issue that caused occasional app crashes +- Now giving feedback when blocking users is in progress +- Apply dark mode/light mode changes to System panel +- Update balance of custom tokens to be visible upon adding the token +- Show chat view after chat search gives no results (chat list showed up empty) +- Bring back numpad to sign with Keycard after dismissing an error (e.g. having tapped an unpaired card) +- Keyboard changes (include decimals for amount input and auto-capitalization) + + + + + +## 1.4 - Keycard, notifications DRAFT +In version 1.4, Status introduces a much anticipated integration with Keycard - the secure, contactless hardware wallet, also designed and developed by The Status Network. This integration enables Keycard holders to store their private keys offline on the Keycard device, add hardware-enforced authorizations to all of their transactions, and introduce two-factor authentication to log into their Status account. + +Another highly anticipated feature is the introduction of notifications. These notifications are [ANDRE to add detail].... + +The final addition to v1.4 is the introduction of browser support for EIP 1139 – A JavaScript Ethereum Provider API for consistency across clients and applications. + +Beyond that, version 1.4 includes some updates to the FAQ, extended translation support, and some fixes to ENS username displays, dark mode contrast, QR code scanner and more. + +For the full changelog, see our [Github](https://github.com/status-im/status-mobile/commits/release/1.4.x). + +#### Added +- Keycard integration on Android +- Browser support for eip-1193 (?) +- Notifications (Android) +- Content type for images in preparation of 'Images in chat' release + +#### Changed +- Extended and consolidated FAQ +- Extended translation support +- Animation in header (Profile + Wallet) + + +#### Fixed +- ENS in chat only when transaction is confirmed +- Dark mode contrast (increased) +- Updated and expanded token icons +- Resolved error on scrolling account view +- Parse markdown in subheader chat list +- Banner to back up seed phrase tappable +- [Chat performance improvements](https://github.com/status-im/status-mobile/pull/10711) +- QR code scanning issue when scanning from join.status.im + + +## 1.3 - Dark Mode, Group Chat + +In version 1.3, Status catches up to the most important design trend in recent history with the introduction of a dark mode. + +Hyperbolic? Perhaps, but we've heard your requests and we made it happen. Your app's appearance will now default to match your system settings, but if you'd like, you can head to `Profile` > `Appearance` to override it. Dark mode sure is easy on the eyes. + +Beyond that, we're bringing back private groups, another highly requested feature. Private groups allow you to add up to 9 friends to an invite-only chat. At the protocol level, group chats in Status function similarly to 1:1 chats. They're encrypted end-to-end and utilise perfect forward secrecy to protect your privacy. + +In the future, we'd like to expand these to host more than 10 members. We'll embark on further testing to determine the upper limit that our current protocol can support. + +Lastly, we've changed our webview implementation over to the react-native-community package, to remain in sync with the React Native community and benefit from upstream improvements. + +As always, we've also included a few nice fixes in this release. For the full changelog, [see our Github](https://github.com/status-im/status-mobile/commits/release/1.3.x). + + +#### Added +- Dark mode +- Group chat + +#### Changed +- Browser implementation now using react-native-community webview package + +#### Fixed +- Updates to back navigation +- Persistant wallet value +- Update to all text input, increasing pressable areas +- Improved seed phrase text input on small screens +- Easier to find user's public key for sharing (https://github.com/status-im/status-mobile/pull/10207#event-3163431514) +- Shortened universal links (https://github.com/status-im/status-mobile/issues/10083) + +## 1.2 + +### Short Version + +The change log is small, but significant! We've enabled mailservers that use our forked version of Whisper, known as Waku. Waku servers reduces bandwidth consumption by the app and enable Status to serve more concurrent users. + +A few bug fixes and optimizations are included, too. + +### Blog Post + +This release is one of the most important in Status' history. The change log is small, but significant. Today we're rolling out new mailservers that use our fork of the Whisper messaging protocol, known as Waku. + +Waku mailservers prevent Status from using excessive mobile bandwidth. With Waku, Status can support 10 times as many users as with Whisper servers alone. + +Regular Whisper mailservers use topic-based filters to surface only the chats that you want to see, but your device still receives all messages sent over the network. Filtration happens after the fact. + +To save on resources, Waku mailservers simply tell other nodes in the network which topics your device would like to receive content for, filtering before the messages reach your device. + +Heavy message traffic can be incredibly resource intensive, depending on how many topics you follow. For a heavy user, the difference can amount to several hundred kilobytes of data per minute. + +There is a potential privacy tradeoff in making your followed topics apparent to other nodes—it is easier to know if a given IP address belongs to a certain chat. + +In v1.2, we offer the legacy Whisper servers as an option under `Advanced` settings. You can disable Waku by toggling `Waku enabled`. Waku mailservers talk to existing mailservers without any disruption. + +With further improvements to Waku in the pipeline, Status becomes accessible to even more users and can deliver peer-to-peer messaging without draining unnecessary data. + + + +### Changelog + +#### Changed +- Waku mailservers +- Updating wallet fiat prices even more frequently (awaiting clarification) + +#### Fixed +- App crashing when webview is closed +- Messages not showing when received while on a different tab +- Token balances displayed as 0 after relogin + +## 1.1 + +Biggest changes: +- Status now support importing private key and seed phrase inside multiaccount! +(https://github.com/status-im/status-mobile/pull/10100) +- all chat dialogs moved to bottom sheet +- added "Mark all as read" option +- unread badge is changed for public chat + +More detailed: + +ENS name improvements: + +- https://github.com/status-im/status-mobile/pull/9952 - fixes ENS to new registry +- https://github.com/status-im/status-mobile/pull/9997 - Check for empty public key (for ENS names) +- https://github.com/status-im/status-mobile/pull/10007 - improve ENS display in Public chats +- https://github.com/status-im/status-mobile/pull/10022 - fix crash on long ENS names + + +General improvements: + +- https://github.com/status-im/status-mobile/pull/10027 - deep link handling (rename get.status.im to join.status.im) +- https://github.com/status-im/status-mobile/pull/9940 - changed navigation on logout +- https://github.com/status-im/status-mobile/pull/9917 - added search to currencies and assets +- https://github.com/status-im/status-mobile/pull/9941 - improvement on snackbar by considering login time (less "Offline", "Connected" after login) +- https://github.com/status-im/status-mobile/pull/9898 - added qr code reader for scanning QR when add watch-only address +- https://github.com/status-im/status-mobile/pull/9882 - Respond to FaceID failure callback +- https://github.com/status-im/status-mobile/pull/9915 - Make bottom sheet height dynamical +- https://github.com/status-im/status-mobile/pull/9931 - 2 lines for user name on intro screen + +Chat improvements: +- https://github.com/status-im/status-mobile/pull/10056 - added "Mark all as read" feature +- https://github.com/status-im/status-mobile/pull/9993, https://github.com/status-im/status-mobile/pull/9999 - better handling of ENS names / chat keys when starting new chat +- https://github.com/status-im/status-mobile/pull/10117 - reworked unread message indicator in public chats +- https://github.com/status-im/status-mobile/pull/9868 - all chat dialogs are moved to bottom sheets + +Performance improvements: +- https://github.com/status-im/status-mobile/pull/9995 - Offload chat messages +- https://github.com/status-im/status-mobile/pull/10120 - Android app UI is slow after background + +Issues fixed: +- https://github.com/status-im/status-mobile/issues/10002 +- https://github.com/status-im/status-mobile/issues/8797 +- https://github.com/status-im/status-mobile/issues/6839 +- https://github.com/status-im/status-mobile/issues/9754 +- https://github.com/status-im/status-mobile/issues/10044 +- https://github.com/status-im/status-mobile/issues/10041 +- https://github.com/status-im/status-mobile/issues/9886 + +## 1.0 + +### Blog Post + +Status version 1 is live! + +After nearly a year of quiet and focused development, we've restructured the core application, built out the promises of the white paper and prepared the app for a future in which the Status Network seeks to deliver on the promises of Ethereum at large. + +While the core mobile application is no longer the sole focus of the Status Network, it is integral to our dream of a decentralized web. With Status, we're building not just a tool for private and secure communication, but a gateway into an emerging ecosystem of distributed applications that embodies what is possible with decentralized technologies today. We believe apps like Status represent the future of the web—enabling an internet that can uphold human rights, and providing a path towards more open and equitable systems. + +Today, the underpinninngs of the core application are still tethered to the Ethereum stack. Whisper is still the communication layer of Status, and Status is still the only production use case of Whisper. + +The scalability of Whisper is not significantly improved from what it was roughly three years ago, when we first embarked on this project. We face immense challenge in building on this stack every day. + +But we also feel ready to share our progress with the world. Status version 1 launches with the Ethereum wallet, web3-enabled browser and peer-to-peer messenger that our community knows well. It includes new SNT utility features, like a sticker marketplace and a decentralized DApp directory (https://dap.ps). Other white paper features, such as the fiat-to-crypto Teller Network and incentivized messaging with Tribute to Talk, are well underway. + +Most pressingly, we're working to remedy the limitations of Whisper. In a forthcoming release, we'll introduce Waku mailservers, which will reduce the amount of bandwidth Status consumes—an important point for accessibility—and extend the capabilities of our nodes so that Status can support more concurrent users. + + +[Link to user guide] +[Link to roadmap] +[Shoutout contributors & team] +Huge shout out to our contributors: +Enrico +Yalu (user GH name) +Acolytec3 + +----- + +**Support comms** +- How to submit stickers for sticker marketplace ([google form](https://docs.google.com/forms/d/19itZB_V5bVW4cyV8a2ifDWHuQSr9V_dkVMCl6ARxOag/edit)) +- How to share your feedback with us (#status, primarily) +- Learn more about Status - Glossary, [FAQs up-to-date](https://status.im/docs/FAQs.html), [user guide by Jonny](https://docs.google.com/presentation/d/11o53KGcuzKouDU5VBeTB01mLCm41hKKuraz-AaudsEg/edit#slide=id.p) +- How to release your ENS name ([here](https://hackmd.io/QrfTRP6sQ9aQzjFyb_IfRQ?both)) +- How to set up your existing ENS name ([here](https://hackmd.io/QrfTRP6sQ9aQzjFyb_IfRQ?both)) + +----- + +**v1.0 Change Log** +**Added** +• Support for multiple Ethereum wallets within one Status account +• Generate unlimited additional BIP 44 wallets in Status +• Add watch-only addresses as well +• Brand new onboarding and key encryption flow +• Choose your random name and public chat key during onboarding +• You also can recover a seed phrase from any mnemonic compatible wallet +• Improvements to wallet transaction flow UI +• Sticker market and two initial sticker packs +• Choice of wallet to use when interacting with Dapps +• [Proper markdown support](https://github.com/status-im/status-mobile/pull/9409#issue-338045622) +• ENS username setting option for use in chat +• Improved chat intro screen and public chat list +• Updated chat command flow, with additional privacy layer to be compatible with multiaccount + +**Removed** +• Custom display names +• Custom profile photos, temporarily—photos will become a feature of ENS +• Push notifications—these will be improved and reintroduced for Android +• Group chat, temporarily—fixes to be prioritized for v1.1 +• Google Firebase database and Realm.js DB—performance gains, and more in line with our principles (fewer third party services) + +**Changed** +• Algorithm for deriving public chat key changed, performance. (andrey review: pubkey or 3 word name?, not sure if Algorithm for deriving pubkey can be changed) +• Storage of app state moved to Status-go—performance improvements in chat load times +• Browser privacy mode enabled by default, option removed (EIP1102) +• Updates to EIP1102 for compatibility (https://github.com/status-im/status-mobile/pull/9629) +• Protocol breaking changes: removed transit encoding in favor of protobuf, for better performance and interoperability with other languages +• Roughly 45% improvement in how quickly chats load +• Profile screen cleaned up + + +---- + +> Names and picture have changed as we use a different algorithm to generate it (linear > > feedback shift register instead of Mersienne Twister). +> There are breaking changing between protocol, as agreed before, so no compatibility at all. Previous version won't be able to receive/send messages to v1. + +> We confirmed the performance improvement with the test-team, roughly 45% improvement in how quickly chats load (maybe greater). +>indeed, true, good move to make together. +> but I would suggest to also add in the release changelog that the algorithm for deriving a > pubkey -> 3 word name changed, just because a standard was changed +> this is also good to say because there is performance gains. + + +## 0.13.2 +- V1 notification +- Bug fixes: + - Neverending loading indicator (#8550) + - Last message jumps after chat is opened (#8556) +- Sticker Market with two packs launched on mainnet +- Account explorer in preparation for multi-account +- Onboarding face lift (preparing for multiaccount/keycard) + +## 0.13.0 + +This release comes with a long change log and one popularly requested new feature: custom, user-added ERC20 token support. + +If you'd like to see a token that the Status wallet does not display by default, you can now add it yourself. From the wallet screen, open `Manage Assets` from the `...` menu and select `Add custom token`. Fill in the token's contract address, and the relevant information, and you will then be able to view this asset in your wallet. + +We've also added and altered our privacy settings: + +1) New `Preview privacy mode`: toggling this option in your profile will ensure that Status displays a blank screen when switching apps on your phone, to protect you from accidentally exposing your information while doing other things. Thanks to contributor [bitsikka](https://github.com/bitsikka) for this feature! +2) `Browser privacy mode` has been relocated from the profile to the browser, and reconfigured into a two option setting. Selecting `Require my permission` for this setting ensures that privacy mode is on, but still means that some DApps may be incompatible with Status. + +![](https://notes.status.im/uploads/upload_c9ea844cdcdc1ce5a786373ac08521bc.png) + +There are a few more important changes: + +- `Fetch more messages` was introduced in 0.12.0 to fill gaps in your message history; it now backfills gaps of up to 30 days in public chats, increased from 24 hours. +- We've removed the swipe functionality from the chat screen. To remove a chat, you can now tap on it and hold, pulling up a bottom menu. Another shout out to [bitsikka](https://github.com/bitsikka) for this change! +- We've reintroduced bug reporting on both iOS and Android: shake your phone to pull up an email report, or enable `Development mode` from your profile screen to `Report a bug` from there. + +Lastly, we've had some great contributions from the community for this release. They've added new features, refactored and even merged some changes to our developer tools. + +Special thanks to [tbenr](https://github.com/tbenr), [bitsikka](https://github.com/bitsikka), [m0ar](https://github.com/m0ar) and [alexanmtz](https://github.com/alexanmtz) for your recent [commits](https://notes.status.im/CgruSsRzQVGhsagaLxXGqQ?view#0130-mobile-release)! + +To get involved, you can find our current bounty issues on Gitcoin [LINK]. + + + +**Added** +- Custom, user-added ERC20 support +- New bug reporting options: shake device to send a report, with logs attached +- Bloom Protocol token - thanks to contributor [m0ar](https://github.com/m0ar)! +- Preview privacy mode to display blank Status screen when switching apps - thanks to contributor [bitsikka](https://github.com/bitsikka)! +- URLs for transactions open in Status (partial [EIP681](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-681.md) support) + +**Changed** +- Moved `Browser privacy Mode` toggle to the browser screen as new preference setting +- `Fetch more messages` button now retrieves up to 30 days of history in public chats +- Long press a chat for more options; no more swiping +- Fewer messages rendered before a chat is scrolled for better performance ([8191](https://github.com/status-im/status-mobile/pull/8191)) +- Using checksummed addresses in wallet (EIP55) ([8121](https://github.com/status-im/status-mobile/issues/8121) and [4959](https://github.com/status-im/status-mobile/issues/4959)) +- Scanning QR code from a DApp does not cause redirect + +**Fixed** +- Browser crash when incorrect domain entered ([8239](https://github.com/status-im/status-mobile/issues/8239)) +- ENS registration bug ([8249](https://github.com/status-im/status-mobile/issues/8249)) +- Wallet balance updates correctly after Tx received ([8107](https://github.com/status-im/status-mobile/issues/8107)) +- Support for EIP1577/`contenthash` field for ENS +- Numeric validation for `send`/`receive` chat commands ([1442](https://github.com/status-im/status-mobile/issues/1442)) +- Allow to select chat item below plus button ([7859](https://github.com/status-im/status-mobile/issues/7859)) + + +## 0.12.0 + +In this release, we're announcing the launch of Discover! + +Discover is our new portal for exploring the decentralized web. It has long been our vision for Status to act as a gateway to the new web, just like Chrome or Safari do for web2. + +Until this point, however, we've prioritized a curated list of DApps over an open-ended experience. + +With the launch of Discover, our browser becomes just that—a browser, with special capabilities for web3. + +Discover is its own web app and the new go-to for finding DApps. For now, we've ported over our existing list, with a few upgrades to the UI. + +But in the near future, we're decentralizing Discover, enabling anyone to add a DApp and giving the community control over curation through an SNT voting mechanism. More on that [here](https://our.status.im/discover-preparing-for-launch/). + +Discover can be accessed from any browser at https://dap.ps, so you can participate on desktop as well. + +This release also comes with a noteworthy chat improvement. Previously, a gap in connection to the mail servers—which happens if Status is closed for more than 24 hours or otherwise loses connection—meant that some messages might be lost. + +We now detect gaps where messages are missing and offer you the option to fetch the missing history. By tapping `Fetch messages` when it appears within a chat, you can backfill missing history. This is a big step forward for reliability in our peer-to-peer service. + +**Added** +- `Fetch messages` option to get missing message history +- Discover is live on https://dap.ps + +**Changed** +- `DApps` screen is now fully browser-centric with address bar, history and a link to Discover + + +**Fixed** +- Contact syncing between 0.11.0 and newer builds +- 503 error when accessing DApps +- More reliable history for token transactions + +## 0.11.0 + +Download 0.11.0 and you'll notice one thing right away: we have a new navigation! + +The home screen has been split into two tabs: Chats & DApps. From the chat view, you'll find the option to start or join a new chat has moved from the top right corner to bottom center. + +The DApp list also looks slightly different. We've done away with info screens for each DApp. Once you navigate to a URL, you'll find that your browser history appears under a `Recent` section at the top. + +This is phase one of bigger improvements to come, so we'd love to hear your feedback. + +We've also made preparations for the impending [Chaos Unicorn Day](https://chaos-unicorn-day.org/) in this release. + +Reminder: On April 1st, we'll experiment with eliminating all centralized, third party services from Status, including our own node clusters. To safeguard from the chaos, we've prepared [a guide for you](https://our.status.im/bulletproofing-against-chaos-unicorns-with-status-on-arm/). + + + +**Added** +- New DApps added +- New extensions features integrated within Status +- Chaos mode and preparation for Chaos Unicorn Day + +**Changed** +- New bottom navigation: chats & DApps are separated +- Improved UI performance (https://www.pivotaltracker.com/story/show/164245989) + +**Fixed** +- Universal link to public chat bug (https://github.com/status-im/status-mobile/issues/7549) +- Beta warning popup (https://github.com/status-im/status-mobile/issues/7771) +- DApp offline error (https://github.com/status-im/status-mobile/issues/7188#issuecomment-474308724) +- Bug with QR code scanner for custom bootnodes (https://github.com/status-im/status-mobile/pull/7782) +- Error message when entering an incorrect custom mailserver (https://github.com/status-im/status-mobile/issues/7752) + + +## 0.10.1 - Hot Fix + +**Added** +- Option for automatic mail server selection to optimize connection + +**Fixed** +- Copy errors corrected +- "Fetching messages" indicator appears on home screen + +## 0.10.0 + +A handful of exciting new features and fixes coming to you fresh in 0.10.0. + +First, a word about our new version numbers. Until now, our build versions have followed a convention of minor increments: 0.9.31, 0.9.32, 0.9.33. To better reflect the scope of our releases, we've [decided to level up](https://discuss.status.im/t/new-status-versioning-scheme/1066) to 0.10.0 and increment by 0.1.0 for typical releases, and 0.0.N for bug fixes. Our routine is business as usual otherwise. + +Onto the highlights from 0.10.0. + +The option to block a user will come in handy for those who participate in popular public chats. If someone is spamming a chat or otherwise bugging you, simply tap on their icon and hit `Block contact` from their profile. You'll no longer see any of their messages. + +From _your_ profile screen, you can undo this action via a new contact list feature. Open `Contacts` to find a list of users who are able to see your info—namely, photo and display name—and from there, `Blocked users` to see and unblock users as you wish. + +To better find users you _do_ want to hear from, we've added a search bar to the home screen. This allows you to filter through chats and browser history items. Text search within a chat is still to come. + +Back on your profile screen, you'll find another helpful new option to control message syncing. If on a mobile network, you can require Status to ask before syncing conversations, in order to protect against heavy data usage. You can also enable mobile network syncing by default, or turn these options off completely. + +You'll also find a new DApp permissions section here. DApps that adhere to browser privacy mode [ask permission](https://our.status.im/0-9-33/) to access your Ethereum account. You can now revoke access for a given DApp using these settings. + +And that concludes the most significant changes of this release! For more, check out the change log below. + +**Added** +- Ability to block specific users from profile view +- Contacts and blocked users list +- Search bar for chats and browser history +- Option to turn off syncing for chat on cell connection +- DApp web3 permissions management +- New DApps and WBTC token + +**Changed** +- Push notifications include sender name +- Contact updates pushed periodically to better maintain user data +- Public chats show first letter instead of # +- Minor tweaks to chat UI + +**Fixed** +- Status now works on restricted [ports](https://github.com/status-im/status-mobile/pull/7382) +- Overlap on small screens during log-in +- False mailserver connection error [removed](https://github.com/status-im/status-mobile/issues/7531) +- Premature sending of contact requests on Profile > Send message +- DApps on same host (i.e. IPFS) no longer share user-granted permissions + +Ready to update to 0.10.0? + +iOS +Within TestFlight, make sure you see version 0.10.0 and tap ‘INSTALL.’ +If you don’t currently have Status installed, access via TestFlight here: https://testflight.apple.com/join/J8EuJmey. + +Android +If you are not automatically asked to update, go to Status.im in the PlayStore and click ‘Update.’ +For more information, please join us in Status. +We're more than happy to answer your questions and help you out. + +--- +Social copy: +Release 0.10.0 is here! A whole bunch of exciting features, blocking contacts, searching, & more. Check out the blog for more details and update Status. our.status.im/0-10-0/ + + + +## 0.9.33 + +We're back in action! After a pause for the holidays and a transition back that saw us release 4 small updates to v.0.9.32, we've got a brand new mobile version for you. + +This release is a big one. + +First, we've made significant improvements to log-in, yielding a 10x increase in log-in speed. Android users will also be pleased to find a "Save password until logout" toggle to match iOS. This will save you significant time on launch of the app. + +Push notifications are improved by a number of fixes, including opening to the appropriate chat and no longer exposing your language settings to recipients using a different language than your own. + +Because of these fixes, anyone using an older version of the app **_will not receive notifications_** from users on v.0.9.33. Furthermore, iOS users will not receive push notifications while the app is closed, nor if they are on certain iOS versions (11.X). This is a known and temporary issue. + +Browser privacy mode is now enabled by default. This means that DApps will be required to ask permission before connecting to your wallet, and it may cause some DApps to break. If you find a DApp isn't working, you can go to your profile screen and toggle privacy mode off. In many cases, this should fix the issue. + +We're hopeful that more and more DApp developers will be up to speed with this new convention soon. + +Device pairing is no longer hidden under development mode. Visit the device section on your profile screen to "Pair this device" and sync messages and contacts from your phone to desktop. You can also name your devices to track which you've paired. + +For the full list of changes, see below. + +**Added** +- Device pairing and naming +- "Save password until logout" for Android +- New DApps including Aragon and Dragonereum +- BUFF token for ETHDenver +- Titles and favicons in browser +- Support for EIP1577, multihash interface for ENS names + +**Changed** +- Privacy mode enabled by default +- Log-in time improved 10x +- Private group chats limited to 10 members +- Connectivity loading indicator no longer appears as "Fetching messages" +- Chat bubble width increased +- Ethereum provider consistent with EIP1193 +- Upgraded styling for group chats + +**Fixed** +- Metadata leakage of language settings in push notifications +- Push notifications failing to open chat +- Loading indicator in browser +- Results displaying properly in Etheroll +- Issues with extensions installation +- Wrong password handling + +------- + +_Notes to call out_ +- Privacy mode by default instructions +- Breaking change: no PNs for old versions after next mobile release - https://github.com/status-im/status-mobile/pull/6893 +- Setting up device pairing + + +## 0.9.32 +Introducing beta support for Private group chats! +In this release you’ll find the ability to start private group chats with your friends. These group chats are e2e encrypted and utilize Signal's [double ratchet algorithm](https://en.wikipedia.org/wiki/Double_Ratchet_Algorithm) for guaranteed privacy. To start chatting go to the Home tab, tap "+", then Start group chat. + +There is also beta support for device pairing between all devices. To begin syncing messages and contacts across devices, go to Profile, tap advanced and turn on development mode, now go to devices and tap pair this device. + + + +Added +- Private group chats with increases security using Signal's double ratchet algorithm (In beta. Still being tested. Feedback welcome!) +- Device pairing and syncing with perfect forward secrecy (in dev mode) +- Added DApp Decentraland + + +Changed +- Support multi-extensions store +- Restyled wallet onboarding flow, main wallet screen, and sent-transaction screen +- Faster sign-in + +Fixed +- Transaction history fixes +- Updating enabled tokens before navigating to wallet + +[All changes](https://github.com/status-im/status-mobile/compare/release/0.9.31...release/0.9.32) + +## 0.9.31 + +Version 0.9.31 brings Status up to speed with the latest privacy standard for Ethereum browsers, introduced by EIP1102. + +You'll find a new privacy setting on your profile screen called "Browser privacy mode." + +If you toggle this setting ON, DApps will be required to ask your permission before accessing your Status wallet. DApps that do not currently follow this standard may not work! + +If you run into trouble, you can always toggle this setting OFF. With Browser privacy mode OFF, DApps can access your Status wallet without your permission. + +We're encouraging DApp builders to adopt this new standard and make web3 safer for users as soon as possible. Check the Status blog for details on how to comply. + + + +Added +- Browser privacy mode to toggle new web3 security setting on or off +- New DApps: Crypto Takeovers, Cryptographics, blockimmo and SNT Voting DApp +- ST to assets list + +Changed +- Changing mailserver no longer requires a logout +- Send button is inactive when there isn't an active internet or mailserver connection + +Fixed +- ENS addresses with unregistered chat IDs no longer resolve in chat +- CryptoKitties log-in issue +- Restored missing transaction error messages +- Granting profile access applies per DApp rather than per host + +[All changes](https://github.com/status-im/status-mobile/compare/release/0.9.30...release/0.9.31) + +## 0.9.30 + +Added + +- ENS registration link on profile screen +- Kudos tokens for the Status #CryptoLife Hackathon +- Reply and quote a message in chat. Long tap a message and tap Reply. +- Chat now resolves all .eth address +- New Farsi and Latin American Spanish translations +- Every Dapp gets its own built in chat room. Tap the chat icon from the Dapp browser to start chatting +- Added Kickback Dapp +- New custom RPC networks for POA Network and xDAI Chain + + +Changed +- Anonymous names now shown in chats and profile +- Disabled "sign transaction" button when offline +- Renamed default international public chats to ensure universal links would work. For example “status 中文” was changed to “status-chinese”. +- Removed Instabug for bug reports. In-app help is now available in #status + +Fixed +- Fixed an issue where messages are not saved to the database in some circumstances +- Fixed an error when fetching history on certain accounts +- Fixed logging in after logout when opening app from a notification +- Fixed profile QR code +- iPhone XS Max improvements + +Known Issues + +- POA and xDAI networks are only available for new accounts, not upgrades +- For more POA and xDAI network considerations see this issue post. + +## 0.9.29 + +This releases improves message validation to prevent potential crashes or malformed messages. We recommend all users upgrade. + +The fix makes these improvements: +- add validate method to StatusMessage protocol +- spec all message types for use in validate method +- use valid method after transit/decode step to reject invalid messages + + +## Older Versions + +- [Google docs](https://docs.google.com/document/d/1Z0mFlJJkNbRgv6qm80ob5g4PEvsI8cTmbwZpcRPWPho/edit#) + diff --git a/VERSION b/VERSION new file mode 100644 index 00000000000..78d1d9cf49e --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.34.1 diff --git a/android/app/BUCK b/android/app/BUCK deleted file mode 100644 index 7e80564a8ba..00000000000 --- a/android/app/BUCK +++ /dev/null @@ -1,66 +0,0 @@ -import re - -# To learn about Buck see [Docs](https://buckbuild.com/). -# To run your application with Buck: -# - install Buck -# - `npm start` - to start the packager -# - `cd android` -# - `cp ~/.android/debug.keystore keystores/debug.keystore` -# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck -# - `buck install -r android/app` - compile, install and run application -# - -lib_deps = [] -for jarfile in glob(['libs/*.jar']): - name = 'jars__' + re.sub(r'^.*/([^/]+)\.jar$', r'\1', jarfile) - lib_deps.append(':' + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) - -for aarfile in glob(['libs/*.aar']): - name = 'aars__' + re.sub(r'^.*/([^/]+)\.aar$', r'\1', aarfile) - lib_deps.append(':' + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -android_library( - name = 'all-libs', - exported_deps = lib_deps -) - -android_library( - name = 'app-code', - srcs = glob([ - 'src/main/java/**/*.java', - ]), - deps = [ - ':all-libs', - ':build_config', - ':res', - ], -) - -android_build_config( - name = 'build_config', - package = 'im.status.ethereum', -) - -android_resource( - name = 'res', - res = 'src/main/res', - package = 'im.status.ethereum', -) - -android_binary( - name = 'app', - package_type = 'debug', - manifest = 'src/main/AndroidManifest.xml', - keystore = '//android/keystores:debug', - deps = [ - ':app-code', - ], -) diff --git a/android/app/build.gradle b/android/app/build.gradle index 2df83ff78c3..850f20752fc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,89 +1,105 @@ apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" + +apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle" import com.android.build.OutputFile +import com.sun.org.apache.xalan.internal.xsltc.compiler.Copy -/** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation - * entryFile: "index.android.js", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"] - * ] +/* + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. */ -project.ext.react = [ - nodeExecutableAndArgs: ["node", "--max-old-space-size=4096"] -] +react { + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen + // codegenDir = file("../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + nodeExecutableAndArgs = ["node", "--max-old-space-size=16384" ] + // + // The command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] -apply from: "../../node_modules/react-native/react.gradle" + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} /** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = true + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. */ -def enableSeparateBuildPerCPUArchitecture = false +def jscFlavor = 'org.webkit:android-jsc:+' /** - * Run Proguard to shrink the Java bytecode in release builds. + * Whether to enable the Hermes VM. + * + * This should be set on project.ext.react and mirrored here. If it is not set + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode + * and the benefits of using Hermes will therefore be sharply reduced. */ -def enableProguardInReleaseBuilds = false +def enableHermes = hermesEnabled.toBoolean(); + +def getCommitHash = { -> + if (project.hasProperty("commitHash")) { + return project.commitHash + } + return "unknown" +} def getVersionCode = { -> new ByteArrayOutputStream().withStream { stdOut -> + if (project.hasProperty("versionCode")) { + return project.versionCode.toString().toInteger() + } + exec { - commandLine "git", "rev-list", "--count", "HEAD" + commandLine "bash", "../../scripts/version/build_no.sh" standardOutput = stdOut + errorOutput = System.err } return stdOut.toString().toInteger() } @@ -91,102 +107,240 @@ def getVersionCode = { -> def getVersionName = { -> new ByteArrayOutputStream().withStream { stdOut -> - exec { - commandLine "git", "describe", "--tags", "--always", "--dirty=+" - standardOutput = stdOut + // TODO: probably not used, cleanup + if (project.hasProperty("releaseVersion")) { + return project.releaseVersion + } + /* Necessary because Android Studio uses wrong PWD. + * Is actually absolute directory path of this file. */ + def configDir = project.projectDir.toString() + version = new File(configDir + '/../../VERSION').text + return version.replaceAll("\\s","") + } +} + +def getBuildUrl = { -> + new ByteArrayOutputStream().withStream { stdOut -> + if (project.hasProperty("buildUrl")) { + return project.buildUrl } - return stdOut.toString().replaceAll("\\s","") + return 'Local Build' } } +/* check if environment variable exists for given variable name first */ +def getEnvOrConfig = { varName -> + def val = System.getenv(varName) ? System.getenv(varName) : project.property(varName) + return val +} + android { - compileSdkVersion 23 - buildToolsVersion "23.0.1" + ndkVersion rootProject.ext.ndkVersion + + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17 + } + // Disable default lint checks to remove redundant lintVitalReportRelease task + lintOptions { + checkReleaseBuilds false + } + // https://developer.android.com/studio/projects/install-ndk#vanilla_cmake + externalNativeBuild { + cmake { + // This version must match cmakeVersions inside nix/pkgs/android-sdk/compose.nix + version "3.22.1" + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } + + namespace "im.status.ethereum" defaultConfig { applicationId "im.status.ethereum" - minSdkVersion 18 - targetSdkVersion 23 + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + multiDexEnabled true versionCode getVersionCode() versionName getVersionName() - ndk { - abiFilters "armeabi-v7a", "x86" + missingDimensionStrategy 'react-native-camera', 'general' + manifestPlaceholders = [commitHash: getCommitHash()] + /* this needs to be empty if we want APKs split by ABIs */ + if (!getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean()) { + ndk { + abiFilters getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";") + } } } - dexOptions { - jumboMode true + + /** + * Arbitrary project metadata + * https://docs.gradle.org/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html + **/ + project.ext { + buildUrl = getBuildUrl() } - signingConfigs { - release { - storeFile file(STATUS_RELEASE_STORE_FILE) - storePassword STATUS_RELEASE_STORE_PASSWORD - keyAlias STATUS_RELEASE_KEY_ALIAS - keyPassword STATUS_RELEASE_KEY_PASSWORD - } + /** + * Fix for: (https://github.com/ReactiveX/RxJava/issues/4445) + * Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. + * > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: + * Duplicate files copied in APK META-INF/rxjava.properties + */ + packagingOptions { + exclude 'META-INF/rxjava.properties' + exclude '/lib/mips64/**' + exclude '/lib/armeabi/**' + + pickFirst '**/armeabi-v7a/libc++_shared.so' + pickFirst '**/x86/libc++_shared.so' + pickFirst '**/arm64-v8a/libc++_shared.so' + pickFirst '**/x86_64/libc++_shared.so' + pickFirst '**/x86/libjsc.so' + pickFirst '**/armeabi-v7a/libjsc.so' + + /** Fix for: Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'. + * with recent version of ndk (17.0.4754217) + */ + doNotStrip '*/mips/*.so' + doNotStrip '*/mips64/*.so' } splits { abi { reset() - enable enableSeparateBuildPerCPUArchitecture - universalApk false // If true, also generate a universal APK - include "armeabi-v7a", "x86" + enable getEnvOrConfig('ANDROID_ABI_SPLIT').toBoolean() + include getEnvOrConfig('ANDROID_ABI_INCLUDE').split(";") + universalApk getEnvOrConfig('ORG_GRADLE_PROJECT_universalApk').toBoolean() + } + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' } } buildTypes { debug { - versionNameSuffix "-SNAPSHOT" + applicationIdSuffix ".debug" + debuggable true + versionNameSuffix "-SNAPSHOT" + resValue "string", "build_config_package", "im.status.ethereum" + signingConfig signingConfigs.debug } release { minifyEnabled enableProguardInReleaseBuilds + shrinkResources enableProguardInReleaseBuilds proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" - signingConfig signingConfigs.release + signingConfig null + } + pr { + initWith release + applicationIdSuffix ".pr" + versionNameSuffix ".pr" + debuggable false + matchingFallbacks = ["release"] + // necessary to make react-native-config's code generation work + resValue "string", "build_config_package", "im.status.ethereum" } } + // applicationVariants are e.g. debug, release applicationVariants.all { variant -> variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: - // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits - def versionCodes = ["armeabi-v7a":1, "x86":2] + + // https://developer.android.com/studio/build/configure-apk-splits.html + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants - output.versionCodeOverride = - versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + output.versionCodeOverride = versionCodes.get(abi) + defaultConfig.versionCode } + } } + + + aaptOptions { + // disable PNG optimization as for some reason it cannot be trusted to provide deterministic output (see https://f-droid.org/en/docs/Reproducible_Builds/) + cruncherEnabled = false + } + + sourceSets { + main { jniLibs.srcDirs 'libs' } + } } dependencies { - compile project(':react-native-http-bridge') - compile project(':nfc-react-native') - compile project(':instabug-reactnative') - compile project(':react-native-splash-screen') - compile project(':react-native-image-resizer') - compile project(':react-native-dialogs') - compile project(':react-native-randombytes') - compile project(':react-native-android-sms-listener') - compile project(':realm') - compile project(':react-native-vector-icons') - compile fileTree(dir: "libs", include: ["*.jar"]) - compile "com.android.support:appcompat-v7:23.0.1" - compile "com.facebook.react:react-native:+" // From node_modules - compile project(':react-native-contacts') - compile project(':react-native-i18n') - compile project(':react-native-linear-gradient') - compile project(':react-native-camera') - compile project(':react-native-status') - compile project(':react-native-orientation') - compile project(':react-native-fs') - compile project(':react-native-image-crop-picker') - compile project(':react-native-webview-bridge') - - compile fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"]) + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + implementation("androidx.core:core-splashscreen:1.0.0") + + if (enableHermes) { + implementation("com.facebook.react:hermes-android") + } else { + // https://github.com/status-im/status-mobile/issues/18493 + // we don't use hermes for debug builds because it crashes too often + implementation(jscFlavor) + } + + // react-native-screens + implementation("androidx.appcompat:appcompat:1.1.0-rc01") + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02") + implementation("androidx.multidex:multidex:2.0.1") // required by status-mobile/android/app/src/main/java/im/status/ethereum/MainApplication.java + implementation project(':react-native-blur') + implementation project(':react-native-status') + implementation project(':react-native-status-keycard') + implementation("com.github.status-im:function:0.0.1") + implementation("com.facebook.fresco:fresco:2.5.0") + implementation("com.facebook.fresco:animated-gif:2.5.0") + implementation("com.squareup.okhttp3:okhttp-tls:4.11.0") + implementation("com.google.prefab:cli:2.0.0") + implementation("com.android.tools.build:aapt2:8.1.1-10154469") +} + + +def getLocalNDKDir = { -> + def rootDir = project.rootDir + def localProperties = new File(rootDir, "local.properties") + if (!localProperties.exists()) { + return null + } + Properties properties = new Properties() + localProperties.withInputStream { instr -> + properties.load(instr) + } + return properties.getProperty('ndk.dir') } + // Run this once to be able to run the application with BUCK // puts all compile dependencies into folder libs for BUCK to use -task copyDownloadableDepsToLibs(type: Copy) { - from configurations.compile - into 'libs' +task hemroidBuild(type: Exec) { + def localNdkDir = getLocalNDKDir() + def ndkDir = System.env.ANDROID_NDK_ROOT + if (localNdkDir != null) { + ndkDir = localNdkDir + } + + def execPath = "$ndkDir/ndk-build" + def exec = new File(execPath) + if (!exec.exists()) { + throw new GradleException("No ndk-build binary found!") + } + executable execPath } +preBuild.dependsOn hemroidBuild + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) + +def googleServicesConfigFile = "./googleServices.gradle"; +if (project.file(googleServicesConfigFile).exists()) { + apply from: file(googleServicesConfigFile) +} diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 00000000000..364e105ed39 Binary files /dev/null and b/android/app/debug.keystore differ diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 00000000000..220a6195f92 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,119 @@ +{ + "project_info": { + "project_number": "854811651919", + "firebase_url": "https://status-react-app.firebaseio.com", + "project_id": "status-react-app", + "storage_bucket": "status-react-app.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:854811651919:android:11ee7444ded8a00a", + "android_client_info": { + "package_name": "im.status.ethereum" + } + }, + "oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "im.status.ethereum" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:854811651919:android:15dbe4af1e06ca3e005f3a", + "android_client_info": { + "package_name": "im.status.ethereum.debug" + } + }, + "oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "im.status.ethereum" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:854811651919:android:1d0d69fe8c1bb89b005f3a", + "android_client_info": { + "package_name": "im.status.ethereum.pr" + } + }, + "oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "im.status.ethereum" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} diff --git a/android/app/googleServices.gradle b/android/app/googleServices.gradle new file mode 100644 index 00000000000..20dce0bd50d --- /dev/null +++ b/android/app/googleServices.gradle @@ -0,0 +1,25 @@ +/** + * Exclude google library so we can publish to external android stores + */ + +def googleFree = project.env.get("GOOGLE_FREE", "0") == '1' + +if (!googleFree) { + apply plugin: 'com.google.gms.google-services' +} + +dependencies { + if (googleFree) { + implementation(project(':react-native-firebase_app')) { + exclude group: 'com.google.firebase' + exclude group: 'com.google.gms' + } + + implementation(project(':react-native-firebase_messaging')) { + exclude group: 'com.google.firebase' + exclude group: 'com.google.gms' + } + } else { + implementation 'com.google.firebase:firebase-messaging:24.1.0' + } +} diff --git a/android/app/jni/Android.mk b/android/app/jni/Android.mk new file mode 100644 index 00000000000..1d61e349ff1 --- /dev/null +++ b/android/app/jni/Android.mk @@ -0,0 +1,11 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := status-logs +LOCAL_SRC_FILES := Log.c + +LOCAL_CPPFLAGS := -std=c++11 -fexceptions -I$(LOCAL_PATH)/include +LOCAL_LDFLAGS := -llog + +include $(BUILD_SHARED_LIBRARY) diff --git a/android/app/jni/Application.mk b/android/app/jni/Application.mk new file mode 100644 index 00000000000..df97d66fba4 --- /dev/null +++ b/android/app/jni/Application.mk @@ -0,0 +1,5 @@ +APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 +APP_LDFLAGS := -Wl,--build-id=none +APP_PLATFORM := android-18 +APP_STL := c++_static +NDK_TOOLCHAIN_VERSION=clang diff --git a/android/app/jni/Log.c b/android/app/jni/Log.c new file mode 100644 index 00000000000..19968f37a3a --- /dev/null +++ b/android/app/jni/Log.c @@ -0,0 +1,39 @@ +// https://codelab.wordpress.com/2014/11/03/how-to-use-standard-output-streams-for-logging-in-android-apps/ +#include +#include +#include +#include + +static int pfd[2]; +static pthread_t thr; + +static void *thread_func(void* param) +{ + ssize_t rdsz; + char buf[128]; + while((rdsz = read(pfd[0], buf, sizeof buf - 1)) > 0) { + if(buf[rdsz - 1] == '\n') --rdsz; + buf[rdsz] = 0; /* add null-terminator */ + __android_log_write(ANDROID_LOG_DEBUG, "StatusNativeLogs", buf); + } + return 0; +} + +JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) +{ + /* make stdout line-buffered and stderr unbuffered */ + setvbuf(stdout, 0, _IOLBF, 0); + setvbuf(stderr, 0, _IONBF, 0); + + /* create the pipe and redirect stdout and stderr */ + pipe(pfd); + dup2(pfd[1], 1); + dup2(pfd[1], 2); + + /* spawn the logging thread */ + if(pthread_create(&thr, 0, thread_func, 0) == -1) + return JNI_VERSION_1_6; // fail silently + pthread_detach(thr); + + return JNI_VERSION_1_6; +} diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 48361a9015d..3904c4220ee 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -9,19 +9,15 @@ # Add any project specific keep options here: -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - # Disabling obfuscation is useful if you collect stack traces from production crashes # (unless you are using a system that supports de-obfuscate the stack traces). -dontobfuscate # React Native +-keep class com.facebook.hermes.unicode.** { *; } +-keep class com.facebook.jni.** { *; } + # Keep our interfaces so they can be used by other ProGuard rules. # See http://sourceforge.net/p/proguard/bugs/466/ -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip @@ -50,6 +46,10 @@ -dontwarn com.facebook.react.** +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. +-dontwarn android.text.StaticLayout + # okhttp -keepattributes Signature @@ -58,9 +58,33 @@ -keep interface okhttp3.** { *; } -dontwarn okhttp3.** +# to fix : java.security.KeyStoreException: BKS not found +-keep class org.bouncycastle.** { *; } + # okio -keep class sun.misc.Unsafe { *; } -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** + +# fast-image + +-keep public class com.dylanvann.fastimage.* {*;} +-keep public class com.dylanvann.fastimage.** {*;} +-keep public class * implements com.bumptech.glide.module.GlideModule +-keep public class com.bumptech.glide.annotation.GlideModule +-keep public class * extends com.bumptech.glide.module.AppGlideModule +-keep public enum com.bumptech.glide.load.ImageHeaderParser$** { + **[] $VALUES; + public *; +} + +# react-native-config +# https://github.com/lugg/react-native-config?tab=readme-ov-file#problems-with-proguard +-keep class im.status.ethereum.BuildConfig {*;} + +# react-native-navigation +# to fix : java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType +# at com.reactnativenavigation.views.element.animators.PropertyAnimatorCreator.getChildClass(Unknown Source:13) +-keep class com.reactnativenavigation.** {*;} diff --git a/android/app/react.gradle b/android/app/react.gradle deleted file mode 100644 index 4b43bf910cc..00000000000 --- a/android/app/react.gradle +++ /dev/null @@ -1,96 +0,0 @@ -import org.apache.tools.ant.taskdefs.condition.Os - -def config = project.hasProperty("react") ? project.react : []; - -def bundleAssetName = config.bundleAssetName ?: "index.android.bundle" -def entryFile = config.entryFile ?: "index.android.js" - -// because elvis operator -def elvisFile(thing) { - return thing ? file(thing) : null; -} - -def reactRoot = elvisFile(config.root) ?: file("../../") -def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"] - -void runBefore(String dependentTaskName, Task task) { - Task dependentTask = tasks.findByPath(dependentTaskName); - if (dependentTask != null) { - dependentTask.dependsOn task - } -} - -gradle.projectsEvaluated { - // Grab all build types and product flavors - def buildTypes = android.buildTypes.collect { type -> type.name } - def productFlavors = android.productFlavors.collect { flavor -> flavor.name } - - // When no product flavors defined, use empty - if (!productFlavors) productFlavors.add('') - - productFlavors.each { productFlavorName -> - buildTypes.each { buildTypeName -> - // Create variant and source names - def sourceName = "${buildTypeName}" - def targetName = "${sourceName.capitalize()}" - if (productFlavorName) { - sourceName = "${productFlavorName}${targetName}" - } - - // React js bundle directories - def jsBundleDirConfigName = "jsBundleDir${targetName}" - def jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?: - file("$buildDir/intermediates/assets/${sourceName}") - - def resourcesDirConfigName = "jsBundleDir${targetName}" - def resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?: - file("$buildDir/intermediates/res/merged/${sourceName}") - def jsBundleFile = file("$jsBundleDir/$bundleAssetName") - - // Bundle task name for variant - def bundleJsAndAssetsTaskName = "bundle${targetName}JsAndAssets" - - def currentBundleTask = tasks.create( - name: bundleJsAndAssetsTaskName, - type: Exec) { - group = "react" - description = "bundle JS and assets for ${targetName}." - - // Create dirs if they are not there (e.g. the "clean" task just ran) - doFirst { - jsBundleDir.mkdirs() - resourcesDir.mkdirs() - } - - // Set up inputs and outputs so gradle can cache the result - inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) - outputs.dir jsBundleDir - outputs.dir resourcesDir - - // Set up the call to the react-native cli - workingDir reactRoot - - // Set up dev mode - def devEnabled = !targetName.toLowerCase().contains("release") - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", - "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir - } else { - commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", - "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir - } - - enabled config."bundleIn${targetName}" ?: targetName.toLowerCase().contains("release") - } - - // Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process - currentBundleTask.dependsOn("merge${targetName}Resources") - currentBundleTask.dependsOn("merge${targetName}Assets") - - runBefore("processArmeabi-v7a${targetName}Resources", currentBundleTask) - runBefore("processX86${targetName}Resources", currentBundleTask) - runBefore("processUniversal${targetName}Resources", currentBundleTask) - runBefore("process${targetName}Resources", currentBundleTask) - } - } -} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000000..9b34ec89c86 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/android/app/src/debug/res/ic_launcher-web.png b/android/app/src/debug/res/ic_launcher-web.png new file mode 100755 index 00000000000..63fef5cdf09 Binary files /dev/null and b/android/app/src/debug/res/ic_launcher-web.png differ diff --git a/android/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/android/app/src/debug/res/mipmap-hdpi/ic_launcher.png new file mode 100755 index 00000000000..5d3bafc1835 Binary files /dev/null and b/android/app/src/debug/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/android/app/src/debug/res/mipmap-mdpi/ic_launcher.png new file mode 100755 index 00000000000..28e95c532b7 Binary files /dev/null and b/android/app/src/debug/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png new file mode 100755 index 00000000000..5a431f2ea99 Binary files /dev/null and b/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png new file mode 100755 index 00000000000..b69fba69b1f Binary files /dev/null and b/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100755 index 00000000000..ca4153b184f Binary files /dev/null and b/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/debug/res/raw/message.wav b/android/app/src/debug/res/raw/message.wav new file mode 100644 index 00000000000..13c9628295b Binary files /dev/null and b/android/app/src/debug/res/raw/message.wav differ diff --git a/android/app/src/debug/res/values/strings.xml b/android/app/src/debug/res/values/strings.xml new file mode 100644 index 00000000000..c7db8572878 --- /dev/null +++ b/android/app/src/debug/res/values/strings.xml @@ -0,0 +1,3 @@ + + Status Debug + diff --git a/android/app/src/debug/res/xml/react_native_config.xml b/android/app/src/debug/res/xml/react_native_config.xml new file mode 100644 index 00000000000..8b11f2aee7d --- /dev/null +++ b/android/app/src/debug/res/xml/react_native_config.xml @@ -0,0 +1,8 @@ + + + + localhost + 10.0.3.2 + 10.0.2.2 + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 3d1cb961a0c..da961875e71 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,55 +1,135 @@ + android:installLocation="auto"> + + + + + + + + + - + + + + + - - - - - - - - - - - - - + + + + android:roundIcon="@mipmap/ic_launcher_round" + android:theme="@style/Theme.AppSplash" + android:name=".MainApplication" + android:largeHeap="true" + android:usesCleartextTraffic="true" + android:extractNativeLibs="true" + android:requestLegacyExternalStorage="true"> + + + android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" + android:resizeableActivity="false" + android:launchMode="singleTask"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + diff --git a/android/app/src/main/assets/fonts/Avenir-Roman.ttf b/android/app/src/main/assets/fonts/Avenir-Roman.ttf deleted file mode 100644 index f58eeaab873..00000000000 Binary files a/android/app/src/main/assets/fonts/Avenir-Roman.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Entypo.ttf b/android/app/src/main/assets/fonts/Entypo.ttf deleted file mode 100644 index 1c8f5e910bf..00000000000 Binary files a/android/app/src/main/assets/fonts/Entypo.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/EvilIcons.ttf b/android/app/src/main/assets/fonts/EvilIcons.ttf deleted file mode 100644 index b270f985192..00000000000 Binary files a/android/app/src/main/assets/fonts/EvilIcons.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/FontAwesome.ttf b/android/app/src/main/assets/fonts/FontAwesome.ttf deleted file mode 100644 index f221e50a2ef..00000000000 Binary files a/android/app/src/main/assets/fonts/FontAwesome.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Foundation.ttf b/android/app/src/main/assets/fonts/Foundation.ttf deleted file mode 100644 index 6cce217ddc2..00000000000 Binary files a/android/app/src/main/assets/fonts/Foundation.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Inter-Bold.ttf b/android/app/src/main/assets/fonts/Inter-Bold.ttf new file mode 100644 index 00000000000..728ab9be1f8 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Bold.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-BoldItalic.ttf b/android/app/src/main/assets/fonts/Inter-BoldItalic.ttf new file mode 100644 index 00000000000..9a7a216eb7c Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-BoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-Italic.ttf b/android/app/src/main/assets/fonts/Inter-Italic.ttf new file mode 100644 index 00000000000..de23a382e65 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Italic.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-Medium.ttf b/android/app/src/main/assets/fonts/Inter-Medium.ttf new file mode 100644 index 00000000000..8913185821c Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Medium.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-MediumItalic.ttf b/android/app/src/main/assets/fonts/Inter-MediumItalic.ttf new file mode 100644 index 00000000000..0c729891221 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-MediumItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-Regular.ttf b/android/app/src/main/assets/fonts/Inter-Regular.ttf new file mode 100644 index 00000000000..ffc482f0b87 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-Regular.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-SemiBold.ttf b/android/app/src/main/assets/fonts/Inter-SemiBold.ttf new file mode 100644 index 00000000000..634e538d77c Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-SemiBold.ttf differ diff --git a/android/app/src/main/assets/fonts/Inter-SemiBoldItalic.ttf b/android/app/src/main/assets/fonts/Inter-SemiBoldItalic.ttf new file mode 100644 index 00000000000..2ae594bc840 Binary files /dev/null and b/android/app/src/main/assets/fonts/Inter-SemiBoldItalic.ttf differ diff --git a/android/app/src/main/assets/fonts/InterStatus-Regular.otf b/android/app/src/main/assets/fonts/InterStatus-Regular.otf new file mode 100644 index 00000000000..92c5dcb6e68 Binary files /dev/null and b/android/app/src/main/assets/fonts/InterStatus-Regular.otf differ diff --git a/android/app/src/main/assets/fonts/Ionicons.ttf b/android/app/src/main/assets/fonts/Ionicons.ttf deleted file mode 100644 index 307ad889aa8..00000000000 Binary files a/android/app/src/main/assets/fonts/Ionicons.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/MaterialIcons.ttf b/android/app/src/main/assets/fonts/MaterialIcons.ttf deleted file mode 100644 index 7015564ad16..00000000000 Binary files a/android/app/src/main/assets/fonts/MaterialIcons.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Octicons.ttf b/android/app/src/main/assets/fonts/Octicons.ttf deleted file mode 100644 index 0a62bb9ea69..00000000000 Binary files a/android/app/src/main/assets/fonts/Octicons.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Roboto-Bold.ttf b/android/app/src/main/assets/fonts/Roboto-Bold.ttf deleted file mode 100644 index aaf374d2cc0..00000000000 Binary files a/android/app/src/main/assets/fonts/Roboto-Bold.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Roboto-Light.ttf b/android/app/src/main/assets/fonts/Roboto-Light.ttf deleted file mode 100644 index 664e1b2f9db..00000000000 Binary files a/android/app/src/main/assets/fonts/Roboto-Light.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Roboto-Medium.ttf b/android/app/src/main/assets/fonts/Roboto-Medium.ttf deleted file mode 100644 index aa00de0ef92..00000000000 Binary files a/android/app/src/main/assets/fonts/Roboto-Medium.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/Roboto-Regular.ttf b/android/app/src/main/assets/fonts/Roboto-Regular.ttf deleted file mode 100644 index 3e6e2e76134..00000000000 Binary files a/android/app/src/main/assets/fonts/Roboto-Regular.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/RobotoMono-Medium.ttf b/android/app/src/main/assets/fonts/RobotoMono-Medium.ttf deleted file mode 100644 index 0bcdc740c66..00000000000 Binary files a/android/app/src/main/assets/fonts/RobotoMono-Medium.ttf and /dev/null differ diff --git a/android/app/src/main/assets/fonts/UbuntuMono-Regular.ttf b/android/app/src/main/assets/fonts/UbuntuMono-Regular.ttf new file mode 100644 index 00000000000..fdd309d7166 Binary files /dev/null and b/android/app/src/main/assets/fonts/UbuntuMono-Regular.ttf differ diff --git a/android/app/src/main/assets/fonts/Zocial.ttf b/android/app/src/main/assets/fonts/Zocial.ttf deleted file mode 100644 index e4ae46c6286..00000000000 Binary files a/android/app/src/main/assets/fonts/Zocial.ttf and /dev/null differ diff --git a/android/app/src/main/java/im/status/ethereum/MainActivity.java b/android/app/src/main/java/im/status/ethereum/MainActivity.java deleted file mode 100644 index 95f124e9819..00000000000 --- a/android/app/src/main/java/im/status/ethereum/MainActivity.java +++ /dev/null @@ -1,83 +0,0 @@ -package im.status.ethereum; - -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.content.DialogInterface.OnCancelListener; -import android.content.DialogInterface.OnClickListener; -import android.content.Intent; -import android.content.res.Configuration; -import android.os.Bundle; -import com.facebook.react.ReactActivity; -import com.cboy.rn.splashscreen.SplashScreen; - -import java.util.Properties; - -public class MainActivity extends ReactActivity { - private static final String TAG = "MainActivity"; - - protected void configureStatus() { - // Required because of crazy APN settings redirecting localhost (found in GB) - Properties properties = System.getProperties(); - properties.setProperty("http.nonProxyHosts", "localhost|127.0.0.1"); - properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1"); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - SplashScreen.show(this); - super.onCreate(savedInstanceState); - - if (!RootUtil.isDeviceRooted()) { - configureStatus(); - } else { - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) - .setMessage(getResources().getString(R.string.root_warning)) - .setPositiveButton(getResources().getString(R.string.root_okay), new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - configureStatus(); - } - }) - .setNegativeButton(getResources().getString(R.string.root_cancel), new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - MainActivity.this.finishAffinity(); - } - }) - .setOnCancelListener(new OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - dialog.dismiss(); - MainActivity.this.finishAffinity(); - } - }) - .create(); - - dialog.show(); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - } - - /** - * Returns the name of the main component registered from JavaScript. - * This is used to schedule rendering of the component. - */ - @Override - protected String getMainComponentName() { - return "StatusIm"; - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - Intent intent = new Intent("onConfigurationChanged"); - intent.putExtra("newConfig", newConfig); - this.sendBroadcast(intent); - } -} diff --git a/android/app/src/main/java/im/status/ethereum/MainActivity.kt b/android/app/src/main/java/im/status/ethereum/MainActivity.kt new file mode 100644 index 00000000000..c77da8d41c0 --- /dev/null +++ b/android/app/src/main/java/im/status/ethereum/MainActivity.kt @@ -0,0 +1,236 @@ +package im.status.ethereum + +import android.annotation.TargetApi +import android.app.ActivityManager +import android.app.AlertDialog +import android.content.Context +import android.content.DialogInterface +import android.content.Intent +import android.content.SharedPreferences +import android.content.pm.PackageManager +import android.content.res.Configuration +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.preference.PreferenceManager +import android.provider.Settings +import android.util.Log +import android.view.WindowManager +import androidx.annotation.Nullable +import androidx.core.app.ActivityCompat +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.bridge.Arguments +import com.facebook.react.bridge.WritableMap +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint +import com.facebook.react.defaults.DefaultReactActivityDelegate +import com.facebook.react.modules.core.DeviceEventManagerModule +import com.facebook.react.modules.core.PermissionListener +import com.reactnativenavigation.NavigationActivity +import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView +import im.status.ethereum.MainApplication +import im.status.ethereum.module.StatusThreadPoolExecutor +import java.util.Properties + +class MainActivity : NavigationActivity(), ActivityCompat.OnRequestPermissionsResultCallback { + + @Nullable + private var mPermissionListener: PermissionListener? = null + private var keepSplash = true + private val SPLASH_DELAY = 3200 + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + protected fun getMainComponentName(): String { + return "StatusIm" + } + + private fun registerUncaughtExceptionHandler(context: Context) { + val defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() + // High priority, so don't use StatusThreadPoolExecutor + Thread.setDefaultUncaughtExceptionHandler { thread, t -> + Thread { + Looper.prepare() + AlertDialog.Builder(context) + .setTitle("Error") + .setMessage(t.toString()) + .setNegativeButton("Exit") { dialog, id -> + dialog.dismiss() + defaultUncaughtExceptionHandler.uncaughtException(thread, t) + }.show() + Looper.loop() + }.start() + } + } + + private fun getActivityManager(): ActivityManager { + return getSystemService(ACTIVITY_SERVICE) as ActivityManager + } + + private fun getAvailableMemory(activityManager: ActivityManager): ActivityManager.MemoryInfo { + val memoryInfo = ActivityManager.MemoryInfo() + activityManager.getMemoryInfo(memoryInfo) + return memoryInfo + } + + protected fun configureStatus() { + // Required because of crazy APN settings redirecting localhost (found in GB) + val properties = System.getProperties() + properties.setProperty("http.nonProxyHosts", "localhost|127.0.0.1") + properties.setProperty("https.nonProxyHosts", "localhost|127.0.0.1") + } + + private fun createNotificationSettingsIntent(): Intent { + val intent = Intent() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + intent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS + intent.putExtra(Settings.EXTRA_APP_PACKAGE, packageName) + } else { + intent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS + intent.addCategory(Intent.CATEGORY_DEFAULT) + intent.data = Uri.parse("package:$packageName") + } + return intent + } + + private fun tryToEmit(eventName: String, event: WritableMap) { + try { + (getApplication() as MainApplication).reactNativeHost + .getReactInstanceManager() + .getCurrentReactContext() + ?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java) + ?.emit("url", event) + } catch (e: Exception) { // we expect NPE on first start, which is OK because we have a fallback + } + } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + if (intent.dataString != null && intent.data!!.scheme!!.startsWith("app-settings")) { + startActivity(createNotificationSettingsIntent()) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + val splashScreen = installSplashScreen(); + setTheme(R.style.DarkTheme) + // Make sure we get an Alert for every uncaught exceptions + registerUncaughtExceptionHandler(this) + + // Report memory details for this application + val activityManager = getActivityManager() + Log.v("RNBootstrap", "Available system memory " + getAvailableMemory(activityManager).availMem + ", maximum usable application memory " + activityManager.largeMemoryClass + "M") + + setSecureFlag() + + // NOTE: Try to not restore the state https://github.com/software-mansion/react-native-screens/issues/17 + super.onCreate(null) + + if (!shouldShowRootedNotification()) { + configureStatus() + } else { + val dialog = AlertDialog.Builder(this) + .setMessage(resources.getString(R.string.root_warning)) + .setPositiveButton(resources.getString(R.string.root_okay)) { dialog, which -> + rejectRootedNotification() + dialog.dismiss() + configureStatus() + } + .setNegativeButton(resources.getString(R.string.root_cancel)) { dialog, which -> + dialog.dismiss() + finishAffinity() + } + .setOnCancelListener { + it.dismiss() + finishAffinity() + } + .create() + + dialog.show() + } + + val r = Runnable { + System.loadLibrary("status-logs") + + // when app is started but the Activity has been destroyed, the deep linking url event is + // not emitted when coming back to foreground. This is a workaround. If the problem is + // resolved in react-native this code should be removed + if (intent.data != null) { + val event = Arguments.createMap() + event.putString("url", intent.dataString) + // on first start emit will (silently) fail, but the regular deep linking handler will work + tryToEmit("url", event) + } + } + + splashScreen.setKeepOnScreenCondition { keepSplash } + + val handler = Handler() + handler.postDelayed({ keepSplash = false }, SPLASH_DELAY.toLong()) + + StatusThreadPoolExecutor.getInstance().execute(r) + } + + override fun onDestroy() { + super.onDestroy() + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + val intent = Intent("onConfigurationChanged") + intent.putExtra("newConfig", newConfig) + sendBroadcast(intent) + } + + private val REJECTED_ROOTED_NOTIFICATION = "rejectedRootedNotification" + private val FREQUENCY_OF_REMINDER_IN_PERCENT = 5 + + private fun shouldShowRootedNotification(): Boolean { + if (RootUtil.isDeviceRooted() && BuildConfig.ENABLE_ROOT_ALERT == "1") { + return if (userRejectedRootedNotification()) { + (Math.random() * 100) < FREQUENCY_OF_REMINDER_IN_PERCENT + } else true + } else { + return false + } + } + + private fun userRejectedRootedNotification(): Boolean { + val preferences = getPreferences(0) + return preferences.getBoolean(REJECTED_ROOTED_NOTIFICATION, false) + } + + private fun rejectRootedNotification() { + val preferences = getPreferences(0) + val editor = preferences.edit() + editor.putBoolean(REJECTED_ROOTED_NOTIFICATION, true) + editor.commit() + } + + private fun setSecureFlag() { + val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this) + val setSecure = sharedPrefs.getBoolean("BLANK_PREVIEW", false) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && setSecure) { + window.addFlags(WindowManager.LayoutParams.FLAG_SECURE) + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) + } + } + + @TargetApi(Build.VERSION_CODES.M) + override fun requestPermissions(permissions: Array, requestCode: Int, listener: PermissionListener) { + mPermissionListener = listener + super.requestPermissions(permissions, requestCode) + } + + + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { + if (mPermissionListener != null && mPermissionListener!!.onRequestPermissionsResult(requestCode, permissions, grantResults)) { + mPermissionListener = null + } + } +} diff --git a/android/app/src/main/java/im/status/ethereum/MainApplication.java b/android/app/src/main/java/im/status/ethereum/MainApplication.java deleted file mode 100644 index c5d65a18dc8..00000000000 --- a/android/app/src/main/java/im/status/ethereum/MainApplication.java +++ /dev/null @@ -1,76 +0,0 @@ -package im.status.ethereum; - -import android.app.Application; -import com.BV.LinearGradient.LinearGradientPackage; -import com.aakashns.reactnativedialogs.ReactNativeDialogsPackage; -import com.bitgo.randombytes.RandomBytesPackage; -import com.cboy.rn.splashscreen.SplashScreenReactPackage; -import com.centaurwarchief.smslistener.SmsListenerPackage; -import com.facebook.react.ReactApplication; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.shell.MainReactPackage; -import com.github.alinz.reactnativewebviewbridge.WebViewBridgePackage; -import com.github.yamill.orientation.OrientationPackage; -import com.i18n.reactnativei18n.ReactNativeI18n; -import com.instabug.reactlibrary.RNInstabugReactnativePackage; -import com.lwansbrough.RCTCamera.RCTCameraPackage; -import com.oblador.vectoricons.VectorIconsPackage; -import com.reactnative.ivpusic.imagepicker.PickerPackage; -import com.rnfs.RNFSPackage; -import com.rt2zz.reactnativecontacts.ReactNativeContacts; -import es.tiarg.nfcreactnative.NfcReactNativePackage; -import fr.bamlab.rnimageresizer.ImageResizerPackage; -import im.status.ethereum.module.StatusPackage; -import io.realm.react.RealmReactPackage; -import me.alwx.HttpServer.HttpServerReactPackage; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class MainApplication extends Application implements ReactApplication { - - private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - List packages = new ArrayList(Arrays.asList( - new MainReactPackage(), - new HttpServerReactPackage(), - new NfcReactNativePackage(), - new SplashScreenReactPackage(), - new StatusPackage(BuildConfig.DEBUG), - new RealmReactPackage(), - new VectorIconsPackage(), - new ReactNativeContacts(), - new ReactNativeI18n(), - new RandomBytesPackage(), - new LinearGradientPackage(), - new RCTCameraPackage(), - new SmsListenerPackage(), - new OrientationPackage(), - new RNFSPackage(), - new ReactNativeDialogsPackage(), - new ImageResizerPackage(), - new PickerPackage(), - new WebViewBridgePackage(BuildConfig.DEBUG) - )); - - if (!BuildConfig.DEBUG) { - packages.add(new RNInstabugReactnativePackage("b239f82a9cb00464e4c72cc703e6821e", MainApplication.this, "shake")); - } - - return packages; - } - }; - - @Override - public ReactNativeHost getReactNativeHost() { - return mReactNativeHost; - } -} diff --git a/android/app/src/main/java/im/status/ethereum/MainApplication.kt b/android/app/src/main/java/im/status/ethereum/MainApplication.kt new file mode 100644 index 00000000000..8963c19a510 --- /dev/null +++ b/android/app/src/main/java/im/status/ethereum/MainApplication.kt @@ -0,0 +1,59 @@ +package im.status.ethereum + +import android.webkit.WebView +import androidx.multidex.MultiDexApplication +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.JSIModulePackage +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint +import com.facebook.react.modules.network.OkHttpClientProvider +import com.reactnativenavigation.NavigationApplication +import com.reactnativenavigation.react.NavigationReactNativeHost +import cl.json.RNSharePackage +import com.reactnativecommunity.blurview.BlurViewPackage +import im.status.ethereum.keycard.RNStatusKeycardPackage +import im.status.ethereum.module.StatusPackage +import im.status.ethereum.pushnotifications.PushNotificationPackage +import im.status.ethereum.StatusOkHttpClientFactory + +class MainApplication : NavigationApplication() { + + private val mReactNativeHost = object : NavigationReactNativeHost(this) { + override fun getUseDeveloperSupport(): Boolean { + return BuildConfig.DEBUG + } + + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here + add(StatusPackage(RootUtil.isDeviceRooted())) + add(RNStatusKeycardPackage()) + add(PushNotificationPackage()) + add(BlurViewPackage()) + } + + override fun getJSMainModuleName(): String = "index" + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + + override val reactNativeHost: ReactNativeHost + get() = mReactNativeHost + + override fun onCreate() { + super.onCreate() + + OkHttpClientProvider.setOkHttpClientFactory(StatusOkHttpClientFactory()) + + WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1") + + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + DefaultNewArchitectureEntryPoint.load() + } + } +} diff --git a/android/app/src/main/java/im/status/ethereum/RootUtil.java b/android/app/src/main/java/im/status/ethereum/RootUtil.java deleted file mode 100644 index 5c74f566df8..00000000000 --- a/android/app/src/main/java/im/status/ethereum/RootUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package im.status.ethereum; - -import java.io.File; -import java.io.BufferedReader; -import java.io.InputStreamReader; - -/** @author Kevin Kowalewski */ -public class RootUtil { - - public static boolean isDeviceRooted() { - return checkRootMethod1() || checkRootMethod2() || checkRootMethod3(); - } - - private static boolean checkRootMethod1() { - String buildTags = android.os.Build.TAGS; - return buildTags != null && buildTags.contains("test-keys"); - } - - private static boolean checkRootMethod2() { - String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", - "/system/bin/failsafe/su", "/data/local/su" }; - for (String path : paths) { - if (new File(path).exists()) return true; - } - return false; - } - - private static boolean checkRootMethod3() { - Process process = null; - try { - process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" }); - BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); - return in.readLine() != null; - } catch (Throwable t) { - return false; - } finally { - if (process != null) process.destroy(); - } - } -} diff --git a/android/app/src/main/java/im/status/ethereum/RootUtil.kt b/android/app/src/main/java/im/status/ethereum/RootUtil.kt new file mode 100644 index 00000000000..c6729842778 --- /dev/null +++ b/android/app/src/main/java/im/status/ethereum/RootUtil.kt @@ -0,0 +1,42 @@ +package im.status.ethereum + +import android.os.Build +import java.io.BufferedReader +import java.io.File +import java.io.InputStreamReader + +object RootUtil { + + fun isDeviceRooted(): Boolean = + checkRootMethod1() || checkRootMethod2() || checkRootMethod3() + + private fun checkRootMethod1(): Boolean = + Build.TAGS?.contains("test-keys") ?: false + + private fun checkRootMethod2(): Boolean { + val paths = arrayOf( + "/system/app/Superuser.apk", + "/sbin/su", + "/system/bin/su", + "/system/xbin/su", + "/data/local/xbin/su", + "/data/local/bin/su", + "/system/sd/xbin/su", + "/system/bin/failsafe/su", + "/data/local/su" + ) + return paths.any { File(it).exists() } + } + + private fun checkRootMethod3(): Boolean { + var process: Process? = null + return try { + process = Runtime.getRuntime().exec(arrayOf("/system/xbin/which", "su")) + BufferedReader(InputStreamReader(process.inputStream)).readLine() != null + } catch (t: Throwable) { + false + } finally { + process?.destroy() + } + } +} diff --git a/android/app/src/main/java/im/status/ethereum/StatusOKHttpClientFactory.kt b/android/app/src/main/java/im/status/ethereum/StatusOKHttpClientFactory.kt new file mode 100644 index 00000000000..a8458b8d38f --- /dev/null +++ b/android/app/src/main/java/im/status/ethereum/StatusOKHttpClientFactory.kt @@ -0,0 +1,88 @@ +package im.status.ethereum + +import android.util.Log +import com.facebook.react.modules.network.OkHttpClientFactory +import com.facebook.react.modules.network.OkHttpClientProvider +import okhttp3.OkHttpClient +import okhttp3.tls.HandshakeCertificates +import java.io.ByteArrayInputStream +import java.lang.RuntimeException +import java.lang.reflect.Field +import java.lang.reflect.Method +import java.security.cert.CertificateFactory +import java.security.cert.X509Certificate +import im.status.ethereum.module.StatusPackage + +class StatusOkHttpClientFactory : OkHttpClientFactory { + + companion object { + private const val TAG = "StatusOkHttpClientFactory" + private const val SLEEP_DURATION = 500L // milliseconds + } + + override fun createNewNetworkModuleClient(): OkHttpClient? { + val certPem = getCertificatePem().takeIf { it.isNotEmpty() } + ?: return logAndReturnNull("Certificate is empty, cannot create OkHttpClient without a valid certificate") + + val cert = try { + induceSleep() + // Convert PEM certificate string to X509Certificate object + CertificateFactory.getInstance("X.509") + .generateCertificate(ByteArrayInputStream(certPem.toByteArray())) as? X509Certificate + ?: return logAndReturnNull("Certificate could not be parsed as non-null") + } catch (e: Exception) { + return logAndReturnNull("Could not parse certificate", e) + } + + val clientCertificates = try { + induceSleep() + // Create HandshakeCertificates object with our certificate + HandshakeCertificates.Builder() + .addPlatformTrustedCertificates() + .addTrustedCertificate(cert) + .build() + } catch (e: Exception) { + return logAndReturnNull("Could not build HandshakeCertificates", e) + } + + return try { + OkHttpClientProvider.createClientBuilder() + .sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager) + .build() + } catch (e: Exception) { + logAndReturnNull("Could not create OkHttpClient", e) + } + } + + private fun getCertificatePem(): String { + return try { + // Create OkHttpClient with custom SSL socket factory and trust manager + StatusPackage.getImageTLSCert().takeIf { !it.isNullOrBlank() } + ?: logAndReturnEmpty("Certificate PEM string is null or empty") + } catch (e: Exception) { + logAndReturnEmpty("Could not getImageTLSCert", e) + } + } + + private fun induceSleep() { + try { + // induce half second sleep because sometimes a cert is not immediately available + // TODO : remove sleep if App no longer crashes on Android 10 devices with + // java.lang.RuntimeException: Could not invoke WebSocketModule.connect + Thread.sleep(SLEEP_DURATION) + } catch (e: InterruptedException) { + Log.e(TAG, "Sleep interrupted", e) + } + } + + private fun logAndReturnNull(message: String, e: Exception? = null): Nothing? { + Log.e(TAG, message, e) + return null + } + + private fun logAndReturnEmpty(message: String, e: Exception? = null): String { + Log.e(TAG, message, e) + return "" + } +} + diff --git a/android/app/src/main/res/drawable-hdpi/avatar.png b/android/app/src/main/res/drawable-hdpi/avatar.png deleted file mode 100644 index b1c2c64e3db..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/console.png b/android/app/src/main/res/drawable-hdpi/console.png deleted file mode 100644 index 4dc664c6781..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/console.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/corner_left_bottom.png b/android/app/src/main/res/drawable-hdpi/corner_left_bottom.png deleted file mode 100644 index 1c9c9b446d2..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/corner_left_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/corner_left_top.png b/android/app/src/main/res/drawable-hdpi/corner_left_top.png deleted file mode 100644 index 1a0a4e57f82..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/corner_left_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/corner_right_bottom.png b/android/app/src/main/res/drawable-hdpi/corner_right_bottom.png deleted file mode 100644 index e6071d1ae10..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/corner_right_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/corner_right_top.png b/android/app/src/main/res/drawable-hdpi/corner_right_top.png deleted file mode 100644 index 6eaca3cd9a0..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/corner_right_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/ic_background.png b/android/app/src/main/res/drawable-hdpi/ic_background.png new file mode 100644 index 00000000000..583635a1c9d Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_background.png differ diff --git a/android/app/src/main/res/drawable-hdpi/ic_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_foreground.png new file mode 100644 index 00000000000..ca5e7ce1d20 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_action_back.png b/android/app/src/main/res/drawable-hdpi/icon_action_back.png deleted file mode 100644 index 89db7e29865..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_action_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_action_forward.png b/android/app/src/main/res/drawable-hdpi/icon_action_forward.png deleted file mode 100644 index b8abf47c489..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_action_forward.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_collapse.png b/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_collapse.png deleted file mode 100644 index 8bc5016f2ce..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_collapse.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_expand.png b/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_expand.png deleted file mode 100644 index d5b72bb7689..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_action_fullscreen_expand.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_add.png b/android/app/src/main/res/drawable-hdpi/icon_add.png deleted file mode 100755 index 4e3f4cc71db..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_add.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_add_blue.png b/android/app/src/main/res/drawable-hdpi/icon_add_blue.png deleted file mode 100644 index bc625c7666a..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_add_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_add_gray.png b/android/app/src/main/res/drawable-hdpi/icon_add_gray.png deleted file mode 100644 index 20ba082172e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_add_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_add_white.png b/android/app/src/main/res/drawable-hdpi/icon_add_white.png deleted file mode 100644 index f62379f4bde..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_add_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_address_blue.png b/android/app/src/main/res/drawable-hdpi/icon_address_blue.png deleted file mode 100644 index fb295a44f9f..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_address_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_arrow_left_white.png b/android/app/src/main/res/drawable-hdpi/icon_arrow_left_white.png deleted file mode 100644 index d9a494ffb9d..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_arrow_left_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_blue.png b/android/app/src/main/res/drawable-hdpi/icon_arrow_right_blue.png deleted file mode 100644 index a5629972e14..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_gray.png b/android/app/src/main/res/drawable-hdpi/icon_arrow_right_gray.png deleted file mode 100644 index e14ee1c07b7..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_red.png b/android/app/src/main/res/drawable-hdpi/icon_arrow_right_red.png deleted file mode 100644 index 568c62fc5ac..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_arrow_right_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_arrow_top.png b/android/app/src/main/res/drawable-hdpi/icon_arrow_top.png deleted file mode 100644 index 193fe2261df..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_arrow_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_avatar.png b/android/app/src/main/res/drawable-hdpi/icon_avatar.png deleted file mode 100644 index d28594fcf10..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_back.png b/android/app/src/main/res/drawable-hdpi/icon_back.png deleted file mode 100644 index ce2e4b5734e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_back_dark.png b/android/app/src/main/res/drawable-hdpi/icon_back_dark.png deleted file mode 100644 index 82558dfb9d0..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_back_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_back_white.png b/android/app/src/main/res/drawable-hdpi/icon_back_white.png deleted file mode 100644 index 1f8c88cefec..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_back_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_bin.png b/android/app/src/main/res/drawable-hdpi/icon_bin.png deleted file mode 100644 index a9686273842..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_bin.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_chats.png b/android/app/src/main/res/drawable-hdpi/icon_chats.png deleted file mode 100644 index 24acc606e41..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_chats.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_chats_active.png b/android/app/src/main/res/drawable-hdpi/icon_chats_active.png deleted file mode 100644 index d8dd8877e90..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_chats_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_chats_blue.png b/android/app/src/main/res/drawable-hdpi/icon_chats_blue.png deleted file mode 100644 index 6f555e7d83c..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_chats_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_check_on.png b/android/app/src/main/res/drawable-hdpi/icon_check_on.png deleted file mode 100644 index d8318e7fcb1..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_check_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_blue.png b/android/app/src/main/res/drawable-hdpi/icon_close_blue.png deleted file mode 100644 index 88e6555b5df..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_dark.png b/android/app/src/main/res/drawable-hdpi/icon_close_dark.png deleted file mode 100644 index 34ee7bce50e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_gray.png b/android/app/src/main/res/drawable-hdpi/icon_close_gray.png deleted file mode 100644 index 574396b25bc..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_light_gray.png b/android/app/src/main/res/drawable-hdpi/icon_close_light_gray.png deleted file mode 100644 index 4b6d97ccefc..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_light_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_red.png b/android/app/src/main/res/drawable-hdpi/icon_close_red.png deleted file mode 100644 index aff378e3a4a..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_small_gray.png b/android/app/src/main/res/drawable-hdpi/icon_close_small_gray.png deleted file mode 100755 index 2fb7bd1b7fa..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_small_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_close_white.png b/android/app/src/main/res/drawable-hdpi/icon_close_white.png deleted file mode 100644 index 09054ff840b..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_close_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_contacts.png b/android/app/src/main/res/drawable-hdpi/icon_contacts.png deleted file mode 100644 index 68185400b17..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_contacts.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_contacts_active.png b/android/app/src/main/res/drawable-hdpi/icon_contacts_active.png deleted file mode 100644 index 6df51881172..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_contacts_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_discover.png b/android/app/src/main/res/drawable-hdpi/icon_discover.png deleted file mode 100644 index f0062b9ecbc..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_discover.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_discover_active.png b/android/app/src/main/res/drawable-hdpi/icon_discover_active.png deleted file mode 100644 index bab95befde2..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_discover_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_dollar.png b/android/app/src/main/res/drawable-hdpi/icon_dollar.png deleted file mode 100644 index c2a449b532b..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_dollar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_dollar_green.png b/android/app/src/main/res/drawable-hdpi/icon_dollar_green.png deleted file mode 100644 index 32cf51e421e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_dollar_green.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_dots.png b/android/app/src/main/res/drawable-hdpi/icon_dots.png deleted file mode 100644 index 7f9961ec1b9..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_dots.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_dots_horizontal_white.png b/android/app/src/main/res/drawable-hdpi/icon_dots_horizontal_white.png deleted file mode 100644 index e1de2bfe71d..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_dots_horizontal_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_drag_down.png b/android/app/src/main/res/drawable-hdpi/icon_drag_down.png deleted file mode 100644 index 7d0dfec989e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_drag_down.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_drag_white.png b/android/app/src/main/res/drawable-hdpi/icon_drag_white.png deleted file mode 100644 index 6a079b6f6fb..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_drag_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_enter_address.png b/android/app/src/main/res/drawable-hdpi/icon_enter_address.png deleted file mode 100755 index 776aadf1ede..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_enter_address.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_fullscreen_blue.png b/android/app/src/main/res/drawable-hdpi/icon_fullscreen_blue.png deleted file mode 100644 index df0074f4ffe..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_fullscreen_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_grab_gray.png b/android/app/src/main/res/drawable-hdpi/icon_grab_gray.png deleted file mode 100644 index 0dbfd5a066c..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_grab_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_group.png b/android/app/src/main/res/drawable-hdpi/icon_group.png deleted file mode 100644 index ba7d13d4aa5..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_group_big.png b/android/app/src/main/res/drawable-hdpi/icon_group_big.png deleted file mode 100644 index 68687a6dfa3..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_hamburger.png b/android/app/src/main/res/drawable-hdpi/icon_hamburger.png deleted file mode 100644 index 33beaca1248..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_hamburger.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_hamburger_dark.png b/android/app/src/main/res/drawable-hdpi/icon_hamburger_dark.png deleted file mode 100644 index d15588f9314..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_hamburger_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_input_list.png b/android/app/src/main/res/drawable-hdpi/icon_input_list.png deleted file mode 100644 index efa3cdd2051..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_input_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_list.png b/android/app/src/main/res/drawable-hdpi/icon_list.png deleted file mode 100644 index d0d15ed91ad..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_location.png b/android/app/src/main/res/drawable-hdpi/icon_location.png deleted file mode 100755 index e0f69de116e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_location.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_lock_gray.png b/android/app/src/main/res/drawable-hdpi/icon_lock_gray.png deleted file mode 100644 index 5e7c9580466..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_lock_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_lock_white.png b/android/app/src/main/res/drawable-hdpi/icon_lock_white.png deleted file mode 100644 index 700c8fdf815..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_lock_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_menu_group.png b/android/app/src/main/res/drawable-hdpi/icon_menu_group.png deleted file mode 100644 index 40e9b7dc416..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_menu_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_money_white.png b/android/app/src/main/res/drawable-hdpi/icon_money_white.png deleted file mode 100755 index 6510ff9c047..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_money_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_more_vertical.png b/android/app/src/main/res/drawable-hdpi/icon_more_vertical.png deleted file mode 100644 index b0948a2a7e7..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_more_vertical.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_more_vertical_blue.png b/android/app/src/main/res/drawable-hdpi/icon_more_vertical_blue.png deleted file mode 100644 index f8bc4ec674d..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_more_vertical_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_muted.png b/android/app/src/main/res/drawable-hdpi/icon_muted.png deleted file mode 100644 index 2c862042ba2..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_muted.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_notifications_on.png b/android/app/src/main/res/drawable-hdpi/icon_notifications_on.png deleted file mode 100644 index 207cb4c16f4..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_notifications_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok.png b/android/app/src/main/res/drawable-hdpi/icon_ok.png deleted file mode 100644 index d9bb8a1cbfb..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_blue.png b/android/app/src/main/res/drawable-hdpi/icon_ok_blue.png deleted file mode 100644 index a067f8d04db..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_dark.png b/android/app/src/main/res/drawable-hdpi/icon_ok_dark.png deleted file mode 100644 index 84836c6a2e7..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_disabled.png b/android/app/src/main/res/drawable-hdpi/icon_ok_disabled.png deleted file mode 100644 index dc6068da44c..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_disabled.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_disabled_inversed.png b/android/app/src/main/res/drawable-hdpi/icon_ok_disabled_inversed.png deleted file mode 100644 index 5235f7f0780..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_disabled_inversed.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_purple.png b/android/app/src/main/res/drawable-hdpi/icon_ok_purple.png deleted file mode 100644 index b28a5ca6d02..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_purple.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_small.png b/android/app/src/main/res/drawable-hdpi/icon_ok_small.png deleted file mode 100644 index 9ff5646336c..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_small.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_small_copy_2.png b/android/app/src/main/res/drawable-hdpi/icon_ok_small_copy_2.png deleted file mode 100644 index 6475aebf6a4..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_small_copy_2.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_ok_white.png b/android/app/src/main/res/drawable-hdpi/icon_ok_white.png deleted file mode 100644 index 64c4e35cb72..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_ok_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_options_dark.png b/android/app/src/main/res/drawable-hdpi/icon_options_dark.png deleted file mode 100644 index daa1561d30d..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_options_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_options_gray.png b/android/app/src/main/res/drawable-hdpi/icon_options_gray.png deleted file mode 100644 index 7fa48deb3c3..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_options_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_phone_white.png b/android/app/src/main/res/drawable-hdpi/icon_phone_white.png deleted file mode 100755 index d60a9ac7a20..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_phone_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_plus.png b/android/app/src/main/res/drawable-hdpi/icon_plus.png deleted file mode 100644 index 19e2a45b574..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_plus.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_private_group.png b/android/app/src/main/res/drawable-hdpi/icon_private_group.png deleted file mode 100644 index a6f4aa04d6e..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_private_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_private_group_big.png b/android/app/src/main/res/drawable-hdpi/icon_private_group_big.png deleted file mode 100644 index 27fcdf8a2ee..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_private_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_public_group.png b/android/app/src/main/res/drawable-hdpi/icon_public_group.png deleted file mode 100644 index 321c95591c7..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_public_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_public_group_big.png b/android/app/src/main/res/drawable-hdpi/icon_public_group_big.png deleted file mode 100644 index 13805eb7f6a..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_public_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_q_r_blue.png b/android/app/src/main/res/drawable-hdpi/icon_q_r_blue.png deleted file mode 100644 index ae26f3c5eea..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_q_r_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_qr.png b/android/app/src/main/res/drawable-hdpi/icon_qr.png deleted file mode 100644 index 6b2f825374b..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_qr.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_qr_gray.png b/android/app/src/main/res/drawable-hdpi/icon_qr_gray.png deleted file mode 100644 index ce7a826d0d9..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_qr_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_scan_q_r.png b/android/app/src/main/res/drawable-hdpi/icon_scan_q_r.png deleted file mode 100755 index df2c269ee6b..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_scan_q_r.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_scan_white.png b/android/app/src/main/res/drawable-hdpi/icon_scan_white.png deleted file mode 100644 index a9496cb1857..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_scan_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_search.png b/android/app/src/main/res/drawable-hdpi/icon_search.png deleted file mode 100644 index d6fe0b2cc1d..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_search.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_search_dark.png b/android/app/src/main/res/drawable-hdpi/icon_search_dark.png deleted file mode 100644 index 68be50ff407..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_search_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_search_gray_copy.png b/android/app/src/main/res/drawable-hdpi/icon_search_gray_copy.png deleted file mode 100644 index fe1fd1299c6..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_search_gray_copy.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_send.png b/android/app/src/main/res/drawable-hdpi/icon_send.png deleted file mode 100644 index af524d1b381..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_send.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_settings.png b/android/app/src/main/res/drawable-hdpi/icon_settings.png deleted file mode 100644 index ab60673483a..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_settings.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_smile.png b/android/app/src/main/res/drawable-hdpi/icon_smile.png deleted file mode 100644 index ab6f3f75aa9..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_smile.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_speaker_blue.png b/android/app/src/main/res/drawable-hdpi/icon_speaker_blue.png deleted file mode 100644 index c26d61864cb..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_speaker_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_up.png b/android/app/src/main/res/drawable-hdpi/icon_up.png deleted file mode 100644 index 421b5f459d2..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_up.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/icon_wallet_avatar.png b/android/app/src/main/res/drawable-hdpi/icon_wallet_avatar.png deleted file mode 100755 index 0beb98c8ca7..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/icon_wallet_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/scan_blue.png b/android/app/src/main/res/drawable-hdpi/scan_blue.png deleted file mode 100644 index 7ea61175347..00000000000 Binary files a/android/app/src/main/res/drawable-hdpi/scan_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-hdpi/splash_logo.png b/android/app/src/main/res/drawable-hdpi/splash_logo.png new file mode 100644 index 00000000000..ea5d96b73a6 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/splash_logo.png differ diff --git a/android/app/src/main/res/drawable-mdpi/avatar.png b/android/app/src/main/res/drawable-mdpi/avatar.png deleted file mode 100644 index f208650ddb5..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/console.png b/android/app/src/main/res/drawable-mdpi/console.png deleted file mode 100644 index 2ef4eeac8f8..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/console.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/corner_left_bottom.png b/android/app/src/main/res/drawable-mdpi/corner_left_bottom.png deleted file mode 100644 index da09ea7a24c..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/corner_left_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/corner_left_top.png b/android/app/src/main/res/drawable-mdpi/corner_left_top.png deleted file mode 100644 index 988d93651c4..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/corner_left_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/corner_right_bottom.png b/android/app/src/main/res/drawable-mdpi/corner_right_bottom.png deleted file mode 100644 index e74544e83ba..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/corner_right_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/corner_right_top.png b/android/app/src/main/res/drawable-mdpi/corner_right_top.png deleted file mode 100644 index 33726dfa018..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/corner_right_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_background.png b/android/app/src/main/res/drawable-mdpi/ic_background.png new file mode 100644 index 00000000000..a4e87e1d481 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_background.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_foreground.png new file mode 100644 index 00000000000..94fe86346bb Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_action_back.png b/android/app/src/main/res/drawable-mdpi/icon_action_back.png deleted file mode 100644 index 8e31377a598..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_action_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_action_forward.png b/android/app/src/main/res/drawable-mdpi/icon_action_forward.png deleted file mode 100644 index af802ac9eb0..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_action_forward.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_collapse.png b/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_collapse.png deleted file mode 100644 index 09c4944904b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_collapse.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_expand.png b/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_expand.png deleted file mode 100644 index a862a39fc51..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_action_fullscreen_expand.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_add.png b/android/app/src/main/res/drawable-mdpi/icon_add.png deleted file mode 100644 index 8593bd6d04a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_add.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_add_blue.png b/android/app/src/main/res/drawable-mdpi/icon_add_blue.png deleted file mode 100644 index 789dcb4b990..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_add_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_add_gray.png b/android/app/src/main/res/drawable-mdpi/icon_add_gray.png deleted file mode 100644 index 8ddec19c24b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_add_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_add_white.png b/android/app/src/main/res/drawable-mdpi/icon_add_white.png deleted file mode 100644 index 372f431217c..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_add_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_address_blue.png b/android/app/src/main/res/drawable-mdpi/icon_address_blue.png deleted file mode 100644 index d9ff193fc4e..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_address_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_arrow_left_white.png b/android/app/src/main/res/drawable-mdpi/icon_arrow_left_white.png deleted file mode 100644 index 5344b610f38..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_arrow_left_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_blue.png b/android/app/src/main/res/drawable-mdpi/icon_arrow_right_blue.png deleted file mode 100644 index cace86fba32..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_gray.png b/android/app/src/main/res/drawable-mdpi/icon_arrow_right_gray.png deleted file mode 100644 index 84d63cba19d..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_red.png b/android/app/src/main/res/drawable-mdpi/icon_arrow_right_red.png deleted file mode 100644 index 5ebd0c9c642..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_arrow_right_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_arrow_top.png b/android/app/src/main/res/drawable-mdpi/icon_arrow_top.png deleted file mode 100644 index dd47f4ff17a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_arrow_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_avatar.png b/android/app/src/main/res/drawable-mdpi/icon_avatar.png deleted file mode 100644 index d76df40ebc0..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_back.png b/android/app/src/main/res/drawable-mdpi/icon_back.png deleted file mode 100644 index 70e85f3fc44..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_back_dark.png b/android/app/src/main/res/drawable-mdpi/icon_back_dark.png deleted file mode 100644 index cf94e170802..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_back_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_back_white.png b/android/app/src/main/res/drawable-mdpi/icon_back_white.png deleted file mode 100644 index 98c51320f67..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_back_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_bin.png b/android/app/src/main/res/drawable-mdpi/icon_bin.png deleted file mode 100644 index d26fff597de..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_bin.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_chats.png b/android/app/src/main/res/drawable-mdpi/icon_chats.png deleted file mode 100644 index accffce44ac..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_chats.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_chats_active.png b/android/app/src/main/res/drawable-mdpi/icon_chats_active.png deleted file mode 100644 index a7fb8a4f8cd..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_chats_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_chats_blue.png b/android/app/src/main/res/drawable-mdpi/icon_chats_blue.png deleted file mode 100644 index e19d918472b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_chats_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_check_on.png b/android/app/src/main/res/drawable-mdpi/icon_check_on.png deleted file mode 100644 index a44f891d2fa..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_check_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_blue.png b/android/app/src/main/res/drawable-mdpi/icon_close_blue.png deleted file mode 100644 index d12b2aa7723..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_dark.png b/android/app/src/main/res/drawable-mdpi/icon_close_dark.png deleted file mode 100644 index f1c618618e6..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_gray.png b/android/app/src/main/res/drawable-mdpi/icon_close_gray.png deleted file mode 100644 index 0715d8b5e21..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_light_gray.png b/android/app/src/main/res/drawable-mdpi/icon_close_light_gray.png deleted file mode 100644 index 4918a29a643..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_light_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_red.png b/android/app/src/main/res/drawable-mdpi/icon_close_red.png deleted file mode 100644 index c25f1b2398e..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_small_gray.png b/android/app/src/main/res/drawable-mdpi/icon_close_small_gray.png deleted file mode 100755 index a53e5eab90c..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_small_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_close_white.png b/android/app/src/main/res/drawable-mdpi/icon_close_white.png deleted file mode 100644 index c89240d1857..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_close_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_contacts.png b/android/app/src/main/res/drawable-mdpi/icon_contacts.png deleted file mode 100644 index c428fa16b06..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_contacts.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_contacts_active.png b/android/app/src/main/res/drawable-mdpi/icon_contacts_active.png deleted file mode 100644 index 568786dd1ab..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_contacts_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_discover.png b/android/app/src/main/res/drawable-mdpi/icon_discover.png deleted file mode 100644 index 3a6d1793d25..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_discover.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_discover_active.png b/android/app/src/main/res/drawable-mdpi/icon_discover_active.png deleted file mode 100644 index 9ace125674a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_discover_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_dollar.png b/android/app/src/main/res/drawable-mdpi/icon_dollar.png deleted file mode 100644 index be7735955eb..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_dollar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_dollar_green.png b/android/app/src/main/res/drawable-mdpi/icon_dollar_green.png deleted file mode 100644 index fc6f77f7563..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_dollar_green.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_dots.png b/android/app/src/main/res/drawable-mdpi/icon_dots.png deleted file mode 100644 index a5a003f4595..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_dots.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_dots_horizontal_white.png b/android/app/src/main/res/drawable-mdpi/icon_dots_horizontal_white.png deleted file mode 100644 index 0afa8924df4..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_dots_horizontal_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_drag_down.png b/android/app/src/main/res/drawable-mdpi/icon_drag_down.png deleted file mode 100644 index 88182afaf35..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_drag_down.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_drag_white.png b/android/app/src/main/res/drawable-mdpi/icon_drag_white.png deleted file mode 100644 index 7845600020b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_drag_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_enter_address.png b/android/app/src/main/res/drawable-mdpi/icon_enter_address.png deleted file mode 100755 index 37fb533bfa3..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_enter_address.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_fullscreen_blue.png b/android/app/src/main/res/drawable-mdpi/icon_fullscreen_blue.png deleted file mode 100644 index 869831b52c8..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_fullscreen_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_grab_gray.png b/android/app/src/main/res/drawable-mdpi/icon_grab_gray.png deleted file mode 100644 index afd9670f895..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_grab_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_group.png b/android/app/src/main/res/drawable-mdpi/icon_group.png deleted file mode 100644 index 373056e72bd..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_group_big.png b/android/app/src/main/res/drawable-mdpi/icon_group_big.png deleted file mode 100644 index c4bf8a79893..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_hamburger.png b/android/app/src/main/res/drawable-mdpi/icon_hamburger.png deleted file mode 100644 index c3c67a10dfa..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_hamburger.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_hamburger_dark.png b/android/app/src/main/res/drawable-mdpi/icon_hamburger_dark.png deleted file mode 100644 index c36b03f6707..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_hamburger_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_input_list.png b/android/app/src/main/res/drawable-mdpi/icon_input_list.png deleted file mode 100644 index 6f58d3c7243..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_input_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_list.png b/android/app/src/main/res/drawable-mdpi/icon_list.png deleted file mode 100644 index 37d20bf9c7b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_location.png b/android/app/src/main/res/drawable-mdpi/icon_location.png deleted file mode 100755 index c063b68d31a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_location.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_lock_gray.png b/android/app/src/main/res/drawable-mdpi/icon_lock_gray.png deleted file mode 100644 index dce5f8dff8c..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_lock_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_lock_white.png b/android/app/src/main/res/drawable-mdpi/icon_lock_white.png deleted file mode 100644 index 7da52c18af8..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_lock_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_menu_group.png b/android/app/src/main/res/drawable-mdpi/icon_menu_group.png deleted file mode 100644 index f17ab21946f..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_menu_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_money_white.png b/android/app/src/main/res/drawable-mdpi/icon_money_white.png deleted file mode 100755 index 1584a09d0a2..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_money_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_more_vertical.png b/android/app/src/main/res/drawable-mdpi/icon_more_vertical.png deleted file mode 100644 index 8146a3ffeb1..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_more_vertical.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_more_vertical_blue.png b/android/app/src/main/res/drawable-mdpi/icon_more_vertical_blue.png deleted file mode 100644 index acbe47357d3..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_more_vertical_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_muted.png b/android/app/src/main/res/drawable-mdpi/icon_muted.png deleted file mode 100644 index 21c7dc39622..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_muted.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_notifications_on.png b/android/app/src/main/res/drawable-mdpi/icon_notifications_on.png deleted file mode 100644 index 89a9ca8f15d..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_notifications_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok.png b/android/app/src/main/res/drawable-mdpi/icon_ok.png deleted file mode 100644 index eb19a3fea51..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_blue.png b/android/app/src/main/res/drawable-mdpi/icon_ok_blue.png deleted file mode 100644 index dfc5073656d..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_dark.png b/android/app/src/main/res/drawable-mdpi/icon_ok_dark.png deleted file mode 100644 index 34903a27e97..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_disabled.png b/android/app/src/main/res/drawable-mdpi/icon_ok_disabled.png deleted file mode 100644 index 62a6bdebf48..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_disabled.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_disabled_inversed.png b/android/app/src/main/res/drawable-mdpi/icon_ok_disabled_inversed.png deleted file mode 100644 index 6052db98472..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_disabled_inversed.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_purple.png b/android/app/src/main/res/drawable-mdpi/icon_ok_purple.png deleted file mode 100644 index b6c7a413fd3..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_purple.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_small.png b/android/app/src/main/res/drawable-mdpi/icon_ok_small.png deleted file mode 100644 index 6e147b7512a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_small.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_small_copy_2.png b/android/app/src/main/res/drawable-mdpi/icon_ok_small_copy_2.png deleted file mode 100644 index 86047df5f3b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_small_copy_2.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_ok_white.png b/android/app/src/main/res/drawable-mdpi/icon_ok_white.png deleted file mode 100644 index 64c4e35cb72..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_ok_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_options_dark.png b/android/app/src/main/res/drawable-mdpi/icon_options_dark.png deleted file mode 100644 index 7256d6e8ebf..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_options_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_options_gray.png b/android/app/src/main/res/drawable-mdpi/icon_options_gray.png deleted file mode 100644 index 098d4942ff0..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_options_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_phone_white.png b/android/app/src/main/res/drawable-mdpi/icon_phone_white.png deleted file mode 100755 index 224f48c50de..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_phone_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_plus.png b/android/app/src/main/res/drawable-mdpi/icon_plus.png deleted file mode 100644 index a26e8912392..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_plus.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_private_group.png b/android/app/src/main/res/drawable-mdpi/icon_private_group.png deleted file mode 100644 index 5b347097a77..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_private_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_private_group_big.png b/android/app/src/main/res/drawable-mdpi/icon_private_group_big.png deleted file mode 100644 index f9bb2211371..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_private_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_public_group.png b/android/app/src/main/res/drawable-mdpi/icon_public_group.png deleted file mode 100644 index 42fc8063dd7..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_public_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_public_group_big.png b/android/app/src/main/res/drawable-mdpi/icon_public_group_big.png deleted file mode 100644 index a03f4354660..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_public_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_q_r_blue.png b/android/app/src/main/res/drawable-mdpi/icon_q_r_blue.png deleted file mode 100644 index 0492d497be6..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_q_r_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_qr.png b/android/app/src/main/res/drawable-mdpi/icon_qr.png deleted file mode 100644 index cde09052fbc..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_qr.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_qr_gray.png b/android/app/src/main/res/drawable-mdpi/icon_qr_gray.png deleted file mode 100644 index cb73ad1e040..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_qr_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_scan_q_r.png b/android/app/src/main/res/drawable-mdpi/icon_scan_q_r.png deleted file mode 100755 index 906e8f7d089..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_scan_q_r.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_scan_white.png b/android/app/src/main/res/drawable-mdpi/icon_scan_white.png deleted file mode 100644 index e1fe0fe57b0..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_scan_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_search.png b/android/app/src/main/res/drawable-mdpi/icon_search.png deleted file mode 100644 index 7ea3e3bf360..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_search.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_search_dark.png b/android/app/src/main/res/drawable-mdpi/icon_search_dark.png deleted file mode 100644 index a17aa09495b..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_search_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_search_gray_copy.png b/android/app/src/main/res/drawable-mdpi/icon_search_gray_copy.png deleted file mode 100644 index 61041d5c3b7..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_search_gray_copy.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_send.png b/android/app/src/main/res/drawable-mdpi/icon_send.png deleted file mode 100644 index 45eda4e76e5..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_send.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_settings.png b/android/app/src/main/res/drawable-mdpi/icon_settings.png deleted file mode 100644 index f01c784c4cb..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_settings.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_smile.png b/android/app/src/main/res/drawable-mdpi/icon_smile.png deleted file mode 100644 index bed62a5cd5d..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_smile.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_speaker_blue.png b/android/app/src/main/res/drawable-mdpi/icon_speaker_blue.png deleted file mode 100644 index e35aa569e38..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_speaker_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_up.png b/android/app/src/main/res/drawable-mdpi/icon_up.png deleted file mode 100644 index a2db655bd6a..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_up.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/icon_wallet_avatar.png b/android/app/src/main/res/drawable-mdpi/icon_wallet_avatar.png deleted file mode 100755 index 629bb816045..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/icon_wallet_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/logo.png b/android/app/src/main/res/drawable-mdpi/logo.png new file mode 100644 index 00000000000..5d415cc689a Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/logo.png differ diff --git a/android/app/src/main/res/drawable-mdpi/notification_icon.png b/android/app/src/main/res/drawable-mdpi/notification_icon.png new file mode 100644 index 00000000000..a0f3fa51ee4 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/notification_icon.png differ diff --git a/android/app/src/main/res/drawable-mdpi/scan_blue.png b/android/app/src/main/res/drawable-mdpi/scan_blue.png deleted file mode 100644 index f154c2ee438..00000000000 Binary files a/android/app/src/main/res/drawable-mdpi/scan_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-mdpi/splash_logo.png b/android/app/src/main/res/drawable-mdpi/splash_logo.png new file mode 100644 index 00000000000..f7383cec215 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/splash_logo.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/avatar.png b/android/app/src/main/res/drawable-xhdpi/avatar.png deleted file mode 100644 index 8cc91adff5a..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/console.png b/android/app/src/main/res/drawable-xhdpi/console.png deleted file mode 100644 index 70d539f951c..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/console.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/corner_left_bottom.png b/android/app/src/main/res/drawable-xhdpi/corner_left_bottom.png deleted file mode 100644 index b43f25a58da..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/corner_left_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/corner_left_top.png b/android/app/src/main/res/drawable-xhdpi/corner_left_top.png deleted file mode 100644 index f8180a9c1c7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/corner_left_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/corner_right_bottom.png b/android/app/src/main/res/drawable-xhdpi/corner_right_bottom.png deleted file mode 100644 index ce0a7ab9c09..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/corner_right_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/corner_right_top.png b/android/app/src/main/res/drawable-xhdpi/corner_right_top.png deleted file mode 100644 index 2ae2e61860b..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/corner_right_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_background.png b/android/app/src/main/res/drawable-xhdpi/ic_background.png new file mode 100644 index 00000000000..3d628c39623 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_background.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_foreground.png b/android/app/src/main/res/drawable-xhdpi/ic_foreground.png new file mode 100644 index 00000000000..a5a79d8d79a Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_action_back.png b/android/app/src/main/res/drawable-xhdpi/icon_action_back.png deleted file mode 100644 index 491112378ef..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_action_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_action_forward.png b/android/app/src/main/res/drawable-xhdpi/icon_action_forward.png deleted file mode 100644 index 453add7dec6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_action_forward.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_collapse.png b/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_collapse.png deleted file mode 100644 index 80948ff1915..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_collapse.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_expand.png b/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_expand.png deleted file mode 100644 index 35fcdd6ae63..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_action_fullscreen_expand.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_add.png b/android/app/src/main/res/drawable-xhdpi/icon_add.png deleted file mode 100755 index 88136956c2a..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_add.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_add_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_add_blue.png deleted file mode 100644 index 2fcfcb6e06d..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_add_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_add_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_add_gray.png deleted file mode 100644 index a05f10fa16e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_add_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_add_white.png b/android/app/src/main/res/drawable-xhdpi/icon_add_white.png deleted file mode 100644 index 21f8a387912..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_add_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_address_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_address_blue.png deleted file mode 100644 index 919ae15fbb7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_address_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_arrow_left_white.png b/android/app/src/main/res/drawable-xhdpi/icon_arrow_left_white.png deleted file mode 100644 index 182a421947d..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_arrow_left_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_blue.png deleted file mode 100644 index 4c42595735a..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_gray.png deleted file mode 100644 index 0d73c2ebb3d..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_red.png b/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_red.png deleted file mode 100644 index 264579208b6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_arrow_right_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_arrow_top.png b/android/app/src/main/res/drawable-xhdpi/icon_arrow_top.png deleted file mode 100644 index 9125df76b51..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_arrow_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_avatar.png b/android/app/src/main/res/drawable-xhdpi/icon_avatar.png deleted file mode 100644 index 63e1078f8ee..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_back.png b/android/app/src/main/res/drawable-xhdpi/icon_back.png deleted file mode 100644 index 07072c52c15..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_back_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_back_dark.png deleted file mode 100644 index f19f5d0804e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_back_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_back_white.png b/android/app/src/main/res/drawable-xhdpi/icon_back_white.png deleted file mode 100644 index 66efe8d2167..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_back_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_bin.png b/android/app/src/main/res/drawable-xhdpi/icon_bin.png deleted file mode 100644 index beed3a34905..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_bin.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_chats.png b/android/app/src/main/res/drawable-xhdpi/icon_chats.png deleted file mode 100644 index 55ca434d476..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_chats.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_chats_active.png b/android/app/src/main/res/drawable-xhdpi/icon_chats_active.png deleted file mode 100644 index 9a2f4860a30..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_chats_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_chats_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_chats_blue.png deleted file mode 100644 index 31c25b335cb..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_chats_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_check_on.png b/android/app/src/main/res/drawable-xhdpi/icon_check_on.png deleted file mode 100644 index ef90004718a..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_check_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_close_blue.png deleted file mode 100644 index 30eeb57b2a6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_close_dark.png deleted file mode 100644 index 331c130b4a6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_close_gray.png deleted file mode 100644 index 00da9eba41c..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_light_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_close_light_gray.png deleted file mode 100644 index 03a45042681..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_light_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_red.png b/android/app/src/main/res/drawable-xhdpi/icon_close_red.png deleted file mode 100644 index 6318aac3ffd..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_small_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_close_small_gray.png deleted file mode 100755 index 3b641a8b922..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_small_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_close_white.png b/android/app/src/main/res/drawable-xhdpi/icon_close_white.png deleted file mode 100644 index dcdf4125035..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_close_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_contacts.png b/android/app/src/main/res/drawable-xhdpi/icon_contacts.png deleted file mode 100644 index c8f1ab41f2e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_contacts.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_contacts_active.png b/android/app/src/main/res/drawable-xhdpi/icon_contacts_active.png deleted file mode 100644 index c3d93c37c14..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_contacts_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_discover.png b/android/app/src/main/res/drawable-xhdpi/icon_discover.png deleted file mode 100644 index 713bdd1f3a6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_discover.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_discover_active.png b/android/app/src/main/res/drawable-xhdpi/icon_discover_active.png deleted file mode 100644 index 828f60bb170..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_discover_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_dollar.png b/android/app/src/main/res/drawable-xhdpi/icon_dollar.png deleted file mode 100644 index 615f013c40c..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_dollar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_dollar_green.png b/android/app/src/main/res/drawable-xhdpi/icon_dollar_green.png deleted file mode 100644 index cdea0d4af42..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_dollar_green.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_dots.png b/android/app/src/main/res/drawable-xhdpi/icon_dots.png deleted file mode 100644 index e4d3d40921f..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_dots.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_dots_horizontal_white.png b/android/app/src/main/res/drawable-xhdpi/icon_dots_horizontal_white.png deleted file mode 100644 index b1c599688ac..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_dots_horizontal_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_drag_down.png b/android/app/src/main/res/drawable-xhdpi/icon_drag_down.png deleted file mode 100644 index ca0f2b6f4e7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_drag_down.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_drag_white.png b/android/app/src/main/res/drawable-xhdpi/icon_drag_white.png deleted file mode 100644 index 2b200673bb0..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_drag_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_enter_address.png b/android/app/src/main/res/drawable-xhdpi/icon_enter_address.png deleted file mode 100755 index 9f8f14f5092..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_enter_address.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_fullscreen_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_fullscreen_blue.png deleted file mode 100644 index 16c489791f3..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_fullscreen_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_grab_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_grab_gray.png deleted file mode 100644 index 691899950e7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_grab_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_group.png b/android/app/src/main/res/drawable-xhdpi/icon_group.png deleted file mode 100644 index 8576e6f1e29..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_group_big.png b/android/app/src/main/res/drawable-xhdpi/icon_group_big.png deleted file mode 100644 index 8b479262131..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_hamburger.png b/android/app/src/main/res/drawable-xhdpi/icon_hamburger.png deleted file mode 100644 index 1f85e4ca7f4..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_hamburger.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_hamburger_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_hamburger_dark.png deleted file mode 100644 index 7ac556cc2d2..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_hamburger_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_input_list.png b/android/app/src/main/res/drawable-xhdpi/icon_input_list.png deleted file mode 100644 index fff2d39ec75..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_input_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_list.png b/android/app/src/main/res/drawable-xhdpi/icon_list.png deleted file mode 100644 index d50123e3c6d..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_location.png b/android/app/src/main/res/drawable-xhdpi/icon_location.png deleted file mode 100755 index 0e43aa738ec..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_location.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_lock_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_lock_gray.png deleted file mode 100644 index 40369d54240..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_lock_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_lock_white.png b/android/app/src/main/res/drawable-xhdpi/icon_lock_white.png deleted file mode 100644 index 827cd722424..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_lock_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_menu_group.png b/android/app/src/main/res/drawable-xhdpi/icon_menu_group.png deleted file mode 100644 index 28c99ec40f5..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_menu_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_money_white.png b/android/app/src/main/res/drawable-xhdpi/icon_money_white.png deleted file mode 100755 index da077578fa6..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_money_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_more_vertical.png b/android/app/src/main/res/drawable-xhdpi/icon_more_vertical.png deleted file mode 100644 index bba25f46425..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_more_vertical.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_more_vertical_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_more_vertical_blue.png deleted file mode 100644 index d58d42bf3ca..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_more_vertical_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_muted.png b/android/app/src/main/res/drawable-xhdpi/icon_muted.png deleted file mode 100644 index 41956196703..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_muted.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_notifications_on.png b/android/app/src/main/res/drawable-xhdpi/icon_notifications_on.png deleted file mode 100644 index 9322a10becb..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_notifications_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok.png b/android/app/src/main/res/drawable-xhdpi/icon_ok.png deleted file mode 100644 index 80888a7606e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_blue.png deleted file mode 100644 index f3db17d7880..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_dark.png deleted file mode 100644 index c19cf293953..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled.png deleted file mode 100644 index 07c323e77e1..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled_inversed.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled_inversed.png deleted file mode 100644 index 5d215f58a42..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_disabled_inversed.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_purple.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_purple.png deleted file mode 100644 index 3357120bb02..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_purple.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_small.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_small.png deleted file mode 100644 index 7feb9910643..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_small.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_small_copy_2.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_small_copy_2.png deleted file mode 100644 index a8bc5e7185c..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_small_copy_2.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_ok_white.png b/android/app/src/main/res/drawable-xhdpi/icon_ok_white.png deleted file mode 100644 index 9ee251d9769..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_ok_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_options_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_options_dark.png deleted file mode 100644 index af7dfd34ee1..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_options_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_options_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_options_gray.png deleted file mode 100644 index af36912bda7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_options_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_phone_white.png b/android/app/src/main/res/drawable-xhdpi/icon_phone_white.png deleted file mode 100755 index f08867e855e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_phone_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_plus.png b/android/app/src/main/res/drawable-xhdpi/icon_plus.png deleted file mode 100644 index 00f6f9cdb83..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_plus.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_private_group.png b/android/app/src/main/res/drawable-xhdpi/icon_private_group.png deleted file mode 100644 index d310e392956..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_private_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_private_group_big.png b/android/app/src/main/res/drawable-xhdpi/icon_private_group_big.png deleted file mode 100644 index 9ea29d19fca..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_private_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_public_group.png b/android/app/src/main/res/drawable-xhdpi/icon_public_group.png deleted file mode 100644 index 4a57d714eb4..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_public_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_public_group_big.png b/android/app/src/main/res/drawable-xhdpi/icon_public_group_big.png deleted file mode 100644 index 2e9ffa2d52d..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_public_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_q_r_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_q_r_blue.png deleted file mode 100644 index 47c6572daca..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_q_r_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_qr.png b/android/app/src/main/res/drawable-xhdpi/icon_qr.png deleted file mode 100644 index c55551f6873..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_qr.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_qr_gray.png b/android/app/src/main/res/drawable-xhdpi/icon_qr_gray.png deleted file mode 100644 index 71c6fd567d0..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_qr_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_scan_q_r.png b/android/app/src/main/res/drawable-xhdpi/icon_scan_q_r.png deleted file mode 100755 index e914b927df2..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_scan_q_r.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_scan_white.png b/android/app/src/main/res/drawable-xhdpi/icon_scan_white.png deleted file mode 100644 index ad6ad720708..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_scan_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_search.png b/android/app/src/main/res/drawable-xhdpi/icon_search.png deleted file mode 100644 index 8be3300e49a..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_search.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_search_dark.png b/android/app/src/main/res/drawable-xhdpi/icon_search_dark.png deleted file mode 100644 index 0fbc32de6ce..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_search_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_search_gray_copy.png b/android/app/src/main/res/drawable-xhdpi/icon_search_gray_copy.png deleted file mode 100644 index f0a30459479..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_search_gray_copy.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_send.png b/android/app/src/main/res/drawable-xhdpi/icon_send.png deleted file mode 100644 index f8e71b580fa..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_send.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_settings.png b/android/app/src/main/res/drawable-xhdpi/icon_settings.png deleted file mode 100644 index 72aaee326f8..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_settings.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_smile.png b/android/app/src/main/res/drawable-xhdpi/icon_smile.png deleted file mode 100644 index 0e8bb9d9df7..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_smile.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_speaker_blue.png b/android/app/src/main/res/drawable-xhdpi/icon_speaker_blue.png deleted file mode 100644 index fd4efee0b14..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_speaker_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_up.png b/android/app/src/main/res/drawable-xhdpi/icon_up.png deleted file mode 100644 index 9b150cd9e1c..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_up.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/icon_wallet_avatar.png b/android/app/src/main/res/drawable-xhdpi/icon_wallet_avatar.png deleted file mode 100755 index 3aad8494b9e..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/icon_wallet_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/launch_logo.png b/android/app/src/main/res/drawable-xhdpi/launch_logo.png deleted file mode 100644 index 53c0db67b58..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/launch_logo.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/launch_screen.png b/android/app/src/main/res/drawable-xhdpi/launch_screen.png deleted file mode 100644 index c6eead12699..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/launch_screen.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/logo.png b/android/app/src/main/res/drawable-xhdpi/logo.png new file mode 100644 index 00000000000..f1d87020b90 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/logo.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/notification_icon.png b/android/app/src/main/res/drawable-xhdpi/notification_icon.png new file mode 100644 index 00000000000..14530bdc2c5 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/notification_icon.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/scan_blue.png b/android/app/src/main/res/drawable-xhdpi/scan_blue.png deleted file mode 100644 index df46334a876..00000000000 Binary files a/android/app/src/main/res/drawable-xhdpi/scan_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xhdpi/splash_logo.png b/android/app/src/main/res/drawable-xhdpi/splash_logo.png new file mode 100644 index 00000000000..44007cad485 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/splash_logo.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/avatar.png b/android/app/src/main/res/drawable-xxhdpi/avatar.png deleted file mode 100644 index 7fb2d0b42b5..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/console.png b/android/app/src/main/res/drawable-xxhdpi/console.png deleted file mode 100644 index c1f41d6edde..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/console.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/corner_left_bottom.png b/android/app/src/main/res/drawable-xxhdpi/corner_left_bottom.png deleted file mode 100644 index 0fff3412209..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/corner_left_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/corner_left_top.png b/android/app/src/main/res/drawable-xxhdpi/corner_left_top.png deleted file mode 100644 index e25037ece32..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/corner_left_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/corner_right_bottom.png b/android/app/src/main/res/drawable-xxhdpi/corner_right_bottom.png deleted file mode 100644 index e542ec0d64d..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/corner_right_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/corner_right_top.png b/android/app/src/main/res/drawable-xxhdpi/corner_right_top.png deleted file mode 100644 index a6a65aedc96..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/corner_right_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_background.png b/android/app/src/main/res/drawable-xxhdpi/ic_background.png new file mode 100644 index 00000000000..f664414df47 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_background.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_foreground.png b/android/app/src/main/res/drawable-xxhdpi/ic_foreground.png new file mode 100644 index 00000000000..9e49b93dce1 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_add.png b/android/app/src/main/res/drawable-xxhdpi/icon_add.png deleted file mode 100755 index ce0b329d94d..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_add.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_add_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_add_blue.png deleted file mode 100644 index e339e0df067..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_add_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_add_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_add_gray.png deleted file mode 100644 index 55a15923520..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_add_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_add_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_add_white.png deleted file mode 100644 index 53e75041ee8..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_add_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_address_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_address_blue.png deleted file mode 100644 index 34d95737ea1..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_address_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_left_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_arrow_left_white.png deleted file mode 100644 index ac7ad9ee16d..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_left_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_blue.png deleted file mode 100644 index ea4618c98e2..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_gray.png deleted file mode 100644 index 12de7f81b59..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_red.png b/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_red.png deleted file mode 100644 index 8d7a645016e..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_arrow_right_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_avatar.png b/android/app/src/main/res/drawable-xxhdpi/icon_avatar.png deleted file mode 100644 index f3b8d0770d0..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_back.png b/android/app/src/main/res/drawable-xxhdpi/icon_back.png deleted file mode 100644 index 4d688372c9c..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_back_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_back_dark.png deleted file mode 100644 index ec8f01fed58..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_back_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_back_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_back_white.png deleted file mode 100644 index 40801489f46..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_back_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_bin.png b/android/app/src/main/res/drawable-xxhdpi/icon_bin.png deleted file mode 100644 index fa960dbf1d0..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_bin.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_chats.png b/android/app/src/main/res/drawable-xxhdpi/icon_chats.png deleted file mode 100644 index bf795c4c7f7..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_chats.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_chats_active.png b/android/app/src/main/res/drawable-xxhdpi/icon_chats_active.png deleted file mode 100644 index 3cd62cf21d1..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_chats_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_chats_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_chats_blue.png deleted file mode 100644 index 7f13becbd36..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_chats_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_check_on.png b/android/app/src/main/res/drawable-xxhdpi/icon_check_on.png deleted file mode 100644 index 6388824eb66..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_check_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_close_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_close_dark.png deleted file mode 100644 index 62f5e1e8d39..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_close_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_close_light_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_close_light_gray.png deleted file mode 100644 index 8f9b0d0b809..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_close_light_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_close_red.png b/android/app/src/main/res/drawable-xxhdpi/icon_close_red.png deleted file mode 100644 index 9d4f0570122..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_close_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_close_small_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_close_small_gray.png deleted file mode 100755 index 15c440e0825..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_close_small_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_close_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_close_white.png deleted file mode 100644 index 6f6b57979f1..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_close_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_contacts.png b/android/app/src/main/res/drawable-xxhdpi/icon_contacts.png deleted file mode 100644 index cf2806ecc23..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_contacts.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_contacts_active.png b/android/app/src/main/res/drawable-xxhdpi/icon_contacts_active.png deleted file mode 100644 index e4f0b065d8e..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_contacts_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_discover.png b/android/app/src/main/res/drawable-xxhdpi/icon_discover.png deleted file mode 100644 index 1b69063cfac..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_discover.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_discover_active.png b/android/app/src/main/res/drawable-xxhdpi/icon_discover_active.png deleted file mode 100644 index be0b04ab164..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_discover_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_dollar.png b/android/app/src/main/res/drawable-xxhdpi/icon_dollar.png deleted file mode 100644 index 85d93cab2ca..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_dollar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_dollar_green.png b/android/app/src/main/res/drawable-xxhdpi/icon_dollar_green.png deleted file mode 100644 index dac30955fee..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_dollar_green.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_dots.png b/android/app/src/main/res/drawable-xxhdpi/icon_dots.png deleted file mode 100644 index 464cfeb09fb..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_dots.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_dots_horizontal_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_dots_horizontal_white.png deleted file mode 100644 index 5006a7dc6b2..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_dots_horizontal_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_drag_down.png b/android/app/src/main/res/drawable-xxhdpi/icon_drag_down.png deleted file mode 100644 index 7e7a4912bc4..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_drag_down.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_drag_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_drag_white.png deleted file mode 100644 index 23fa971c5e6..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_drag_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_enter_address.png b/android/app/src/main/res/drawable-xxhdpi/icon_enter_address.png deleted file mode 100755 index 2adebc2c9ac..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_enter_address.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_fullscreen_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_fullscreen_blue.png deleted file mode 100644 index 7ba051da597..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_fullscreen_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_grab_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_grab_gray.png deleted file mode 100644 index a108dcdd00e..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_grab_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_group.png b/android/app/src/main/res/drawable-xxhdpi/icon_group.png deleted file mode 100644 index b14d23f73bd..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_group_big.png b/android/app/src/main/res/drawable-xxhdpi/icon_group_big.png deleted file mode 100644 index a1bff88bb0e..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_hamburger.png b/android/app/src/main/res/drawable-xxhdpi/icon_hamburger.png deleted file mode 100644 index 8bd85bc66a5..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_hamburger.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_hamburger_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_hamburger_dark.png deleted file mode 100644 index 99f078b0bf4..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_hamburger_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_list.png b/android/app/src/main/res/drawable-xxhdpi/icon_list.png deleted file mode 100644 index e253971bae8..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_location.png b/android/app/src/main/res/drawable-xxhdpi/icon_location.png deleted file mode 100755 index 4dfb48d63df..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_location.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_lock_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_lock_gray.png deleted file mode 100644 index f18aaa61e18..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_lock_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_lock_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_lock_white.png deleted file mode 100644 index ccddc79dec7..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_lock_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_menu_group.png b/android/app/src/main/res/drawable-xxhdpi/icon_menu_group.png deleted file mode 100644 index a356f7ccdd3..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_menu_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_money_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_money_white.png deleted file mode 100755 index 243469d9a98..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_money_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical.png b/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical.png deleted file mode 100644 index d30018f9246..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical_blue.png deleted file mode 100644 index 79449d9dff5..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_more_vertical_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_muted.png b/android/app/src/main/res/drawable-xxhdpi/icon_muted.png deleted file mode 100644 index 674a9faa669..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_muted.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_notifications_on.png b/android/app/src/main/res/drawable-xxhdpi/icon_notifications_on.png deleted file mode 100644 index a0ee3c3fd5b..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_notifications_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok.png deleted file mode 100644 index 4abb3e2e576..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_blue.png deleted file mode 100644 index 364e0664792..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_dark.png deleted file mode 100644 index ac9f13def03..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled.png deleted file mode 100644 index 513a2177a2b..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled_inversed.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled_inversed.png deleted file mode 100644 index 787972f4707..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_disabled_inversed.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_purple.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_purple.png deleted file mode 100644 index b2942242644..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_purple.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_small.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_small.png deleted file mode 100644 index 09907c71c79..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_small.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_small_copy_2.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_small_copy_2.png deleted file mode 100644 index e824f5e8eb1..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_small_copy_2.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_ok_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_ok_white.png deleted file mode 100644 index 54080186bc9..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_ok_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_options_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_options_dark.png deleted file mode 100644 index 670f5235fcc..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_options_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_options_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_options_gray.png deleted file mode 100644 index 41b7456e34e..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_options_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_phone_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_phone_white.png deleted file mode 100755 index b49ec0439d4..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_phone_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_plus.png b/android/app/src/main/res/drawable-xxhdpi/icon_plus.png deleted file mode 100644 index dad95d18143..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_plus.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_private_group.png b/android/app/src/main/res/drawable-xxhdpi/icon_private_group.png deleted file mode 100644 index a470555174b..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_private_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_private_group_big.png b/android/app/src/main/res/drawable-xxhdpi/icon_private_group_big.png deleted file mode 100644 index 2dbc77d2b3a..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_private_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_public_group.png b/android/app/src/main/res/drawable-xxhdpi/icon_public_group.png deleted file mode 100644 index 805f3dd2477..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_public_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_public_group_big.png b/android/app/src/main/res/drawable-xxhdpi/icon_public_group_big.png deleted file mode 100644 index a73bc594208..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_public_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_q_r_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_q_r_blue.png deleted file mode 100644 index b5a758fb6f8..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_q_r_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_qr.png b/android/app/src/main/res/drawable-xxhdpi/icon_qr.png deleted file mode 100644 index f7b3c5ad150..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_qr.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_qr_gray.png b/android/app/src/main/res/drawable-xxhdpi/icon_qr_gray.png deleted file mode 100644 index 9100f6d22b0..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_qr_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_scan_q_r.png b/android/app/src/main/res/drawable-xxhdpi/icon_scan_q_r.png deleted file mode 100755 index 205e92cd8e3..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_scan_q_r.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_scan_white.png b/android/app/src/main/res/drawable-xxhdpi/icon_scan_white.png deleted file mode 100644 index 9aeeecba40d..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_scan_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_search.png b/android/app/src/main/res/drawable-xxhdpi/icon_search.png deleted file mode 100644 index b057823f3b5..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_search.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_search_dark.png b/android/app/src/main/res/drawable-xxhdpi/icon_search_dark.png deleted file mode 100644 index 85ba66b31b6..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_search_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_search_gray_copy.png b/android/app/src/main/res/drawable-xxhdpi/icon_search_gray_copy.png deleted file mode 100644 index d138f4e4b93..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_search_gray_copy.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_send.png b/android/app/src/main/res/drawable-xxhdpi/icon_send.png deleted file mode 100644 index 29c51712c38..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_send.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_settings.png b/android/app/src/main/res/drawable-xxhdpi/icon_settings.png deleted file mode 100644 index 561a5dcc255..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_settings.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_speaker_blue.png b/android/app/src/main/res/drawable-xxhdpi/icon_speaker_blue.png deleted file mode 100644 index b97385b1c85..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_speaker_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_up.png b/android/app/src/main/res/drawable-xxhdpi/icon_up.png deleted file mode 100644 index 01e16f8ce12..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_up.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_wallet_avatar.png b/android/app/src/main/res/drawable-xxhdpi/icon_wallet_avatar.png deleted file mode 100755 index eb3076c8613..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/icon_wallet_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/launch_logo.png b/android/app/src/main/res/drawable-xxhdpi/launch_logo.png deleted file mode 100644 index 4b9c6bafa4a..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/launch_logo.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/launch_screen.png b/android/app/src/main/res/drawable-xxhdpi/launch_screen.png deleted file mode 100644 index 3521d958603..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/launch_screen.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/logo.png b/android/app/src/main/res/drawable-xxhdpi/logo.png new file mode 100644 index 00000000000..aa6f1830016 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/logo.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/notification_icon.png b/android/app/src/main/res/drawable-xxhdpi/notification_icon.png new file mode 100644 index 00000000000..41d6814e024 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/notification_icon.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/scan_blue.png b/android/app/src/main/res/drawable-xxhdpi/scan_blue.png deleted file mode 100644 index b89f57307ca..00000000000 Binary files a/android/app/src/main/res/drawable-xxhdpi/scan_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxhdpi/splash_logo.png b/android/app/src/main/res/drawable-xxhdpi/splash_logo.png new file mode 100644 index 00000000000..b258ed1ace2 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/splash_logo.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/avatar.png b/android/app/src/main/res/drawable-xxxhdpi/avatar.png deleted file mode 100644 index c33ac676196..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/console.png b/android/app/src/main/res/drawable-xxxhdpi/console.png deleted file mode 100644 index 19a59f96ea0..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/console.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/corner_left_bottom.png b/android/app/src/main/res/drawable-xxxhdpi/corner_left_bottom.png deleted file mode 100644 index 79d8ff98d39..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/corner_left_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/corner_left_top.png b/android/app/src/main/res/drawable-xxxhdpi/corner_left_top.png deleted file mode 100644 index 8ccdd18d77b..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/corner_left_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/corner_right_bottom.png b/android/app/src/main/res/drawable-xxxhdpi/corner_right_bottom.png deleted file mode 100644 index 1fa347dffe8..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/corner_right_bottom.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/corner_right_top.png b/android/app/src/main/res/drawable-xxxhdpi/corner_right_top.png deleted file mode 100644 index a26ebe0e614..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/corner_right_top.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_background.png b/android/app/src/main/res/drawable-xxxhdpi/ic_background.png new file mode 100644 index 00000000000..4aeb9a15ba1 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_background.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_foreground.png new file mode 100644 index 00000000000..ea5d96b73a6 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_add_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_add_blue.png deleted file mode 100644 index f80af67d199..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_add_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_add_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_add_gray.png deleted file mode 100644 index 89ada28fa47..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_add_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_add_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_add_white.png deleted file mode 100644 index d80fbf20be2..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_add_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_address_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_address_blue.png deleted file mode 100644 index e3298dc9b5f..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_address_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_left_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_left_white.png deleted file mode 100644 index 3fccc8e8f03..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_left_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_blue.png deleted file mode 100644 index d840b0b5de0..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_gray.png deleted file mode 100644 index f43ee037dec..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_red.png b/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_red.png deleted file mode 100644 index 625fb71492e..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_arrow_right_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_avatar.png b/android/app/src/main/res/drawable-xxxhdpi/icon_avatar.png deleted file mode 100644 index a0ab8e66571..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_back.png b/android/app/src/main/res/drawable-xxxhdpi/icon_back.png deleted file mode 100644 index a420d369f3f..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_back.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_back_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_back_dark.png deleted file mode 100644 index 28760d89bfb..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_back_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_back_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_back_white.png deleted file mode 100644 index c4ae1d0ee67..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_back_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_bin.png b/android/app/src/main/res/drawable-xxxhdpi/icon_bin.png deleted file mode 100644 index ac64c387312..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_bin.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_chats.png b/android/app/src/main/res/drawable-xxxhdpi/icon_chats.png deleted file mode 100644 index 4092c54b1c3..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_chats.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_chats_active.png b/android/app/src/main/res/drawable-xxxhdpi/icon_chats_active.png deleted file mode 100644 index a3e52f2405c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_chats_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_chats_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_chats_blue.png deleted file mode 100644 index 9b76c71c938..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_chats_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_check_on.png b/android/app/src/main/res/drawable-xxxhdpi/icon_check_on.png deleted file mode 100644 index 780956a86bd..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_check_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_blue.png deleted file mode 100644 index 3e258045535..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_dark.png deleted file mode 100644 index be75f61554b..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_light_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_light_gray.png deleted file mode 100644 index cc04ce0d256..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_light_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_red.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_red.png deleted file mode 100644 index 41d7659552c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_red.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_small_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_small_gray.png deleted file mode 100755 index 98884bb94ea..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_small_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_close_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_close_white.png deleted file mode 100644 index 6493a261607..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_close_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_contacts.png b/android/app/src/main/res/drawable-xxxhdpi/icon_contacts.png deleted file mode 100644 index 64ccdc77576..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_contacts.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_contacts_active.png b/android/app/src/main/res/drawable-xxxhdpi/icon_contacts_active.png deleted file mode 100644 index 1ed74025497..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_contacts_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_discover.png b/android/app/src/main/res/drawable-xxxhdpi/icon_discover.png deleted file mode 100644 index 75db73fc16e..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_discover.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_discover_active.png b/android/app/src/main/res/drawable-xxxhdpi/icon_discover_active.png deleted file mode 100644 index 601c213982a..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_discover_active.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_dollar.png b/android/app/src/main/res/drawable-xxxhdpi/icon_dollar.png deleted file mode 100644 index 56a12cb0b03..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_dollar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_dollar_green.png b/android/app/src/main/res/drawable-xxxhdpi/icon_dollar_green.png deleted file mode 100644 index 1f3c1c57d1f..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_dollar_green.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_dots.png b/android/app/src/main/res/drawable-xxxhdpi/icon_dots.png deleted file mode 100644 index 972f7be2fd0..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_dots.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_dots_horizontal_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_dots_horizontal_white.png deleted file mode 100644 index 41a814f9857..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_dots_horizontal_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_drag_down.png b/android/app/src/main/res/drawable-xxxhdpi/icon_drag_down.png deleted file mode 100644 index 0fe8e314118..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_drag_down.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_drag_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_drag_white.png deleted file mode 100644 index fd3f08e9ae1..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_drag_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_enter_address.png b/android/app/src/main/res/drawable-xxxhdpi/icon_enter_address.png deleted file mode 100755 index 7e6c232c996..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_enter_address.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_fullscreen_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_fullscreen_blue.png deleted file mode 100644 index c2097efc2bf..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_fullscreen_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_grab_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_grab_gray.png deleted file mode 100644 index 640e8c98bab..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_grab_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_group.png b/android/app/src/main/res/drawable-xxxhdpi/icon_group.png deleted file mode 100644 index 0cefda6ed1c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_group_big.png b/android/app/src/main/res/drawable-xxxhdpi/icon_group_big.png deleted file mode 100644 index bf47ac4f7bf..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger.png b/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger.png deleted file mode 100644 index edc06a5b049..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger_dark.png deleted file mode 100644 index 8f50831927a..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_hamburger_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_list.png b/android/app/src/main/res/drawable-xxxhdpi/icon_list.png deleted file mode 100644 index 052e33d1870..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_list.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_location.png b/android/app/src/main/res/drawable-xxxhdpi/icon_location.png deleted file mode 100755 index 3683564c744..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_location.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_lock_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_lock_gray.png deleted file mode 100644 index 8b3739e6a8b..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_lock_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_lock_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_lock_white.png deleted file mode 100644 index 41875c78c23..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_lock_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_menu_group.png b/android/app/src/main/res/drawable-xxxhdpi/icon_menu_group.png deleted file mode 100644 index 7c51fd4dd03..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_menu_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_money_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_money_white.png deleted file mode 100755 index 9fcfca74965..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_money_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical.png b/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical.png deleted file mode 100644 index 3fada95805d..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical_blue.png deleted file mode 100644 index 460e8081e48..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_more_vertical_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_muted.png b/android/app/src/main/res/drawable-xxxhdpi/icon_muted.png deleted file mode 100644 index bb46070875c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_muted.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_notifications_on.png b/android/app/src/main/res/drawable-xxxhdpi/icon_notifications_on.png deleted file mode 100644 index cc4a37280a9..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_notifications_on.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok.png deleted file mode 100644 index 6b15f29aec6..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_blue.png deleted file mode 100644 index e2e5d28a0b8..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_dark.png deleted file mode 100644 index c934bde771d..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled.png deleted file mode 100644 index 5f4358614bc..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled_inversed.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled_inversed.png deleted file mode 100644 index 1846eb534e5..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_disabled_inversed.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_purple.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_purple.png deleted file mode 100644 index 9429e65fbfe..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_purple.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small.png deleted file mode 100644 index 6da22d32b16..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small_copy_2.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small_copy_2.png deleted file mode 100644 index ced7bb97ca2..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_small_copy_2.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_ok_white.png deleted file mode 100644 index 54080186bc9..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_ok_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_options_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_options_dark.png deleted file mode 100644 index 08ea8f9ffe0..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_options_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_options_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_options_gray.png deleted file mode 100644 index f1535c3f3e6..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_options_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_phone_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_phone_white.png deleted file mode 100755 index eb66d11f8d8..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_phone_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_plus.png b/android/app/src/main/res/drawable-xxxhdpi/icon_plus.png deleted file mode 100644 index 4474449b880..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_plus.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_private_group.png b/android/app/src/main/res/drawable-xxxhdpi/icon_private_group.png deleted file mode 100644 index 8dc25d3cbaf..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_private_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_private_group_big.png b/android/app/src/main/res/drawable-xxxhdpi/icon_private_group_big.png deleted file mode 100644 index c839ffa49ca..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_private_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_public_group.png b/android/app/src/main/res/drawable-xxxhdpi/icon_public_group.png deleted file mode 100644 index 4a194e7b777..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_public_group.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_public_group_big.png b/android/app/src/main/res/drawable-xxxhdpi/icon_public_group_big.png deleted file mode 100644 index 6b9a41892c5..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_public_group_big.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_q_r_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_q_r_blue.png deleted file mode 100644 index 703b7be0a2b..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_q_r_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_qr.png b/android/app/src/main/res/drawable-xxxhdpi/icon_qr.png deleted file mode 100644 index 863a0a5eb15..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_qr.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_qr_gray.png b/android/app/src/main/res/drawable-xxxhdpi/icon_qr_gray.png deleted file mode 100644 index cd5d3df69a6..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_qr_gray.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_scan_q_r.png b/android/app/src/main/res/drawable-xxxhdpi/icon_scan_q_r.png deleted file mode 100755 index 9e140304dd3..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_scan_q_r.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_scan_white.png b/android/app/src/main/res/drawable-xxxhdpi/icon_scan_white.png deleted file mode 100644 index 8011c4a64d1..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_scan_white.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_search.png b/android/app/src/main/res/drawable-xxxhdpi/icon_search.png deleted file mode 100644 index 5a83f68df96..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_search.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_search_dark.png b/android/app/src/main/res/drawable-xxxhdpi/icon_search_dark.png deleted file mode 100644 index 8a24c2fb54f..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_search_dark.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_search_gray_copy.png b/android/app/src/main/res/drawable-xxxhdpi/icon_search_gray_copy.png deleted file mode 100644 index 4e1948e8ff8..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_search_gray_copy.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_send.png b/android/app/src/main/res/drawable-xxxhdpi/icon_send.png deleted file mode 100644 index a109667f641..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_send.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_settings.png b/android/app/src/main/res/drawable-xxxhdpi/icon_settings.png deleted file mode 100644 index b9f142032ef..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_settings.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_speaker_blue.png b/android/app/src/main/res/drawable-xxxhdpi/icon_speaker_blue.png deleted file mode 100644 index ec488f8b0cf..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_speaker_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_up.png b/android/app/src/main/res/drawable-xxxhdpi/icon_up.png deleted file mode 100644 index d98dff7ff6c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_up.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/icon_wallet_avatar.png b/android/app/src/main/res/drawable-xxxhdpi/icon_wallet_avatar.png deleted file mode 100755 index 061acdf9d7f..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/icon_wallet_avatar.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/logo.png b/android/app/src/main/res/drawable-xxxhdpi/logo.png new file mode 100644 index 00000000000..b756ca0b651 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/logo.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/notification_icon.png b/android/app/src/main/res/drawable-xxxhdpi/notification_icon.png new file mode 100644 index 00000000000..f82b908d9c7 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/notification_icon.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/scan_blue.png b/android/app/src/main/res/drawable-xxxhdpi/scan_blue.png deleted file mode 100644 index 2365f04fc5c..00000000000 Binary files a/android/app/src/main/res/drawable-xxxhdpi/scan_blue.png and /dev/null differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/splash_logo.png b/android/app/src/main/res/drawable-xxxhdpi/splash_logo.png new file mode 100644 index 00000000000..5d39707224e Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/splash_logo.png differ diff --git a/android/app/src/main/res/ic_launcher-web.png b/android/app/src/main/res/ic_launcher-web.png index 8309501779a..52c3837fe46 100644 Binary files a/android/app/src/main/res/ic_launcher-web.png and b/android/app/src/main/res/ic_launcher-web.png differ diff --git a/android/app/src/main/res/layout/launch_screen.xml b/android/app/src/main/res/layout/launch_screen.xml index b72e71736d6..2f37c5fe4fe 100644 --- a/android/app/src/main/res/layout/launch_screen.xml +++ b/android/app/src/main/res/layout/launch_screen.xml @@ -1,21 +1,21 @@ + android:layout_height="match_parent" + android:background="?attr/backgroundColor"> - - - - - \ No newline at end of file + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000000..f31858d7719 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000000..f31858d7719 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_background.png b/android/app/src/main/res/mipmap-hdpi/ic_background.png new file mode 100644 index 00000000000..cbf5ce6fee2 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_background.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_foreground.png new file mode 100644 index 00000000000..d36823d2707 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 89a6326247f..9d27512c3cd 100644 Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000000..09acba2aaf9 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000000..39f58863538 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcher.png b/android/app/src/main/res/mipmap-ldpi/ic_launcher.png index 717e45735ea..4b1d945bae1 100644 Binary files a/android/app/src/main/res/mipmap-ldpi/ic_launcher.png and b/android/app/src/main/res/mipmap-ldpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png new file mode 100644 index 00000000000..a1191f67944 Binary files /dev/null and b/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_background.png b/android/app/src/main/res/mipmap-mdpi/ic_background.png new file mode 100644 index 00000000000..b0221607704 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_background.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_foreground.png new file mode 100644 index 00000000000..61fff9f2344 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 110f2e7a5f7..1e4d9017606 100644 Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000000..c9142881511 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000000..e39eada7bc9 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_background.png b/android/app/src/main/res/mipmap-xhdpi/ic_background.png new file mode 100644 index 00000000000..791a2fe2795 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_background.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_foreground.png new file mode 100644 index 00000000000..d2fcaed1a78 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 652c9645fd4..c4b071d30d7 100644 Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000000..6ccb6c747ff Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000000..9faa82c14fe Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_background.png b/android/app/src/main/res/mipmap-xxhdpi/ic_background.png new file mode 100644 index 00000000000..f664414df47 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_background.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_foreground.png new file mode 100644 index 00000000000..649230679ff Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 6c35a232ce2..b5bf2cc1406 100644 Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000000..340b47dbbb3 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000000..8e5765dcd61 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_background.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_background.png new file mode 100644 index 00000000000..7af6e2cf4d5 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_background.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_foreground.png new file mode 100644 index 00000000000..ca890da1d60 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_foreground.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 26aab572b42..9d195a9116e 100644 Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png new file mode 100644 index 00000000000..ad43de25986 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000000..8a883d4f277 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/raw/launching_animation.json b/android/app/src/main/res/raw/launching_animation.json new file mode 100644 index 00000000000..d45da7f722e --- /dev/null +++ b/android/app/src/main/res/raw/launching_animation.json @@ -0,0 +1 @@ +{"v":"5.7.8","fr":60,"ip":0,"op":91,"w":128,"h":128,"nm":"!!LOGO_lottie","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Merged Shape Layer 6","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[3.789]},"o":{"x":[0.167],"y":[0]},"t":0,"s":[-192.857]},{"i":{"x":[0.833],"y":[0.762]},"o":{"x":[0.167],"y":[0.167]},"t":6.545,"s":[-193.857]},{"i":{"x":[0.833],"y":[0.691]},"o":{"x":[0.167],"y":[0.155]},"t":7.363,"s":[-191.765]},{"i":{"x":[0.833],"y":[0.797]},"o":{"x":[0.167],"y":[0.122]},"t":10.637,"s":[-178.897]},{"i":{"x":[0.833],"y":[0.855]},"o":{"x":[0.167],"y":[0.153]},"t":14.727,"s":[-138.079]},{"i":{"x":[0.833],"y":[0.814]},"o":{"x":[0.167],"y":[0.224]},"t":22.908,"s":[-29.589]},{"i":{"x":[0.833],"y":[0.801]},"o":{"x":[0.167],"y":[0.162]},"t":27.818,"s":[12.5]},{"i":{"x":[0.833],"y":[0.873]},"o":{"x":[0.167],"y":[0.107]},"t":45,"s":[181.996]},{"i":{"x":[0.833],"y":[0.923]},"o":{"x":[0.167],"y":[0.227]},"t":49.908,"s":[272.04]},{"i":{"x":[0.833],"y":[0.94]},"o":{"x":[0.167],"y":[0.514]},"t":55.637,"s":[330.762]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[-2.596]},"t":65.455,"s":[345.875]},{"t":81.818359375,"s":[345.292]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.791,"y":0.712},"o":{"x":0.652,"y":0.344},"t":8.182,"s":[-57.414,88.804,0],"to":[-266.586,66.696,0],"ti":[-471.296,0.211,0]},{"i":{"x":0.672,"y":0.664},"o":{"x":0.291,"y":0.351},"t":26.613,"s":[44.704,-314.789,0],"to":[74.296,1.789,0],"ti":[-24.095,-183.222,0]},{"i":{"x":0.414,"y":0.331},"o":{"x":0.136,"y":0.106},"t":34.889,"s":[318.5,-68,0],"to":[29.675,225.652,0],"ti":[174.57,-11.464,0]},{"i":{"x":0.288,"y":1},"o":{"x":0.288,"y":1},"t":44.047,"s":[-7.935,330.275,0],"to":[-375.415,-24.719,0],"ti":[-390,21,0]},{"t":81.818359375,"s":[53.652,-82.594,0]}],"ix":2,"l":2},"a":{"a":0,"k":[560,410.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.623,0.623,0.833],"y":[0.806,0.806,1.942]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":8.182,"s":[100,100,100]},{"i":{"x":[0.615,0.615,0.833],"y":[-9.004,-9.004,-0.939]},"o":{"x":[0.32,0.32,0.167],"y":[-6.872,-6.872,-1.07]},"t":23.283,"s":[63.265,63.265,100]},{"i":{"x":[0.532,0.532,0.667],"y":[1,1,1]},"o":{"x":[0.407,0.407,0.167],"y":[0.429,0.429,3.289]},"t":40.443,"s":[63.265,63.265,100]},{"t":69.544921875,"s":[105,105,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8.182,"s":[{"i":[[29.256,-1.636],[12.654,-5.359],[8.617,-28.501],[-28.968,-8.636],[-24.783,-3.988],[-20.286,7.565],[3.491,32.586],[22.957,14.401]],"o":[[-19.802,1.107],[-62.447,26.447],[28.952,1.188],[19.806,5.905],[23.203,3.734],[32.599,-12.156],[-2.92,-27.253],[-17.795,-11.163]],"v":[[552.771,323.203],[505.624,334.015],[404.252,446.909],[473.294,460.187],[557.264,486.313],[622.075,480.875],[668.525,402.251],[624.928,339.765]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.637,"s":[{"i":[[35.646,-6.61],[29.714,-25.56],[-5.458,-8.042],[-24.339,-5.662],[-31.956,-1.833],[-22.776,10.595],[3.231,33.642],[29.445,12.037]],"o":[[-29.737,6.28],[-33.566,28.873],[5.468,8.056],[24.339,5.662],[31.956,1.833],[30.472,-13.464],[-4.304,-33.253],[-24.528,-9.336]],"v":[[515.251,324.945],[432.694,362.132],[374.686,460.302],[435.7,469.78],[534.564,489.883],[624.004,480.477],[668.476,402.398],[607.104,332.181]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.727,"s":[{"i":[[46.296,-14.902],[24.146,-47.639],[-14.286,-9.646],[-32.343,13.44],[-30.439,13.873],[-26.928,15.644],[2.798,35.403],[40.258,8.096]],"o":[[-46.296,14.902],[-32.901,64.912],[7.844,5.296],[32.343,-13.44],[41.324,-15.99],[26.928,-15.644],[-6.611,-43.252],[-35.748,-6.292]],"v":[[452.248,330.653],[340.333,427.05],[331.295,569.328],[388.653,559.038],[494.121,516.795],[621.12,482.157],[663.333,400.633],[576.423,320.768]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[46.329,-30.799],[9.206,-101.382],[-26.527,-8.11],[-23.981,21.663],[-27.026,18.669],[-27.972,10.72],[0.825,47.829],[49.937,10.873]],"o":[[-46.329,30.799],[-6.708,73.874],[23.569,6.669],[25.302,-22.856],[25.053,-17.306],[29.125,-11.006],[-2.651,-57.164],[-45.744,-9.256]],"v":[[379.868,359.18],[255.626,543.131],[308.895,689.081],[385.909,642.222],[491.706,538.051],[592.014,497.121],[656.681,411.345],[564.93,316.12]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20.455,"s":[{"i":[[64.565,-52.319],[10.188,-103.027],[-34.457,-9.254],[-24.784,40.268],[-45.418,34.675],[-26.649,9.512],[2.702,63.401],[53.773,2.903]],"o":[[-51.36,40.959],[-9.005,86.228],[32.953,8.587],[25.24,-40.488],[36.098,-27.559],[28.678,-10.033],[-3.84,-69.666],[-53.609,-2.058]],"v":[[318.842,389.727],[195.107,601.075],[271.374,775.287],[373.46,679.376],[465.38,554.672],[571.854,508.306],[654.682,407.541],[535.788,310.26]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.092,"s":[{"i":[[79.222,-63.486],[15.85,-103.554],[-39.269,-11.688],[-27.26,51.436],[-59.282,43.184],[-26.212,7.402],[0.865,73.868],[56.15,0.205]],"o":[[-56.671,45.204],[-14.727,93.965],[38.768,11.464],[27.152,-50.985],[44.777,-32.618],[28.849,-7.981],[-1.239,-78.137],[-58.715,0.133]],"v":[[278.98,398.976],[145.383,622.417],[219.236,827.081],[321.65,722.651],[438.056,558.321],[546.812,508.94],[653.065,410.221],[527.368,313.788]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22.908,"s":[{"i":[[88.24,-66.875],[21.23,-103.3],[-41.334,-13.936],[-29.916,56.289],[-67.396,45.724],[-26.133,5.706],[-2.025,79.062],[57.349,0.274]],"o":[[-60.475,45.833],[-20.006,97.346],[41.334,13.936],[29.504,-55.514],[49.972,-33.903],[29.088,-6.239],[2.109,-82.33],[-61.277,-0.292]],"v":[[261.383,400.535],[115.172,622.607],[185.068,841.779],[296.59,729.919],[419.424,554.344],[533.802,511.454],[652.175,414.378],[525.102,315.747]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[79.206,-55.07],[34.985,-104.299],[-42.561,-16.337],[-35.547,56.801],[-74.269,39.628],[-26.803,6.098],[-2.508,70.574],[53.383,2.857]],"o":[[-71.711,40.918],[-33.75,99.227],[42.561,16.337],[44.194,-81.881],[51.209,-28.805],[29.168,-6.524],[2.444,-72.114],[-61.034,-4.458]],"v":[[259.091,379.56],[62.788,598.549],[117.611,837.642],[244.281,713.451],[395.457,545.595],[544.293,507.648],[652.581,414.871],[538.559,317.657]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[88.573,-35.243],[54.717,-109.178],[-44.347,-19.446],[-41.907,58.686],[-84.031,29.734],[-27.837,6.159],[-4.542,61.804],[47.75,7.066]],"o":[[-87.545,32.48],[-52.212,102.123],[44.346,19.446],[63.83,-104.145],[53.421,-18.892],[29.386,-6.448],[3.563,-57.999],[-60.415,-11.137]],"v":[[284.722,355.414],[25.649,572.493],[47.058,813.868],[189.834,694.714],[402.92,527.491],[557.36,502.833],[653.024,417.228],[562.218,320.949]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26.182,"s":[{"i":[[52.752,-17.839],[78.034,-114.944],[-46.456,-23.119],[-49.422,60.915],[-95.568,18.043],[-29.058,6.232],[-6.946,51.442],[41.094,12.038]],"o":[[-106.257,22.509],[-74.028,105.546],[46.456,23.119],[63.258,-77.968],[55.352,-11.602],[29.644,-6.358],[4.885,-41.321],[-59.684,-19.031]],"v":[[343.855,339.288],[0.542,548.387],[-20.386,790.87],[141.422,677.669],[416.79,520.423],[572.801,497.145],[653.549,420.013],[584.566,330.441]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[43.07,-7.849],[90.005,-108.293],[-47.472,-25.94],[-58.072,58.848],[-101.759,15.243],[-29.485,7.665],[-4.439,36.618],[37.52,13.193]],"o":[[-116.65,21.257],[-88.725,106.752],[47.472,25.94],[55.225,-55.962],[56.154,-8.412],[29.485,-7.665],[3.788,-31.249],[-60.064,-21.119]],"v":[[386.723,335.167],[7.232,529.027],[-44.498,775.809],[130.381,668.23],[427.379,517.498],[586.257,492.426],[654.202,416.845],[592.878,332.108]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[44.276,-9.501],[92.678,-97.204],[-43.839,-29.268],[-63.11,53.812],[-96.226,16.884],[-30.135,8.192],[-3.931,36.439],[39.485,12.843]],"o":[[-113.609,22.765],[-90.624,94.765],[43.702,29.176],[59.471,-50.709],[57.153,-11.132],[30.135,-8.192],[3.354,-31.081],[-60.976,-20.193]],"v":[[379.087,333.684],[21.384,525.463],[-45.868,757.813],[132.646,666.302],[426.199,511.645],[586.778,490.796],[654.789,415.852],[590.825,332.473]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34.363,"s":[{"i":[[51.95,-20.013],[47.111,-81.464],[-37.667,-22.586],[-60.422,59.227],[-61.018,27.321],[-34.269,11.551],[-0.7,35.297],[51.989,10.621]],"o":[[-94.257,32.363],[-41.697,72.103],[36.628,21.963],[53.557,-52.765],[63.512,-28.438],[34.269,-11.551],[0.595,-30.014],[-66.778,-14.296]],"v":[[345.105,371.328],[91.668,574.153],[71.198,750.239],[211.554,652.871],[394.335,520.673],[590.09,480.427],[658.524,409.528],[577.761,334.795]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[{"i":[[60.597,-17.144],[55.738,-88.07],[-35.721,-21.835],[-52.845,48.263],[-52.868,16.415],[-40.067,1.439],[-7.978,34.246],[60.029,22.238]],"o":[[-79.624,19.63],[-59.491,90.469],[31.596,14.564],[59.618,-57.163],[53.386,-16.576],[43.14,-1.659],[7.69,-33.012],[-63.674,-23.588]],"v":[[375.49,339.43],[98.306,541.725],[47.861,762.978],[201.734,605.95],[401.05,491.915],[577.877,488.873],[660.255,431.731],[585.708,338.375]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45.818,"s":[{"i":[[59.539,-20.244],[47.714,-88.677],[-35.756,-18.463],[-47.228,49.234],[-57.954,15.189],[-40.35,2.243],[-7.563,34.736],[60.472,20.586]],"o":[[-104.048,33.408],[-52.426,93.275],[31.389,12.094],[52.583,-56.964],[52.241,-19.065],[43.423,-2.311],[7.257,-33.199],[-68.206,-22.475]],"v":[[373.478,351.274],[112.92,565.233],[83.609,785.614],[222.477,620.276],[408.233,501.25],[578.764,490.053],[661.094,430.613],[583.469,337.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":46.637,"s":[{"i":[[57.712,-25.504],[36.433,-90.98],[-36.447,-13.777],[-39.793,51.902],[-62.468,19.926],[-40.634,3.047],[-7.148,35.225],[60.914,18.933]],"o":[[-94.357,38.947],[-41.933,97.946],[31.607,8.473],[43.446,-58.655],[52.271,-21.234],[43.705,-2.964],[6.824,-33.386],[-72.737,-21.362]],"v":[[369.092,363.635],[139.739,595.719],[129.151,823.514],[250.732,640.492],[419.312,512],[579.65,491.233],[661.932,429.495],[581.231,336.135]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47.455,"s":[{"i":[[55.886,-30.764],[25.152,-93.284],[-37.137,-9.091],[-32.357,54.571],[-54.109,23.906],[-40.917,3.851],[-6.733,35.714],[61.356,17.281]],"o":[[-84.667,44.486],[-31.441,102.617],[31.825,4.853],[34.308,-60.345],[49.456,-26.726],[43.987,-3.616],[6.391,-33.574],[-77.269,-20.249]],"v":[[364.707,375.996],[166.557,626.204],[179.604,848.983],[278.987,660.708],[431.33,522.675],[580.537,492.412],[662.77,428.377],[578.992,335.014]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":48.273,"s":[{"i":[[54.06,-36.024],[13.871,-95.586],[-37.828,-4.406],[-24.921,57.239],[-45.75,27.885],[-41.201,4.654],[-6.318,36.204],[61.799,15.629]],"o":[[-74.977,50.025],[-20.948,107.289],[32.043,1.232],[25.17,-62.036],[46.641,-32.218],[44.269,-4.268],[5.958,-33.761],[-81.8,-19.136]],"v":[[360.321,388.358],[193.375,656.689],[235.527,864.013],[307.241,680.924],[439.013,526.779],[581.423,493.592],[663.609,427.259],[576.753,333.894]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49.092,"s":[{"i":[[54.229,-36.905],[5.57,-101.387],[-36.641,-0.768],[-18.517,56.284],[-43.774,26.557],[-41.347,4.599],[-6.649,36.331],[63.855,15.952]],"o":[[-72.741,49.715],[-9.702,103.79],[30.91,-1.363],[17.66,-59.396],[43.888,-30.122],[44.357,-3.993],[6.15,-33.603],[-80.543,-18.707]],"v":[[362.232,386.897],[219.032,657.044],[282.368,849.948],[335.912,674.032],[446.191,523.631],[581.228,494.34],[664.433,427.968],[577.151,334.124]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49.908,"s":[{"i":[[55.851,-35.639],[1.081,-106.649],[-35.286,1.356],[-14.408,54.346],[-42.927,23.411],[-41.691,2.902],[-8.386,36.225],[65.306,18.743]],"o":[[-72.524,46.428],[-2.751,99.475],[29.734,-2.677],[12.638,-55.763],[42.437,-26.174],[44.627,-1.954],[7.69,-33.217],[-78.547,-21.547]],"v":[[366.116,380.681],[232.937,642.825],[309.173,823.03],[351.888,657.114],[446.876,515.689],[575.915,495.971],[662.811,432.816],[578.799,335.002]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50.727,"s":[{"i":[[60.314,-29.713],[5.377,-111.641],[-33.983,0.571],[-14.751,51.127],[-43.936,16.689],[-42.203,-2.234],[-13.085,35.369],[65.102,26.881]],"o":[[-76.009,37.087],[-3.991,94.765],[28.729,-1.537],[12.189,-50.993],[43.07,-18.685],[44.984,3.765],[11.954,-32.141],[-74.643,-30.821]],"v":[[376.485,357.42],[231.958,600.145],[306.12,773.627],[351.602,621.51],[442.789,497.128],[567.236,497.647],[662.876,444.974],[590.334,336.436]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51.545,"s":[{"i":[[58.454,-25.382],[12.681,-98.321],[-31.559,-2.887],[-18.537,44.967],[-43.332,12.958],[-41.167,-3.588],[-14.185,34.151],[58.033,30.328]],"o":[[-69.015,30.489],[-12.424,86.472],[26.845,1.924],[15.157,-43.44],[43.664,-17.851],[43.766,5.393],[12.87,-30.749],[-63.143,-32.099]],"v":[[384.844,342.58],[232.615,547.383],[290,720.149],[345.565,591.838],[431.399,489.858],[566.257,498.124],[662.432,448.126],[599.974,337.45]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52.363,"s":[{"i":[[60.624,-26.033],[15.363,-79.978],[-27.604,-4.648],[-19.302,37.316],[-42.727,9.226],[-40.356,-0.588],[-11.64,34.294],[53.659,27.394]],"o":[[-83.841,33.567],[-16.149,74.105],[23.706,3.945],[15.658,-34.2],[41.582,-11.502],[42.942,2.391],[10.487,-30.583],[-54.449,-26.153]],"v":[[384.655,338.807],[231.988,523.839],[277.919,673.482],[335.725,573.116],[426.23,485.259],[573.209,496.029],[662.821,442.929],[599.313,337.255]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53.182,"s":[{"i":[[60.048,-18.04],[30.218,-72.336],[-23.744,-10.961],[-26.815,27.74],[-59.275,9.159],[-41.895,-4.369],[-10.342,34.691],[48.819,25.855]],"o":[[-55.027,17.293],[-26.75,64.032],[20.738,9.824],[22.695,-23.478],[54.694,-8.451],[42.8,0.661],[9.135,-30.641],[-45.428,-20.735]],"v":[[400.303,331.387],[248.699,467.457],[260.73,611.694],[340.25,545.13],[442.156,481.453],[576.562,497.201],[665.233,438.89],[603.252,335.098]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":54,"s":[{"i":[[56.897,-17.397],[38.265,-58.304],[-18.542,-13.031],[-28.19,18.585],[-56.997,10.729],[-39.901,-2.575],[-9.289,34.498],[47.944,23.807]],"o":[[-52.871,17.484],[-34.393,52.086],[16.577,12.127],[23.802,-15.741],[50.309,-5.992],[41.897,-0.884],[8.223,-30.629],[-44.847,-19.267]],"v":[[413.774,330.395],[284.179,421.614],[274.821,546.65],[356.095,516.769],[450.839,480.228],[580.534,495.137],[667.25,435.326],[606.323,335.728]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":54.818,"s":[{"i":[[54.245,-16.24],[32.598,-43.781],[-13.881,-13.328],[-27.245,10.844],[-52.193,8.882],[-38.212,-1.181],[-8.763,34.48],[51.03,23.553]],"o":[[-51.284,17.177],[-34.856,42.266],[12.833,12.969],[22.946,-9.211],[46.029,-3.066],[41.384,-1.933],[7.793,-30.777],[-48.137,-21.126]],"v":[[428.16,331.264],[318.256,403.889],[293.813,516.44],[369.963,507.474],[462.486,480.365],[584.382,494.182],[667.934,433.567],[608.325,336.102]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58.092,"s":[{"i":[[43.639,-11.614],[19.055,-21.071],[-3.889,-4.135],[-14.525,-1.576],[-29.412,-8.791],[-31.456,4.392],[-6.661,34.408],[44.084,17.289]],"o":[[-44.939,15.949],[-19.81,21.906],[6.308,6.708],[11.937,1.295],[28.909,8.641],[39.333,-6.127],[6.072,-31.368],[-42.526,-15.47]],"v":[[485.056,328.469],[396.287,387.701],[369.078,452.515],[403.714,458.848],[495.883,475.935],[599.772,490.363],[670.673,426.531],[607.6,332.794]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60.545,"s":[{"i":[[28.22,0.324],[12.906,-4.721],[9.327,-29.791],[-28.742,-9.153],[-24.553,-5.22],[-20.638,6.542],[2.522,32.675],[22.21,15.529]],"o":[[-19.831,-0.228],[-63.69,23.297],[28.857,2.631],[19.693,6.271],[22.988,4.887],[33.165,-10.514],[-1.99,-25.781],[-17.216,-12.037]],"v":[[557.533,321.811],[498.304,333.119],[393.386,442.624],[471.037,459.143],[553.818,485.938],[618.82,483.742],[668.474,407.752],[628.809,344.92]],"c":true}]},{"t":65.455078125,"s":[{"i":[[29.256,-1.636],[12.654,-5.359],[8.617,-28.501],[-28.968,-8.636],[-24.783,-3.988],[-20.286,7.565],[3.491,32.586],[22.957,14.401]],"o":[[-19.802,1.107],[-62.447,26.447],[28.952,1.188],[19.806,5.905],[23.203,3.734],[32.599,-12.156],[-2.92,-27.253],[-17.795,-11.163]],"v":[[552.771,323.203],[505.624,334.015],[404.252,446.909],[473.294,460.187],[557.264,486.313],[622.075,480.875],[668.525,402.251],[624.928,339.765]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.250979988248,0.721568986481,0.588234994926,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":91,"st":-11,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"new_drop1","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.689]},"o":{"x":[0.167],"y":[0.167]},"t":6.545,"s":[-14.347]},{"i":{"x":[0.833],"y":[0.789]},"o":{"x":[0.167],"y":[0.114]},"t":10.637,"s":[0.326]},{"i":{"x":[0.833],"y":[0.87]},"o":{"x":[0.167],"y":[0.151]},"t":14.727,"s":[40.484]},{"i":{"x":[0.833],"y":[0.806]},"o":{"x":[0.167],"y":[0.186]},"t":22.908,"s":[153.117]},{"i":{"x":[0.833],"y":[0.873]},"o":{"x":[0.167],"y":[0.102]},"t":45,"s":[366.201]},{"i":{"x":[0.833],"y":[0.924]},"o":{"x":[0.167],"y":[0.228]},"t":49.908,"s":[456.075]},{"i":{"x":[0.833],"y":[0.945]},"o":{"x":[0.167],"y":[0.561]},"t":55.637,"s":[514.342]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[-1.414]},"t":65.455,"s":[527.802]},{"t":83.455078125,"s":[526.848]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.791,"y":0.711},"o":{"x":0.652,"y":0.346},"t":8.182,"s":[53.414,-82.804,0],"to":[266.586,-66.696,0],"ti":[471.296,-0.211,0]},{"i":{"x":0.672,"y":0.664},"o":{"x":0.291,"y":0.35},"t":26.613,"s":[-44.704,314.789,0],"to":[-74.296,-1.789,0],"ti":[24.095,183.222,0]},{"i":{"x":0.414,"y":0.331},"o":{"x":0.136,"y":0.106},"t":34.889,"s":[-318.5,68,0],"to":[-29.675,-225.652,0],"ti":[-174.57,11.464,0]},{"i":{"x":0.288,"y":1},"o":{"x":0.29,"y":1},"t":44.047,"s":[7.935,-330.275,0],"to":[375.415,24.719,0],"ti":[390,-21,0]},{"t":81.818359375,"s":[-57.824,89.667,0]}],"ix":2,"l":2},"a":{"a":0,"k":[560,410.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.623,0.623,0.833],"y":[0.793,0.793,1.942]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":8.182,"s":[105,105,100]},{"i":{"x":[0.615,0.615,0.833],"y":[-9.004,-9.004,-0.939]},"o":{"x":[0.32,0.32,0.167],"y":[-6.872,-6.872,-1.07]},"t":23.283,"s":[70.547,70.547,100]},{"i":{"x":[0.532,0.532,0.667],"y":[1,1,1]},"o":{"x":[0.407,0.407,0.167],"y":[0.591,0.591,3.196]},"t":40.443,"s":[70.547,70.547,100]},{"t":68.7265625,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8.182,"s":[{"i":[[29.256,-1.636],[12.654,-5.359],[8.617,-28.501],[-28.968,-8.636],[-24.783,-3.988],[-20.286,7.565],[3.491,32.586],[22.957,14.401]],"o":[[-19.802,1.107],[-62.447,26.447],[28.952,1.188],[19.806,5.905],[23.203,3.734],[32.599,-12.156],[-2.92,-27.253],[-17.795,-11.163]],"v":[[552.771,323.203],[505.624,334.015],[404.252,446.909],[473.294,460.187],[557.264,486.313],[622.075,480.875],[668.525,402.251],[624.928,339.765]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10.637,"s":[{"i":[[35.646,-6.61],[29.714,-25.56],[-5.458,-8.042],[-24.339,-5.662],[-31.956,-1.833],[-22.776,10.595],[3.231,33.642],[29.445,12.037]],"o":[[-29.737,6.28],[-33.566,28.873],[5.468,8.056],[24.339,5.662],[31.956,1.833],[30.472,-13.464],[-4.304,-33.253],[-24.528,-9.336]],"v":[[515.251,324.945],[435.35,364.682],[379.454,457.143],[436.661,468.177],[538.465,491.522],[618.412,480.135],[662.46,401.018],[603.745,333.35]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14.727,"s":[{"i":[[46.296,-14.902],[25.654,-41.975],[-12.411,-9.901],[-30.679,9.975],[-36.109,12.657],[-26.928,15.644],[2.798,35.403],[40.258,8.096]],"o":[[-46.296,14.902],[-34.955,57.193],[6.815,5.436],[30.679,-9.975],[41.324,-15.99],[26.928,-15.644],[-6.611,-43.252],[-35.748,-6.292]],"v":[[452.248,330.653],[349.544,418.17],[334.02,549.151],[385.979,543.95],[494.712,516.604],[609.938,480.878],[652.352,398.963],[565.911,321.557]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[46.299,-16.229],[25.223,-44.785],[-14.312,-8.764],[-29.132,13.264],[-35.087,17.189],[-26.668,15.692],[3.512,36.17],[41.001,7.348]],"o":[[-46.299,16.23],[-33.63,58.297],[8.585,5.04],[29.364,-13.44],[47.516,-22.057],[26.753,-15.736],[-7.266,-43.807],[-36.51,-5.645]],"v":[[446.17,335.328],[343.935,425.06],[336.74,568.517],[390.433,555.664],[494.669,518.468],[615.02,483.177],[658.058,401.022],[569.847,323.672]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[46.309,-21.086],[23.647,-55.061],[-29.449,-15.295],[-26.095,17.291],[-25.89,21.87],[-25.717,15.868],[6.123,38.977],[43.717,4.612]],"o":[[-46.309,21.086],[-28.781,62.334],[13.711,5.156],[27.142,-18.146],[56.674,-32.922],[26.112,-16.071],[-9.659,-45.837],[-39.296,-3.281]],"v":[[427.552,344.658],[320.257,451.253],[335.779,615.638],[396.852,587.851],[494.511,525.284],[614.116,480.305],[653.219,395.451],[554.114,323.076]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[50.874,-30.153],[20.495,-75.614],[-27.143,-14.724],[-23.602,18.606],[-16.627,16.893],[-31.675,11.482],[11.345,44.591],[55.689,-3.223]],"o":[[-47.858,28.366],[-19.084,70.409],[25.466,10.945],[27.119,-21.379],[29.344,-29.813],[29.775,-15.339],[-14.445,-49.896],[-41.559,5.601]],"v":[[392.332,367.062],[286.273,507.681],[328.632,672.3],[405.833,628.449],[494.195,538.917],[595.274,490.855],[646.745,388.536],[522.648,321.886]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[{"i":[[47.876,-39.067],[-1.493,-87.716],[-33.186,-6.385],[-20.836,38.763],[-32.797,26.281],[-22.697,14.619],[14.746,51.862],[55.358,-4.207]],"o":[[-47.876,39.067],[1.506,88.468],[31.64,5.908],[26.52,-39.942],[41.687,-43.224],[24.486,-15.507],[-16.763,-55.537],[-51.359,4.227]],"v":[[340.188,395.388],[225.533,612.286],[306.086,765.697],[392.682,674.77],[469.386,553.989],[593.181,490.089],[642.817,387.036],[511.322,321.364]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[51.265,-39.755],[0.551,-90.546],[-35.981,-6.35],[-20.3,47.041],[-41.532,29.872],[-23.105,12.196],[12.781,56.402],[58.621,-1.996]],"o":[[-51.265,39.755],[0.113,88.161],[35.176,6.272],[22.773,-47.833],[45.977,-38.344],[25.338,-13.139],[-13.994,-59.394],[-54.774,2.012]],"v":[[321.939,399.283],[196.493,623.914],[282.356,788.609],[369.309,686.696],[459.573,545.854],[579.65,494.411],[643.311,393.539],[509.611,324.553]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[54.655,-40.444],[21.671,-95.144],[-37.963,-13.705],[-28.782,51.483],[-50.267,33.464],[-23.513,9.772],[10.816,60.942],[61.884,0.215]],"o":[[-54.655,40.444],[-20.422,89.659],[37.963,13.705],[28.385,-50.774],[50.267,-33.464],[26.19,-10.771],[-11.226,-63.251],[-58.189,-0.202]],"v":[[296.919,402.702],[168.072,605.071],[227.024,801.31],[335.872,705.635],[436.307,547.324],[565.885,497.106],[643.57,398.416],[507.666,326.116]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[51.352,-33.861],[27.009,-88.13],[-39.938,-14.519],[-33.749,52.795],[-62.301,32.617],[-23.737,9.926],[8.332,53.733],[54.243,1.817]],"o":[[-69.052,39.888],[-31.555,92.567],[39.938,14.519],[30.003,-66.106],[51.275,-29.247],[25.745,-10.674],[-8.607,-54.288],[-57.202,-3.019]],"v":[[310.318,383.13],[130.903,588.955],[171.032,802.299],[289.305,702.667],[433.374,531.562],[573.674,492.141],[643.853,398.494],[525.74,328.775]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[48.049,-27.278],[32.346,-81.117],[-41.913,-15.333],[-38.716,54.106],[-74.334,31.77],[-23.962,10.079],[5.847,46.524],[46.602,3.419]],"o":[[-83.448,39.332],[-42.688,95.476],[41.913,15.333],[69.784,-113.901],[52.284,-25.031],[25.3,-10.578],[-5.987,-45.325],[-56.214,-5.836]],"v":[[325.781,370.853],[100.33,581.377],[121.894,802.211],[246.691,696.362],[431.548,522.436],[581.464,487.175],[644.135,398.573],[543.815,331.435]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[44.745,-20.695],[37.684,-74.103],[-43.889,-16.146],[-43.683,55.418],[-86.367,30.923],[-24.186,10.232],[3.362,39.315],[38.961,5.021]],"o":[[-119.264,43.039],[-53.821,98.384],[43.889,16.146],[53.717,-78.902],[53.292,-20.814],[24.855,-10.482],[-3.368,-36.362],[-55.227,-8.653]],"v":[[351.853,367.665],[83.444,578.458],[83.037,797.956],[218.71,689.28],[440.332,522.4],[589.253,482.21],[644.417,398.652],[561.889,334.094]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[41.442,-14.112],[43.022,-67.09],[-45.864,-16.96],[-48.65,56.729],[-98.4,30.077],[-24.41,10.386],[0.877,32.106],[31.32,6.623]],"o":[[-112.242,38.22],[-64.954,101.292],[45.864,16.96],[37.651,-43.904],[54.3,-16.598],[24.41,-10.386],[-0.749,-27.399],[-54.239,-11.47]],"v":[[377.924,364.478],[86.477,578.389],[64.098,796.551],[210.646,685.049],[449.115,522.363],[597.042,477.244],[644.699,398.73],[579.964,336.754]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[44.513,-23.712],[27.482,-56.256],[-37.784,-12.866],[-50.63,58.126],[-58.35,29.482],[-29.403,14.275],[3.378,32.034],[47.465,3.666]],"o":[[-83.032,40.247],[-28.361,58.056],[37.359,12.721],[44.616,-51.418],[56.174,-28.817],[29.403,-14.275],[-2.873,-27.245],[-61.731,-5.418]],"v":[[360.522,399.512],[167.659,595.984],[159.499,760.219],[281.433,660.858],[421.356,527.51],[592.399,468.7],[643.096,401.03],[557.766,341.618]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34.363,"s":[{"i":[[44.672,-24.21],[31.158,-53.285],[-36.18,-15.729],[-55.363,53.834],[-56.271,29.451],[-29.662,14.476],[3.508,32.03],[48.303,3.512]],"o":[[-81.516,40.352],[-31.158,53.285],[35.747,15.541],[49.074,-47.961],[56.271,-29.451],[29.662,-14.476],[-2.983,-27.237],[-62.12,-5.104]],"v":[[353.995,392.968],[165.032,568.445],[141.322,727.462],[269.779,639.11],[419.915,527.777],[566.624,471.102],[623.232,402.797],[535.507,347.324]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[{"i":[[45.26,-24.45],[27.597,-58.817],[-37.262,-10.276],[-47.761,60.94],[-55.381,28.571],[-42.375,15.472],[3.29,32.053],[49.693,3.91]],"o":[[-79.368,39.383],[-29.194,62.221],[36.766,10.14],[42.806,-54.803],[55.381,-28.571],[31.516,-11.507],[-2.797,-27.247],[-62.693,-5.411]],"v":[[360.281,400.125],[170.977,597.431],[166.909,762.505],[282.798,653.18],[419.132,529.165],[591.161,470.697],[644.403,400.507],[556.486,342.254]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[52.639,-27.461],[57.444,-90.469],[-27.818,-6.701],[-52.811,60.226],[-44.19,17.504],[-43.428,1.434],[0.576,34.149],[70.929,9.404]],"o":[[-52.383,27.204],[-61.648,97.089],[26.814,6.459],[53.554,-61.074],[44.19,-17.504],[39.724,-1.312],[-0.488,-28.916],[-73.81,-9.786]],"v":[[337.627,393.675],[150.938,571.051],[113.78,790.198],[241.183,630.489],[415.018,508.533],[567.036,477.673],[651.931,411.796],[560.242,337.699]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43.363,"s":[{"i":[[52.975,-27.598],[71.449,-82.568],[-26.119,-10.549],[-61.267,51.896],[-43.682,17.002],[-38.66,13.544],[0.42,32.348],[67.954,9.137]],"o":[[-51.157,26.651],[-76.706,88.642],[25.139,10.153],[62.435,-52.885],[43.681,-17.002],[38.66,-13.544],[-0.356,-27.386],[-70.216,-9.441]],"v":[[336.43,389.985],[165.007,532.087],[94.633,745.987],[244.636,604.296],[414.831,507.596],[559.622,473.279],[630.986,414.799],[536.565,346.563]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":44,"s":[{"i":[[52.475,-26.235],[56.355,-88.221],[-30.185,-10.492],[-53.423,57.161],[-42.414,16.625],[-57.784,7.045],[0.205,34.313],[70.43,10.482]],"o":[[-50.402,25.322],[-58.909,92.218],[26.307,6.588],[53.501,-59.257],[42.414,-16.625],[46.26,-10.266],[-0.174,-29.039],[-72.558,-10.799]],"v":[[337.76,388.794],[151.526,564.444],[110.692,784.489],[240.195,625.592],[405.777,506.621],[582.34,476.23],[653.568,408.95],[561.786,333.748]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[{"i":[[51.577,-25.66],[52.706,-87.785],[-30.618,-13.006],[-53.379,56.684],[-40.59,21.111],[-40.211,4.323],[-2.249,33.805],[67.004,15.657]],"o":[[-49.263,24.751],[-53.471,89.059],[27.013,6.224],[52.454,-59.802],[65.198,-33.909],[42.937,-6.667],[1.902,-28.598],[-67.829,-17.238]],"v":[[334.232,376.664],[151.617,546.553],[111.829,770.102],[245.559,611.006],[396.481,500.734],[579.493,475.824],[655.106,416.229],[569.69,335.104]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[50.679,-25.085],[44.071,-89.098],[-46.758,-23.261],[-50.159,58.35],[-39.774,16.193],[-40.206,5.305],[-1.298,33.563],[65.247,13.992]],"o":[[-48.123,24.179],[-43.227,87.392],[27.813,4.434],[47.993,-62.401],[64.986,-26.457],[43.11,-5.688],[1.098,-28.382],[-66.847,-14.049]],"v":[[349.01,382.282],[168.344,569.255],[155.055,803.191],[267.079,623.072],[416.579,501.275],[580.869,477.737],[655.02,412.524],[562.755,331.998]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[54.013,-35.45],[31.181,-97.419],[-43.069,-14.713],[-37.982,58.176],[-41.046,21.571],[-38.634,6.618],[0.037,33.154],[68.455,8.382]],"o":[[-46.017,33.376],[-31.464,101.162],[28.623,2.354],[45.782,-83.993],[58.103,-28.516],[47.059,-7.74],[-0.03,-28.022],[-64.25,-11.676]],"v":[[366.929,388.677],[191.905,611.177],[209.588,831.886],[294.473,653.961],[432.216,517.603],[579.867,478.292],[654.7,408.047],[561.596,330.44]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49,"s":[{"i":[[54.111,-39.519],[6.329,-91.851],[-34.642,-2.992],[-18.209,52.194],[-43.589,32.329],[-36.365,1.728],[-0.196,32.447],[58.26,10.274]],"o":[[-71.666,47.302],[-8.274,120.077],[29.825,-0.297],[15.222,-53.379],[44.337,-32.634],[36.365,-1.728],[0.219,-36.155],[-58.627,-9.934]],"v":[[382.759,383.444],[250.15,636.941],[316.407,845.175],[356.09,671.488],[449.132,517.315],[581.972,480.508],[654.091,410.744],[567.259,331.944]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[55.613,-33.605],[-2.319,-104.947],[-33.372,0.013],[-11.332,50.116],[-43.975,27.16],[-36.725,3.231],[-1.296,32.438],[55.896,12.299]],"o":[[-67.316,38.794],[4.746,115.08],[28.468,-2.037],[9.012,-50.107],[44.439,-27.35],[37.425,-2.764],[1.183,-33.435],[-55.206,-10.869]],"v":[[391.276,368.929],[259.131,617.547],[343.337,809.45],[372.16,648.668],[449.357,507.798],[583.942,482.065],[655.642,413.828],[572.354,331.966]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[58.617,-21.778],[22.296,-90.194],[-29.972,-7.107],[-17,40.204],[-44.746,16.822],[-37.445,6.235],[-3.495,32.42],[51.168,16.349]],"o":[[-58.617,21.777],[-19.12,77.346],[25.817,5.735],[16.073,-38.719],[44.641,-16.782],[39.547,-4.836],[3.113,-27.994],[-48.364,-12.74]],"v":[[408.309,339.9],[251.256,509.005],[293.679,696.402],[351.615,577.292],[435.223,487.628],[587.884,485.178],[658.745,419.996],[582.544,332.009]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53,"s":[{"i":[[53.658,-20.108],[35.383,-73.197],[-35.581,-11.521],[-21.277,28.439],[-40.437,12.211],[-35.307,6.585],[-3.296,32.76],[49.209,15.135]],"o":[[-53.978,20.738],[-31.828,64.285],[21.645,9.878],[26.197,-35.015],[40.361,-12.183],[38.856,-6.256],[2.951,-28.734],[-46.713,-12.085]],"v":[[416.241,335.883],[263.276,463.833],[273.739,629.436],[344.978,550.671],[443.616,481.103],[590.437,484.338],[658.853,418.224],[583.644,332.145]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55.637,"s":[{"i":[[40.583,-15.705],[32.277,-43.48],[-9.048,-5.922],[-22.454,4.257],[-29.076,0.054],[-29.671,7.508],[-2.769,33.659],[44.042,11.934]],"o":[[-41.749,17.998],[-32.277,43.48],[14.817,9.699],[22.454,-4.257],[29.076,-0.054],[37.034,-9.997],[2.525,-30.685],[-42.359,-10.356]],"v":[[447.449,340.537],[353.348,411.355],[338.562,501.49],[403.265,496.366],[487.812,484.877],[597.168,482.124],[659.137,413.552],[586.547,332.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58.092,"s":[{"i":[[41.14,-14.181],[16.857,-21.57],[-4.024,-3.706],[-14.07,-0.51],[-28.878,-6.415],[-29.93,6.397],[-4.022,33.532],[43.567,13.567]],"o":[[-42.09,18.438],[-17.525,22.426],[6.527,6.011],[11.563,0.419],[28.384,6.305],[37.381,-8.61],[3.666,-30.569],[-41.944,-11.927]],"v":[[481.538,335.535],[400.029,396.959],[378.702,461.784],[412.431,465.475],[500.339,477.428],[600.398,484.818],[664.879,418.602],[595.533,332.495]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60.545,"s":[{"i":[[28.201,-1.085],[12.654,-5.359],[7.828,-30.219],[-29.163,-7.707],[-24.783,-3.988],[-20.286,7.565],[4.15,32.508],[22.957,14.401]],"o":[[-19.818,0.762],[-62.447,26.447],[28.952,1.188],[19.981,5.281],[23.203,3.734],[32.599,-12.156],[-3.274,-25.65],[-17.795,-11.163]],"v":[[552.771,323.203],[494.19,336.456],[394.869,451.062],[473.248,463.684],[557.264,486.313],[622.075,480.875],[667.874,402.501],[624.119,342.216]],"c":true}]},{"t":65.455078125,"s":[{"i":[[29.256,-1.636],[12.654,-5.359],[8.617,-28.501],[-28.968,-8.636],[-24.783,-3.988],[-20.286,7.565],[3.491,32.586],[22.957,14.401]],"o":[[-19.802,1.107],[-62.447,26.447],[28.952,1.188],[19.806,5.905],[23.203,3.734],[32.599,-12.156],[-2.92,-27.253],[-17.795,-11.163]],"v":[[552.771,323.203],[505.624,334.015],[404.252,446.909],[473.294,460.187],[557.264,486.313],[622.075,480.875],[668.525,402.251],[624.928,339.765]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.250979988248,0.721568986481,0.588234994926,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":91,"st":-11,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"Null 6","hd":true,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.11],"y":[1.253]},"o":{"x":[0.234],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.619],"y":[1.175]},"o":{"x":[0.466],"y":[0.235]},"t":16.363,"s":[-23.464]},{"i":{"x":[0.495],"y":[1]},"o":{"x":[0.367],"y":[0.239]},"t":63.818,"s":[14.851]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[63.999999999999986,63.999999999999986,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.517,0.517,0.833],"y":[1.074,1.074,1.173]},"o":{"x":[0.571,0.571,0.333],"y":[0,0,0]},"t":0,"s":[12.799999999999997,12.799999999999997,100]},{"i":{"x":[0.636,0.636,0.667],"y":[0.588,0.588,0.493]},"o":{"x":[0.428,0.428,0.167],"y":[0.065,0.065,-0.129]},"t":31.908,"s":[10.323455999999998,10.323455999999998,100]},{"i":{"x":[0.472,0.472,0.667],"y":[1.033,1.033,1]},"o":{"x":[0.23,0.23,0.333],"y":[1.161,1.161,0.734]},"t":55.637,"s":[12.192767999999997,12.192767999999997,100]},{"t":90,"s":[12.799999999999997,12.799999999999997,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":91,"st":-10,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Layer 4 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[63.99884799999998,63.999999999999986,0],"ix":2,"l":2},"a":{"a":0,"k":[20.25,20.25,0],"ix":1,"l":2},"s":{"a":0,"k":[255.99999999999994,255.99999999999994,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.045,0],[0,-11.046],[-11.046,0],[0,11.045]],"o":[[-11.046,0],[0,11.046],[11.045,0],[0,-11.046]],"v":[[0,-20],[-20,0],[0,20],[20,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.262745098039,0.376470618154,0.87450986376,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[20.25,20.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":91,"st":0,"bm":0}],"markers":[]} diff --git a/android/app/src/main/res/raw/message.wav b/android/app/src/main/res/raw/message.wav new file mode 100644 index 00000000000..13c9628295b Binary files /dev/null and b/android/app/src/main/res/raw/message.wav differ diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000000..eb75d8dd2b6 --- /dev/null +++ b/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1,5 @@ + + + #141414 + #ffffff + diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 629b151f53b..a370d388ac1 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,5 +1,8 @@ + - #7099e6 - #5c6bc0 - #5c6bc0 + #ffffff + #000000 + #09101C + #ffffff + #4360DF diff --git a/android/app/src/main/res/values/splash_theme.xml b/android/app/src/main/res/values/splash_theme.xml new file mode 100644 index 00000000000..c61662059cd --- /dev/null +++ b/android/app/src/main/res/values/splash_theme.xml @@ -0,0 +1,13 @@ + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 428623ba43d..16d83f115d5 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Status Your phone appears to be ROOTED, by pressing CONTINUE you understand and accept the risks in using this software. Continue Exit - \ No newline at end of file + status-im + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index b6c9d952be0..504077f1b02 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,10 +1,31 @@ - + + + + - @color/primary - @color/primary + diff --git a/android/app/src/main/res/values/theme.xml b/android/app/src/main/res/values/theme.xml new file mode 100644 index 00000000000..70d50d50307 --- /dev/null +++ b/android/app/src/main/res/values/theme.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/xml/file_provider_paths.xml b/android/app/src/main/res/xml/file_provider_paths.xml new file mode 100644 index 00000000000..816c9d3f8c0 --- /dev/null +++ b/android/app/src/main/res/xml/file_provider_paths.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/pr/AndroidManifest.xml b/android/app/src/pr/AndroidManifest.xml new file mode 100644 index 00000000000..3571ea04c32 --- /dev/null +++ b/android/app/src/pr/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/android/app/src/pr/res/values/strings.xml b/android/app/src/pr/res/values/strings.xml new file mode 100644 index 00000000000..5bc6dcce61d --- /dev/null +++ b/android/app/src/pr/res/values/strings.xml @@ -0,0 +1,3 @@ + + Status PR + diff --git a/android/app/src/release/AndroidManifest.xml b/android/app/src/release/AndroidManifest.xml index 641bd0329a4..3571ea04c32 100644 --- a/android/app/src/release/AndroidManifest.xml +++ b/android/app/src/release/AndroidManifest.xml @@ -3,5 +3,7 @@ + + - \ No newline at end of file + diff --git a/android/app/src/release/res/values/strings.xml b/android/app/src/release/res/values/strings.xml new file mode 100644 index 00000000000..917ca04be88 --- /dev/null +++ b/android/app/src/release/res/values/strings.xml @@ -0,0 +1,3 @@ + + Status + diff --git a/android/build.gradle b/android/build.gradle index 496c8d0e353..e7dbc681df4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,25 +1,88 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. +/** +* Project-wide gradle configuration properties for use by all modules +*/ +ext { + // kotlin_version is needed for react-native-camera-kit library + kotlin_version = project.kotlinPluginVersion + RNNKotlinVersion = project.kotlinPluginVersion + RNGH_kotlinVersion = project.kotlinPluginVersion + buildToolsVersion = project.buildToolsVersion + minSdkVersion = Integer.valueOf(project.minSdkVersion) + compileSdkVersion = Integer.valueOf(project.compileSdkVersion) + targetSdkVersion = Integer.valueOf(project.targetSdkVersion) + supportLibVersion = project.supportLibVersion + gradlePluginVersion = project.gradlePluginVersion + kotlinVersion = project.kotlinPluginVersion + kotlinPluginVersion = project.kotlinPluginVersion + kotlinToolsVersion = project.kotlinPluginVersion + ndkVersion = "25.2.9519653" +} + buildscript { repositories { - jcenter() + flatDir { dirs "libs", "${rootDir}/app/libs" } + google() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinPluginVersion}" + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + classpath("com.google.gms:google-services:4.4.2") + } +} + +subprojects { + afterEvaluate { + if (project.hasProperty("android")) { + android { + compileSdkVersion rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + defaultConfig { + targetSdkVersion rootProject.ext.targetSdkVersion + } + + // Speed up Tests Stage + tasks.withType(Test).configureEach { + // https://docs.gradle.org/current/userguide/performance.html#execute_tests_in_parallel + maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 + // https://docs.gradle.org/current/userguide/performance.html#fork_tests_into_multiple_processes + forkEvery = 100 + // https://docs.gradle.org/current/userguide/performance.html#disable_reports + reports.html.required = false + reports.junitXml.required = false + } + // Speed up Java Compile Stage + // https://docs.gradle.org/current/userguide/performance.html#run_the_compiler_as_a_separate_process + tasks.withType(JavaCompile).configureEach { + options.fork = true + } + + } + } } } +apply plugin: "com.facebook.react.rootproject" + allprojects { + beforeEvaluate { + if (System.env.STATUS_GO_ANDROID_LIBDIR == null || System.env.STATUS_GO_ANDROID_LIBDIR == "") { + throw new GradleException('STATUS_GO_ANDROID_LIBDIR environment variable is not valid!') + } + } repositories { mavenLocal() - jcenter() - maven { url "$rootDir/../node_modules/react-native/android" } - // for geth - flatDir { dirs 'libs' } - maven { url "http://139.162.11.12:8081/artifactory/libs-release-local" } - maven { url "https://jitpack.io" } + // Android JSC is installed from npm + maven { url("$rootDir/../node_modules/jsc-android/dist") } + // For geth, function, and status-go + flatDir { dirs "libs", System.env.STATUS_GO_ANDROID_LIBDIR } + google() + mavenCentral() + maven { url 'https://mvnrepository.com/artifact/com.github.gundy/semver4j'} } } diff --git a/android/gradle.properties b/android/gradle.properties index 3007437da79..6d587f756f9 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -17,8 +17,46 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -android.useDeprecatedNdk=true -STATUS_RELEASE_STORE_FILE=/path/to/store/file -STATUS_RELEASE_STORE_PASSWORD=password -STATUS_RELEASE_KEY_ALIAS=alias -STATUS_RELEASE_KEY_PASSWORD=password +# To create a new keystore for development purposes (https://developer.android.com/studio/publish/app-signing.html) +# $keytool -genkey -v -keystore ./status-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias status + +# Version requirements used throughout the Gradle scripts +minSdkVersion=24 +compileSdkVersion=34 +targetSdkVersion=34 +buildToolsVersion=34.0.0 +supportLibVersion=28.0.0 +# This should match version from nix/pkgs/aapt2/default.nix +gradlePluginVersion=7.4.2 +kotlinPluginVersion=1.9.0 + +android.useAndroidX=true +android.enableJetifier=true + +KEYSTORE_PATH=~/.gradle/status-im.keystore +KEYSTORE_PASSWORD=password +KEYSTORE_ALIAS=status +KEYSTORE_KEY_PASSWORD=password + +# Splitting by CPU Architecture produces smaller APKs. +ANDROID_ABI_SPLIT=true +# By default its better to only build apk for most recent devices. +ANDROID_ABI_INCLUDE=arm64-v8a + +org.gradle.jvmargs=-Xmx8704M -XX:+UseParallelGC + +versionCode=9999 +commitHash=unknown + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=false + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +# Disabled for debug builds to avoid 'maximum call stack exceeded' errors. +# https://github.com/status-im/status-mobile/issues/18493 +hermesEnabled=false diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166dad4d9..00000000000 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index e902309aef7..00000000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sun Jan 22 10:12:39 EET 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/android/gradlew b/android/gradlew index 91a7e269e19..7e5e936d819 100755 --- a/android/gradlew +++ b/android/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,159 +6,20 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac +## +## The default gradle wrapper script was replaced by a call to Nix's gradle package. +## Please revert to this script any time that it is upgraded by React Native. +## -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" fi -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi +# Map mavenLocal() to the Nix maven repo we set up in nix/mobile/android/maven-and-npm-deps/default.nix +if [ -n "${STATUS_NIX_MAVEN_REPO}" ]; then + repoOpts="-Dmaven.repo.local=${STATUS_NIX_MAVEN_REPO}" else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." + repoOpts='' fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec gradle $repoOpts "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat deleted file mode 100644 index aec99730b4e..00000000000 --- a/android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/android/init.gradle b/android/init.gradle new file mode 100644 index 00000000000..57b06eeaf87 --- /dev/null +++ b/android/init.gradle @@ -0,0 +1,9 @@ +initscript { + repositories { + gradlePluginPortal() + } + dependencies { + classpath "org.gradle:github-dependency-graph-gradle-plugin:+" + } +} +apply plugin: org.gradle.dependencygraph.simple.SimpleDependencyGraphPlugin diff --git a/android/settings.gradle b/android/settings.gradle index 928c18f5847..e9a8127c624 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,43 +1,21 @@ +pluginManagement { +includeBuild('../node_modules/@react-native/gradle-plugin') + repositories { + mavenLocal() // Let's prioritize local Maven repos so that Nix can provide them offline + gradlePluginPortal() + } +} +include ':react-native-share' +project(':react-native-share').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share/android') rootProject.name = 'StatusIm' - +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':react-native-nfc-manager' +project(':react-native-nfc-manager').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-nfc-manager/android') include ':app' -include ':react-native-http-bridge' -project(':react-native-http-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-http-bridge/android') -include ':nfc-react-native' -project(':nfc-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/nfc-react-native/android') -include ':instabug-reactnative' -project(':instabug-reactnative').projectDir = new File(rootProject.projectDir, '../node_modules/instabug-reactnative/android') -include ':react-native-splash-screen' -project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android') -include ':react-native-image-resizer' -project(':react-native-image-resizer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-resizer/android') -include ':react-native-dialogs' -project(':react-native-dialogs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-dialogs/android') -include ':react-native-randombytes' -project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') -include ':react-native-android-sms-listener' -project(':react-native-android-sms-listener').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-sms-listener/android') -include ':react-native-contacts' -project(':react-native-contacts').projectDir = new File(settingsDir, '../node_modules/react-native-contacts/android') -include ':react-native-i18n' -project(':react-native-i18n').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-i18n/android') -include ':react-native-vector-icons' -project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') -include ':realm' -project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/android') -include ':react-native-linear-gradient' -project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android') include ':react-native-status' project(':react-native-status').projectDir = new File(rootProject.projectDir, '../modules/react-native-status/android') -include ':react-native-camera' -project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') -include ':react-native-orientation', ':app' -project(':react-native-orientation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-orientation/android') -include ':react-native-fs' -project(':react-native-fs').projectDir = new File(settingsDir, '../node_modules/react-native-fs/android') - -include ':react-native-image-crop-picker' -project(':react-native-image-crop-picker').projectDir = new File(settingsDir, '../node_modules/react-native-image-crop-picker/android') - -include ':react-native-webview-bridge' -project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android') \ No newline at end of file +include ':react-native-status-keycard' +project(':react-native-status-keycard').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-status-keycard/android') +include ':react-native-blur' +project(':react-native-blur').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/blur/android') +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/app.json b/app.json new file mode 100644 index 00000000000..7e5f39bafdf --- /dev/null +++ b/app.json @@ -0,0 +1,4 @@ +{ + "name": "StatusIm", + "displayName": "StatusIm" +} diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000000..31de5f62fcd --- /dev/null +++ b/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: ['module:@react-native/babel-preset'], + plugins: ['react-native-reanimated/plugin', '@babel/plugin-transform-named-capturing-groups-regex'], +}; diff --git a/binding.gyp b/binding.gyp new file mode 100644 index 00000000000..f161b329987 --- /dev/null +++ b/binding.gyp @@ -0,0 +1,38 @@ +{ + "variables": { + "module_name%": "status_nodejs_addon", + "module_path%": "./lib/binding/" + }, + "targets": [{ + "target_name": "<(module_name)", + "sources": [ + "./modules/react-native-status/nodejs/status.cpp" + ], + "xcode_settings": { + "MACOSX_DEPLOYMENT_TARGET": "10.7" + }, + "libraries": [ + " 0 ? ", " : "") + (parameterNumber === i ? "*" + argument.name + "*" : argument.name); - if (argument.optional) { - argumentText = "[" + argumentText + "]"; - } - title += argumentText; - } - title += ")"; - } - if (!docInfo.desc) { - name += "."; - } else if (docInfo.args) { - name += "("; - if (docInfo.args.length == 0) { - name += ")"; - } - } - var suggestion = { - title: title, - desc: docInfo.desc - }; - - if (code != null) { - suggestion.pressValue = code + name; - } - return suggestion; -} - -var lastMessage = null; - -function getLastForm(code) { - var codeLength = code.length; - var form = ''; - var level = 0; - var index = codeLength - 1; - while (index >= 0) { - var char = code[index]; - if (level == 0 && (char == '(' || char == ',')) { - break; - } - if (char == ')') { - level--; - } - if (char == '(') { - level++; - } - form = char + form; - index--; - } - return form; -} - -function getLastLevel(code) { - var codeLength = code.length; - var form = ''; - var index = codeLength - 1; - var nested = false; - var level = 0; - while (index >= 0) { - var char = code[index]; - if (char == ')') { - level--; - nested = true; - } - if (char == '(') { - level++; - if (level == 0) { - nested = false; - } - if (level <= 0) { - form = "argument" + form; - index--; - continue; - } - } - if ((level == 1 && char == ',') || level == 2) { - break; - } - if (!nested || level > 0) { - form = char + form; - } - index--; - } - if (form.indexOf("(") < 0) { - var parts = form.split(','); - form = parts[parts.length - 1]; - } - return form; -} - -function getPartialSuggestions(doc, fullCode, code) { - var suggestions = []; - var functionParts = code.split("("); - var objectParts = code.split(/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/); - - var index = 0; - var suggestedFunction = ''; - while (index < objectParts.length) { - var part = objectParts[index]; - if (part != "desc" && part != "args" && doc[part] != null) { - doc = doc[part]; - suggestedFunction += part + '.'; - index++; - } else { - break; - } - } - suggestedFunction = suggestedFunction.substring(0, suggestedFunction.length - 1) - if (functionParts.length == 1) { - // object suggestions - if (index > objectParts.length - 1) { - var suggestion = objectParts[objectParts.length - 1]; - suggestions.push(createObjectSuggestion(suggestion, doc, fullCode.substring(0, fullCode.length - suggestion.length))); - } else if (index === objectParts.length - 1) { - var lastPart = objectParts[index]; - var keys = Object.keys(doc); - var matches = matchSubString(keys, lastPart); - - for (var i = 0; i < matches.length; i++) { - var suggestion = matches[i]; - if (suggestion == "desc" || suggestion == "args") { - continue; - } - var docInfo = doc[suggestion]; - if (docInfo != null) { - suggestions.push(createObjectSuggestion(suggestion, docInfo, fullCode.substring(0, fullCode.length - lastPart.length))); - } - } - } - } else if (functionParts.length == 2) { - // parameter suggestions - var parameters = functionParts[1].split(","); - if (doc.args && parameters.length <= doc.args.length && parameters[parameters.length - 1].indexOf(")") < 0) { - var paramInfo = doc.args[parameters.length - 1]; - var docInfo = doc; - docInfo.desc = paramInfo.name + ": " + paramInfo.desc; - suggestions.push(createObjectSuggestion(suggestedFunction, docInfo, null, parameters.length - 1)); - } - } - //console.debug(suggestions); - return suggestions; -} - -function getJsSuggestions(code, context) { - var suggestions = []; - var doc = DOC_MAP; - // TODO: what's /c / doing there ??? - //console.debug(code); - var previousMessage = localStorage.getItem("previousMessage"); - if (!code || code == "" || code == "c ") { - code = ""; - //console.debug("Last message: " + context.data); - if (previousMessage != null) { - suggestions.push({ - title: 'Last command used:', - desc: previousMessage, - pressValue: previousMessage - }); - } - var keys = Object.keys(doc); - for (var i = 0; i < keys.length; i++) { - var suggestion = keys[i]; - var docInfo = doc[suggestion]; - if (docInfo != null) { - suggestions.push(createObjectSuggestion(suggestion, docInfo, "")); - } - } - } else { - // TODO: what's /c / doing there ??? - if (code.startsWith("c ")) { - code = code.substring(2); - } - if (previousMessage != null && - (typeof previousMessage === 'string' || previousMessage instanceof String) && - previousMessage.startsWith(code)) { - suggestions.unshift({ - title: 'Last command used:', - desc: previousMessage, - pressValue: previousMessage - }); - } - var originalCode = code; - code = cleanCode(code); - var levelCode = getLastLevel(code); - var code = getLastForm(levelCode); - if (levelCode != code) { - suggestions = getPartialSuggestions(doc, originalCode, levelCode); - } - - //console.debug("Final code: " + code); - //console.debug("Level code: " + levelCode); - suggestions = suggestions.concat(getPartialSuggestions(doc, originalCode, code)); - } - return suggestions; -} - -function createMarkupText(text) { - var parts = []; - var index = 0; - var currentText = ''; - var isBold = false; - while (index < text.length) { - var char = text[index]; - if (char == '*') { - if (currentText != '') { - parts.push( - status.components.text( - {style: isBold ? jsBoldValueStyle : jsValueStyle}, - currentText - ) - ); - currentText = ''; - } - isBold = !isBold; - } else { - currentText += char; - } - index++; - } - if (currentText != '') { - parts.push( - status.components.text( - {style: isBold ? jsBoldValueStyle : jsValueStyle}, - currentText - ) - ); - } - //console.debug(parts); - return parts; -} - -function jsSuggestions(params, context) { - var suggestions = getJsSuggestions(params.code, context); - var sugestionsMarkup = []; - - for (var i = 0; i < suggestions.length; i++) { - var suggestion = suggestions[i]; - - if (suggestion.title.indexOf('*') >= 0) { - suggestion.title = createMarkupText(suggestion.title); - } - var suggestionMarkup = status.components.view(jsSuggestionContainerStyle, - [status.components.view(jsSubContainerStyle, - [ - status.components.text({style: jsValueStyle}, - suggestion.title), - status.components.text({style: jsDescriptionStyle}, - suggestion.desc) - ])]); - if (suggestion.pressValue) { - suggestionMarkup = status.components.touchable({ - onPress: status.components.dispatch([status.events.SET_VALUE, suggestion.pressValue]) - }, - suggestionMarkup - ); - } - sugestionsMarkup.push(suggestionMarkup); - } - - if (sugestionsMarkup.length > 0) { - var view = status.components.scrollView(jsSuggestionsContainerStyle(sugestionsMarkup.length), - sugestionsMarkup - ); - return {markup: view}; - } -} - - -function jsHandler(params, context) { - var result = { - err: null, - data: null, - messages: [] - }; - messages = []; - try { - result["text-message"] = JSON.stringify(eval(params.code)); - localStorage.setItem("previousMessage", params.code); - } catch (e) { - result.err = e; - } - - result.messages = messages; - - return result; -} - -function suggestionsContainerStyle(suggestionsCount) { - return { - marginVertical: 1, - marginHorizontal: 0, - keyboardShouldPersistTaps: "always", - height: Math.min(150, (56 * suggestionsCount)), - backgroundColor: "white", - borderRadius: 5, - flexGrow: 1 - }; -} - -var suggestionContainerStyle = { - paddingLeft: 16, - backgroundColor: "white" -}; - -var suggestionSubContainerStyle = { - height: 56, - borderBottomWidth: 1, - borderBottomColor: "#0000001f" -}; - -var valueStyle = { - marginTop: 9, - fontSize: 14, - fontFamily: "font", - color: "#000000de" -}; - -var descriptionStyle = { - marginTop: 1.5, - fontSize: 14, - fontFamily: "font", - color: "#838c93de" -}; - -function startsWith(str1, str2) { - // String.startsWith(...) doesn't work in otto - return str1.lastIndexOf(str2, 0) == 0 && str1 != str2; -} - -function phoneSuggestions(params, context) { - var ph, suggestions; - if (!params.phone || params.phone == "") { - ph = context.suggestions; - } else { - ph = context.suggestions.filter(function (phone) { - return startsWith(phone.number, params.phone); - }); - } - - if (ph.length == 0) { - return; - } - - suggestions = ph.map(function (phone) { - return status.components.touchable( - {onPress: status.components.dispatch([status.events.SET_VALUE, phone.number])}, - status.components.view(suggestionContainerStyle, - [status.components.view(suggestionSubContainerStyle, - [ - status.components.text( - {style: valueStyle}, - phone.number - ), - status.components.text( - {style: descriptionStyle}, - phone.description - ) - ])]) - ); - }); - - var view = status.components.scrollView( - suggestionsContainerStyle(ph.length), - suggestions - ); - - return {markup: view}; -} - -var phoneConfig = { - name: "phone", - registeredOnly: true, - icon: "phone_white", - color: "#5bb2a2", - title: I18n.t('phone_title'), - description: I18n.t('phone_description'), - sequentialParams: true, - validator: function (params) { - return { - validationHandler: "phone", - parameters: [params.phone] - }; - }, - params: [{ - name: "phone", - type: status.types.PHONE, - suggestions: phoneSuggestions, - placeholder: I18n.t('phone_placeholder') - }] -}; -status.response(phoneConfig); -status.command(phoneConfig); - -var faucets = [ - /*{ - name: "Ethereum Ropsten Faucet", - url: "http://faucet.ropsten.be:3001" - },*/ - { - name: "Status Testnet Faucet", - url: "http://46.101.129.137:3001", - } -]; - -function faucetSuggestions(params) { - var suggestions = faucets.map(function (entry) { - return status.components.touchable( - {onPress: status.components.dispatch([status.events.SET_COMMAND_ARGUMENT, [0, entry.url]])}, - status.components.view( - suggestionContainerStyle, - [status.components.view( - suggestionSubContainerStyle, - [ - status.components.text( - {style: valueStyle}, - entry.name - ), - status.components.text( - {style: descriptionStyle}, - entry.url - ) - ] - )] - ) - ); - }); - - var view = status.components.scrollView( - suggestionsContainerStyle(faucets.length), - suggestions - ); - - return {markup: view}; -} - -status.command({ - name: "faucet", - title: I18n.t('faucet_title'), - description: I18n.t('faucet_description'), - color: "#7099e6", - registeredOnly: true, - params: [{ - name: "url", - type: status.types.TEXT, - suggestions: faucetSuggestions, - placeholder: I18n.t('faucet_placeholder') - }], - preview: function (params) { - return { - markup: status.components.text( - {}, - params.url - ) - }; - }, - shortPreview: function (params) { - return { - markup: status.components.text( - {}, - I18n.t('faucet_title') + ": " + params.url - ) - }; - }, - validator: function (params, context) { - var f = faucets.map(function (entry) { - return entry.url; - }); - - if (f.indexOf(params.url) == -1) { - var error = status.components.validationMessage( - I18n.t('faucet_incorrect_title'), - I18n.t('faucet_incorrect_description') - ); - - return {markup: error}; - } - } -}); - -function debugSuggestions(params) { - var suggestions = ["On", "Off"].map(function (entry) { - return status.components.touchable( - {onPress: status.components.dispatch([status.events.SET_COMMAND_ARGUMENT, [0, entry]])}, - status.components.view( - suggestionContainerStyle, - [status.components.view( - suggestionSubContainerStyle, - [ - status.components.text( - {style: valueStyle}, - entry - ) - ] - )] - ) - ); - }); - - var view = status.components.scrollView( - suggestionsContainerStyle(faucets.length), - suggestions - ); - - return {markup: view}; -} - -status.command({ - name: "debug", - title: I18n.t('debug_mode_title'), - description: I18n.t('debug_mode_description'), - color: "#7099e6", - registeredOnly: true, - params: [{ - name: "mode", - suggestions: debugSuggestions, - type: status.types.TEXT - }], - preview: function (params) { - return { - markup: status.components.text( - {}, - I18n.t('debug_mode_title') + ": " + params.mode - ) - }; - }, - shortPreview: function (params) { - return { - markup: status.components.text( - {}, - I18n.t('debug_mode_title') + ": " + params.mode - ) - }; - } -}); - - -// status.command({ -// name: "help", -// title: "Help", -// description: "Request help from Console", -// color: "#7099e6", -// params: [{ -// name: "query", -// type: status.types.TEXT -// }] -// }); - -status.response({ - name: "confirmation-code", - color: "#7099e6", - description: I18n.t('confirm_description'), - sequentialParams: true, - params: [{ - name: "code", - type: status.types.NUMBER - }], - validator: function (params) { - if (!/^[\d]{4}$/.test(params.code)) { - var error = status.components.validationMessage( - I18n.t('confirm_validation_title'), - I18n.t('confirm_validation_description') - ); - - return {markup: error}; - } - } -}); - -status.response({ - name: "password", - color: "#7099e6", - description: I18n.t('password_description'), - icon: "lock_white", - sequentialParams: true, - params: [ - { - name: "password", - type: status.types.PASSWORD, - placeholder: I18n.t('password_placeholder'), - hidden: true - }, - { - name: "password-confirmation", - type: status.types.PASSWORD, - placeholder: I18n.t('password_placeholder2'), - hidden: true - } - ], - validator: function (params, context) { - if (!params.hasOwnProperty("password-confirmation") || params["password-confirmation"].length === 0) { - if (params.password === null || params.password.length < 6) { - var error = status.components.validationMessage( - I18n.t('password_validation_title'), - I18n.t('password_error') - ); - return {markup: error}; - } - } else { - if (params.password !== params["password-confirmation"]) { - var error = status.components.validationMessage( - I18n.t('password_validation_title'), - I18n.t('password_error1') - ); - return {markup: error}; - } - } - - }, - preview: function (params, context) { - var style = { - marginTop: 5, - marginHorizontal: 0, - fontSize: 14, - color: "black" - }; - - if (context.platform == "ios") { - style.fontSize = 8; - style.marginTop = 10; - style.marginBottom = 2; - style.letterSpacing = 1; - } - - return {markup: status.components.text({style: style}, "●●●●●●●●●●")}; - } -}); - -status.response({ - name: "grant-permissions", - color: "#7099e6", - description: "Grant permissions", - icon: "lock_white", - executeImmediately: true -}); - -status.addListener("on-message-input-change", function (params, context) { - return jsSuggestions({code: params.message}, context); -}); - -status.addListener("on-message-send", function (params, context) { - return jsHandler({code: params.message}, context); -}); diff --git a/bots/console/translations.js b/bots/console/translations.js deleted file mode 100644 index d08813756ad..00000000000 --- a/bots/console/translations.js +++ /dev/null @@ -1,572 +0,0 @@ -I18n.translations = { - en: { - phone_title: 'Send Phone Number', - phone_description: 'Find friends using your number', - phone_placeholder: 'Phone number', - - confirm_description: 'Confirmation code', - confirm_validation_title: 'Confirmation code', - confirm_validation_description: 'Wrong format', - - password_description: 'Password', - password_placeholder: 'Type your password', - password_placeholder2: 'Confirm', - password_error: 'Password should be not less then 6 symbols.', - password_error1: 'Password confirmation doesn\'t match password.', - password_validation_title: 'Password', - - faucet_incorrect_title: 'Incorrect faucet', - faucet_incorrect_description: 'Please, select a one from the list', - - debug_mode_title: 'Debug mode', - debug_mode_description: 'Starts/stops a debug mode', - - faucet_title: 'Faucet', - faucet_description: 'Get some ETH', - faucet_placeholder: 'Faucet URL' - }, - ru: { - phone_title: 'Отправить номер телефона', - phone_description: 'Найти друзей, используя ваш номер', - phone_placeholder: 'Номер телефона', - - confirm_description: 'Код подтверждения', - confirm_validation_title: 'Код подтверждения', - confirm_validation_description: 'Неверный формат', - - password_description: 'Пароль', - password_placeholder: 'Введите свой пароль', - password_placeholder2: 'Повторно введите пароль для подтверждения', - password_error: 'Пароль должен содержать не менее 6 символов', - password_error1: 'Подтверждение пароля не совпадает с паролем', - password_validation_title: 'Пароль' - - }, - af: { - phone_title: 'Stuur telefoonnommer', - phone_description: 'Vind vriende deur jou nommer te gebruik', - phone_placeholder: 'Telefoonnommer', - - confirm_description: 'Bevestigingskode', - confirm_validation_title: 'Bevestigingskode', - confirm_validation_description: 'Verkeerde formaat', - - password_description: 'Wagwoord', - password_placeholder: 'Tik jou wagwoord in', - password_placeholder2: 'Tik asseblief weer jou wagwoord in om te bevestig', - password_error: 'Wagwoord mag nie minder as 6 simbole wees nie.', - password_error1: 'Wagwoordbevestiging is nie dieselfde as wagwoord nie.', - password_validation_title: 'Wagwoord' - - }, - ar: { - phone_title: 'أرسل رقم الهاتف', - phone_description: 'ابحث عن الأصدقاء باستخدام رقمك', - phone_placeholder: 'رقم الهاتف', - - confirm_description: 'رمز التأكيد', - confirm_validation_title: 'رمز التأكيد', - confirm_validation_description: 'صيغة خاطئة', - - password_description: 'كلمة المرور', - password_placeholder: 'اكتب كلمة المرور الخاصة بك', - password_placeholder2: 'الرجاء إعادة إدخال كلمة المرور للتأكيد', - password_error: 'ينبغي أن لا تقل كلمة المرور عن 6 رموز.', - password_error1: 'لا يتوافق تأكيد كلمة المرور مع كلمة المرور.', - password_validation_title: 'كلمة المرور' - - }, - 'zh-hant': { - phone_title: '發送手機號碼', - phone_description: '使用您的號碼發現好友', - phone_placeholder: '手機號碼', - - confirm_description: '確認碼', - confirm_validation_title: '確認碼', - confirm_validation_description: '格式錯誤', - - password_description: '密碼', - password_placeholder: '鍵入您的密碼', - password_placeholder2: '重新鍵入您的密碼', - password_error: '密碼不得短於6個字元。', - password_error1: '確認密碼與鍵入的密碼不一致。', - password_validation_title: '密碼' - - }, - 'zh-hans': { - phone_title: '发送电话号码', - phone_description: '用你的号码来查找朋友', - phone_placeholder: '电话号码', - - confirm_description: '确认码', - confirm_validation_title: '确认码', - confirm_validation_description: '格式错误', - - password_description: '密码', - password_placeholder: '输入密码', - password_placeholder2: '请重新输入密码以确认', - password_error: '密码应不少于6个字符。', - password_error1: '密码确认信息与密码不匹配。', - password_validation_title: '密码' - - }, - 'zh-yue': { - phone_title: '發送電話號碼', - phone_description: '使用本電話號碼查找好友', - phone_placeholder: '電話號碼', - - confirm_description: '驗證碼', - confirm_validation_title: '驗證碼', - confirm_validation_description: '格式錯誤', - - password_description: '密碼', - password_placeholder: '輸入密碼', - password_placeholder2: '請重新輸入密碼確認', - password_error: '密碼不能短於6個字符.', - password_error1: '確認密碼與輸入密碼不符.', - password_validation_title: '密碼' - - }, - 'zh-wuu': { - phone_title: '发送电话号码', - phone_description: '用您的号码查找朋友', - phone_placeholder: '电话号码', - - confirm_description: '确认码', - confirm_validation_title: '确认码', - confirm_validation_description: '错误格式', - - password_description: '密码', - password_placeholder: '输入密码', - password_placeholder2: '请重新输入密码确认', - password_error: '密码应不小于6个字符。', - password_error1: '密码确认不匹配。', - password_validation_title: '密码' - - }, - nl: { - phone_title: 'Stuur telefoonnummer', - phone_description: 'Zoek vrienden met behulp van je nummer', - phone_placeholder: 'Telefoonnummer', - - confirm_description: 'Bevestigingscode', - confirm_validation_title: 'Bevestigingscode', - confirm_validation_description: 'Verkeerd format', - - password_description: 'Wachtwoord', - password_placeholder: 'Typ je wachtwoord', - password_placeholder2: 'Voer je wachtwoord opnieuw in om te bevestigen', - password_error: 'Wachtwoord moet minstens 6 tekens hebben.', - password_error1: 'Wachtwoordbevestiging komt niet overeen met wachtwoord.', - password_validation_title: 'Wachtwoord' - - }, - fr: { - phone_title: 'Envoyer le numéro de téléphone', - phone_description: 'Trouver des amis en utilisant votre numéro', - phone_placeholder: 'Numéro de téléphone', - - confirm_description: 'Code de confirmation', - confirm_validation_title: 'Code de confirmation', - confirm_validation_description: 'Format incorrect', - - password_description: 'Mot de passe', - password_placeholder: 'Tapez votre mot de passe', - password_placeholder2: 'Veuillez retapez votre mot de passe pour le confirmer', - password_error: 'Le mot de passe doit contenir 6 symboles au minimum.', - password_error1: 'Le mot de passe de confirmation ne correspond pas au mot de passe.', - password_validation_title: 'Mot de passe' - - }, - de: { - phone_title: 'Telefonnummer absenden', - phone_description: 'Freunde mit Ihrer Nummer finden', - phone_placeholder: 'Telefonnummer', - - confirm_description: 'Bestätigungscode', - confirm_validation_title: 'Bestätigungscode', - confirm_validation_description: 'Falsches Format', - - password_description: 'Passwort', - password_placeholder: 'Geben Sie Ihr Passwort ein', - password_placeholder2: 'Bitte geben Sie das Passwort zur Bestätigung erneut ein', - password_error: 'Das Passwort sollte nicht weniger als 6 Stellen beinhalten', - password_error1: 'Die Passwortbestätigung stimmt nicht mit dem Passwort überein', - password_validation_title: 'Passwort', - - }, - hi: { - phone_title: 'फ़ोन नंबर भेजें', - phone_description: 'अपने नंबर का उपयोग करके दोस्त ढूंढें', - phone_placeholder: 'फ़ोन नंबर', - - confirm_description: 'पुष्टि कोड', - confirm_validation_title: 'पुष्टि कोड', - confirm_validation_description: 'गलत प्रारूप', - - password_description: 'पासवर्ड', - password_placeholder: 'अपना पासवर्ड टाइप करें', - password_placeholder2: 'पुष्टि करने के लिए फिर से पासवर्ड दर्ज करें', - password_error: 'पासवर्ड 6 प्रतीकों से कम का नहीं होना चाहिए।', - password_error1: 'पासवर्ड पुष्टि पासवर्ड मेल नहीं खाता है।', - password_validation_title: 'पासवर्ड' - - }, - hu: { - phone_title: 'Telefonszám küldése', - phone_description: 'Ismerősök megkeresése telefonszám alapján', - phone_placeholder: 'Telefonszám', - - confirm_description: 'Megerősítési kód', - confirm_validation_title: 'Megerősítési kód', - confirm_validation_description: 'Rossz formátum', - - password_description: 'Jelszó', - password_placeholder: 'Add meg a jelszavad', - password_placeholder2: 'A megerősítéshez kérjük, add meg újra a jelszavad', - password_error: 'A jelszó nem lehet hosszabb 6 szimbólumnál.', - password_error1: 'A megerősített jelszó nem egyezik a jelszóval.', - password_validation_title: 'Jelszó' - - }, - it: { - phone_title: 'Invia numero di telefono', - phone_description: 'Trova gli amici che usano il tuo numero', - phone_placeholder: 'Numero di telefono', - - confirm_description: 'Codice di conferma', - confirm_validation_title: 'Codice di conferma', - confirm_validation_description: 'Formato errato', - - password_description: 'Password', - password_placeholder: 'Digita la tua password', - password_placeholder2: 'Reinserisci la password per confermare', - password_error: 'La password deve contenere almeno 6 caratteri.', - password_error1: 'Conferma password\ la password non corrisponde.', - password_validation_title: 'Password' - - }, - ja: { - phone_title: '電話番号を送信', - phone_description: 'あなたの番号を使用している友人を検索', - phone_placeholder: '携帯電話番号', - - confirm_description: '確認コード', - confirm_validation_title: '確認コード', - confirm_validation_description: '間違った形式', - - password_description: 'パスワード', - password_placeholder: 'パスワードを入力してください', - password_placeholder2: '確認のためにパスワードを再入力してください', - password_error: 'パスワードは6文字以下でなければなりません.', - password_error1: 'パスワードの確認がパスワードと一致しません。', - password_validation_title: 'パスワード' - - }, - ko: { - phone_title: '전화번호 보내기', - phone_description: '내 번호를 사용하여 친구 찾기', - phone_placeholder: '전화번호', - - confirm_description: '확인 코드', - confirm_validation_title: '확인 코드', - confirm_validation_description: '잘못된 형식', - - password_description: '비밀번호', - password_placeholder: '비밀번호를 입력하세요', - password_placeholder2: '확인을 위해 비밀번호를 다시 입력해 주세요', - password_error: '비밀번호는 6자 이상이어야 합니다.', - password_error1: '확인용 비밀번호가 원래 비밀번호와 일치하지 않습니다.', - password_validation_title: '비밀번호' - - }, - pl: { - phone_title: 'Wyślij numer telefonu', - phone_description: 'Znajdź znajomych, używając swojego numeru', - phone_placeholder: 'Numer telefonu', - - confirm_description: 'Kod potwierdzający', - confirm_validation_title: 'Kod potwierdzający', - confirm_validation_description: 'Nieprawidłowy format', - - password_description: 'Hasło', - password_placeholder: 'Wpisz swoje hasło', - password_placeholder2: 'Wprowadź ponownie hasło, aby potwierdzić', - password_error: 'Hasło powinno zawierać co najmniej 6 symboli.', - password_error1: 'Wprowadzone i potwierdzone hasła nie są takie same.', - password_validation_title: 'Hasło' - - }, - 'pt-br': { - phone_title: 'Enviar número de telefone', - phone_description: 'Encontrar amigos por meio do seu número', - phone_placeholder: 'Número de telefone', - - confirm_description: 'Código de confirmação', - confirm_validation_title: 'Código de confirmação', - confirm_validation_description: 'Formato incorreto', - - password_description: 'Senha', - password_placeholder: 'Digite sua senha', - password_placeholder2: 'Por favor, digite a senha novamente para confirmar', - password_error: 'A senha deve ter no mínimo 6 símbolos.', - password_error1: 'A confirmação da senha é diferente da senha.', - password_validation_title: 'Senha' - - }, - 'pt-pt': { - phone_title: 'Enviar o Número de Telefone', - phone_description: 'Encontrar amigos que utilizem o seu número', - phone_placeholder: 'Número de telefone', - - confirm_description: 'Código de confirmação', - confirm_validation_title: 'Código de confirmação', - confirm_validation_description: 'Formato errado', - - password_description: 'Palavra-passe', - password_placeholder: 'Digite a sua palavra-passe', - password_placeholder2: 'Por favor, volte a digitar a palavra-passe para confirmar', - password_error: 'A palavra-passe não deve ter menos de 6 símbolos.', - password_error1: 'A confirmação da palavra-passe não coincide com a palavra-passe.', - password_validation_title: 'Palavra-passe' - - }, - ro: { - phone_title: 'Trimite numărul de telefon', - phone_description: 'Găsește prieteni folosindu-ți numărul de telefon', - phone_placeholder: 'Număr de telefon', - - confirm_description: 'Cod de confirmare', - confirm_validation_title: 'Cod de confirmare', - confirm_validation_description: 'Format greșit', - - password_description: 'Parolă', - password_placeholder: 'Tastează parola', - password_placeholder2: 'Te rugăm să re-introduci parola pentru a confirma', - password_error: 'Parola trebuie să aibă cel puțin 6 simboluri.', - password_error1: 'Parola confirmată nu este aceeași cu parola introdusă.', - password_validation_title: 'Parolă' - - }, - sl: { - phone_title: 'Pošlji telefonsko številko', - phone_description: 'Iskanje prijateljev z uporabo tvoje telefonske številke', - phone_placeholder: 'Telefonska številka', - - confirm_description: 'Potrditvena koda', - confirm_validation_title: 'Potrditvena koda', - confirm_validation_description: 'Neveljaven format', - - password_description: 'Geslo', - password_placeholder: 'Vnesi svoje geslo', - password_placeholder2: 'Prosimo, ponovno vnesi geslo za potrditev', - password_error: 'Geslo mora vsebovati vsaj 6 simbolov.', - password_error1: 'Potrditev gesla se ne ujema z geslom.', - password_validation_title: 'Geslo' - - }, - es: { - phone_title: 'Enviar número de teléfono', - phone_description: 'Encontrar amigos que estén utilizando tu número', - phone_placeholder: 'Número de teléfono', - - confirm_description: 'Código de confirmación', - confirm_validation_title: 'Código de confirmación', - confirm_validation_description: 'Formato erróneo', - - password_description: 'Contraseña', - password_placeholder: 'Escribe tu contraseña', - password_placeholder2: 'Por favor, vuelve a escribir la contraseña para confirmar', - password_error: 'La contraseña no debe ser inferior a 6 símbolos.', - password_error1: 'La confirmación de contraseña no coincide con la contraseña.', - password_validation_title: 'Contraseña' - - }, - 'es-ar': { - phone_title: 'Envia un número telefónico', - phone_description: 'Encuentra amigos utilizando tu número', - phone_placeholder: 'Número telefónico', - - confirm_description: 'Código de confirmación', - confirm_validation_title: 'Código de confirmación', - confirm_validation_description: 'Formato incorrecto', - - password_description: 'Contraseña', - password_placeholder: 'Ingresa tu contraseña', - password_placeholder2: 'Ingresa tu contraseña para confirmar', - password_error: 'Las contraseñas deben contener no menos de 6 símbolos.', - password_error1: 'La confirmación de la contraseña no coincide con la contraseña.', - password_validation_title: 'Contraseña' - - }, - sw: { - phone_title: 'Tuma Namba ya Simu', - phone_description: 'Pata marafiki kwa kutumia namba yako', - phone_placeholder: 'Namba ya simu', - - confirm_description: 'Kificho cha uthibitisho', - confirm_validation_title: 'Kificho cha uthibitisho', - confirm_validation_description: 'Muundo hafifu', - - password_description: 'Nenosiri', - password_placeholder: 'Andika nenosiri lako', - password_placeholder2: 'Tafadhali ingiza tena nenosiri kuthibitisha', - password_error: 'Nenosiri lisiwe chini ya alama 6.', - password_error1: 'Uthibitisho wa nenosiri haulingani na nenosiri.', - password_validation_title: 'Nenosiri' - - }, - sv: { - phone_title: 'Skicka telefonnummer', - phone_description: 'Hitta vänner som använder ditt nummer', - phone_placeholder: 'Telefonnummer', - - confirm_description: 'Bekräftelsekod', - confirm_validation_title: 'Bekräftelsekod', - confirm_validation_description: 'Fel format', - - password_description: 'Lösenord', - password_placeholder: 'Skriv ditt lösenord', - password_placeholder2: 'Var god ange ditt lösenord igen för att bekräfta', - password_error: 'Lösenordet bör inte vara mindre än 6 symboler.', - password_error1: 'Lösenordsbekräftelsen matcharinte lösenordet.', - password_validation_title: 'Lösenord' - - }, - 'fr-ch': { - phone_title: 'Envoyer numéro de téléphone', - phone_description: 'Trouvez des amis en utilisant votre numéro', - phone_placeholder: 'Numéro de téléphone', - - confirm_description: 'Code de confirmation', - confirm_validation_title: 'Code de confirmation', - confirm_validation_description: 'Mauvais format', - - password_description: 'Mot de passe', - password_placeholder: 'Tapez votre mot de passe', - password_placeholder2: 'Veuillez saisir à nouveau le mot de passe pour confirmer', - password_error: 'Le mot de passe doit avoir au moins 6 caractères.', - password_error1: 'La confirmation du mot de passe ne correspond pas au premier mot de passe.', - password_validation_title: 'Mot de passe' - - }, - 'de-ch': { - phone_title: 'Sende Telefonnummer', - phone_description: 'Finde Freunde mittels deiner Telefonnummer', - phone_placeholder: 'Telefonnummer', - - confirm_description: 'Konfirmationscode', - confirm_validation_title: 'Konfirmationscode', - confirm_validation_description: 'Falsches Format', - - password_description: 'Passwort', - password_placeholder: 'Gib dein Passwort ein', - password_placeholder2: 'Bitte gib das Passwort zur Bestätigung erneut ein', - password_error: 'Passwort sollte nicht kleiner als 6 Symbole sein.', - password_error1: 'Passwort Bestätigung stimmt mit Passwort nicht überein.', - password_validation_title: 'Passwort' - - }, - 'it-ch': { - phone_title: 'Invia numero di telefono', - phone_description: 'Trova amici che utilizzano il tuo numero', - phone_placeholder: 'Numero di telefono', - - confirm_description: 'Codice di conferma', - confirm_validation_title: 'Codice di conferma', - confirm_validation_description: 'Formato errato', - - password_description: 'Password', - password_placeholder: 'Digita la tua password', - password_placeholder2: 'Inserisci nuovamente la password per confermare', - password_error: 'La password non può contenere meno di 6 caratteri.', - password_error1: 'La password di conferma non corrisponde alla password.', - password_validation_title: 'Password' - - }, - th: { - phone_title: 'ส่งหมายเลขโทรศัพท์', - phone_description: 'ค้นหาเพื่อนโดยใช้หมายเลขของคุณ ', - phone_placeholder: 'หมายเลขโทรศัพท์', - - confirm_description: 'รหัสยืนยัน', - confirm_validation_title: 'รหัสยืนยัน', - confirm_validation_description: 'รูปแบบผิด', - - password_description: 'รหัสผ่าน', - password_placeholder: 'พิมพ์รหัสผ่านของคุณ', - password_placeholder2: 'โปรดกรอกรหัสผ่านอีกครั้งเพื่อยืนยัน', - password_error: 'รหัสผ่านควรมีสัญลักษณ์ไม่น้อยกว่า 6 ตัว', - password_error1: 'การยืนยันรหัสผ่านไม่ตรงกับรหัสผ่าน', - password_validation_title: 'รหัสผ่าน' - - }, - tr: { - phone_title: 'Telefon Numarasını Gönder', - phone_description: 'Telefon numaranı kullanarak arkadaşlarınızı bulun', - phone_placeholder: 'Telefon numarası', - - confirm_description: 'Onay kodu', - confirm_validation_title: 'Onay kodu', - confirm_validation_description: 'Hatalı format', - - password_description: 'Şifre', - password_placeholder: 'Şifrenizi girin', - password_placeholder2: 'Onaylamak için lütfen parolanızı yeniden girin', - password_error: 'Şifre 6 simgeden daha kısa olmamalıdır.', - password_error1: 'Şifre onayı, şifre ile eşleşmiyor.', - password_validation_title: 'Şifre' - - }, - uk: { - phone_title: 'Надіслати номер телефону', - phone_description: 'Знайдіть друзів, використовуючи свій номер', - phone_placeholder: 'Номер телефону', - - confirm_description: 'Код підтвердження', - confirm_validation_title: 'Код підтвердження', - confirm_validation_description: 'Неправильний формат', - - password_description: 'Пароль', - password_placeholder: 'Введіть свій пароль', - password_placeholder2: 'Будь ласка, введіть пароль ще раз для підтвердження', - password_error: 'Пароль повинен бути не менше 6 символів.', - password_error1: 'Підтвердження паролю не співпадає з паролем.', - password_validation_title: 'Пароль' - - }, - ur: { - phone_title: 'فون نمبر بھیجیں', - phone_description: 'فون نمبر استعمال کرتے ہوئے دوستوں کو تلاش کریں', - phone_placeholder: 'فون نمبر', - - confirm_description: 'تصدیقی کوڈ', - confirm_validation_title: 'تصدیقی کوڈ', - confirm_validation_description: 'غلط فارمیٹ', - - password_description: 'پاسورڈ', - password_placeholder: 'اپنا پاسورڈ لکھیں', - password_placeholder2: 'برائے مہربانی تصدیق کے لیے اپنا پاسورڈ دوبارہ لکھیں', - password_error: 'پاسورڈ 6 اعداد سے چھوٹا نہیں ہونا چاہیے۔', - password_error1: 'تصدیقی پاسورڈ پاسورڈ سے مماثل نہیں', - password_validation_title: 'پاسورڈ' - - }, - vi: { - phone_title: 'Gửi số điện thoại', - phone_description: 'Tìm bạn bè bằng các sử dụng số điện thoại của bạn', - phone_placeholder: 'Số điện thoại', - - confirm_description: 'Mã xác nhận', - confirm_validation_title: 'Mã xác nhận', - confirm_validation_description: 'Sai định dạng', - - password_description: 'Mật khẩu', - password_placeholder: 'Gõ mật khẩu của bạn', - password_placeholder2: 'Vui lòng nhập lại mật khẩu để xác nhận', - password_error: 'Mật khẩu không được ít hơn 6 ký tự.', - password_error1: 'Xác nhận mật khẩu không khớp với mật khẩu.', - password_validation_title: 'Mật khẩu' - - } -}; diff --git a/bots/console/web3_metadata.js b/bots/console/web3_metadata.js deleted file mode 100644 index 13c24644d65..00000000000 --- a/bots/console/web3_metadata.js +++ /dev/null @@ -1,587 +0,0 @@ -var WEB3_UNIT = [ - 'kwei/ada', - 'mwei/babbage', - 'gwei/shannon', - 'szabo', - 'finney', - 'ether', - 'kether/grand/einstein', - 'mether', - 'gether', - 'tether' -]; - -// because web3 doesn't provide params or docs -var DOC_MAP = { - console: { - log : { - desc: 'Outputs a message to chat context.', - args: [{ - name: 'text', - type: 'String', - desc: 'message to output to chat context' - }] - } - }, - web3: { - // setProvider : ['provider'], // TODO - version: { - api: { - desc: 'The ethereum js api version.' - }, - node: { - desc: 'The client/node version.' - }, - network: { - desc: 'The network protocol version.' - }, - ethereum: { - desc: 'The ethereum protocol version.' - }, - whisper: { - desc: 'The whisper protocol version.' - }, - }, - isConnected: { - desc: 'Check if a connection to a node exists.', - args: [] - }, - currentProvider: { - desc: 'Will contain the current provider, if one is set. This can be used to check if mist etc. set already a provider.' - }, - reset: { - desc: 'Should be called to reset state of web3. Resets everything except manager. Uninstalls all filters. Stops polling.', - args: [{ - name: 'keepIsSyncing', - type: 'Boolean', - desc: 'If true it will uninstall all filters, but will keep the web3.eth.isSyncing() polls' - }] - }, - sha3: { - desc: 'Returns the Keccak-256 SHA3 of the given data.', - args: [{ - name: 'string', - type: 'String', - desc: 'The string to hash using the Keccak-256 SHA3 algorithm' - }, { - name: 'options', - type: 'Object', - optional: true, - desc: 'Set encoding to hex if the string to hash is encoded in hex. A leading 0x will be automatically ignored.' - }] - }, - toHex: { - desc: 'Converts any value into HEX', - args: [{ - name: 'mixed', - type: 'String|Number|Object|Array|BigNumber', - desc: 'The value to parse to HEX. If its an object or array it will be JSON.stringify first. If its a BigNumber it will make it the HEX value of a number.' - }] - }, - toAscii: { - desc: 'Converts a HEX string into a ASCII string.', - args: [{ - name: 'hexString', - type: 'String', - desc: 'A HEX string to be converted to ascii.' - }] - }, - fromAscii: { - desc: 'Converts any ASCII string to a HEX string.', - args: [{ - name: 'string', - type: 'String', - desc: 'An ASCII string to be converted to HEX.' - }, { - name: 'padding', - type: 'Number', - desc: 'The number of bytes the returned HEX string should have. ' - }] - }, - toDecimal: { - desc: 'Converts a HEX string to its number representation.', - args: [{ - name: 'hexString', - type: 'String', - desc: 'An HEX string to be converted to a number.' - }] - }, - fromDecimal: { - desc: 'Converts a number or number string to its HEX representation.', - args: [{ - name: 'number', - type: 'Number', - desc: 'A number to be converted to a HEX string.' - }] - }, - fromWei: { - desc: 'Converts a number of wei into an ethereum unit', - args: [{ - name: 'number', - type: 'Number|String|BigNumber', - desc: 'A number or BigNumber instance.' - }, { - name: 'unit', - type: 'string', - desc: 'One of the ether units' - }] - }, - toWei: { - desc: 'Converts an ethereum unit into wei', - args: [{ - name: 'number', - type: 'Number|String|BigNumber', - desc: 'A number or BigNumber instance.' - }, { - name: 'unit', - type: 'string', - desc: 'One of the ether units' - }] - }, - toBigNumber: { - desc: 'Converts a given number into a BigNumber instance', - args: [{ - name: 'numberOrHexString', - type: 'Number|String', - desc: 'A number, number string or HEX string of a number.' - }] - }, - net: { - listening: { - desc: 'Is node actively listening for network connections?' - }, - peerCount: { - desc: 'Returns the number of connected peers' - } - }, - isAddress: { - desc: '', - args: [{ - name: '', - type: 'string', - desc: 'hex string' - }], // TODO not in docs - }, - eth: { - defaultAccount: { - desc: 'The currently set default address' - }, - defaultBlock: { - desc: 'The default block number to use when querying a state.' - }, - syncing: { - desc: 'Returns the either a sync object, when the node is syncing or false.' - }, - isSyncing: { - desc: 'This convenience function calls the callback everytime a sync starts, updates and stops.', - args: [{ - name: 'callback', - type: 'Function', - desc: 'The callback will be fired with true when the syncing starts and with false when it stopped. While syncing it will return the syncing object: {startingBlock, currentBlock, highestBlock}' - }] - }, - coinbase: { - desc: 'Returns the coinbase address were the mining rewards go to.' - }, - mining: { - desc: 'Says whether the node is mining or not.' - }, - hashrate: { - desc: 'Returns the number of hashes per second that the node is mining with.' - }, - gasPrice: { - desc: 'Returns the current gas price. The gas price is determined by the x latest blocks median gas price' - }, - accounts: { - desc: 'Returns a list of accounts the node controls' - }, - blockNumber: { - desc: 'Returns the current block number' - }, - getBalance: { - desc: 'Get the balance of an address at a given block.', - args: [{ - name: 'addressHexString', - type: 'String', - desc: 'The address to get the balance of' - }, { - name: 'defaultBlock', - type: 'Number|String', - optional: true, - desc: 'If you pass this parameter it will not use the default block set with web3.eth.defaultBlock.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getStorageAt: { - desc: 'Get the storage at a specific position of an address.', - args: [{ - name: 'addressHexString', - type: 'String', - desc: 'The address to get the storage from.' - }, { - name: 'position', - type: 'Number', - desc: 'The index position of the storage.' - }, { - name: 'defaultBlock', - type: 'Number|String', - optional: true, - desc: 'If you pass this parameter it will not use the default block set with web3.eth.defaultBlock.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getCode: { - desc: 'Get the code at a specific address.', - args: [{ - name: 'addressHexString', - type: 'String', - desc: 'The address to get the code from.' - }, { - name: 'defaultBlock', - type: 'Number|String', - optional: true, - desc: 'If you pass this parameter it will not use the default block set with web3.eth.defaultBlock.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getBlock: { - desc: 'Returns a block matching the block number or block hash.', - args: [{ - name: 'blockHashOrBlockNumber', - type: 'String|Number', - desc: 'The block number or hash. Or the string "earliest", "latest" or "pending"' - }, { - name: 'returnTransactionObjects', - type: 'Boolean', - optional: true, - desc: '(default false) If true, the returned block will contain all transactions as objects, if false it will only contains the transaction hashes.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getBlockTransactionCount: { - desc: 'Returns the number of transaction in a given block.', - args: [{ - name: 'hashStringOrBlockNumber', - type: 'String|Number', - desc: 'The block number or hash. Or the string "earliest", "latest" or "pending"' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getUncle: { - desc: 'Returns a blocks uncle by a given uncle index position', - args: [{ - name: 'blockHashStringOrNumber', - type: 'String|Number', - desc: 'The block number or hash. Or the string "earliest", "latest" or "pending"' - }, { - name: 'uncleNumber', - type: 'Number', - desc: 'The index position of the uncle.' - }, { - name: 'returnTransactionObjects', - type: 'Boolean', - desc: '(default false) If true, the returned block will contain all transactions as objects, if false it will only contains the transaction hashes.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getBlockUncleCount: { - desc: '', // TODO missing from docs - }, - getTransaction: { - desc: 'Returns a transaction matching the given transaction hash.', - args: [{ - name: 'transactionHash', - type: 'String', - desc: 'The transaction hash.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getTransactionFromBlock: { - desc: 'Returns a transaction based on a block hash or number and the transactions index position.', - args: [{ - name: 'hashStringOrBlockNumber', - type: 'String|Number', - desc: 'The block number or hash. Or the string "earliest", "latest" or "pending"' - }, { - name: 'indexNumber', - type: 'Number', - desc: 'The transactions index position.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getTransactionReceipt: { - desc: 'Returns the receipt of a transaction by transaction hash.', - args: [{ - name: 'hashString', - type: 'String', - desc: 'The transaction hash.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - getTransactionCount: { - desc: 'Get the numbers of transactions sent from this address.', - args: [{ - name: 'addressHexString', - type: 'String', - desc: 'The address to get the numbers of transactions from.' - }, { - name: 'defaultBlock', - type: 'String|Number', - desc: 'If you pass this parameter it will not use the default block set with web3.eth.defaultBlock.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - sendTransaction: { - desc: 'Sends a transaction to the network.', - args: [{ - name: 'transactionObject', - type: 'Object', - desc: 'The transaction object to send: {from[, to][, value][, gas][, gasPrice][, data][, nonce]}' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - sendRawTransaction: { - desc: 'Sends an already signed transaction.', - args: [{ - name: 'signedTransactionData', - type: 'String', - desc: 'Signed transaction data in HEX format' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - sign: { - desc: 'Signs data from a specific account. This account needs to be unlocked.', - args: [{ - name: 'address', - type: 'String', - desc: 'Address to sign with.' - }, { - name: 'dataToSign', - type: 'String', - desc: 'Data to sign.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - call: { - desc: 'Executes a message call transaction, which is directly executed in the VM of the node, but never mined into the blockchain.', - args: [{ - name: 'callObject', - type: 'String', - desc: 'Address to sign with.' - }, { - name: 'defaultBlock', - type: 'String', - optional: true, - desc: 'Data to sign.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - estimateGas: { - desc: 'Executes a message call or transaction, which is directly executed in the VM of the node, but never mined into the blockchain and returns the amount of the gas used.', - args: [{ - name: 'callObject', - type: 'Object', - desc: 'The transaction object to send: {[from][, to][, value][, gas][, gasPrice][, data][, nonce]}' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - filter: { - // TODO: add description - desc: '', - args: [{ - name: 'options', - type: 'String|Object', - desc: 'The string "latest" or "pending" to watch for changes in the latest block or pending transactions respectively. Or a filter options object as follows: {fromBlock: Number|String, toBlock: Number|String, address: String, topics: StringArray}' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'Watch callback' - }] - }, - // TODO filters - // watch : ['callback'], - // stopWatching : ['callback'], - contract: { - desc: 'Creates a contract object for a solidity contract, which can be used to initiate contracts on an address.', - args: [{ - name: 'abiArray', - type: 'Array', - desc: 'ABI array with descriptions of functions and events of the contract.' - }] - }, - getCompilers: { - desc: 'Gets a list of available compilers.', - args: [{ - name: 'callback', - type: 'Function', - optional: true, - desc: 'If you pass a callback the HTTP request is made asynchronous.' - }] - }, - compile: { // TODO we should auto hide these depending on output from getCompilers - lll: { - desc: 'Compiles LLL source code.', - args: [{ - name: 'sourceString', - type: 'String', - desc: 'The LLL source code.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'Watch callback' - }] - }, - solidity: { - desc: 'Compiles solidity source code', - args: [{ - name: 'sourceString', - type: 'String', - desc: 'The solidity source code.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'Watch callback' - }], - }, - serpent: { - desc: 'Compiles serpent source code', - args: [{ - name: 'sourceString', - type: 'String', - desc: 'The serpent source code.' - }, { - name: 'callback', - type: 'Function', - optional: true, - desc: 'Watch callback' - }] - } - }, - namereg: { - desc: 'Returns GlobalRegistrar object.' - } - }, - - db: { - putString: { - desc: 'Store a string in the local leveldb database.', - args: [{ - name: 'db', - type: 'String', - desc: 'The database to store to.' - }, { - name: 'key', - type: 'String', - desc: 'The name of the store.' - }, { - name: 'value', - type: 'String', - desc: 'The string value to store.' - }] - }, - getString: { - desc: 'Retrieve a string from the local leveldb database. (db, key)', - args: [{ - name: 'db', - type: 'String', - desc: 'The database string name to retrieve from.' - }, { - name: 'key', - type: 'String', - desc: 'The name of the store.' - }] - }, - putHex: { - desc: 'Store binary data in the local leveldb database. (db, key, value)', - args: [{ - name: 'db', - type: 'String', - desc: 'The database to store to.' - }, { - name: 'key', - type: 'String', - desc: 'The name of the store.' - }, { - name: 'value', - type: 'String', - desc: 'The HEX string to store.' - }] - }, - getHex: { - desc: 'Retrieve binary data from the local leveldb database. (db, key)', - args: [{ - name: 'db', - type: 'String', - desc: 'The database string name to retrieve from.' - }, { - name: 'key', - type: 'String', - desc: 'The name of the store.' - }] - } - } - } -}; diff --git a/bots/demo_bot/bot.js b/bots/demo_bot/bot.js deleted file mode 100644 index 43ceeb17ec3..00000000000 --- a/bots/demo_bot/bot.js +++ /dev/null @@ -1,109 +0,0 @@ -function round(n) { - return Math.round(n * 100) / 100; -} - -function doubledValueLabel(params) { - var value = round(params.value); - return "sliderValue = " + value + - "; (2 * sliderValue) = " + (2 * value); -} - -status.defineSubscription( - // the name of subscription and the name of the value in bot-db - // associated with this subscription - "doubledValue", - // the map of values on which subscription depends: keys are arbitrary names - // and values are db paths to another value - {value: ["sliderValue"]}, - // the function which will be called as reaction on changes of values above, - // should be pure. Returned result will be associated with subscription in bot-db - doubledValueLabel -); - -status.defineSubscription( - "roundedValue", - {value: ["sliderValue"]}, - function (params) { - return round(params.value); - } -); - -function demoSuggestions(params, context) { - var balance = parseFloat(web3.fromWei(web3.eth.getBalance(context.from), "ether")); - var defaultSliderValue = balance / 2; - - var view = ["view", {}, - ["text", {}, "Balance " + balance + " ETH"], - ["text", {}, ["subscribe", ["doubledValue"]]], - ["slider", { - maximumValue: ["subscribe", ["balance"]], - value: defaultSliderValue, - minimumValue: 0, - onSlidingComplete: ["dispatch", ["set", "sliderValue"]], - step: 0.05 - }], - ['touchable', - {onPress: ['dispatch', ["set-value-from-db", "roundedValue"]]}, - ["view", {}, ["text", {}, "Set value"]] - ], - ["text", {style: {color: "red"}}, ["subscribe", ["validationText"]]] - ]; - - status.setDefaultDb({ - sliderValue: defaultSliderValue, - doubledValue: doubledValueLabel({value: defaultSliderValue}) - }); - - var validationText = ""; - - if (typeof params !== 'undefined') { - if (isNaN(params.message)) { - validationText = "That's not a float number!"; - } else if (parseFloat(params.message) > balance) { - validationText = - "Input value is too big!" + - " You have only " + balance + " ETH on your balance!"; - } - } - status.updateDb({ - balance: balance, - validationText: validationText - }); - - return {markup: view}; -}; - -status.addListener("on-message-input-change", demoSuggestions); -status.addListener("init", demoSuggestions); -status.addListener("on-message-send", function (params, context) { - var cnt = localStorage.getItem("cnt"); - if(!cnt) { - cnt = 0; - } - - cnt++; - - localStorage.setItem("cnt", cnt); - if (isNaN(params.message)) { - return {"text-message": "Seems that you don't want to send money :(. cnt = " + cnt}; - } - - var balance = web3.eth.getBalance(context.from); - var value = parseFloat(params.message); - var weiValue = web3.toWei(value, "ether"); - if (bn(weiValue).greaterThan(bn(balance))) { - return {"text-message": "No way man, you don't have enough money! :)"}; - } - web3.eth.sendTransaction({ - from: context.from, - to: context.from, - value: weiValue - }, function (error, hash) { - if (error) { - status.sendMessage("Something went wrong, try again :("); - status.showSuggestions(demoSuggestions(params, context).markup); - } else { - status.sendMessage("You are the hero, you sent " + value + " ETH to yourself!") - } - }); -}); diff --git a/bots/mailman/bot.js b/bots/mailman/bot.js deleted file mode 100644 index 75f9df04cc5..00000000000 --- a/bots/mailman/bot.js +++ /dev/null @@ -1,51 +0,0 @@ -status.command({ - name: "location", - icon: "location", - title: I18n.t('location_title'), - description: I18n.t('location_description'), - color: "#a187d5", - sequentialParams: true, - registeredOnly: true, - params: [{ - name: "address", - type: status.types.TEXT, - placeholder: I18n.t('location_address') - }], - preview: function (params) { - var text = status.components.text( - { - style: { - marginTop: 5, - marginHorizontal: 0, - fontSize: 14, - fontFamily: "font", - color: "black" - } - }, params.address); - var uri = "https://maps.googleapis.com/maps/api/staticmap?center=" - + params.address - + "&size=100x100&maptype=roadmap&key=AIzaSyBNsj1qoQEYPb3IllmWMAscuXW0eeuYqAA&language=en" - + "&markers=size:mid%7Ccolor:0xff0000%7Clabel:%7C" - + params.address; - - var image = status.components.image( - { - source: {uri: uri}, - style: { - width: 100, - height: 100 - } - } - ); - - return {markup: status.components.view({}, [text, image])}; - }, - shortPreview: function (params) { - return { - markup: status.components.text( - {}, - I18n.t('location_title') + ": " + params.address - ) - }; - } -}); diff --git a/bots/mailman/translations.js b/bots/mailman/translations.js deleted file mode 100644 index 3ebb67c6f0c..00000000000 --- a/bots/mailman/translations.js +++ /dev/null @@ -1,167 +0,0 @@ -I18n.translations = { - en: { - location_title: 'Location', - location_description: 'Share your location', - location_address: 'Address' - }, - ru: { - location_title: 'Местоположение', - location_description: 'Поделитесь своим местоположением', - location_address: 'Адрес' - }, - af: { - location_title: 'Ligging', - location_description: 'Deel jou ligging', - location_address: 'Addres' - }, - ar: { - location_title: 'الموقع', - location_description: 'شارك موقعك', - location_address: 'العنوان' - }, - 'zh-hant': { - location_title: '位置', - location_description: '分享您的位置', - location_address: '地址' - }, - 'zh-hans': { - location_title: '位置', - location_description: '分享你的位置', - location_address: '地址' - }, - 'zh-yue': { - location_title: '所在位置', - location_description: '分享所在位置', - location_address: '地址' - }, - 'zh-wuu': { - location_title: '位置', - location_description: '分享您的位置', - location_address: '地址' - }, - nl: { - location_title: 'Locatie', - location_description: 'Deel je locatie', - location_address: 'Adres' - }, - fr: { - location_title: 'Emplacement', - location_description: 'Partager votre emplacement', - location_address: 'Adresse' - }, - de: { - location_title: 'Ort', - location_description: 'Teilen Sie Ihren Ort', - location_address: 'Adresse' - }, - hi: { - location_title: 'स्थान', - location_description: 'अपना स्थान साझा करें', - location_address: 'पता' - }, - hu: { - location_title: 'Helyszín', - location_description: 'Helyszín megosztása', - location_address: 'Cím' - }, - it: { - location_title: 'Posizione', - location_description: 'Condividi la tua posizione', - location_address: 'Indirizzo' - }, - ja: { - location_title: '位置', - location_description: '位置情報を共有', - location_address: 'アドレス' - }, - ko: { - location_title: '위치', - location_description: '내 위치 공유하기', - location_address: '주소' - }, - pl: { - location_title: 'Lokalizacja', - location_description: 'Udostępnij swoją lokalizację', - location_address: 'Adres' - }, - 'pt-br': { - location_title: 'Localização', - location_description: 'Compartilhar sua localização', - location_address: 'Endereço' - }, - 'pt-pt': { - location_title: 'Location', - location_description: 'Partilhar a sua localização', - location_address: 'Endereço' - }, - ro: { - location_title: 'Locație', - location_description: "Partajează locația", - location_address: 'Adresă' - }, - sl: { - location_title: 'Lokacija', - location_description: 'Deli svojo lokacijo', - location_address: 'Naslov' - }, - es: { - location_title: 'Ubicación', - location_description: 'Comparte tu ubicación', - location_address: 'Dirección' - }, - 'es-ar': { - location_title: 'Ubicación', - location_description: 'Comparte tu ubicación', - location_address: 'Dirección' - }, - sw: { - location_title: 'Eneo', - location_description: 'Shiriki eneo lako', - location_address: 'Anwani' - }, - sv: { - location_title: 'Plats', - location_description: 'Dela din plats', - location_address: 'Adress' - }, - 'fr-ch': { - location_title: 'Emplacement', - location_description: 'Partagez votre emplacement', - location_address: 'Adresse' - }, - 'de-ch': { - location_title: 'Standort', - location_description: 'Teile deinen Standort', - location_address: 'Adresse' - }, - 'it-ch': { - location_title: 'Posizione', - location_description: 'Condividi la tua posizione', - location_address: 'Indirizzo' - }, - th: { - location_title: 'ตำแหน่ง', - location_description: 'แชร์ตำแหน่งของคุณ', - location_address: 'ที่อยู่' - }, - tr: { - location_title: 'Konum', - location_description: 'Konumunuzu paylaşın', - location_address: 'Adres' - }, - uk: { - location_title: 'Місцезнаходження', - location_description: 'Поділіться своїм місцезнаходженням', - location_address: 'Адреса' - }, - ur: { - location_title: 'مقام', - location_description: 'اپنا مقام بتائیں', - location_address: 'پتہ' - }, - vi: { - location_title: 'Vị trí', - location_description: 'Chia sẻ vị trí của bạn', - location_address: 'Địa chỉ' - } -}; diff --git a/bots/wallet/bot.js b/bots/wallet/bot.js deleted file mode 100644 index 1e0b11b5eaa..00000000000 --- a/bots/wallet/bot.js +++ /dev/null @@ -1,217 +0,0 @@ -function validateSend(params, context) { - if (!context.to) { - return { - markup: status.components.validationMessage( - "Wrong address", - "Recipient address must be specified" - ) - }; - } - if (!params.amount) { - return { - markup: status.components.validationMessage( - I18n.t('validation_title'), - I18n.t('validation_amount_specified') - ) - }; - } - - var amount = params.amount.replace(",", "."); - var amountSplitted = amount.split("."); - if (amountSplitted.length === 2 && amountSplitted[1].length > 18) { - return { - markup: status.components.validationMessage( - I18n.t('validation_title'), - I18n.t('validation_amount_is_too_small') - ) - }; - } - - try { - var val = web3.toWei(amount, "ether"); - if (val <= 0) { - throw new Error(); - } - } catch (err) { - return { - markup: status.components.validationMessage( - I18n.t('validation_title'), - I18n.t('validation_invalid_number') - ) - }; - } - - var balance = web3.eth.getBalance(context.from); - var estimatedGas = web3.eth.estimateGas({ - from: context.from, - to: context.to, - value: val - }); - - if (bn(val).plus(bn(estimatedGas)).greaterThan(bn(balance))) { - return { - markup: status.components.validationMessage( - I18n.t('validation_title'), - I18n.t('validation_insufficient_amount') - + web3.fromWei(balance, "ether") - + " ETH)" - ) - }; - } -} - -function sendTransaction(params, context) { - var data = { - from: context.from, - to: context.to, - value: web3.toWei(params.amount.replace(",", "."), "ether") - }; - - try { - return web3.eth.sendTransaction(data); - } catch (err) { - return {error: err.message}; - } -} - -var send = { - name: "send", - icon: "money_white", - color: "#5fc48d", - title: I18n.t('send_title'), - description: I18n.t('send_description'), - sequentialParams: true, - params: [{ - name: "amount", - type: status.types.NUMBER - }], - preview: function (params, context) { - var amountStyle = { - fontSize: 36, - color: "#000000", - height: 40 - }; - - var amount = status.components.view( - { - flexDirection: "column", - alignItems: "flex-end", - }, - [status.components.text( - { - style: amountStyle, - font: "light" - }, - status.localizeNumber(params.amount, context.delimiter, context.separator) - )]); - - var currency = status.components.view( - { - style: { - flexDirection: "column", - justifyContent: "flex-end", - paddingBottom: 0 - } - }, - [status.components.text( - { - style: { - color: "#9199a0", - fontSize: 16, - lineHeight: 18, - marginLeft: 7.5 - } - }, - "ETH" - )] - ); - - return { - markup: status.components.view( - { - style: { - flexDirection: "row", - justifyContent: "space-between", - marginTop: 8, - marginBottom: 8 - } - }, - [amount, currency] - ) - }; - }, - shortPreview: function (params, context) { - return { - markup: status.components.text( - {}, - I18n.t('send_title') + ": " - + status.localizeNumber(params.amount, context.delimiter, context.separator) - + " ETH" - ) - }; - }, - handler: sendTransaction, - validator: validateSend -}; - -status.command(send); -status.response(send); - -status.command({ - name: "request", - color: "#5fc48d", - title: I18n.t('request_title'), - description: I18n.t('request_description'), - sequentialParams: true, - params: [{ - name: "amount", - type: status.types.NUMBER - }], - handler: function (params) { - return { - event: "request", - params: [params.amount], - request: { - command: "send", - params: { - amount: params.amount - } - } - }; - }, - preview: function (params, context) { - return { - markup: status.components.text( - {}, - I18n.t('request_requesting') + " " - + status.localizeNumber(params.amount, context.delimiter, context.separator) - + " ETH" - ) - }; - }, - shortPreview: function (params, context) { - return { - markup: status.components.text( - {}, - I18n.t('request_requesting') + " " - + status.localizeNumber(params.amount, context.delimiter, context.separator) - + " ETH" - ) - }; - }, - validator: function (params) { - try { - var val = web3.toWei(params.amount.replace(",", "."), "ether"); - if (val <= 0) { - throw new Error(); - } - } catch (err) { - return { - markup: status.components.validationMessage( - I18n.t('validation_title'), - I18n.t('validation_invalid_number') - ) - }; - } - } -}); diff --git a/bots/wallet/translations.js b/bots/wallet/translations.js deleted file mode 100644 index 1e0c28f858f..00000000000 --- a/bots/wallet/translations.js +++ /dev/null @@ -1,433 +0,0 @@ -I18n.translations = { - en: { - send_title: 'Send ETH', - send_description: 'Send a payment', - - request_title: 'Request ETH', - request_description: 'Request a payment', - request_requesting: 'Requesting ', - - validation_title: 'Amount', - validation_amount_specified: 'Amount must be specified', - validation_invalid_number: 'Amount is not valid number', - validation_amount_is_too_small: 'Amount is too precise. The smallest unit you can send is 1 Wei (1x10^-18 ETH)', - validation_insufficient_amount: 'Insufficient funds for gas * price + value (balance ' - }, - ru: { - send_title: 'Отправить ETH', - send_description: 'Отправить платеж', - - request_title: 'Запросить ETH', - request_description: 'Запросить платеж', - request_requesting: 'Запрос ', - - validation_title: 'Сумма', - validation_amount_specified: 'Необходимо указать сумму', - validation_invalid_number: 'Сумма не является действительным числом', - validation_amount_is_too_small: 'Сумма излишне точная. Минимальная единица, которую можно отправить — 1 Wei (1x10^-18 ETH)', - validation_insufficient_amount: 'Недостаточно ETH на балансе (' - }, - af: { - send_title: 'Stuur ETH', - send_description: 'Stuur \'n betaling', - - request_title: 'Versoek ETH', - request_description: 'Versoek \'n betaling', - request_requesting: 'Besig met versoek ', - - validation_title: 'Bedrag', - validation_amount_specified: 'Bedrag moet gespesifiseer word', - validation_invalid_number: 'Bedrag is nie \'n geldige syfer nie', - validation_insufficient_amount: 'Nie genoeg ETH in rekening nie (' - }, - ar: { - send_title: 'إرسال ETH', - send_description: 'إرسال مدفوعات', - - request_title: 'طلب ETH', - request_description: 'طلب مدفوعات', - request_requesting: 'مُطَالَبَة ', - - validation_title: 'المبلغ', - validation_amount_specified: 'يجب تحديد المبلغ', - validation_invalid_number: 'المبلغ المحدد غير صحيح', - validation_insufficient_amount: 'لا يوجد ETH كافي بالحساب (' - }, - 'zh-hant': { - send_title: '發送 ETH', - send_description: '發送一筆付款', - - request_title: '請求 ETH', - request_description: '請求一筆付款', - request_requesting: '正在請求 ', - - validation_title: '金額', - validation_amount_specified: 'ي未指定金額', - validation_invalid_number: '金額數字無效', - validation_insufficient_amount: '餘額中 ETH 不足 (' - }, - 'zh-hans': { - send_title: '发送ETH', - send_description: '付款', - - request_title: '请求ETH', - request_description: '要求付款', - request_requesting: '正在请求 ', - - validation_title: '金額', - validation_amount_specified: '必须指定金额', - validation_invalid_number: '金额不是有效数字', - validation_insufficient_amount: 'ETH余额不足 (' - }, - 'zh-yue': { - send_title: '發送ETH', - send_description: '發送付款', - - request_title: '徵求ETH', - request_description: '徵求付款', - request_requesting: '徵求中 ', - - validation_title: '金額', - validation_amount_specified: '必須指定金額', - validation_invalid_number: '指定金額並非有效數字', - validation_insufficient_amount: '沒有足夠ETH餘額 (' - }, - 'zh-wuu': { - send_title: '发送ETH', - send_description: '发送付款', - - request_title: '请求ETH', - request_description: '请求付款', - request_requesting: '请求中 ', - - validation_title: '金额', - validation_amount_specified: '金额必须明确', - validation_invalid_number: '金额不是一个有效数字', - validation_insufficient_amount: 'ETH余额不足 (' - }, - nl: { - send_title: 'Stuur ETH', - send_description: 'Stuur een betaling', - - request_title: 'Vraag ETH aan', - request_description: 'Vraag om een betaling', - request_requesting: 'Wordt aangevraagd ', - - validation_title: 'Bedrag', - validation_amount_specified: 'Bedrag moet worden opgegeven', - validation_invalid_number: 'Bedrag is geen geldig nummer', - validation_insufficient_amount: 'Niet genoeg ETH op saldo (' - }, - fr: { - send_title: 'Envoyer l\'ETH', - send_description: 'Envoyer un paiement', - - request_title: 'Demander l\'ETH', - request_description: 'Demander un paiement', - request_requesting: 'Demande en cours: ', - - validation_title: 'Montant', - validation_amount_specified: 'Le montant doit être spécifié', - validation_invalid_number: 'Le montant n\'est pas un nombre valide', - validation_insufficient_amount: 'Pas assez d\'ETH sur le solde (' - }, - de: { - send_title: 'ETH abschicken', - send_description: 'Zahlung senden', - - request_title: 'ETH anfragen', - request_description: 'Zahlung anfragen', - request_requesting: 'Anfrage: ', - - validation_title: 'Betrag', - validation_amount_specified: 'Betrag muss angegeben werden', - validation_invalid_number: 'Betrag ist keine gültige Zahl', - validation_insufficient_amount: 'Nicht genügend ETH auf dem Konto (' - }, - hi: { - send_title: 'ETH भेजें', - send_description: 'भुगतान भेजें', - - request_title: 'ETH का अनुरोध करें', - request_description: 'भुगतान का अनुरोध करें', - request_requesting: 'अनुरोध किया जा रहा है ', - - validation_title: 'राशि', - validation_amount_specified: 'राशि निर्दिष्ट की जानी चाहिए', - validation_invalid_number: 'राशि वैध संख्या नहीं है', - validation_insufficient_amount: 'बैलेंस पर पर्याप्त ETH नहीं है (' - }, - hu: { - send_title: 'ETH küldése', - send_description: 'Kifizetés küldése', - - request_title: 'ETH igénylése', - request_description: 'Fizetés igénylése', - request_requesting: 'Igénylés ', - - validation_title: 'Összeg', - validation_amount_specified: 'Az összeget meg kell határozni', - validation_invalid_number: 'Az összeg nem egy elfogadott szám', - validation_insufficient_amount: 'Nincs elég ETH a számlán (' - }, - it: { - send_title: 'Invia ETH', - send_description: 'Invia un pagamento', - - request_title: 'Richiedi ETH', - request_description: 'Richiedi un pagamento', - request_requesting: 'Richiesta in corso: ', - - validation_title: 'Ammontare', - validation_amount_specified: 'L\'ammontare deve essere specificato', - validation_invalid_number: 'L\'ammontare non è un numero valido', - validation_insufficient_amount: 'ETH insufficiente sul bilancio (' - }, - ja: { - send_title: 'ETHを送信', - send_description: '支払いを送信', - - request_title: 'ETHをリクエスト', - request_description: '支払いをリクエスト', - request_requesting: 'リクエスト中 ', - - validation_title: '金額', - validation_amount_specified: '金額を特定する必要があります', - validation_invalid_number: '金額は有効な数字ではありません', - validation_insufficient_amount: '残高に十分なETHがありません(' - }, - ko: { - send_title: 'ETH 보내기', - send_description: '지불금 보내기', - - request_title: 'ETH 요청', - request_description: '지불금 요청', - request_requesting: '요청 중 ', - - validation_title: '금액', - validation_amount_specified: '금액을 지정해야 합니다', - validation_invalid_number: '금액이 유효한 숫자가 아닙니다', - validation_insufficient_amount: 'ETH 잔고가 부족합니다 (' - }, - pl: { - send_title: 'Wyślij ETH', - send_description: 'Wyślij płatność', - - request_title: 'Poproś o ETH', - request_description: 'Poproś o płatność', - request_requesting: 'Przesyłanie prośby ', - - validation_title: 'Kwota', - validation_amount_specified: 'Należy określić kwotę', - validation_invalid_number: 'Kwota nie jest prawidłową liczbą', - validation_insufficient_amount: 'Brak wystarczającej liczby ETH na koncie (' - }, - 'pt-br': { - send_title: 'Enviar ETH', - send_description: 'Enviar um pagamento', - - request_title: 'Solicitar ETH', - request_description: 'Solicitar um pagamento', - request_requesting: 'Solicitando ', - - validation_title: 'Quantia', - validation_amount_specified: 'É necessário especificar a quantia', - validation_invalid_number: 'A quantia não é um número válido', - validation_insufficient_amount: 'ETH insuficiente no saldo (' - }, - 'pt-pt': { - send_title: 'Enviar ETH', - send_description: 'Enviar um pagamento', - - request_title: 'Solicitar ETH', - request_description: 'Solicitar um pagamento', - request_requesting: 'A solicitar ', - - validation_title: 'Montante', - validation_amount_specified: 'O montante deve ser especificado', - validation_invalid_number: 'O montante não é um número válido', - validation_insufficient_amount: 'Não há ETH suficiente no saldo (' - }, - ro: { - send_title: 'Trimite ETH', - send_description: 'Trimite o plată', - - request_title: 'Solicită ETH', - request_description: 'Solicită o plată', - request_requesting: 'Se solicită ', - - validation_title: 'Sumă', - validation_amount_specified: 'Trebuie menționată o sumă', - validation_invalid_number: 'Suma nu are forma unui număr valid', - validation_insufficient_amount: 'Sold ETH insuficient (' - }, - sl: { - send_title: 'Pošlji ETH', - send_description: 'Pošlji plačilo', - - request_title: 'Zahtevaj ETH', - request_description: 'Zahtevaj plačilo', - request_requesting: 'Zahtevam ', - - validation_title: 'Vsota', - validation_amount_specified: 'Vsota mora biti izrecno navedena', - validation_invalid_number: 'Vsota ni veljavna številka', - validation_insufficient_amount: 'Stanje ETH na računu je prenizko (' - }, - es: { - send_title: 'Enviar ETH ', - send_description: 'Enviar un pago', - - request_title: 'Solicitar ETH', - request_description: 'Solicitar un pago', - request_requesting: 'Solicitando ', - - validation_title: 'Cantidad', - validation_amount_specified: 'Hay que especificar la cantidad', - validation_invalid_number: 'La cantidad no es un número válido', - validation_insufficient_amount: 'No hay suficiente ETH en conjunto (' - }, - 'es-ar': { - send_title: 'Enviar ETH', - send_description: 'Enviar un pago', - - request_title: 'Solicitar ETH', - request_description: 'Solicitar un pago', - request_requesting: 'Solicitando ', - - validation_title: 'Monto', - validation_amount_specified: 'Debes especificar el monto', - validation_invalid_number: 'El monto no es un número válido', - validation_insufficient_amount: 'No tienes suficiente ETH en tu saldo (' - }, - sw: { - send_title: 'Tuma ETH', - send_description: 'Tuma malipo', - - request_title: 'Omba ETH', - request_description: 'Omba malipo', - request_requesting: 'Kuomba ', - - validation_title: 'Kiasi', - validation_amount_specified: 'Kiasi lazima kifafanuliwe', - validation_invalid_number: 'Kiasi si nambari halali', - validation_insufficient_amount: 'ETH haitoshi kwenye salio (' - }, - sv: { - send_title: 'Skicka ETH', - send_description: 'Skicka en betalning', - - request_title: 'Begär ETH', - request_description: 'Begär en betalning', - request_requesting: 'Begär ', - - validation_title: 'Belopp', - validation_amount_specified: 'Beloppet måste anges', - validation_invalid_number: 'Beloppet är inte ett giltigt nummer', - validation_insufficient_amount: 'Inte tillräcklig ETH på balansen (' - }, - 'fr-ch': { - send_title: 'Envoyer des ETH', - send_description: 'Envoyer un paiement', - - request_title: 'Demander des ETH', - request_description: 'Demander un paiement', - request_requesting: 'Demande ', - - validation_title: 'Montant', - validation_amount_specified: 'Le montant doit être spécifié', - validation_invalid_number: 'Le montant n\'est pas un nombre valable', - validation_insufficient_amount: 'Pas assez d\'ETH sur le solde (' - }, - 'de-ch': { - send_title: 'Sende ETH', - send_description: 'Sende eine Zahlung', - - request_title: 'Fordere ETH an', - request_description: 'Eine Zahlung anfordern', - request_requesting: 'Anfordern ', - - validation_title: 'Betrag', - validation_amount_specified: 'Der Betrag muss angegeben werden', - validation_invalid_number: 'Der Betrag ist nicht gültig', - validation_insufficient_amount: 'Nicht genug ETH vorhanden (' - }, - 'it-ch': { - send_title: 'Invia ETH', - send_description: 'Invia un pagamento', - - request_title: 'Richiedi ETH', - request_description: 'Richiedi un pagamento', - request_requesting: 'Richiesta in corso: ', - - validation_title: 'Importo', - validation_amount_specified: 'Specificare l\'importo', - validation_invalid_number: 'Importo inserito non valido', - validation_insufficient_amount: 'Saldo ETH non sufficiente (' - }, - th: { - send_title: 'ส่ง ETH', - send_description: 'ส่งการชำระเงิน', - - request_title: 'ร้องขอ ETH', - request_description: 'ร้องขอการชำระเงิน', - request_requesting: 'กำลังร้องขอ ', - - validation_title: 'จำนวน', - validation_amount_specified: 'จำเป็นต้องระบุจำนวน', - validation_invalid_number: 'จำนวนไม่ใช่หมายเลขที่ถูกต้อง', - validation_insufficient_amount: 'มี ETH ไม่เพียงพอในยอดคงเหลือ (' - }, - tr: { - send_title: 'ETH gönder', - send_description: 'Bir ödeme gönder', - - request_title: 'ETH iste', - request_description: 'Bir ödeme iste', - request_requesting: 'İsteniyor ', - - validation_title: 'Miktar', - validation_amount_specified: 'Miktar belirtilmelidir', - validation_invalid_number: 'Miktar geçerli bir sayı değil', - validation_insufficient_amount: 'Yeterli ETH bakiyesi yok (' - }, - uk: { - send_title: 'Надіслати ETH', - send_description: 'Надіслати платіж', - - request_title: 'Запит ETH', - request_description: 'Запит платежу', - request_requesting: 'Запит ', - - validation_title: 'Сума', - validation_amount_specified: 'Сума повинна бути вказана', - validation_invalid_number: 'Сума не дійсне число', - validation_insufficient_amount: 'Не вистачає ETH на балансі (' - }, - ur: { - send_title: 'ETH بھیجیں', - send_description: 'ادائیگی کریں', - - request_title: 'ETH کی درخواست دیں', - request_description: 'ادائیگی کی درخواست دیں', - request_requesting: 'درخواست کی جارہی ہے ', - - validation_title: 'رقم', - validation_amount_specified: 'رقم درج کی جانی چاہیے۔ ', - validation_invalid_number: 'رقیم درست ہندسے نہیں ہیں', - validation_insufficient_amount: 'ETH میں کافی بیلنس نہیں ہے (' - }, - vi: { - send_title: 'Gửi ETH', - send_description: 'Gửi một khoản thanh toán', - - request_title: 'Yêu cầu ETH', - request_description: 'Yêu cầu một khoản thanh toán', - request_requesting: 'Đang yêu cầu ', - - validation_title: 'Số tiền', - validation_amount_specified: 'Số tiền phải được xác định', - validation_invalid_number: 'Số tiền không phải là một số hợp lệ', - validation_insufficient_amount: 'Không đủ ETH trong số dư (' - } -}; diff --git a/ci/Jenkinsfile b/ci/Jenkinsfile new file mode 120000 index 00000000000..35f8dace385 --- /dev/null +++ b/ci/Jenkinsfile @@ -0,0 +1 @@ +Jenkinsfile.combined \ No newline at end of file diff --git a/ci/Jenkinsfile.android b/ci/Jenkinsfile.android new file mode 100644 index 00000000000..9f8cd46a3fe --- /dev/null +++ b/ci/Jenkinsfile.android @@ -0,0 +1,88 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +/* Options section can't access functions in objects. */ +def isPRBuild = utils.isPRBuild() + +pipeline { + agent { label 'linux && x86_64 && nix-2.24' } + + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 30, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '20', + artifactNumToKeepStr: '1', + )) + /* Allows combined build to copy */ + copyArtifactPermission('/status-mobile/*') + /* Abort old PR builds. */ + disableConcurrentBuilds( + abortPrevious: isPRBuild + ) + } + + parameters { + string( + name: 'BUILD_TYPE', + description: 'Specify build type. Values: pr / e2e / nightly / release', + defaultValue: 'pr', + ) + } + + environment { + LANG = 'en_US.UTF-8' + LC_ALL = 'en_US.UTF-8' + LANGUAGE = 'en_US.UTF-8' + PLATFORM = "android${utils.isE2EBuild() ? "-e2e" : ""}" + BUILD_ENV = 'prod' + NIX_CONF_DIR = "${env.WORKSPACE}/nix" + FASTLANE_DISABLE_COLORS = 1 + SENTRY_PRODUCTION = "${utils.isReleaseBuild() ? 'true' : 'false'}" + } + + stages { + stage('Prep') { + steps { + script { + utils.symlinkEnv() + println("Build Number: ${utils.genBuildNumber()}") + } + } + } + stage('Bundle') { + steps { + script { apks = android.bundle() } + } + } + stage('Sign') { + steps { + script { apks = android.sign(apks) } + } + } + stage('Parallel Upload') { + parallel { + stage('Archive') { + steps { script { + apks.each { archiveArtifacts it } + } } + } + stage('Upload') { + steps { script { + def urls = apks.collect { s5cmd.upload(it) } + env.PKG_URL = urls.first() + jenkins.setBuildDesc(APK: env.PKG_URL) + } } + } + } + } + } + post { + success { script { github.notifyPR(true) } } + failure { script { github.notifyPR(false) } } + always { sh 'make purge' } + } +} diff --git a/ci/Jenkinsfile.combined b/ci/Jenkinsfile.combined new file mode 100644 index 00000000000..1d21a717806 --- /dev/null +++ b/ci/Jenkinsfile.combined @@ -0,0 +1,136 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +import groovy.json.JsonBuilder + +pipeline { + agent { label 'linux' } + + options { + timestamps() + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 40, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + /* WARNING: Defining parameters here with the ?: trick causes them to remember last value. */ + parameters { + choice( + name: 'BUILD_TYPE', + description: 'Makefile target to build. Optional Parameter.', + choices: genChoices(params.BUILD_TYPE, ['manual', 'nightly', 'release', 'pr', 'e2e']), + ) + booleanParam( + name: 'PUBLISH', + description: 'Trigger publishing of build results for nightly or release.', + defaultValue: getPublishDefault(params.PUBLISH), + ) + } + + stages { + stage('Prep') { + steps { script { + println("Current JOB: ${env.JOB_NAME}") + } } + } + stage('Build') { + parallel { + stage('iOS') { steps { script { + ios = jenkins.Build('status-mobile/platforms/ios') + } } } + stage('Android') { steps { script { + apk = jenkins.Build('status-mobile/platforms/android') + } } } + stage('Tests') { steps { script { + jenkins.Build('status-mobile/platforms/tests') + } } } + } + } + stage('Archive') { + steps { script { + sh('rm -f pkg/*') + jenkins.copyArts(ios) + jenkins.copyArts(apk) + sha = "pkg/${utils.pkgFilename(ext: 'sha256')}" + dir('pkg') { + /* generate sha256 checksums for upload */ + sh "sha256sum * | tee ../${sha}" + archiveArtifacts('*') + } + } } + } + stage('Upload') { + steps { script { + /* object for easier URLs handling */ + urls = [ + /* mobile */ + Apk: utils.pkgUrl(apk), + iOS: utils.pkgUrl(ios), + Diawi: utils.getEnv(ios, 'DIAWI_URL'), + /* upload the sha256 checksums file too */ + SHA: s5cmd.upload(sha), + ] + /* add URLs to the build description */ + jenkins.setBuildDesc(urls) + } } + } + stage('Publish') { + when { expression { params.PUBLISH } } + steps { script { + switch (utils.getBuildType()) { + case 'nightly': /* Create JSON file with newest build URLs */ + updateBucketJSON(urls, 'latest.json'); + break; + case 'release': + github.publishReleaseFiles(repo: 'status-mobile'); + break; + } + } } + } + } +} + +/* Helper that generates list of available choices for a parameter + * but re-orders them based on the currently set value. First is default. */ +def List genChoices(String previousChoice, List defaultChoices) { + if (previousChoice == null) { + return defaultChoices + } + choices = defaultChoices.minus(previousChoice) + choices.add(0, previousChoice) + return choices +} + +/* Helper that makes PUBLISH default to 'false' unless: + * - The build is for a release branch + * - A user explicitly specified a value + * Since release builds create and re-create GitHub drafts every time. */ +def Boolean getPublishDefault(Boolean previousValue) { + if (env.JOB_NAME.startsWith('status-mobile/release')) { return true } + if (previousValue != null) { return previousValue } + return false +} + +/* Helper for updating JSON with newest builds. */ +def updateBucketJSON(urls, fileName) { + /* latest.json has slightly different key names */ + def content = [ + DIAWI: urls.Diawi, + APK: urls.Apk, IOS: urls.iOS, + APP: urls.App, MAC: urls.Mac, + WIN: urls.Win, SHA: urls.SHA + ] + def filePath = "${pwd()}/pkg/${fileName}" + /* it might not exist */ + sh "mkdir -p ${pwd()}/pkg" + def contentJson = new JsonBuilder(content).toPrettyString() + println "${filePath}:\n${contentJson}" + writeFile(file: filePath, text: contentJson) + return s5cmd.upload(filePath) +} diff --git a/ci/Jenkinsfile.e2e-nightly b/ci/Jenkinsfile.e2e-nightly new file mode 100644 index 00000000000..0aa6d250afa --- /dev/null +++ b/ci/Jenkinsfile.e2e-nightly @@ -0,0 +1,52 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + agent { label 'linux' } + + triggers { + // Nightly at 0am + cron 'H 0 * * *' + } + + parameters { + string( + name: 'BRANCH', + description: 'Name of the branch to checkout and build.', + defaultValue: 'develop', + ) + } + + options { + timestamps() + disableConcurrentBuilds() + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + stages { + stage('Build') { + steps { + script { + apk_build = jenkins.Build('status-mobile/platforms/android-e2e') + apk_build_number = apk_build.getNumber().toString() + } + } + } + stage('Run e2e') { + steps { + build( + job: 'status-mobile/e2e/status-app-nightly', + parameters: [ + string(name: 'APK_BUILD_NUMBER', value: apk_build_number), + string(name: 'BRANCH', value: env.BRANCH), + ] + ) + } + } + } +} + diff --git a/ci/Jenkinsfile.ios b/ci/Jenkinsfile.ios new file mode 100644 index 00000000000..21aafb6a341 --- /dev/null +++ b/ci/Jenkinsfile.ios @@ -0,0 +1,93 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +/* Options section can't access functions in objects. */ +def isPRBuild = utils.isPRBuild() + +pipeline { + agent { label 'macos && arm64 && nix-2.24 && xcode-16.2' } + + parameters { + string( + name: 'BUILD_TYPE', + description: 'Specify build type. Values: pr / e2e / nightly / release', + defaultValue: 'pr', + ) + } + + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 25, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '20', + artifactNumToKeepStr: '1', + )) + /* Allows combined build to copy */ + copyArtifactPermission('/status-mobile/*') + /* Abort old PR builds. */ + disableConcurrentBuilds( + abortPrevious: isPRBuild + ) + } + + environment { + LANG = 'en_US.UTF-8' + LC_ALL = 'en_US.UTF-8' + LANGUAGE = 'en_US.UTF-8' + PLATFORM = 'ios' + NIX_CONF_DIR = "${env.WORKSPACE}/nix" + FASTLANE_DISABLE_COLORS = 1 + BUNDLE_PATH = "${HOME}/.bundle" + SENTRY_PRODUCTION = "${utils.isReleaseBuild() ? 'true' : 'false'}" + } + + stages { + stage('Prep') { + steps { + script { + utils.symlinkEnv() + println("Build Number: ${utils.genBuildNumber()}") + } + } + } + stage('JSBundle') { + steps { + script { ios.jsbundle() } + } + } + stage('Bundle') { + steps { + script { api = ios.bundle() } + } + post { + failure { + archiveArtifacts 'logs/*' + } + } + } + stage('Parallel Upload') { + parallel { + stage('Archive') { + steps { + archiveArtifacts api + } + } + stage('Upload') { + steps { script { + env.DIAWI_URL = ios.uploadToDiawi() + env.PKG_URL = env.DIAWI_URL + jenkins.setBuildDesc(IPA: env.PKG_URL) + } } + } + } + } + } + post { + success { script { github.notifyPR(true) } } + failure { script { github.notifyPR(false) } } + always { sh 'make purge' } + } +} diff --git a/ci/Jenkinsfile.tests b/ci/Jenkinsfile.tests new file mode 100644 index 00000000000..d043c846bdc --- /dev/null +++ b/ci/Jenkinsfile.tests @@ -0,0 +1,100 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +/* Options section can't access functions in objects. */ +def isPRBuild = utils.isPRBuild() + +pipeline { + agent { label 'linux && x86_64 && nix-2.24' } + + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 20, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '20', + artifactNumToKeepStr: '1', + )) + /* Abort old PR builds. */ + disableConcurrentBuilds( + abortPrevious: isPRBuild + ) + } + + parameters { + string( + name: 'BUILD_TYPE', + description: 'Specify build type. Values: pr / e2e / nightly / release', + defaultValue: 'pr', + ) + booleanParam( + name: 'RUN_CONTRACT_TESTS', + description: 'Whether to run optional and slow contract tests.', + defaultValue: false, + ) + } + + environment { + LANG = 'en_US.UTF-8' + LC_ALL = 'en_US.UTF-8' + LANGUAGE = 'en_US.UTF-8' + PLATFORM = 'tests' + BUILD_ENV = 'prod' + NIX_CONF_DIR = "${env.WORKSPACE}/nix" + LOG_FILE = utils.pkgFilename(ext: 'log', arch: 'tests') + CLJ_LINTER_PRINT_WARNINGS = 'true' + } + + stages { + stage('Test') { + parallel { + stage('Lint') { + steps { make('lint') } + } + stage('Unit') { + steps { make('test-unit') } + } + stage('Component') { + steps { make('test-component') } + } + } + } + stage('Heavy Test') { + parallel { + stage('Contract') { + when { expression { params.RUN_CONTRACT_TESTS } } + steps { make('test-contract') } + } + stage('Integration') { + steps { make('test-integration') } + } + } + } + stage('Upload') { + steps { + script { + env.PKG_URL = s5cmd.upload(LOG_FILE) + } + } + } + stage('Commit Checks') { + steps { + make('lint-commits') + } + } + } + post { + success { script { github.notifyPR(true) } } + failure { script { github.notifyPR(false) } } + always { sh 'make purge' } + } +} + +def make(target) { + sh """#!/bin/bash + set -eo pipefail + make ${target} 2>&1 | tee -a ${LOG_FILE} + """ +} diff --git a/ci/README.md b/ci/README.md new file mode 100644 index 00000000000..6a087094855 --- /dev/null +++ b/ci/README.md @@ -0,0 +1,16 @@ +# Description + +This folder contains files defininf [Jenkins pipelines](https://jenkins.io/doc/book/pipeline/) that run on https://ci.status.im/. + +# Libraries + +All `Jenkinsfile`s contain the following line: +```groovy +library 'status-jenkins-lib@master' +``` + +Which loads the used methods - like `nix.shell()` - from a separate private repo: + +https://github.com/status-im/status-jenkins-lib + +This is done to improve security of our CI setup. diff --git a/ci/tests/Jenkinsfile.e2e-nightly b/ci/tests/Jenkinsfile.e2e-nightly new file mode 100644 index 00000000000..355d1c64673 --- /dev/null +++ b/ci/tests/Jenkinsfile.e2e-nightly @@ -0,0 +1,116 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + + agent { label 'linux' } + + parameters { + string( + name: 'APK_BUILD_NUMBER', + description: 'platform/e2e build number for apk artifact', + ) + string( + name: 'KEYWORD_EXPRESSION', + description: 'This will run tests which contain names that match the given string expression (Optional)', + defaultValue: '', + ) + string( + name: 'BRANCH', + description: 'Name of the branch to checkout and build.', + defaultValue: 'develop', + ) + string( + name: 'TR_CASE_IDS', + description: 'IDs of the TestRail case, separated by a comma (Optional)', + defaultValue: '', + ) + } + + options { + disableConcurrentBuilds() + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + environment { + /* Avoid race conditions with other builds using virtualenv. */ + VIRTUAL_ENV = "${WORKSPACE_TMP}/venv" + PATH = "${VIRTUAL_ENV}/bin:${PATH}" + } + + stages { + stage('Fetch') { + steps { script { + copyArtifacts( + projectName: "status-mobile/platforms/android-e2e", + filter: 'result/*-x86_64.apk', + selector: specific(env.APK_BUILD_NUMBER), + ) + apk_path = "${env.WORKSPACE}/${utils.findFile('result/*-x86_64.apk')}" + + } } + } + + stage('Setup') { + steps { script { + dir('test/appium') { + sh "python3 -m venv ${VIRTUAL_ENV}" + sh 'pip3 install -r requirements.txt' + } + } } + } + + stage('Test') { + steps { + withCredentials([ + usernamePassword( + credentialsId: 'test-rail-api', + usernameVariable: 'TESTRAIL_USER', + passwordVariable: 'TESTRAIL_PASS' + ), + usernamePassword( + credentialsId: 'lambda-test-api', + usernameVariable: 'LAMBDA_TEST_USERNAME', + passwordVariable: 'LAMBDA_TEST_ACCESS_KEY' + ), + string( + credentialsId: 'etherscan-api-key', + variable: 'ETHERSCAN_API_KEY' + ), + string( + credentialsId: 'infura-e2e-token', + variable: 'WEB3_INFURA_PROJECT_ID' + ), + file( + credentialsId: "mobile-tests-eth-accounts", + variable: 'TEST_ETH_ACCOUNTS_FILE' + ), + ]) { + dir('test/appium/tests') { + /* Provide Eth test accounts secrets. */ + sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py' + sh """ + python3 -m pytest \ + --numprocesses 9 \ + --testrail_report=True \ + -m testrail_id \ + -m \"nightly\" \ + -k \"${params.KEYWORD_EXPRESSION}\" \ + --apk=${params.APK_URL ?: apk_path} + """ + } + } + } + } + } + + post { + cleanup { + sh 'make purge' + } + } +} diff --git a/ci/tests/Jenkinsfile.e2e-prs b/ci/tests/Jenkinsfile.e2e-prs new file mode 100644 index 00000000000..909eafce2af --- /dev/null +++ b/ci/tests/Jenkinsfile.e2e-prs @@ -0,0 +1,154 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + + agent { label 'linux' } + + parameters { + string( + name: 'BRANCH_NAME', + description: 'Name of the branch to checkout and build.', + defaultValue: 'develop', + ) + string( + name: 'PR_ID', + description: 'ID of the Pull Request triggering this build.', + ) + string( + name: 'APK_URL', + description: 'Optional, set if job require APK to be downloaded from URL.', + ) + string( + name: 'KEYWORD_EXPRESSION', + description: 'This will run tests which contain names that match the given string expression (Optional)', + defaultValue: '', + ) + string( + name: 'TR_CASE_IDS', + description: 'IDs of the TestRail case, separated by a comma (Optional)', + defaultValue: '', + ) + /* FIXME: Remove this no longer relevant argument */ + string( + name: 'APK_NAME', + description: 'OBSOLETE ARGUMENT TO BE REMOVED', + defaultValue: 'DUMMY', + ) + string( + name: 'TEST_MARKERS', + description: 'Marker expression for matching tests to run.', + defaultValue: 'smoke', + ) + } + + options { + disableConcurrentBuilds() + timeout(time: 90, unit: 'MINUTES') + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + environment { + /* Avoid race conditions with other builds using virtualenv. */ + VIRTUAL_ENV = "${WORKSPACE_TMP}/venv" + PATH = "${VIRTUAL_ENV}/bin:${PATH}" + } + + stages { + stage('Prep') { + steps { script { + currentBuild.displayName = "PR-${params.PR_ID}" + if (params.PR_ID == null) { + error("PR_ID parameter not set!") + } + } } + } + + stage('Fetch') { + when { expression { !params.APK_URL } } + steps { script { + copyArtifacts( + projectName: "status-mobile/prs/android-e2e/PR-${params.PR_ID}", + /* WARNING: This copies the latest available artifact. */ + selector: lastWithArtifacts(), + ) + apk_path = "${env.WORKSPACE}/${utils.findFile('result/*.apk')}" + } } + } + + stage('Setup') { + steps { script { + dir('test/appium') { + sh "python3 -m venv ${VIRTUAL_ENV}" + sh 'pip3 install -r requirements.txt' + } + } } + } + + stage('Test') { + steps { script { + /* for managing optional arguments */ + def extraPytestOpts = '' + if (params.TR_CASE_IDS != '') { + extraPytestOpts = "--run_testrail_ids='${params.TR_CASE_IDS}'" + } else { + extraPytestOpts = "-m \"${params.TEST_MARKERS}\"" + } + + withCredentials([ + usernamePassword( + credentialsId: 'status-im-auto', + usernameVariable: 'GIT_HUB_USER', /* ignored */ + passwordVariable: 'GIT_HUB_TOKEN' + ), + usernamePassword( + credentialsId: 'test-rail-api', + usernameVariable: 'TESTRAIL_USER', + passwordVariable: 'TESTRAIL_PASS' + ), + usernamePassword( + credentialsId: 'lambda-test-api', + usernameVariable: 'LAMBDA_TEST_USERNAME', + passwordVariable: 'LAMBDA_TEST_ACCESS_KEY' + ), + string( + credentialsId: 'etherscan-api-key', + variable: 'ETHERSCAN_API_KEY' + ), + string( + credentialsId: 'infura-e2e-token', + variable: 'WEB3_INFURA_PROJECT_ID' + ), + file( + credentialsId: "mobile-tests-eth-accounts", + variable: 'TEST_ETH_ACCOUNTS_FILE' + ), + ]) { + dir('test/appium/tests') { + /* Provide Eth test account secrets. */ + sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py' + sh """ + python3 -m pytest \ + --numprocesses 9 \ + --testrail_report=True \ + -k \"${params.KEYWORD_EXPRESSION}\" \ + --apk=${params.APK_URL ?: apk_path} \ + --build=PR-${params.PR_ID}-${utils.timestamp()} \ + --pr_number=${params.PR_ID} \ + ${extraPytestOpts} + """ + } + } + } } + } + } + post { + cleanup { + sh 'make purge' + } + } +} diff --git a/ci/tests/Jenkinsfile.e2e-upgrade b/ci/tests/Jenkinsfile.e2e-upgrade new file mode 100644 index 00000000000..32ac6064eae --- /dev/null +++ b/ci/tests/Jenkinsfile.e2e-upgrade @@ -0,0 +1,136 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + + agent { label 'linux' } + + parameters { + string( + name: 'APK_URL', + description: 'URL of APK to be tested(base for upgrade, usually release build)', + ) + string( + name: 'APK_URL_UPGRADE', + description: 'URL of APK of upgraded application (installed on top of base)', + ) + string( + name: 'KEYWORD_EXPRESSION', + description: 'This will run tests which contain names that match the given string expression (Optional)', + defaultValue: '', + ) + string( + name: 'TR_CASE_IDS', + description: 'IDs of the TestRail case, separated by a comma (Optional)', + defaultValue: '', + ) + } + + options { + disableConcurrentBuilds() + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + environment { + /* Avoid race conditions with other builds using virtualenv. */ + VIRTUAL_ENV = "${WORKSPACE_TMP}/venv" + PATH = "${VIRTUAL_ENV}/bin:${PATH}" + } + + stages { + stage('Prep') { + steps { script { + if (params.APK_URL == null) { + error("APK_URL parameter not set!") + } + if (params.APK_URL_UPGRADE == null) { + error("APK_URL_UPGRADE parameter not set!") + } + } } + } + + stage('Setup') { + steps { script { + dir('test/appium') { + sh "python3 -m venv ${VIRTUAL_ENV}" + sh 'pip3 install -r requirements.txt' + } + } } + } + + stage('Test') { + steps { script { + /* for managing optional arguments */ + def extraPytestOpts = '' + if (params.TR_CASE_IDS != '') { + extraPytestOpts = "--run_testrail_ids='${params.TR_CASE_IDS}'" + } + withCredentials([ + usernamePassword( + credentialsId: 'test-rail-api', + usernameVariable: 'TESTRAIL_USER', + passwordVariable: 'TESTRAIL_PASS' + ), + usernamePassword( + credentialsId: 'sauce-labs-api', + usernameVariable: 'SAUCE_USERNAME', + passwordVariable: 'SAUCE_ACCESS_KEY' + ), + string( + credentialsId: 'etherscan-api-key', + variable: 'ETHERSCAN_API_KEY' + ), + string( + credentialsId: 'infura-e2e-token', + variable: 'WEB3_INFURA_PROJECT_ID' + ), + file( + credentialsId: "mobile-tests-eth-accounts", + variable: 'TEST_ETH_ACCOUNTS_FILE' + ), + ]) { + dir('test/appium/tests') { + /* Provide Eth test accounts secrets. */ + sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py' + sh """ + python3 -m pytest \ + -m "upgrade" \ + -k \"${params.KEYWORD_EXPRESSION}\" \ + --numprocesses 4 \ + --rerun_count=2 \ + --testrail_report=True \ + --apk=${params.APK_URL} \ + --apk_upgrade=${params.APK_URL_UPGRADE} \ + ${extraPytestOpts} + """ + } + } + } + } } + } + + post { + always { + script { + sauce('sauce-labs-cred') { + saucePublisher() + } + } + } + success { + script { + junit( + testDataPublishers: [[$class: 'SauceOnDemandReportPublisher', jobVisibility: 'public']], + testResults: 'test/appium/tests/*.xml' + ) + } + } + cleanup { + sh 'make purge' + } + } +} diff --git a/ci/tools/Jenkinsfile.fastlane-clean b/ci/tools/Jenkinsfile.fastlane-clean new file mode 100644 index 00000000000..b5019384776 --- /dev/null +++ b/ci/tools/Jenkinsfile.fastlane-clean @@ -0,0 +1,54 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + agent { label 'macos' } + + environment { + LANG = 'en_US.UTF-8' + LANGUAGE = 'en_US.UTF-8' + LC_ALL = 'en_US.UTF-8' + PLATFORM = 'ios' + FASTLANE_DISABLE_COLORS = 1 + /* avoid writing to r/o /nix */ + GEM_HOME = '~/.rubygems' + } + + options { + timestamps() + /* Disable concurrent jobs */ + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 45, unit: 'MINUTES') + /* Don't keep more than 50 builds */ + buildDiscarder(logRotator(numToKeepStr: '50')) + } + + stages { + stage('Prep') { + steps { script { + nix.shell( + 'bundle install --gemfile=fastlane/Gemfile', + attr: 'shells.fastlane', + ) + } } + } + stage('Clean Users'){ + steps { script { + withCredentials([ + usernamePassword( + credentialsId: 'fastlane-match-apple-id', + usernameVariable: 'FASTLANE_APPLE_ID', + passwordVariable: 'FASTLANE_PASSWORD' + ), + ]) { + nix.shell( + 'bundle exec --gemfile=fastlane/Gemfile fastlane ios clean', + keepEnv: ['FASTLANE_APPLE_ID', 'FASTLANE_PASSWORD'], + attr: 'shells.fastlane', + ) + } + } } + } + } +} diff --git a/ci/tools/Jenkinsfile.nix-cache b/ci/tools/Jenkinsfile.nix-cache new file mode 100644 index 00000000000..f2ea808d9b4 --- /dev/null +++ b/ci/tools/Jenkinsfile.nix-cache @@ -0,0 +1,178 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + agent { label params.AGENT_LABEL } + + parameters { + string( + name: 'NIX_CACHE_HOST', + description: 'FQDN of Nix binary cache host.', + defaultValue: params.NIX_CACHE_HOST ?: 'cache-01.he-eu-hel1.ci.nix.status.im' + ) + string( + name: 'NIX_CACHE_USER', + description: 'Username for Nix binary cache host.', + defaultValue: params.NIX_CACHE_USER ?: 'nix-cache' + ) + booleanParam( + name: 'BUILD_COMPONENTS', + description: 'Whether to build Mobile components first.', + defaultValue: params.BUILD_COMPONENTS ?: true, + ) + } + + environment { + NIX_SSHOPTS = "-oStrictHostKeyChecking=accept-new" + NIX_CONF_DIR = "${env.WORKSPACE}/nix" + NIX_STORE_CMD = '/nix/var/nix/profiles/default/bin/nix-store' + NIX_SSH_REMOTE = "ssh://${params.NIX_CACHE_USER}@${params.NIX_CACHE_HOST}?remote-program=${env.NIX_STORE_CMD}" + } + + options { + timestamps() + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 120, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '20', + daysToKeepStr: '30', + artifactNumToKeepStr: '1', + )) + } + + stages { + stage('Setup') { + steps { script { + nix.shell('nix-env -i openssh', sandbox: false, pure: false) + /* some build targets don't build on MacOS */ + os = sh(script: 'uname', returnStdout: true).trim() + arch = sh(script: 'arch', returnStdout: true).trim() + } } + } + + stage('Build status-go') { + when { expression { params.BUILD_COMPONENTS } } + steps { script { + def platforms = ['mobile.android', 'mobile.ios', 'library'] + if (os != 'Darwin') { platforms.removeAll { it == 'mobile.ios' } } + /* FIXME: "'x86_64-darwin' with features {} is required to build" */ + if (arch == 'arm64') { platforms.removeAll { it == 'mobile.android' } } + platforms.each { platform -> + /* Allow for Android builds on Apple ARM. */ + env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, platform) + nix.build( + attr: "targets.status-go.${platform}", + sandbox: false, + link: false + ) + } + } } + } + + stage('Build android jsbundle') { + when { expression { params.BUILD_COMPONENTS } } + steps { script { + /* Build/fetch deps required for jsbundle build. */ + nix.build( + attr: 'targets.mobile.jsbundle', + sandbox: false, + pure: false, + link: false + ) + } } + } + + stage('Build android deps') { + when { expression { params.BUILD_COMPONENTS } } + steps { script { + /* Allow for Android builds on Apple ARM. */ + env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, 'android') + /* Build/fetch deps required to build android release. */ + nix.build( + attr: 'targets.mobile.android.build.buildInputs', + sandbox: false, + pure: false, + link: false + ) + } } + } + + stage('Build nix shell deps') { + when { expression { params.BUILD_COMPONENTS } } + steps { script { + def shells = ['android', 'ios', 'fastlane', 'keytool', 'clojure', 'gradle'] + if (os != 'Darwin') { shells.removeAll { it == 'ios' } } + /* FIXME: "'x86_64-darwin' with features {} is required to build" */ + if (arch == 'arm64') { shells.removeAll { it == 'android' } } + /* Build/fetch deps required to start default Nix shell. */ + shells.each { shell -> + /* Allow for Android builds on Apple ARM. */ + env.NIXPKGS_SYSTEM_OVERRIDE = nixSysOverride(os, arch, shell) + nix.build( + attr: "shells.${shell}.buildInputs", + sandbox: false, + link: false + ) + } + } } + } + + stage('Collect') { + steps { script { + exitCode = nix.shell( + """ + find /nix/store/ -mindepth 1 -maxdepth 1 \ + | grep -v -e '.*.links\$' -e '.*.lock\$' -e '.*.drv\$' -e '.*.drv\$' -e '.*-status-mobile-.*' \ + | xargs nix path-info --recursive \ + > "${WORKSPACE_TMP}/store-paths.txt" + """, + pure: false, + returnStatus: true + ) + /* Some paths can throw 'path is not valid' errors, but it's not fatal. */ + if (exitCode != 0) { + currentBuild.result = 'UNSTABLE' + } + if (lineCount("${WORKSPACE_TMP}/store-paths.txt") == 0) { + throw new Exception("No Nix store paths found to copy.") + } + } } + } + + stage('Upload') { + steps { script { + sshagent(credentials: ['nix-cache-ssh']) { + nix.shell( + """ + cat "${WORKSPACE_TMP}/store-paths.txt" \ + | nix copy --stdin --to "${NIX_SSH_REMOTE}" + """, + pure: false + ) + } + } } + } + } + post { + always { script { + nix.shell('nix-store --optimize', pure: false) + } } + } +} + +def nixSysOverride(os, arch, target='android') { + return ( + os == 'Darwin' && + arch == 'arm64' && + target =~ /.*android$/ + ) ? 'x86_64-darwin' : '' +} + +def lineCount(filePath) { + return sh( + script: "wc -l ${filePath}", + returnStdout: true + ).trim() +} diff --git a/ci/tools/Jenkinsfile.playstore-meta b/ci/tools/Jenkinsfile.playstore-meta new file mode 100644 index 00000000000..fcdc6950aaa --- /dev/null +++ b/ci/tools/Jenkinsfile.playstore-meta @@ -0,0 +1,54 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + agent { label 'linux' } + + environment { + LANG = 'en_US.UTF-8' + LANGUAGE = 'en_US.UTF-8' + LC_ALL = 'en_US.UTF-8' + PLATFORM = 'ios' + FASTLANE_DISABLE_COLORS = 1 + /* avoid writing to r/o /nix */ + GEM_HOME = '~/.rubygems' + } + + options { + timestamps() + /* Disable concurrent jobs */ + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 5, unit: 'MINUTES') + /* Don't keep more than 50 builds */ + buildDiscarder(logRotator(numToKeepStr: '50')) + } + + stages { + stage('Prep') { + steps { script { + nix.shell( + 'bundle install --gemfile=fastlane/Gemfile', + attr: 'shells.fastlane', + ) + } } + } + stage('Play Store Update'){ + steps { script { + withCredentials([ + string( + credentialsId: 'google-play-api-key-json', + variable: 'GOOGLE_PLAY_JSON_KEY' + ), + ]) { + nix.shell( + 'bundle exec --gemfile=fastlane/Gemfile fastlane android upload_metadata', + keepEnv: ['FASTLANE_DISABLE_COLORS', 'GOOGLE_PLAY_JSON_KEY'], + attr: 'shells.fastlane', + pure: false + ) + } + } } + } + } +} diff --git a/ci/tools/Jenkinsfile.pod-repo-update b/ci/tools/Jenkinsfile.pod-repo-update new file mode 100644 index 00000000000..c212c3eda87 --- /dev/null +++ b/ci/tools/Jenkinsfile.pod-repo-update @@ -0,0 +1,44 @@ +#!/usr/bin/env groovy +/** + * This job runs daily and executes `pod repo update` on MacOS + * This is done to avoid issues with out of date repo causing errors like: + * + * Failed with exit code 1 (in target 'StatusImPR' from project 'StatusIm') + **/ + +pipeline { + agent { + label params.HOST_LABEL + } + + triggers { + /* Run daily at 2am */ + cron('H 2 * * *') + } + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 5, unit: 'MINUTES') + /* Limit builds retained */ + buildDiscarder(logRotator( + numToKeepStr: '20', + )) + } + + parameters { + string( + name: 'HOST_LABEL', + description: 'Label of host to run on', + /* Using startTimeInMillis to randomize which host gets the update. */ + defaultValue: "maci7-0${(currentBuild.startTimeInMillis % 3) + 1}", + ) + } + + stages { + stage('Update') { + steps { + sh 'pod repo update' + } + } + } +} diff --git a/ci/tools/Jenkinsfile.xcode-clean b/ci/tools/Jenkinsfile.xcode-clean new file mode 100644 index 00000000000..fbdfd0d4805 --- /dev/null +++ b/ci/tools/Jenkinsfile.xcode-clean @@ -0,0 +1,48 @@ +#!/usr/bin/env groovy +library 'status-jenkins-lib@v1.9.24' + +pipeline { + agent { + label 'linux' + } + + triggers { + cron('H 5 * * *') + } + + options { + timestamps() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 15, unit: 'MINUTES') + /* Disable concurrent jobs */ + disableConcurrentBuilds() + /* Don't keep more than 50 builds */ + buildDiscarder(logRotator(numToKeepStr: '10')) + } + + stages { + stage('Get Nodes') { + steps { script { + stagePerNode = nodesByLabel('macos').collectEntries { + ["${it}" : generateNodeCleanupStage(it)] + } + } } + } + + stage('Clean Xcode') { + steps { script { + parallel stagePerNode + } } + } + } +} + +def generateNodeCleanupStage(nodeLabel) { + return { stage(nodeLabel) { + node(nodeLabel) { + dir('/Users/jenkins/Library/Developer/Xcode') { + sh 'rm -fr Archives DerivedData' + } + } + } } +} diff --git a/default.nix b/default.nix new file mode 100644 index 00000000000..3b2898217c5 --- /dev/null +++ b/default.nix @@ -0,0 +1,10 @@ +# for passing build options, see nix/README.md +{ config ? { } }: + +let + main = import ./nix { inherit config; }; +in { + # this is where the --attr argument selects the shell or target + inherit (main) pkgs targets shells; + inherit (main.pkgs) config; +} diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 00000000000..0d769b6c036 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,45 @@ +## Getting Started + +- [Starting Guide](starting-guide.md) +- [IDE Setup](ide-setup.md) + +## Development Process + +- [Coding guidelines](new-guidelines.md) +- [Layered architecture](architecture-layers.md) +- [UI components coding guidelines](ui-guidelines.md) +- [Release Checklist](release-checklist.md) +- [Release Guide](release-guide.md) +- [Merging PR process](merging-pr-process.md) +- [PR Review Policy](pr-review-policy.md) +- [Working on PR together with QA team](pipeline_process.md) +- [Debugging](debugging.md) +- [Patching](patching.md) +- [Creating a pixel perfect UI](pixel-perfection.md) +- [Contributing to status-go](status-go-changes.md) +- [Status Backend Server](use-status-backend-server.md) +- [Malli schemas (recorded demo)](https://www.youtube.com/watch?v=SlRio70aYVI) ([slides](files/forging-code-with-schemas-sep-2023-slides.pdf)) + +## Testing + +- [Overview](tests/tests-overview.md) +- [How to run local tests](tests/how-to-run-local-tests.md) +- [End-to-end tests (e2e) overview](tests/how-to-launch-e2e.md) +- [Component tests (jest) overview](tests/component-tests-overview.md) + +## Project details + +- [status-go introduction (recorded meeting)](https://drive.google.com/file/d/1B7TljmTZ8fHkqJH8ChU1Cp4FGDFM03gq/view) +- [re-frame usage (recorded meeting)](https://drive.google.com/file/d/1qv_E0CEGzQpu_zGXD0gCTU5EvhC2k8Jy/view) +- [status app functionality demo](https://drive.google.com/file/u/0/d/1PmwsMLTLDNNIdv5_6wvMOwoj2PfT50c6/view) + +## Misc + +- [Importing assets from Figma into project](import-assets.md) +- [Updating Status APK builds for the F-Droid Android application catalogue](fdroid.md) +- [Troubleshooting for known errors](troubleshooting.md) + +## Outdated: + +- [Old guidelines](codebase-structure-and-guidelines.md) +- [Post mortem analysis](post-mortem.md) diff --git a/doc/adding-new-chains.md b/doc/adding-new-chains.md new file mode 100644 index 00000000000..54c0db38c78 --- /dev/null +++ b/doc/adding-new-chains.md @@ -0,0 +1,18 @@ +# Adding new chains + +This doc only describes how to add new chains on the client side, so make sure the chain is added on `status-go` first (see [eth-rpc-proxy:ADD_NEW_CHAINS.md](https://github.com/status-im/eth-rpc-proxy/blob/master/ADD_NEW_CHAINS.md)) + +## Steps +1. Add the chain image (.png) to `resources/images/networks/` +2. Add the chain name (keyword) and the path to the chain image to `quo.foundations.resources/networks` +3. Add the mainnet (and/or testnet) `chain-id` constant(s) to `status-im.contexts.wallet.networks.config` +4. Add additional chain information in the same namespace, under `mainnets` and `testnets` respectively, including the chain name keyword added for the image. +5. In case the network should be highlighted as _new_ in the UI, add the chain id to `status-im.contexts.wallet.networks.config/new-networks` + +## Future steps to improve addition of new chains and facilitate the addition of custom chains by the user +1. Remove reliance on the `network-name` and refer to a chain solely by its `chain-id` +2. Remove the definition of the network images from `quo.foundations.resources/networks` by relying on the images provided by `status-go` +3. `quo` components that should render a network image should get the image source as a prop +4. The chain data added in `status-im.contexts.wallet.networks.config` should be received from `status-go` or derived on the client, instead of being added manually. +5. Ideally, when adding a new chain, we shouln't bring new changes on the client. All the changes should happen on the `status-go` side +6. Remove deprecated namespaces dealing with chains e.g. `utils.ethereum.chains` diff --git a/doc/architecture-layers.md b/doc/architecture-layers.md new file mode 100644 index 00000000000..0bb9cac7e49 --- /dev/null +++ b/doc/architecture-layers.md @@ -0,0 +1,240 @@ +# Mobile app architecture - WIP + +## Problems we are trying to solve + +- Mixed layers of abstraction. +in the same event we sometimes process data from UI, perform application logic and send data to the backend. +- Inconsistent re-frame `app-db`. +UI state, data from backend, and application flow data are mixed, making it hard to track what belongs where. + +**Why is this bad?** +Intertwining different levels of abstraction in the same code increases cognitive load for developers and also makes code less testable. + +## Layered architecture +Architecture described below was inspired by [clean architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) but does not strictly folow it. +The core idea is to highlight 4 logical layers, each responsible for own set of tasks and to organize the code in a way that each layer is clearly separated. + +![layers](images/architecture.png) + + +## Layers + +### Gateway +`Gateway` is a layer that responsible for communication with "outer" services. +The main "outer" service that we depend on is `status-go` so most of the code here deals with connections to `status-go`. + +> **Reasoning for considering `status-go` an "outer" service?** +> - It’s accessed via remote procedure calls +> - It is a subject to change () +> - pieces of `status-go` functionality could be theoretically replaced by a another providers which confirms it "outer" nature. + +`Gateway` layer abstracts the rest of the application from changes that happen in outer services. +Which means it: +- hides implementation details of outer services. +- transforms data that arrives from outer services to those used in the app. + +#### Example +Market data is provided by `status-go` via api call to `FetchMarketTokenPageAsync` function. That function **uses pagination** (has `page` and `page-size` arguments). +After that function called `status-go` starts to regularly emit signals that **in json format** contain information about tokens: their name, price, image, market cap, position in "tokens leaderboard", price change in last 24h, etc. + +It is `gateway` layer responsibility to abstract other parts of app of such implementation details as using pagination and using json format. And it is up to gateway to dissect the incoming big ball of data to smaller and more coherent structures to be used in other layers. + +Which means `gateway` should: +- maintain the `current-page` variable and increase/reset it as needed to pass to `FetchMarketTokenPageAsync` +- maintain `page-size` variable +- convert incoming structure from json to edn +- split incoming structure to smaller and more coherent ones: token-info, token-price, tokens-leaderboard + +### Domain +`Domain` is a layer where business logic lives. It contains the entities of our knowledge domain and operations on them. +For example for `messenger` part of our app such entities are: message, chat, contact, etc. Those are concepts that all messenger apps share. + +For `wallet` part of our app domain entities are: accout, token, network, address. All wallets use those because their are part of "crypto" knowledge domain. + +So in the `domain` level of our app we define data structures for such concepts and functions to operate on them. + +**What entities belong to `domain`?** + +There is a simple question you can ask yourself to check if some data belongs to `domain` layer: "If I will write console version of our application (which means different UI and different user flows), can I reuse the same structures and functions?". +If answer is "yes" - most probably it is a domain-level entities. + +#### Example +`network` is a concept from "blockchain" domain. Representations of network can be found in code of any wallet. + +In our code `network` is represented by datastructure with fields: +```clojure +{:testnet? + :chain-id + :short-name + :full-name + :native-currency-symbol + ...} +``` + +And there are functions that work with `network` datastructure +```clojure +(defn ethereum-network? + [network] + ...) + +(defn get-networks-for-layer + "Returns networks for the layer (`1` or `2`)" + [networks layer] + ...) +``` + +If we will make a console version of the app we can reuse that datastructure and functions which means they should be stored in `domain` level. + +### Application +`Application` is a level that manages **user flows**. It is responsible for coordination between inner `domain` layer and outer layers. +When user interacts with `UI` it is up to the `application` layer to make calls to `domain`, `gateway` or `UI`. + +#### Example +Status mobile app has user flow "Send crypto". +That flow consists of few screens and on each screen the data required for sending (network, token, amount) is partially filled. + +What `application` layer **DOES** in this flow: +- when user goes from step to step in user flow, `application` layer knows what UI should be presented. For example if user starting the `send` flow `application` layer checks if user is already inside a wallet account screen. +If yes - next screen will be the token selection. If user is not within an account - next screen will be an account selection. +- when user goes through steps in user flow, `application` layer stores intermediate data acquired on steps. When user selected `token` to send `application` layer should remember the selection to use it in the next screen. +- `application` layer knows when to call `domain` to perform checks. If user entered address to send funds to, `application` layer should call the business logic in `domain` layer to check if address is valid. +If amount of crypto entered - `application` layer redirects to `domain` to check if the amount is less than user owns. +- `application` layer knows when to call `gateway` to communicate with outer services. When user confirms the sending `application` layer should call `gateway` and pass all the collected data to perform sending. + +What `application` layer **DOES NOT** in this flow: +- it does not check if address is correct "ethereum" address - it is up to `domain` layer. +- it does not check if user has sufficient amount of crypto to send - it is up to `domain` layer. +- it does not call `status-go` directly - it is up to `gateway` layer. + +### UI +Here belongs everything related to user interface - views, components, styles, animation. +All logic here should be UI-specific and not application-specific. + +#### Example +Lets say user is in "enter crypto amount" screen of "send crypto" flow. +That screen has the input field for entering amount of crypto, button for switching between crypto and fiat, button for confirming the amount. + +What **ARE** parts of `UI` layer on this screen: +- all the styles, components, animations belong to the `UI` layer +- state of the input field +- state of the fiat/crypto toggle + +What **ARE NOT** parts of `UI` layer on this screen: +- logic of converting between fiat and crypto - should be part of the `domain` +- logic of displaying crypto and fiat values (amount of decimals, prepending with fiat symbol) - should be part of the `domain` + + +## Data management + +Each layer has logic and data. This section clarifies which data belons to which layer. + +### Gateway data +Here goes data related to the **mechanics** of interaction with outer services: +- connection states +- timeouts values +- current page in paginated request + +If outer service does not respond and we need to make two more tries to reach it before call it "unreachable", the counter of tries should be treated as `gateway` data. + +### Domain data +Here goes all the data related to knowledge domain. Distinctive feature of this data is that it is "persistent" which means it stays actual even if we restart the application. +Wallet part of our application works with user profiles, accounts, balances. When we restart the application all of them stay actual. On contrary with user flow data which could be safely discarded when app closed. + +If user had 4 accounts in wallet and 10 saved contacts in chat they should stay intact after app reloading. `accounts` and `contacts` are concepts from our knowledge domain, plus they are presistent - that means it is a `domain` level data. + +Note: There are other types of data that should survive data restart. For example user visual settings like light/dark mode. +This data belongs to `UI` layer because it would survive app restart but wouldn't survive rewriting our mobile app to console app. + + +### Application data +`Application` layer data contains the state of current "user flow". +This data can be safely discarded after user has finished the flow. + +If user entered some chat we store `current-chat` as piece of `application` data. +If user is in "send crypto" flow that consist of few consecutive screens, the selections made on all screens (account, token, receiver address) is stored as `application`-layer data. + +### UI data +`UI` data contains UI settings or states of the particular screen. + +User can switch between fiat and crypto on `enter amount` screen of `send crypto` user flow. But the state of that toggle does not influence any other screens, it is solely UI feature and should be stored under `UI` layer. + +### re-frame db organization + +Data stored in re-frame db should be normalized, which means: +- each entity is stored only once +- relationships between entities handled using IDs +- redundancy is minimized + +`rf-db` keys names should have the structure: `:layer.context/entity`. Where `layer` is a logical layer where data belongs. `context` is an area of application and `entity` is a name of stored data. + +Layer names are shortened for convenience `application`->`app`, `gateway`->`gate`. + +From previous examples: +- last page fetched from `FetchMarketTokenPageAsync` call to `status-go` can be stored in rf-db under the name `:gate.market/last-fetched-page`. +- token prices extracted from status-go signal payload could be stored under the name `:domain.market/prices` +- `:app.wallet/send-flow` can contain structure the whole state of the "send-flow" - selected account, selected token, destination address + + +## Communications between layers + +![layers](images/layers-relationships.png) + +- `Domain` layer does not communicate with any other layer and not aware about their existence +- `Application` layer makes calls to `Domain` via events or functions +- `Application` layer makes calls to `UI` via events or functions +- `UI` layer makes calls to `Application` layer via events or functions +- `UI` layer uses subscriptions defined in `Domain` layer +- `UI` layer uses subscriptions defined in `Application` layer +- `UI` layer uses subscriptions defined in `UI` layer + + +### Subscriptions +Subscriptions can be declared on `Domain`, `Application`, or `UI` level. +- `Domain` layer subscriptions provide access to domain data (most likely without any data transformation) +- `Application` layer subscriptions provide access to state of the current user flows +- `UI` layer subscriptions provide access to ui screen states and also consumes `domain` and `application` layer subscriptions to extract data needed for particular ui elements. + +Subscriptions are named using `:layer.context/entity` pattern. + +### Examples: +Domain-level subscriptions to access normalized tokens data: +```clojure +(rf/reg-root-key-sub :domain.market/leaderboard :domain.market/leaderboard) +(rf/reg-root-key-sub :domain.market/prices :domain.market/prices) +(rf/reg-root-key-sub :domain.market/tokens :domain.market/tokens) +``` + +UI-level subscription that consumes domain data and "massages" it for UI: +```clojure +(rf/reg-sub + :ui.market/token + :<- [:domain.market/prices] + :<- [:domain.market/tokens] + :<- [:domain.market/leaderboard] + (fn [[token-prices token-details leaderboard] [_ token-id]] + (let [{:keys [current-price price-change-percentage-24h market-cap]} (get token-prices token-id) + {short-name :symbol name :name image :image} (get token-details token-id) + position (get leaderboard token-id)] + {:price (wallet.utils/prettify-balance "$" current-price) + :percentage-change (utils.number/naive-round price-change-percentage-24h 2) + :market-cap (utils.number/format-number-with-si-suffix market-cap) + :short-name (when short-name (string/upper-case short-name)) + :token-rank position + :token-name (utils.string/truncate name 18) + :image image}))) +``` + + + + +### Events +Events are named using `:layer.context/entity` pattern. + +#### Example +```clojure +(rf/reg-event-fx :app.market/close-leaderboard + (fn [{:keys [_db]}] + {:fx [[:dispatch [:gate.market/stop-fetching-tokens]] + [:dispatch [:domain.market/clear-market-data]]]})) +``` + diff --git a/doc/codebase-structure-and-guidelines.md b/doc/codebase-structure-and-guidelines.md new file mode 100644 index 00000000000..e4ec779c4ce --- /dev/null +++ b/doc/codebase-structure-and-guidelines.md @@ -0,0 +1,114 @@ +# Codebase Structure and Guidelines + +As of Nov/2022, we're starting to document and migrate the codebase to [new +guidelines](new-guidelines.md), which will supersede some of the guidelines in +this document. + +## Starting the app + +The app is bundled and run in a Nix environment. Information regarding how to run it locally can be found [here](https://status.im/technical/build_status/). + +## Business Logic Modules + +Each business logic module is managed in a module directory. + +**Only the core and db namespace of a module can be required outside of the module directory. Other namespaces must never be required outside of the module directory** + +*There is no rigid structure on how to organize code inside modules outside of core and db namespaces* + +```txt +- events.cljs +- subs.cljs +- notifications + - core.cljs +- init + - core.cljs +- accounts + - core.cljs + - db.cljs +- node + - core.cljs + - db.cljs + - config.cljs +- ui + - screens + - login + - views.cljs +``` + +Rationale and how to get there: + +Currently a lot of business logic is lost in utils and screens namespaces and should be moved to dedicated top level directories. +This should make core logic of the app more accessible and organized + +### core.cljs + +Core namespace must only contain functions that can be called outside of the module (i.e. in events or other modules): + +- fx producing functions called by events and other modules + + ```clojure + (def get-current-account + module.db/get-current-account) + + (defn set-current-account [{db :db :as cofx}] + {:db (module.db/set-current-account db)}) + ``` + +### db.cljs + +- must contain getter and setter functions used by fx producing functions and subscriptions +- db logic called by other modules + +Rationale: + +These guidelines make db.cljs namespaces the place to go when making changes to the db layout and minimize breaking changes when adding/refactoring features + +## re-frame + +### Subscriptions + +- all subscriptions must be defined in the single `status-im.subs` namespace +- subscriptions must subscribe only on other subscriptions, and never on app-db itself +- `reg-root-key-sub` should be used for the root keys subscriptions + +### Events + +- all events must be defined in the `core.cljs` namespaces +- events must always be declared with `fx/defn` macro + +## Testing flow +- All PRs automatically go to "REVIEW" column on [Pipeline for QA](https://github.com/status-im/status-mobile/projects/7) project on Github. This is our main board for QA / devs interaction +- After the PR gets at least 1 approval, it should be moved to "E2E Tests" column. Some PRs may need approvals from more than one person. +- Critical path tests are automatically run for all PRs in "E2E Tests" column. +- If E2E tests pass: + - If PR doesn't need manual QA (it is small change or change doesn't relate to app) - after passing e2e tests it can be merged (don't use the Github UI to merge, check section on merging PRs). + + - If manual QA needed - add label 'request manual qa'. The QA team will process it (make sure the summary and test instructions are clear). QA team will review results and test PR on different platforms and assign one of the three labels: + - No issues - label 'TESTED-OK' and then you can merge it. + - If issues - label 'TESTED-ISSUES' and comment from QA with bugs. + - After fix and/or discussion the process is repeated. + + - If manual QA is not needed but all tests don't pass, you can ping @churik or @Serhy to confirm that failed E2E tests are not unrelated. + +## Translations +The app relies on system locale to select a language from the [list of supported languages](https://github.com/status-im/status-mobile/blob/bda73867471cf2bb8a68b1cc27c9f94b92d9a58b/src/status_im/i18n_resources.cljs#L9). It falls back to English in cash the system locale is not supported. + +We use Lokalise App to manage [translations](https://translate.status.im/). In case you need to add/remove a key to translations, you only need to change `en.json`. Missing keys fallback to `en.json`. The actual translations will be added by Lokalise. + +## Merging approved PRs + +We don't Github's UI to merge. Instead `./scripts/merge-pr.sh` is used to sign and merge PR to `develop`. You first need to enable [GPG signing on you commits](https://github.com/status-im/status-mobile/blob/develop/STARTING_GUIDE.md#configure-gpg-keys-for-signing-commits). + +Once your commits are verified and PR approved, you can run the script like so: + +```bash +$ git checkout develop +$ git fetch +$ git reset --hard origin/develop +$ ./scripts/merge-pr.sh 11370 +``` +Replace 11370 with your PR id. + +## Release process +TODO(shivekkhurana): Compile release notes diff --git a/doc/debugging.md b/doc/debugging.md new file mode 100644 index 00000000000..a9fde18b011 --- /dev/null +++ b/doc/debugging.md @@ -0,0 +1,169 @@ +# Debugging + +## Inspecting re-frame with re-frisk +`re-frisk` is a state visualization tool written by our very own Andrey (@flexsurfer). With its help you can inspect the current state of app-db, watch event, etc. + +![re-frisk](images/debugging/re-frisk.png) + +To start `re-frisk`, execute the following command: +```bash +$ yarn shadow-cljs run re-frisk-remote.core/start +``` + +or you can also use make: + +```bash +$ make run-re-frisk +``` + +A server will be started at http://localhost:4567. It might show "not connected" at first. Don't worry and just start using the app. The events and state will populate. + +More details about re-frisk are on the [project page](https://github.com/flexsurfer/re-frisk). + +## Debugging with FlowStorm + +[FlowStorm](http://www.flow-storm.org/) is a free and open-source time-travel +debugger for Clojure and ClojureScript. It is capable of recording almost any +code execution path in the Status' mobile app. + +FlowStorm is independent of editor/IDE, but a tighter [integration with +Emacs](https://github.com/jpmonettas/cider-storm) is available. + +If you are developing with Android, run `make android-ports` first. If you are +behind a firewall, allow TCP traffic on port `7722`, then: + +```bash +make run-flow-storm +``` + +You will know FlowStorm is correctly running if you see the status bar with +green `REPL` and `RUNTIME` indicators. + +With FlowStorm running, you can now add `#trace` on any top-level form, reload +the code, or evaluate the traced form in the REPL, and FlowStorm will start +recording data. Avoid `#rtrace` (with `r`) because it can cause massive spikes +in CPU which will make the app hang and you might need to forcefully kill +processes. + +```clojure +#trace ; => Add this line to tell FlowStorm to instrument the function. +(defn say-hello [] + (str "Hello world")) +``` + +There are other ways to debug, but this is a good start. + +## Enabling debug logs +Calls to `log/debug` will not be printed to the console by default. It can be enabled under "Advanced settings" in the app: + +![Enable Debug Logs](images/debugging/log-settings.png) + + +## Checking status-go logs +While status mobile works it saves logs from `status-go` to `geth.log` file. + + +### Checking logs from physical device +To obtain `geth.log` from physical device you need to shake it and in an opened menu select "Share logs". + +![Share logs](images/debugging/share-logs.jpeg) + + +### Checking logs from iOS Simulator +When developing with iOS simulator it is more convenient to see the `geth.log` updates in real-time. +To do this: +- open Activity Monitor +- find the "StatusIm" app and doubleclick it +- in the opened window select "Open files and ports" and find the full path to `geth.log` (note that it won't appear until you login to Status app) + +![geth.log path](images/debugging/geth-path.png) + +## Inspecting database content + +Encrypted database can be found using commands: +``` +cd ~/Library/Developer/CoreSimulator/Devices +find ./ -name accounts.sql +``` + +To get unencrypted database you need to export it first: +- open the status app in simulator +- on login screen enter the correct password without logging in +- using repl execute statement to export db: + ``` + (re-frame.core/dispatch [:multiaccounts.login.ui/export-db-submitted]) + ``` +- save generated `export.db` file + +Now you can locate the `export.db` and open it with preferred db viewer. + +**Android:** + +```sh +adb root +adb pull /storage/emulated/0/Android/data/im.status.ethereum.debug/files/Download/export.db /path/to/store/export.db +``` + +If you're using a release build, change the path to `/storage/emulated/0/Android/data/im.status.ethereum/files/Download` + +**iOS** + +``` +cd ~/Library/Developer/CoreSimulator/Devices +find ./ -name export.db +``` + + + +## Tips +### From @ilmotta: + +Something I find extremely convenient for Android is to use `adb` to tail logs. I don't use macOS so I don't know if the iOS simulator offers a CLI interface with the same capabilities. + +But here's what I use for example: + +``` + adb shell tail -n 10 -f /storage/emulated/0/Android/data/im.status.ethereum.debug/files/Download/geth.log | grep 'waku.relay' +``` + +Also to inspect logs in a more flexible manner, instead of the strict output from `make run-metro`, I prefer `adb logcat`. Combined with enabling status-mobile logs in debug by default plus filtering the logs to only what I care during development, I find this helps me inspect the app without running re-frisk because with the debug log level I can already see which events are dispatched (one of the features I like the most from re-frisk). + +``` +adb logcat | grep 'ReactNativeJS\|StatusModule\|GoLog' +``` + +### From @clauxx (visual debugging): + +When building/fixing/refactoring components, it can be annoying to set-up the component for instant visual feedback (i.e. finding it in the UI when fixing/refactoring; finding a place for it when building from scratch). Very often if the location of the screen containing your component nested deeply in the app, you might have to do a lot of repeated navigation, nevermind logging in every time the app reloads (even with fast refresh disabled this happens quite often). + +To alleviate this discomfort and make the development cycle more *pleasant*, you can use one of the following options (*_both of which involve the ... REPL ༼ つ ╹ ╹ ༽つ, so make sure you have that set-up with your IDE/editor_*) + +#### REPL-ing to a screen + +This one is straightforward, just evaluate a navigation dispatch form from anywhere: + +```cljs +(comment (rf/dispatch [:navigate-to :your-favorite-buggy-screen])) +``` + +> TIP: you can run this from an untracked user namespace `(ns user)`, from which you can experiment or interact with the REPL. This is where I usually keep my development navigation forms. + +#### REPL-ing a component + +This is also straightforward, but there are some small differences. Just like above, we only have to evaluate a dispatch form, as follows: + +```cljs +;; example debugging a quo component, although it could be any other component e.g. from the `status-im2` ns. +(comment (re-frame/dispatch [:dev/preview-component + [quo/slide-button + {:track-icon :face-id + :track-text "preview component example" + :customization-color :blue + :on-complete identity}]])) +``` + +When evaluated, a full-screen bottom sheet will appear with your component inside. You can make changes to the props or the component internals and re-evaluate the changed forms, after which the component will be re-mounted without running a reload (unless you save the file). Other times it's quicker to just hit save and the component will be reloaded as usual (except for the props you evaluated, which have to be re-evaluated when changed). + +> TIP: You can have multiple versions of the component as separate comments to check for the component variations + +> TIP: You can leave `comment` blocks at the end of component files (other than quo, since can be previewed in other ways) with usages of components, which other developers can use for visualisation/testing. diff --git a/doc/decisions/0001-record-decisions.md b/doc/decisions/0001-record-decisions.md new file mode 100644 index 00000000000..84e706c41bf --- /dev/null +++ b/doc/decisions/0001-record-decisions.md @@ -0,0 +1,40 @@ +# 1. Record Decisions + +| Date | Tags | +|------------|---------| +| 2018-02-16 | process | + +## Status + +Proposed + +## Context + +We make a lot of decisions during the life of a project and +documenting those decisions would help new team members and outside +contributors follow our thinking. It also opens up an opportunity for +constructive criticism around those decisions which will result +in better decision making. + +We want to develop a product in the open. Opening up our decision making process for outside contributors is an important part in providing the opportunity to take ownership and impact the project in non-trivial ways. + +Recording decisions will also be a useful form of documentation in general as it does not get out of date. All that's documented is that a decision has been made at a certain point in time. + +## Decision + +We will adopt a format similar to [Architecture Decision +Records](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions) (ADR) +to propose and document notable decisions. In contrast to ADRs we will try to embrace this tool for more than just architectural concerns. Decisions regarding development practices and product direction are just as important. + +What decisions are notable and which are not is left to common-sense and informal consensus among the team. + +Decisions may be proposed and discussed informally, should however eventually end up — with all relevant discussion summarized — in the `doc/decisions/` directory of this repository. + +Decisions are numbered to have a clear identifier. + +## Consequences + +- We need to document that we record decisions this way and where people can find those documents. +- We should probably provide some pointers around tooling to better work with decision records. [`adr-tools`](https://github.com/npryce/adr-tools) comes to mind. +- Since we deviate from ADRs a bit (we document more than architecture-related decisions) we might need to provide different templates than what comes with tools like `adr-tools` by default. + A template like this may also be useful to guide decision authors to provide appropriate context. diff --git a/doc/decisions/0002-extension-uri.md b/doc/decisions/0002-extension-uri.md new file mode 100644 index 00000000000..7e47f5f2c30 --- /dev/null +++ b/doc/decisions/0002-extension-uri.md @@ -0,0 +1,28 @@ +# 0002. Extension URI + +| Date | Tags | +|---|---| +| 2018-04-26 | extension, uri, ethereum | + + +## Status + +proposed + +## Context + +Extensions are defined by an EDN file accessed from decentralized storage. An URI schema allows to identify those files. + +## Decision + +URI follows ethereum URI schema as specified in [EIP 831](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-831.md) + + +``` +uri = "ethereum:" path +path = "status:extension" ":" storage "@" id +storage = STRING (e.g. IPFS) +id = STRING (e.g. IPFS hash) +``` + +An example of an extension available on IPFS is: `ethereum:status:extension:ipfs@QmTeW79w7QQ6Npa3b1d5tANreCDxF2iDaAPsDvW6KtLmfB` diff --git a/doc/decisions/0003-geth-node.md b/doc/decisions/0003-geth-node.md new file mode 100644 index 00000000000..1f663c5d957 --- /dev/null +++ b/doc/decisions/0003-geth-node.md @@ -0,0 +1,87 @@ +# 0003. Geth node for Beta + +| Date | Tags | +|---|---| +| 2018-05-14 | architecture, p2p, scope | + + +## Status + +proposed + +## Context + +On the path to releasing a usable beta we've faced a variety of performance +issues: + +- https://github.com/status-im/ideas/issues/55 +- https://ideas.status.im/ideas/071-low-traffic +- https://ideas.status.im/ideas/076-smooth-ui +- https://ideas.status.im/ideas/083-energy-efficient + +Some of these performance issues are related to the use of LES, especially on +Mainnet. Examples of problems include: slow/hot sync, disk filling up, bandwidth +usage, etc. This can partly be remedied by the use of CHT to speed up sync +(https://github.com/status-im/status-go/wiki/Updating-CHT-BloomTrie). + +In order to simplify the problem, we decided earlier this year to not spend too +much time looking into performance improvements related to LES, instead focusing +our efforts on improving the performance on Whisper and in client-side code. + +This also means we don't have a full picture of to what extent LES is a +performance bottleneck for the Status app. It is possible proper use of CHT, +slowing sync down, vary load depending on if you are on WiFi or not, etc, can +solve these problems. However, the consensus right now is that ULC is the more +promising route to take. + +However, since ULC isn't ready yet, this means we are relying on Infura. This +is a bad idea from a decentralization and security point of view. This can be +partly remedied by allowing the user to run an upstream node. It is still a bad +trust model, relying on third-party Ethereum nodes, and we want to get away +from this as soon as possible. + +With ULC it is possible to connect to more than one node, which increases +decentralization and security. + +## Decision + +1. Rely on upstream nodes for beta. For the closed beta scheduled to be releases +Q2 we will provide two ways of accessing the Ethereum network: + +- Upstream RPC with Infura (default) +- Custom upstream node (https://github.com/status-im/status-mobile/issues/3994) + +From a decentralization point of view we need the latter before we can release +the beta. + +2. ULC MVP. Additionally, as soon as beta is released, assess and start to + introduce ULC as an experimental non-default mode in the app. + +By doing this we also support the network, since it is still a very new +protocol. ULC requires trusted peers to operate, and right now trust is +established by config (list of trusted peers). + +Initially we could hardcode these nodes, with option to add your own. Later on +we can have some form of distributed directory with a rating system. This also +likely requires merging ULC upstream, so we aren't the only ones running trusted +nodes. + +3. LES track (optional). If we still have resources and there's interest, +optionally run a parallel track to clean up LES usage (update CHT, cluster) and +understand exact performance impact and viablity of running LES on +resource-constrained devices. + +These three decisions balances the following trade-offs: + +- get a usable beta released as soon as possible +- provide users with options to get minimal amount of decentralization +- pave the way for trustless usage by default (ULC/LES node) + +## Consequences + +Most of this is captured above. + +- 1. Make sure custom upstream RPC is in beta and works +- 2. Disable LES from beta release as it currently doesn't work reliably +- 3. Continue work on https://github.com/status-im/ideas/pull/254/files, consider + adding more resources to get it into MVP state as soon as possible diff --git a/doc/decisions/0004-disable-group-chats.md b/doc/decisions/0004-disable-group-chats.md new file mode 100644 index 00000000000..6bbec4aec96 --- /dev/null +++ b/doc/decisions/0004-disable-group-chats.md @@ -0,0 +1,34 @@ +# 0004. Disable group chat + +| Date | Tags | +|---|---| +| 2018-05-14 | scope, chat | + + +## Status + +proposed + +## Context + +We want to launch our beta in Q2. This requires us to keep a tight scope and stay on the critical path. + +Group chat is not as vital as 1-1 chat for the chat experience. It is also +likely not as useful for an MVP as public chat is, since this gives people a +chance to talk to strangers and it is open by default. + +Whether group chats are in scope or not has been a recurring discussing and a +lot of effort has been wasted related to this. + +There are currently a lot of outstanding regressions related to group chat: https://github.com/status-im/status-mobile/labels/group-chat Additionally, since group chats are private the encryption and security of those are generally harder than 1-1 and public chat. + +## Decision + +Disable group chat for beta and don't work on bugs related to it until after. See https://github.com/status-im/status-mobile/issues/3995 + +This ensures we can release beta without blockers, and then we can take some +time to fix group chats properly. + +## Consequences + +Group chats disabled in beta. People won't be able to chat in private groups. diff --git a/doc/decisions/0005-discovery-protocol.md b/doc/decisions/0005-discovery-protocol.md new file mode 100644 index 00000000000..4ab9212dd27 --- /dev/null +++ b/doc/decisions/0005-discovery-protocol.md @@ -0,0 +1,39 @@ +# 0005. Use Discovery v5 protocol + +| Date | Tags | +|---|---| +| 2018-05-14 | architecture, p2p, ethereum | + + +## Status + +proposed + +## Context + +Currently peers for messaging are hardcoded in the app. This means we can't +easily scale, as some of these nodes might fill up when we have more than N +active users. + +Discovery v5 protocol (https://ideas.status.im/ideas/092-disc-v5-research, +https://github.com/fjl/p2p-drafts/blob/master/discv5-eip.md) allow us to +discover new peers from the app and scale server peers in our cluster +independently. This is vital for high availability/reliability and security. + +## Decision + +- Use and enable Discovery v5 for all networks +- Do this before beta is released + +This means we have capacity to achieve 5000+ DAU / 500 concurrent connection. It +seems unlikely we can do so with reliable messaging in the current setup. + +Trade-off for this is: +- Uncertainty in introducing a new protocol leading to possible delays +- Possible increase in CPU/Network (we can disable protocol once peers are found though) + +## Consequences + +- This is a top priority for P2P team, lead by @dshulyak and assisted by @adambabik and @jacob +- We need this battle tested to get it into app as soon as possible +- Chat, mobile team and QA team should be aware of this protocol change diff --git a/doc/decisions/0006-wallet-compatibility.md b/doc/decisions/0006-wallet-compatibility.md new file mode 100644 index 00000000000..d8523fc3f9a --- /dev/null +++ b/doc/decisions/0006-wallet-compatibility.md @@ -0,0 +1,61 @@ +# 0006. Wallet Compatibility + +| Date | Tags | +|---|---| +| 2018-05-15 | ethereum, wallet | + + +## Status + +Proposed + +## Context + +Idea [142-Wallet-Compatibility](https://ideas.status.im/ideas/142-wallet-compatibility/README) changes the way we generate keys starting from the 12 mnemonic words. + +This change allows users to create a wallet in other apps and import the same address in Status using the 12 mnemonic words. + +### Breaking Changes + +The 12 mnemonic words will generate different addresses and whisper identities (public key). We should communicate this properly and recommend users to create new accounts. + +### Features + +If users used a dapp in an external app/wallet, they would be able to continue to use the same dapp with the same account in Status. + +## Decision + +* update the BIP39 seed generation to use the salt `"mnemonic"` instead of `"status-im"` following [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed). + +* update the master key generation using the constant `"Bitcoin seed"` instead of `"status-im"`, following [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#master-key-generation). + +* remove the use of the password in the salt during the BIP39 seed generation (password is not removed from the app in general, and it's still required to encrypt the keys on the device). + +### Relevant reading + +* [BIP39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki) +* [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki) +* [BIP44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) + +## Consequences + +Given that we changed the algorithm used to generate keys and addresses, it will be impossible to re-import accounts created with the old algorithm in Status. + +If you have any token in your old account, you can upgrade to the new version and move them to a new one created with the new algorithm. + + +### Upgrade example + +1. I create account A using an old version of Status. +2. I upgrade Status. +3. I can still log in to account A using my password. +4. I create a new account B. +5. I copy the address of account B to the clipboard. +6. I log out. +7. I log in to account A. +8. I send my tokens to account B. + +### Warnings + +After step 2, you won't be able to re-import account A. +If you uninstall Status, or you install Status to a different device, and import existing account using the 12 mnemonic words of account A, the address generated will be different from the original one. diff --git a/doc/decisions/0007-masking-sensitive-data.md b/doc/decisions/0007-masking-sensitive-data.md new file mode 100644 index 00000000000..14518570b0f --- /dev/null +++ b/doc/decisions/0007-masking-sensitive-data.md @@ -0,0 +1,41 @@ +# 0007. Masking Sensitive Data + +| Date | Tags | +|---|---| +| 2018-05-22 | e.g: architecture, security | + + +## Status + +Proposed + +## Context + +We have some data that we don't want to appear in the logs (user passwords are +a good example). Currently, they are passed around as strings, that could be +printed out by mistake in a log entry (see https://github.com/status-im/status-mobile/issues/4053) + +## Decision + +To minimize the risk of leaking passwords through logs, we should not pass +passwords as strings in our codebase. We introduced a new type `MaskedData` in +`status-im.utils.security`. +update (16-Dec-2022) `status-im.utils.security` is now moved over to `utils.security.core` + +We use `(security/mask-data ` to wrap sensitive data into this +type and then use `(security/unmask )` to get the plaintext back. + +It is important to keep that sensitive data masked as much as possible, until +you need the plaintext to pass to the extenral APIs. + +Example: +```clojure +(println (security/mask-data "my-plaintext-password")) ;; Outputs "******" +(println (security/unmask (security/mask-data "my-plaintext-password"))) ;; Outputs "my-plaintext-password" +``` + +## Consequences + +Tradeoffs: +- developers need to be aware of this type and have a clear separation where do +we use plaintext and where do we use masked datak diff --git a/doc/decisions/0008-feature-toggles-development.md b/doc/decisions/0008-feature-toggles-development.md new file mode 100644 index 00000000000..fa4f7cee797 --- /dev/null +++ b/doc/decisions/0008-feature-toggles-development.md @@ -0,0 +1,92 @@ +# 0007. Feature toggles development + +| Date | Tags | +|---|---| +| 2018-05-25 | development | + + +## Status + +Proposed + +## Context + +This change describes a methodology of development which we believe will help +us increase the confidence and speed in the development process. + +### What problem are we trying to solve + +Currently the time between a PR is sent and the code gets merged is between 1 day +to in some case 4 to 5 days. + +This has some disadvantages: + +1) This workflow incentivises developers to make large PRs, as building +incrementally but having to wait 2 to 3 days for the code to be merged at each +step is not desirable and results in loss of context. + +2) If a bug is introduced it is harder to fix, as the longer it takes to integrate code +the more likely the developer has lost familiarity with the code. + +3) Constant rebases introduce an overhead for the developer and can introduce +subtle bugs, as rebased code is not thoroughly reviewed. + +4) Code review is only performed once, but during the manual QA step significant +changes might be added, which are not reviewed anymore. + +### How are we going to address it + +We believe feature toggles development https://martinfowler.com/articles/feature-toggles.html +is a step in the right direction. + +The way it would work is: + +A developer starts working on a new feature. +Any new code will be scoped behind a feature flag and: + +1) no significant changes are made to the existing codebase +2) no changes are visible to the user when the feature flag is off + +In this case the manual QA step can be skipped, and the code can be integrated +as soon as the review step is done. + +Clojure reviewers can object if they think the changes are so significant that +manual QA is required. + +This process should ease some workload on the QA team and move some of the +responsibilities on clojure developers. + +### What needs to change + +To improve no bugs are introduced, there needs to be a concerted effort in +improving the current test suites, both e2e and clojure, and ensure new code is +sufficiently covered. +The shape/type of tests needed is open to discussion, but generally light +integration tests + light e2e tests are a good approach for this kind of workflow. + +Also manual smoke testing of the images generated is necessary, until we are +more confident on our test suites. + +Once the feature is to be toggled, a PR will be sent changing the config, +at which point manual QA will be required before merging. + +If fixes are to be applied, they can be made in a separate PR, which can skip manual QA, +but will not skip code review, ensuring that subsequent changes are reviewed. Once those are +merged into develop, the PR that changes the feature toggle will resume testing. + + +### How far we want to go + +At the most extreme, this workflow allows push-to-master, with multiple commits +a day being integrated, but this would hardly fit with the code-review process. + +The idea is to add some rigour to the process so that the review step is meaningful, +essentially at any point it could be toggled on and it should provide **value** to the +end user. + +This means that PRs that will skip manual QA need to be deliverables and +presentable to an end-user (no incomplete implementations), i.e. features +need to be split into meaningful chunks. + +Not all code contributions will want to use this workflow, it is up to the developer +to decide. diff --git a/doc/decisions/0009-release-process-mobile.md b/doc/decisions/0009-release-process-mobile.md new file mode 100644 index 00000000000..fb0aba66232 --- /dev/null +++ b/doc/decisions/0009-release-process-mobile.md @@ -0,0 +1,147 @@ +# 0009. Mobile App Release Process + +| Date | Tags | +|---|---| +| Tue Jul 24 | process, release | + + +## Status + +accepted + + +## Context + +Classical release approach: we cut off the release branch, stabilize it, fix every critical issue and release. Some changes are cherry-picked to the release branch. + +It has a couple of downsides: + +- Resources are scattered across two branches; + +- Unique fixes and unique combination of commits in the release branch; + +- Unpredictable release schedule (any day can be a release day!). + +## The Process + +We do "failable releases" approach instead, when the release either happens on +a specific day, or doesn't happen. +We aim for a weekly cadence. +But even more, we aim to be frank about the release state, give ourselves +a permission to fail a release. + + +### The Release Checklist +_☝️ a release blocker is a GHI with “release” tag on it_ + +1. Do a release testing on a nightly. +1. If it is good enough (no release blockers), cut a release branch, like `releases/0.9.23`. If there is an existing branch from the previous unsuccessful release, rebase it to the current state of `develop`. +1. 🔄 Test the release branch, fix release blockers. +1. Cherry-pick only release blockers to the release branch. +1. Check-up with other teams (@go, #core-infra). +1. Mobile releases should not happen at the same time as cluster upgrades. +1. *After* the release branch is cut + - update status-go on `develop` (NOT the release branch); + - bump the app version on `develop` (NOT the release branch). +1. Update release notes, and app descriptions in GP and App Store (see [this section](#release-notes)). +1. If [“go/no go” assessment](#go-no-go) is negative (“no go”), just abandon the release branch. + + +### Failable Releases +Failable release philosophy: +- We track potential release blockers as early as possible (based on testing of nightlies); +- We cut off the release branch when there are no big blockers (wednesday morning the latest); +- We fix remaining release blockers on `develop` and cherry-pick fixes to the release branch; +- If we aren’t able to fix all release blockers in time™, leaving enough time for QA to thoroughly test the release, we mark this release as failed and focus on releasing next week; +- Next week we just rebase the release branch on `develop`. + +### What is this failed release anyway? +1. Nothing is published to our users; +1. We don’t keep the release branch around, next week we force-rebase it to the latest state of `develop`. + +### Is it bad to fail a release? +Nope. One of the nice side-effects of the failable release approach that it shows the real state of the develop branch. +Trying too hard to release anyway might paint a picture that is better than the reality. +If there are too many failed releases, it is an indication that something is wrong with our `develop` or PR intakes, not with the release process. Don’t shoot the messenger :) + +### “Go/No-Go” decision +The “no-go” decision can be make: +1. If there is a huge blocker on develop that we are not sure we will be able to fix in time; +1. If there is no time left for QA to make thorough testing; +1. If we don’t feel confident in some critical feature of the app, even if there is no critical issues found there; +1. If one of the teams (status-go, cluster, etc) isn’t ready for this release (check with the `#core-infra` or `@go`). + +### Schedule +- We aim to submit an iTC build every Friday to have time for Apple to review it. +- We aim to publish a release every Monday. + +Note, that to aim is a key word there. If we fail to release in time, we just skip this week’s slot and try to release next week. + +So, schedule might look like that: +``` +May, 11: Release 1 +May, 18: failed release, nothing is published +May, 25: failed release, nothing is published +June, 1: Release 2 +... +``` + +So, as you can see releases happen only on Mondays. +They might or might not happen, but the schedule stays consistent. + +### Release Notes +We keep the file [`CHANGELOG.md`](../../CHANGELOG.md) in the repository. +We also have an ongoing document with them. + +#### iOS Test Flight Release +**Upload to AppStore Connect** +Use [this Jenkins job](https://jenkins.status.im/job/status-mobile/job/upload_release_ios/) + +**“What to test” field** +When AppStore Connect asks you to fill in the field called “what to test”, just copy the release notes there. + +**Submitting to the review** +We submit it on Friday, fix the compliance and add the group called “External Testers”. Don’t make the group name scare you, the real testers are in the group called “testflight-boarding”. + +Don’t forget to update screenshots if necessary! + +Then we submit it to Apple review. + +**Releasing to our beta-testers** +If reviewed successfully, we can share it to our users by adding “testflight-boarding” group to our build. As soon as it is added, invitations to upgrade are sent to our beta-testers! + +### GP Release +The uploaded release is **immediately available**! +Do it only if the iOS build is approved by Apple! + +Use [this Jenkins job](https://jenkins.status.im/job/status-mobile/job/upload_release_android/) + +Don’t forget to update the screenshots if necessary! + +**App Description** +App description needs to be updated. It is much shorter than the release notes, so it is important to trim them down for GP. + +### Flexing & Planning +With this approach we don’t plan features for release. We plan features for priorities. +What is the difference? +When we plan features for release, a feature A absolutely has to be included in release 0.2. That means, that if feature is not ready yet, the release 0.2 is not happening. + +In features for priorities approach we plan which feature comes before or after which. Say, if we have features A, B and C and we know that A is more important than B and C then we will try to release it earlier. + +In that case releases history might look like these: +``` +Week 1: 0.1 - failed +Week 2: 0.1 - feature A released +Week 3: 0.2 - polishing of feature A and bugfixes +Week 4: 0.3 - feature B +Week 5: 0.4 - feature C +... +``` + +So we keep releasing cadence even if there are no features to release. + +### Retrospective +Each release ends with a short retrospective/planning session for the next week. + + + diff --git a/doc/decisions/0010-remove-jail-and-status-api.md b/doc/decisions/0010-remove-jail-and-status-api.md new file mode 100644 index 00000000000..2590047a672 --- /dev/null +++ b/doc/decisions/0010-remove-jail-and-status-api.md @@ -0,0 +1,51 @@ +# 0010. Remove jail and Status API + +| Date | Tags | +|---|---| +| Thu Aug 16 | jail, 3rd-party-code, extensions | + +## Status + +accepted + +## Context + +Originally, we supported 3rd party status extensions in form of javascript jailed execution environment (eq Jail) + small js library exposing chat commands API to js code. + +While neat in theory, it has some serious downsides: + +- Design of the API was quite poor, preferring mutable semantics over stateless API leveraging strength of the host application (cljs/re-frame). + As a result of that, more dynamic/state requiring things (like the live tx detail in `/send` command messages) were very hard to do, + so instead of "eating our own dogfood", we decided to side-step the API and implement such things as hard-coded logic in the app, while partly + retaining the js code for "easier" things (like parameter declaration). + Needles to say, such efforts produced code of very poor quality, riddling our app with hard-coded "magic" everywhere in the codebase, completely + defeating the point of "dogfooding" while still requiring more effort and being much more error prone (no way to unit test jail logic) because + of the need to asynchronously communicate with jail for leftover logic in command messages (the parts not hardcoded in app). + +- We were in a state where there was not even one command defined completely in jail, with all of them requiring custom hardcoded logic in app to + actually work. + Due to numerous changes and rush to get things working, half of the API was obsolete and was not working/working differently then described in + the API documentation. + +- We are quite tight stretched regarding performance and the Jail didn't particularly help with that - whenever some command message was defined in + Jail, it required constant RN Bridge "ping-pong" whenever sending the message or receiving the message, eating more resources + breaking otherwise + quite simple logic into harder to reason asynchronous call chains (execute method defined in Jail, wait for the result, execute next method in Jail...). + +- Till now, there was no real interest in 3rd party bots anyway - the only "real" DAPPs submitted to status were "normal" DAPPs utilising just the `web3.js` + API and built on top of regular web technologies, so they could be ran in any Ethereum client like Metamask or Mist, besides Status. + +- There is a very promising new concept of extensions (project pluto), which will enable to extend status with much nicer and declarative extension + definitions. + Such extensions will not be able to only hook-in into the command messages logic, but also other application (host) hooks, like wallet assets/collectibles, + chat contacts, etc. + +## Decision + +In the light of points above, we decided to remove Jail and `Status.js` API from the application and re-work command messages in set of nicely +encapsulated app level protocols, so command related logic will be defined in one place, commands will be able to leverage strength of our platform +and development of any new functionality related to them will be much faster and more pleasant. +We will address the 3rd party code issue separately by extensions. + +## Consequences + +`Status.js` is deprecated and there is no way to define custom commands using javascript only. diff --git a/doc/decisions/0011-tweak-pr-process.md b/doc/decisions/0011-tweak-pr-process.md new file mode 100644 index 00000000000..30ff27e8978 --- /dev/null +++ b/doc/decisions/0011-tweak-pr-process.md @@ -0,0 +1,46 @@ +# 0011. Tweak PR process + +| Date | Tags | +|---|---| +| 2019-02-26 | process, pull-requests | + + +## Status + +accepted + +## Context + +There was a generally dissatisfaction with our PR flow process from multiple stakeholders, including devs, QA and design. These largely centered around size, speed of integration and quality of PRs. + +For more details, please see pain points in the meeting notes held end of February here: https://notes.status.im/C5pj8g7gQOu9Wo8PtDZsMw?edit# as well as the preceding Discuss thread: https://discuss.status.im/t/better-pull-requests-process/1044 + +Also see conversations in Core Dev Call #12 and #13: https://github.com/status-im/pm/ + +## Decision + +These specific policy changes were agreed upon (a la 'rough consensus' model). These are heuristics, and should be more of a guide than strict rules. Exception to these should be minimal though. + +**1. Reject PRs that don't have tests** +As a rule of thumb, coverage should increase. + +**2. Don't use or promote nightly as something for end users.** + +**3. Reject PRs that don't write what tests the author have done and what platforms you used to test, including screenshots, videos or logs** +This means QA and dev have to spend less time catching obvious problems. + +**4. Run tests when a PR is at "Review" stage on https://github.com/status-im/status-mobile/projects/7 (or add new 'e2e stage' between review and `TO TEST`)** + +**5. Dev asks for 2-3 reviewers, including a designer if the change affects UI, and these reviewers review within a day.** +This ensures we don't have *diffusion of responsibility* and that PRs are reviewed quickly. + +## Consequences + +This means we need to some form of release schedule up for Desktop. It also means we need to standardize tests, at least on Clojure side. + +Additionally, the following two medium term projects can't be fixed immediately but will be started: + +- Look into integration tests, headless tests. Andrea is looking into. +- Look into iOS automated test and more platform. Anton will look into. + +Follow up on this will happen at a later Core Dev call. diff --git a/doc/decisions/0012-using-pivotal-tracker.md b/doc/decisions/0012-using-pivotal-tracker.md new file mode 100644 index 00000000000..17f0ab52f33 --- /dev/null +++ b/doc/decisions/0012-using-pivotal-tracker.md @@ -0,0 +1,48 @@ +Using Pivotal Tracker +=== + +## Abstract + +The Core Improvements swarm tracks its workflow in a Pivotal project. Although GitHub items can still be created to facilitate communication, the official way to track progress of a functionality/bug fix is in Pivotal. + +[Project board link](https://www.pivotaltracker.com/n/projects/2232205) + +## Creating Pivotal Stories + +Fill in `Story Type`, `Requester`, `Owner` (if already assigned), and `Points` (if an estimate is available). Add a description and optionally group it using a label. As a rule of thumb, Pivotal stories should be grouped in epics for better high-level visibility. Although labels can be used to group stories, the prescribed way to do that is through epics. + +You can add tasks under a Story for smaller items that don't warrant its own Story. + +Do add the link to the Pull Request to the Story when one is available. + +## Lifetime of a Pivotal story + +The `State` field in the Pivotal story is used to track the progress of a Pivotal Story, and has the following interpretation: + +| State | Meaning | +| ---------- | -------- | +| `Unstarted` | In backlog | +| `Started` | Developer has started work on story | +| `Finished` | Developer has finished work on story (Pull Request for story is in [REVIEW](https://github.com/status-im/status-mobile/projects/7#column-1843024) column in [Pipeline for QA](https://github.com/status-im/status-mobile/projects/7) board) | +| `Delivered` | Pull Request for story is in testing in [Pipeline for QA](https://github.com/status-im/status-mobile/projects/7) board) board | +| `Accepted` | PR has been merged | +| `Rejected` | PR has been aborted | + +### Rules of thumb + +- **Q:** _When to create a Pivotal story?_ + **A:** Stories should be created whenever estimated work exceeds half a day, or when part of a bigger epic. + +- **Q:** _What do points equate to?_ + **A:** We've agreed to make 3 points equate roughly to 1 day of work. From there, we can extrapolate: + + | Points | Estimated Time | + | -------- | ---------------- | + | 0 points | < 1 hour | + | 1 points | 1 hour - 0.5 days| + | 2 points | 0.5 - 1 days | + | 3 points | ~1 day | + | 5 points | 2 - 3 days | + | 8 points | ~1 week | + + We should avoid 8 point stories by breaking them down into smaller stories as much as possible. diff --git a/doc/decisions/0013-tribute-to-talk.md b/doc/decisions/0013-tribute-to-talk.md new file mode 100644 index 00000000000..744205417a9 --- /dev/null +++ b/doc/decisions/0013-tribute-to-talk.md @@ -0,0 +1,113 @@ +# 0013. Tribute-to-Talk + +| Date | Tags | +|---|---| +| 2019-04-02 | spam filtering, blocking, chat | + + +## Status + +proposed + +## Context + +The whitepaper describes Tribute to Talk (TtT) as an economics-based anti-spam filter for receiving messages and "cold" contact requests from user. Stakeholders would stake a minimum amount of SNT that another Status stakeholder must deposit in order to contact him directly. +The whitepaper also proposes that the deposit is only forfeited to the recipient if he replies. + +## Decision + +Considering: +- the absence of efficient ways to perform anonymous transactions (zk-snarks could be used in the future for that) +- the impossibility to prove that a recipient has made an actual reply and not some kind of automated reply (captcha solution was proposed, but wouldn't be practical until we can use a solution such as swarm feeds that allow users to make free updates to their captcha without on-chain transactions) +- the limited time to develop the feature + +We opted for a solution that: +- doesn't establish a direct correlation between the tribute payment and an on-chain transaction, so it +- uses regular transactions for tributes payment, giving users plausible deniability about the nature of the payment +- doesn't store tribute information on-chain + +## Manifests + +Since TtT related information aren't stored on chain, they need to be stored somewhere else. +For the first iteration of TtT we opted for IPFS, which is already used across the app for other forms of content, through Infura IPFS gateway. + +On IPFS we store what we call a ttt manifest, which is a json file with the following format: + +```json +{ + "tribute-to-talk": + "snt-amount": "snt amount in wei that a user has to pay as tribute", + "message": "a personalized message to display to users trying to contact stakeholder" +} +``` + +When a user sets TtT in his profile, the manifest contenthash is added to the registry contract (which requires a transaction). +The TtT contract points ethereum addresses to contenthash manifests. In the current implementation, the manifest is not encrypted, but we think it would be a privacy improvement to have symmetric key encryption for the manifest using the user public-key. That way, parsing the contract event log is useless to collect TtT manifests because there is no way to find the public key from the address, but legit users will know the public-key already. + +### Future implementation + +We were considering Swarm feeds to upload manifests but we were worried about the current instabilities, particularly a bug that was returning stale reads very often and made it unsuitable for our usage. + +Swarm feeds are the ideal solution as they allows users to set a manifest without any transaction which makes the registry contract completely obsolete. +The format of the manifest will stay the same, but could be extended with other top-level keys to serve as a public profile as well. + +## Implementation + +### Checking manifest + +In status app, we check a user manifest when: +- the app starts (user checks his own manifest) +- a user's profile is opened +- a chat with a user is opened +If there is no match in the registry for the user address or if the manifest is not available, the client will consider that there is no tribute to talk set for the user. + +Relevant code is located in `status-im.tribute-to-talk.core` ns + +### Whitelisting rules + +A is whitelisted by B: +- A received a contact request from B +- A has paid the tribute to B +- B has paid the tribute to A + +A whitelists B if: +- A sent a contact request to B +- A has paid the tribute to B +- B has paid the tribute to A + +### Paying tribute + +The tribute payment is a regular SNT transaction greater or equal to the value of the snt-amount key in the manifest. + +The id of the transaction is sent along messages in the payload top level `:tribute-transaction` key as long as the sender isn't sure that he is whitelisted by the recipient (see `whitelisting rules` above). + +The UI in status app waits for 1 confirmation on chain before allowing the user to send a message to ensure the recipient will see the payment and not ignore the message. + +## Upgradability + +The registry contract has a `stopped` attribute that needs to be checked on start-up by clients. If the contract is stopped, this means that a new version of tribute to talk that is incompatible with the current one has been released. + +Old clients MUST check if the tribute to talk contract is stopped and MUST disable tribute to talk if it is. +Old clients MUST warn the user when they open a chat with a user that may have not whitelisted them that their messages will be ignored if the recipient has tribute to talk enabled. + +New client will be using a different contract + +## Consequences + +### Data collection of manifests' data + +- if we don't encrypt the manifests with the users public key, the registry contract logs can be used to collect manifest contenthashes which can then be downloaded and the data aggregated +- SNT transactions could then be correlated to have an estimate of which SNT transactions are like to be tributes payments (it would give the "attacker" an additional filter on transaction amount, transaction recipient being already known through the registry contract without the manifest) +- this would not be possible with swarm feeds as there wouldn't be a registry contract to look at. + +### Impact of token transactions +- currently there is a wallet limitation that limits the token transactions list to the past 2 weeks, this means that if a user pays and doesn't send any message after the payment for 2 weeks, he will silently be ignored. +- this will be solved by fixing the transaction list in the wallet + +### Edge cases (implementation specific) + +- if A and B have a conversation, and B suddenly sets TtT on, if B didn't add A as a contact, A messages will be filtered and A will not now it until he leaves and returns to the chat + +### Switching networks + +When switching between networks, the app uses the settings on the current network. This means that if one has TtT enabled on Mainnet and goes on Testnet, and one has no TtT settings on Testnet, TtT will be considered disabled and no messages will be filtered. diff --git a/doc/decisions/0014-wallet-team.md b/doc/decisions/0014-wallet-team.md new file mode 100644 index 00000000000..ae014bb3167 --- /dev/null +++ b/doc/decisions/0014-wallet-team.md @@ -0,0 +1,30 @@ +# 0014. Team-structure + +| Date | Tags | +|---|---| +| 2023-06-16 | wallet team | + +## Status + +Proposed + +## Context: + +In order to try out vertical team, which is a structure that is wanted by the company, we will be creating a wallet team within the mobile team. +Some member of the mobile team will join the current wallet team, which is composed by developers from desktop and lead by @alaibe, on a voluntary basis. +The responsibilities of the team are to implement the new wallet UI, with the support of the current wallet team, which will be assisting with the status-go work. + +## Decision + +The team members for the initial wallet team are: + +- @rasom +- @OmarBasem +- @vkjr +- @J-Son89 +- @briansztamfater +- @smohamedjavid +- @ulisesmac +- @erikseppanen +- @mmilad75 +- @tumanov-alex diff --git a/doc/decisions/0015-team-structure.md b/doc/decisions/0015-team-structure.md new file mode 100644 index 00000000000..8bbceee5361 --- /dev/null +++ b/doc/decisions/0015-team-structure.md @@ -0,0 +1,46 @@ +# 0015. Team-structure + +| Date | Tags | +|---|---| +| 2023-06-16 | changes in team structure | + +## Status + +Proposed/partially implemented + +## Context: + +Currently, there is only a single team lead in the mobile development team, and after a meeting with the design team, it has been identified that the mobile app lacks polishness. One of the main issues identified is a lack of oversight in certain areas. To address this problem, it has been decided to create an additional role within the team. For each section of the mobile app (communities, syncing & onboarding, activity center & shell, wallet, messaging), a person will be selected to fulfill the responsibilities outlined below. + +## Decision + +The decision is to create an additional role within the mobile development team for each section. The individuals selected for these roles will have the following responsibilities: + +- Ensure GitHub issues are created for new features/designs of the section. +- Ensure issues are adequately described and linked as best as possible. +- Ensure issues have a grooming session where other developers can provide their feedback before working on the set of issues. +- Ensure all relevant parties are invited, such as designers, QA, Product Owner, leads, etc., as needed (including the designer who created the feature). +- Ensure there is consensus among the developers working on the section about the decided strategy approach. Ideally, this consensus should be documented. +- Ensure UI quality by organizing designer reviews and guaranteeing pixel perfection. +- Ensure overall implementation is satisfactory based on the predefined requirements. +- Ensure alignment between desktop, web, and mobile versions for the respective section in collaboration with the mobile developers and design team. +- Act as a point of contact for the design team with respect to the section. +- Ensure that someone goes through the designs once they are created with the respective designer. +- Assist the design team with technical feasibility analysis and address any product concerns. +- Facilitate the growth of the next team member into the role. + +The people identified for each sections are as follow: + +- Messaging @flexsurfer, followed by @alwx +- Syncing & Onboarding @siddarthkay +- Communities @ilmotta, followed by @ajayesivan +- Activity Center & Shell @J-Son89, followed by @Parveshdhull +- Wallet (once the vertical team is created) @J-Son89, followed by @briansztamfater + +This will be a rotating post, every 4 months it will go to the next in line. + +The wallet team might have longer times for rotation, as stability might be more important. That's still to be decided. + +# Follow-up Actions + +- Find suitable next in line for Messaging, Onboarding, Communities diff --git a/doc/decisions/README.md b/doc/decisions/README.md new file mode 100644 index 00000000000..157d41dc962 --- /dev/null +++ b/doc/decisions/README.md @@ -0,0 +1,12 @@ +# Decisions + +We record decisions. More context on why and how we do that can be found in [DR-0001](0001-record-decisions.md). + +The remainder of this document is intended to document tooling around this process. + +## Utilities to Write Decision Records + +- `doc/decisions/templates/template.md` - contains a template for a decision record. +- When recording a decision follow the established file name format + `XXXX-some-title.md` where XXXX is the ever increasing count of decisions + we've made. diff --git a/doc/decisions/UI-related/7-august-2023-paste-button-ux.md b/doc/decisions/UI-related/7-august-2023-paste-button-ux.md new file mode 100644 index 00000000000..122f1f50263 --- /dev/null +++ b/doc/decisions/UI-related/7-august-2023-paste-button-ux.md @@ -0,0 +1,31 @@ +### How should the paste button behave when clipboard is empty? + +This question first came up as a review comment to this PR +https://github.com/status-im/status-mobile/pull/16852 + +There were 2 considerations : +- Either keep the paste button disabled when there is nothing in the clipboard OR +- Always keep the paste button enabled + +There were positives and negatives for both approaches. + +Positives of keeping paste button disabled when there is nothing in clipboard would require us to +check the value of clipboard as soon as the component is mounted (i.e when the user first sees +the screen). In iOS this means a native permissions dialog would appear requesting for permissions +to paste from the clipboard. + +Negatives of this approach is that as soon as any user navigates to this screen they are greeted with +this popup which can be annoying sometimes. + +Positives of keeping paste button always enabled is that we can trigger a request to the clipboard on +tap of the paste button which would trigger the native permissions dialog requesting for permissions +to paste from the clipboard. +In this case seeing this dialog is okay because the user has initiated a paste action. + +Negatives of this approach is that in the event the clipboard is empty the user will still see the +system dialog and on approving nothing will be pasted (because the clipboard was empty). +This behaviour can be confusing. + +On consulting the Design Team via discord it was concluded that out of the two approaches +having the paste button always enabled is a better UX overall. + diff --git a/doc/decisions/templates/template.md b/doc/decisions/templates/template.md new file mode 100644 index 00000000000..01c4d407048 --- /dev/null +++ b/doc/decisions/templates/template.md @@ -0,0 +1,31 @@ +# NUMBER. TITLE + +| Date | Tags | +|---|---| +| DATE | e.g: architecture, database | + + +## Status + +STATUS + +Common states: proposed, accepted, rejected, deprecated, superseded + +## Context + +Describe the context in which the decision has been made. +Some questions that should give some ideas what to write here: + +- What problems have you encountered that this decision impacts? +- What is the current state of things that are related to this decision? + +## Decision + +Describe your decision. + +- In what ways does it solve the aforementioned problems or improves something? +- What tradeoffs does this decision make? + +## Consequences + +Expand on tradeoffs and other side-effects of this decision. diff --git a/doc/dependencies.md b/doc/dependencies.md new file mode 100644 index 00000000000..9bb6deee3f7 --- /dev/null +++ b/doc/dependencies.md @@ -0,0 +1,156 @@ +## "@react-native-community/netinfo": "^3.2.1" + +no known issue while updating version + +used to monitor network information (connected, expensive, connection type) + +## "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status" + +used to work with big numbers in JS +BN.js (used in web3-utils) doesn't support decimals, though we could work without decimals + +should be replaced by JSBI https://github.com/GoogleChromeLabs/jsbi/blob/master/README.md +see web-utils issue: https://github.com/ethereum/web3.js/issues/2171 + +## "buffer": "^5.4.2" + +required by bignumber.js otherwise there is a compilation error + +## "chance": "^1.1.0" + +used to generate guids and random values in `status-im.utils.random` + +## "emojilib": "^2.4.0" + +used for emojis + +## "eth-phishing-detect": "^1.1.13" + +used to check if URL is known for phishing + +## "hi-base32": "^0.5.0" + +used only in `status-im.browser.core` to convert base58 hash into base32 hash +TODO: could be replaced by a simple implementation of ascii to base32 + +## "i18n-js": "^3.3.0" + +used to manage translations + +## "identicon.js": "git+https://github.com/status-im/identicon.js.git#v1.2.1-status" + +TODO: switch to latest upstream version, fork is seriously outdated and changes have been merged to master long time ago +used to generate identicons + +## "qrcode": "^1.4.1" + +used to generate QR code + +## "react": "16.8.3" + +react library, update based on react-native recommendation + +## "react-dom": "16.4.2" + +react library, update based on react-native recommendation + +## "react-native": "git+https://github.com/status-im/react-native.git#v0.59.10" + +react-native + +TODO: forked because of specific markdown handling, should be bountied to be turned into a library so we can go back to upstream version + +## "react-native-background-timer": "^2.1.1" + +used to have setTimeout and setInterval that don't trigger yellow warning about long timeouts + +## "react-native-camera": "git+https://github.com/status-im/react-native-camera.git#v1.1.5-1-status" + +used to read QR code and take profile picture +TODO: update version, this one doesn't work with Android (done in react-native upgrade branch) + +## "react-native-config": "git+https://github.com/status-im/react-native-config.git#0.11.2-1" + +used to fetch config values from env +TODO: not sure fork usage is justified + +## "react-native-dialogs": "^1.0.5" + +used to show dialogs but only in android in list selection `status-im.ui.components.list-selection`, iOS uses action-sheet +TODO: see if we should actually remove it + +## "react-native-fetch-polyfill": "^1.1.3" + +used to be able to put a timeout on fetch request +TODO: check if the fetch timeout is actually aborting the request or only ignoring the callback on the response, if it +doesn't then this is useless and we are better of using a simple seTimeout + +## "react-native-fs": "^2.14.1" + +used for some filesystem related functions, for instance to get no-backup directory in `status-im.utils.platform` + +## "react-native-gesture-handler": "1.3.0" + +library used by react-navigation +use version recommended by react-navigation + +## "react-native-image-crop-picker": "^0.18.2" + +used for profile picture + +## "react-native-image-resizer": "git+https://github.com/status-im/react-native-image-resizer.git#1.0.##-status" + +used for profile picture + +## "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status" + +used for storing password when user saves password +TODO: check if fork is necessary, merge with upstream? + +## "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v3.0.8_status" + +used to send email to support when phone is shaked + +## "react-native-screens": "1.0.0-alpha.22" + +used by react-navigation + +TODO: update once bug is fixed for Android that causes crash when app is back from background after being put in background with hardware backbutton press + +## "react-native-shake": "^3.3.1" + +used to send email to support when phone is shaked + +## "react-native-lottie-splash-screen": "^1.0.1" + +used to make splash screen with lottie animation during initial loading for android, also used as replacement of "react-native-splash-screen" for iOS + +## "react-native-status-keycard": "^2.5.7" + +used for keycard + +## "react-native-svg": "9.7.1" + +used for svg icons, mostly collectibles are using svg +TODO: updating requires a pod update on iOS + +## "react-native-biometrics": "^3.0.1" + +used for biometric authentication on Android and iOS + +## "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v8.0.7_3" + +used for browser + +## "react-navigation": "3.11.0" + +used for native navigation +fixed because even bugfix version upgrade causes runtime errors with current version of react-native + +## "react-native-draggable-flatlist": "https://github.com/computerjazz/react-native-draggable-flatlist" + +A drag-and-drop-enabled FlatList component for React Native + +## "react-native-shadow-2": "https://github.com/SrBrahma/react-native-shadow-2" + +A shadow component that is consistent across both platforms diff --git a/doc/fdroid.md b/doc/fdroid.md new file mode 100644 index 00000000000..1a80c8770b0 --- /dev/null +++ b/doc/fdroid.md @@ -0,0 +1,214 @@ +# Description + +This document describes how to update Status APK builds for the [F-Droid](https://f-droid.org/) Android application catalogue. + +# Intro + +In simplest terms F-Droid requires a YAML file that defines the steps necessary to create a universal unsigned APK build. This is achieved by submitting a new app version into the `metadata/im.status.ethereum.yml` file in the [fdroiddata](https://gitlab.com/fdroid/fdroiddata) repository. + +The app builds defined this way run on servers that generate the unsigned APKs using the [fdroidserver](https://gitlab.com/fdroid/fdroidserver) software. The [server setup](https://f-droid.org/en/docs/Build_Server_Setup/) is quite involved but is not necessary unless you want to run your own instance. Normally the applications defined in `fdroiddata` are built by servers maintained by [the F-Droid volunteers](https://f-droid.org/en/contribute/). + +First release of Status app was merged in [fdroid/fdroiddata#7179](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/7179). + +:warning: __WARNING__: Once changes are committed into `fdroiddata` repo they __cannot be changed__. + +# Adding New Versions + +There are two ways - automated and manual - described below. + +## Automated + +The script will analyze a provided APK, update the metadata file based on that information, and commit the change to [`fdroiddata`](https://gitlab.com/fdroid/fdroiddata) repo. The creation of merge request is manual. + +#### Requirements: + +- GitLab account +- Forked copy of the [`fdroiddata`](https://gitlab.com/fdroid/fdroiddata) repo +- Link to the release published + +#### Steps + +1. Use the F-Droid PR update script via `make`: + ```sh + make fdroid-pr APK=StatusIm-Mobile-v1.16.0-ef34af.apk + ``` + The script also accepts a URL. +2. Add a fork repo: + ```sh + git remote add john https://gitlab.com/john/fdroiddata.git + ``` +3. Push: + ```sh + git push john status-im/v1.16.0 + ``` +4. [Create a PR via the GitLab interface.](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) + + +## Manual + +You can find our configuration file at [`metadata/im.status.ethereum.yml`](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/im.status.ethereum.yml) + +The file defines all the necessary metadata like `SourceCode`, `Website`, or `License`, but the most important key is `Builds`, which looks like this: +```yml +Builds: + - versionName: 1.12.0 + versionCode: 2021022512 + commit: cfb825a11b61d312af8cb5d36686af540c31f481 + sudo: + - cd build/im.status.ethereum + - make fdroid-build-env + init: nix/scripts/setup.sh + output: result/app-release-unsigned.apk + scanignore: + - android/build.gradle + scandelete: + - ios + build: make release-fdroid BUILD_NUMBER=$$VERCODE$$ +``` +It contains a list of objects defining each release of the application. In order to add a new release simply copy a previous release object and adjust the following values: + +* `versionName` - String version like `1.12.0`. +* `versionCode` - Android `versionCode`. Normally it is generated from timestamp at build time. +* `commit` - Specific commit SHA1 from which the given release was built. + +The `versionCode` should be the same as the one in build that was uploaded to Play Store. +It can be found in the build logs or by using: +``` + > make shell TARGET=android + > apkanalyzer manifest version-code StatusIm-Mobile-v1.12.0.apk +2021022512 +``` + +At the bottom of the file you should also update the following keys: + +* `CurrentVersion` - Same as the new `versionName` added +* `CurrentVersionCode` - Same as the `versionCode` added + +Then submit a merge request with `Draft: ` prefix to the [fdroid/fdroiddata](https://gitlab.com/fdroid/fdroiddata) repository. +Prefix is necessary to avoid F-Droid people merging the PR before it's ready. + +:warning: __WARNING__: Currently GitLab PR builds will fail due to running as `root` instead of `vagrant` and failing to install Nix. + +# Checking Builds + +The simplest way to test if the app builds via F-Droid is to use the Docker image: +https://gitlab.com/fdroid/docker-executable-fdroidserver + +Which is available under `registry.gitlab.com/fdroid/docker-executable-fdroidserver:latest`. + +Because we use Nix to build the mobile app we need to slightly modify the image with this `Dockerfile`: +```Dockerfile +FROM registry.gitlab.com/fdroid/docker-executable-fdroidserver:latest +ARG BUILDER_UID=1000 +ENV BUILDER_USER=vagrant +RUN useradd -u $BUILDER_UID $BUILDER_USER +RUN mkdir -m 0755 /nix /home/$BUILDER_USER \ + && chown -R $BUILDER_USER /nix /home/$BUILDER_USER +``` +Build it using: +``` +docker build --build-arg=BUILDER_UID=$UID -t statusteam/docker-executable-fdroidserver:latest . +``` +Then clone the [fdroiddata](https://gitlab.com/fdroid/fdroiddata) and [fdroidserver](https://gitlab.com/fdroid/fdroidserver) repos and use it to test the build of a specific Status Android app version: `1.12.0` +``` +git clone https://gitlab.com/fdroid/fdroidserver +git clone https://gitlab.com/fdroid/fdroiddata +docker run --rm \ + -u $UID:$GID -e USER=vagrant \ + -v $PWD/fdroiddata:/repo \ + -v $PWD/fdroidserver:/fdroidserver \ + statusteam/docker-executable-fdroidserver:latest \ + build im.status.ethereum +``` +We have to create a user and specify the UID because Nix cannot run as `root` and that is the default user for the F-Droid Docker image. By adding our own user and setting the UID we also make it possible to mount folders like `fdroiddata` and `fdroidserver`. + +You can specify a `--verbose` flag for `build` command for additional information. +You can provide `--storage-opt size=30G` flag if Docker complains about running out of space. + +You should also run `lint` and `rewritemeta` for the App ID to verify and fix the YAML metadata formatting. + +# Scanning Builds Locally + +Based on the documentation provided here: https://gitlab.com/fdroid/wiki/-/wikis/Tips-for-fdroiddata-contributors/Setting-up-app-submission-development-environment-locally + +We can locally scan our source code and pre-built APKS by using the FDroid CLI tool. We can prepare a FDroid environment by +following [the steps mentioned in these instructions](https://gitlab.com/fdroid/wiki/-/wikis/Tips-for-fdroiddata-contributors/Setting-up-app-submission-development-environment-locally). + * Note, at the time of writing (March 2025), the easiest way to follow these instructions involved: + * Creating a new empty directory outside of the status-mobile repository. + * For this example, let's refer to this directory as `status-fdroid-server` + * Then git cloning the two referenced git repos inside the `status-fdroid-server` directory: + ```shell + git clone https://gitlab.com/fdroid/fdroiddata.git --depth=1 + git clone https://gitlab.com/fdroid/fdroidserver.git --depth=1 + ``` + * Then create a subdirectory inside `status-fdroid-server` named `apks` + * Then create a subdirectory inside `status-fdroid-server` named `scripts` + * Create a file inside the `scripts` folder named `env.sh` + ```shell + source /etc/profile.d/bsenv.sh + export GRADLE_USER_HOME=$home_vagrant/.gradle + export fdroid="sudo --preserve-env --user vagrant + env PATH=$fdroidserver:$PATH + env PYTHONPATH=$fdroidserver:$fdroidserver/examples + env PYTHONUNBUFFERED=true + env TERM=$TERM + env HOME=$home_vagrant + fdroid" + + export build=im.status.ethereum + ``` + * Create a file inside the `scripts` folder named `prep.sh` + ```shell + apt-get update && apt-get install -y make xz-utils + ``` + * Create a file inside the `scripts` folder named `run.sh` + ```shell + docker run --rm -i -t --privileged --pid=host --entrypoint "/bin/bash" \ + -v ${ANDROID_SDK_ROOT}:/opt/android-sdk:Z \ + -v $(pwd)/fdroidserver:/home/vagrant/fdroidserver:Z \ + -v $(pwd)/scripts:/scripts:z \ + -v $(pwd)/fdroiddata:/build:z \ + -v $(pwd)/apks:/apks:z \ + registry.gitlab.com/fdroid/fdroidserver:buildserver + ``` + * Create a file inside the `scripts` folder named `latest-version-code.sh` + ```shell + prefix="versionCode: " + resultLine=$(grep $prefix ./metadata/$build.yml | tail -n 1) + echo $resultLine | sed -e "s/^$prefix//" + ``` + * Then inside a terminal shell run the following command: + * `env ANDROID_SDK_ROOT= sh scripts/run.sh` + * Ensure you replace `` with the path to Android SDK folder. + * On macOS, the value could be: `$HOME/Library/Android/sdk` + * Once inside the Docker shell environment run the following commands: + * `sh /scripts/prep.sh` + * This command should install `xz` utils packages for installing the Nix package manager. + * `source /scripts/env.sh` + * This command should populate the Docker shell environment with the `$fdroid` command. + * Next we can run `cd /build` to enter the `fdroiddata` directory that has been mounted inside the docker environment. + * And now we can run `$fdroid scanner $build:$(sh /scripts/latest-version-code.sh)` to scan the latest version of the status app that has been registered in the `fdroiddata/metadata/im.status.ethereum.yml` file. + * Alternatively, we can also copy an APK into the `apks` folder and run `$fdroid scanner /apks/`. + * Ensure that you replace the `` with the correct name of the pre-built APK. + * For example, after running `make release-fdroid`, you can copy the `app-arm64-v8a-release-unsigned.apk` file into the `apks` folder and run `$fdroid scanner /apks/app-arm64-v8arelease-unsigned.apk` inside the docker shell environment. + +# Details + +The original research was done in [#8512](https://github.com/status-im/status-mobile/issues/8512). + +Normally F-Droid server wants to run Gradle itself, but we do not specify the `gradle` key in order to run `make release-fdroid` ourselves in `build` step. We also add `android/build.gradle` to `scanignore` to avoid F-Droid trying to use Gradle directly. + +The Android metadata like description or screenshots is [loaded from our repository](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#fastlane-structure) based on the Fastlane [`supply`](https://docs.fastlane.tools/actions/supply/) tool folder structure for updating Google Play store metadata. + +Once the PR is merged it may take a few days for the F-Droid server farm to build and deploy the new version to their site and app. You can look up the current state of builds [here](https://f-droid.org/wiki/index.php?title=Special:RecentChanges&days=7&from=&hidebots=0&hideanons=1&hideliu=1&limit=500) and look for your App ID and a `deploy` change after it. + +# F-Droid Build + +F-Droid requires submitted applications to be free of non Open Source software. For this reason we need to exclude certain Google libraries at build time. + +This is achieved by setting `GOOGLE_FREE=1` in the `.env.release` file. This affects two things: + +1. [Clojure code conditional](../src/status_im/acquisition/core.cljs) which stops use of `get-referrer`. +2. [Gradle build configuration](../android/app/build.gradle) by excluding Google libraries. + +Both are affected by the `.env` file and both are required. diff --git a/doc/files/forging-code-with-schemas-sep-2023-slides.pdf b/doc/files/forging-code-with-schemas-sep-2023-slides.pdf new file mode 100644 index 00000000000..7d8f65c7f22 Binary files /dev/null and b/doc/files/forging-code-with-schemas-sep-2023-slides.pdf differ diff --git a/doc/how-to-catch-crash-on-ios.md b/doc/how-to-catch-crash-on-ios.md new file mode 100644 index 00000000000..336ec2904f1 --- /dev/null +++ b/doc/how-to-catch-crash-on-ios.md @@ -0,0 +1,40 @@ +# How to catch crash on ios use xcode + +## Overview +Sometimes, we can't reproduce crash with local dev build, probably because your built version differs from the one QA team used. +The QA team mostly used the PR build version. In this guide we will try to make a build as close as possible to the PR build for iOS. + +You may notice various configuration files starting with .env (such as .env, .env.e2e, .env.jenkins) in the project. +The usage of these files and environment variables injected at build time on CI will not be covered in this guide. + +This guide covers how to configure Xcode to capture a crash stack trace with a physical iOS device. This allows debugging crashes by inspecting the stack trace. +I will use [issue #17255](https://github.com/status-im/status-mobile/issues/17255) as an example to reproduce and analyze a crash. + +## Prerequisites +- A physical ios device (simulator is not considered in this doc) +- Xcode installed + +## Steps +1. Prepare Status Mobile + 1. Open Terminal, cd to project root + 2. Run `make run-clojure` in one tab + 3. Run `make run-metro` in a second tab + 4. Run `make pod-install` in a third tab +2. Configure Xcode Project + 1. Open Xcode + 2. Open a project or file, navigate to folder `path_to_root_directory_of_status_mobile/ios` + 3. Set Scheme `StatusImPR` as current scheme ![](images/how-to-catch-crash-on-ios/choose-scheme-StatusImPR.png) + 4. Edit scheme ![](images/how-to-catch-crash-on-ios/edit-scheme.png) + 5. Change `Info` ![](images/how-to-catch-crash-on-ios/config-release.png) + 6. Change `Diagnostics` ![](images/how-to-catch-crash-on-ios/change-diagnostics.png) + 7. Set automatically manage signing ![](images/how-to-catch-crash-on-ios/automatically-manage-signing.png) +3. Update Code + 1. Edit `src/status_im2/setup/dev.cljs`, comment out lines 47-52 ![](images/how-to-catch-crash-on-ios/edit-dev.png) + 2. Edit `shadow-cljs.edn`, comment out `re-frisk-remote.preload`, otherwise it will try to connect `localhost:4567` on physical device which could slow down performance ![](images/how-to-catch-crash-on-ios/edit-shadow-cljs.png) +4. Reproduce Crash And Analyze + 1. Choose your physical ios device as target device and Run + 2. Follow reproduce steps from [issue #17255](https://github.com/status-im/status-mobile/issues/17255) mentioned and xcode will halt at crash point ![](images/how-to-catch-crash-on-ios/located-stack-trace.png) + 3. Inspect stack trace to identify root cause. From the stack trace, we can locate the crash happened in `api/geth_backend.go:1048`(createTempDBFile) clearly! ![](images/how-to-catch-crash-on-ios/located-go-code.png) + +## Links +- [changes](https://github.com/status-im/status-mobile/commit/4306d419de15e737e8ded3a749cc5e8d6a06e627) to source code diff --git a/doc/ide-setup.md b/doc/ide-setup.md new file mode 100644 index 00000000000..aa400509d7c --- /dev/null +++ b/doc/ide-setup.md @@ -0,0 +1,226 @@ +# Setup your Editor/IDE + +You can use any Clojure enabled editor. Here are instructions for developing the status-mobile app using: + +* IntelliJ IDEA and Cursive +* VS Code and Calva +* Emacs/Cider + +(Please add instructions for your favorite editor.) + +## Table of Contents + +- [Using Cursive](#using-cursive) + - [Install Cursive](#install-cursive) + - [Getting Cursive to understand `status-mobile`](#getting-cursive-to-understand-status-mobile) + - [I get a lot of `cannot be resolved`](#i-get-a-lot-of-cannot-be-resolved) + - [REPL!](#repl) + - [Connecting to REPL to IntelliJ](#connecting-to-repl-to-intellij) + - [Connecting REPL and IntelliJ to `status-mobile`](#connecting-repl-and-intellij-to-status-mobile) +- [Visual Studio Code](#visual-studio-code) + - [Set up the REPL](#set-up-the-repl) + - [Auto-format files on save](#auto-format-files-on-save) +- [Using Emacs with CIDER](#using-emacs-with-cider) + +## Using Cursive + +### Install Cursive + +See https://cursive-ide.com/userguide/index.html + +### Getting Cursive to understand `status-mobile` + +- Add this file to the root of the `status-mobile` project dir + - https://gist.github.com/Samyoul/f71a0593ba7a12d24dd0d5ef986ebbec +- Right click and "add as leiningen project" + + + +## I get a lot of `cannot be resolved` + +Are you getting problems where you get a lot of `cannot be resolved` on everything? + + + +See https://cursive-ide.com/userguide/macros.html + +- opt+enter (on macOS) +- resolve defview as fn and letsubs as let +- move selection on resolve and hit enter +- and select defn for defview and let for letsubs + +### REPL! + +#### Connecting to REPL to IntelliJ + +I had a number of problems connecting to REPL, the solution is as follows: + +At the top of IntelliJ IDEA click on the `Add Configuration...` option: + + + +This will load the following menu: + + + +Click on the `+` icon in the top left corner of the menu. + +Select `Clojure REPL > Remote` + + + +Which will load the following menu + + + +Enter the below options: + +- Name = status-mobile +- Display Name = status-mobile +- Connection type = nREPL +- Connection details + - Host = 127.0.0.1 + - Port = 7888 + + + +Press `OK` + +Now the below option will be visible. +Press the green run button + + + +You should now see a dialog with the following message: + +```shell +Connecting to remote nREPL server... +Clojure 1.10.1 +``` + +To confirm you have a working connection with REPL enter the following command in the input box below the output: + +```shell +(prn 1) +``` + +Which should output + +```shell +(prn 1) +1 +=> nil +``` + +See below: + + + +#### Connecting REPL and IntelliJ to `status-mobile` + +**The important next step is telling REPL the context in which to interact with the code.** + +Do the following: + +Ensure you have 2 terminals running the following + +- `make run-clojure` +- `make run-ios` / `make run-android` + +[See the STARTING GUIDE for details](STARTING_GUIDE.md#development) + +Next go back to the REPL input and enter the following commands: + +```clojure +(shadow/watch :mobile) +(shadow/repl :mobile) +``` + +See Below + + + +Which should switch the clj file type target to cljs as shown above + +Finally you are ready to test REPL. + +Create a sample function to evaluate something simple like `(prn "I'm working")`, move your cursor to one of the outer parentheses. Right or `control` click and select the `REPL` option. From there select `Sync files in REPL` and then `Send '...' to REPL'`. + + + +Alternatively you can use the shortcut commands `⇧⌘M` to sync your files and `⇧⌘P` to send the statement to REPL. You may also need to switch the REPL namespace to match the current file, which can be done manually from the dialogue box or using the `⇧⌘N` shortcut key. + +Following the above should give you the below result: + + + +🎉 Tada! Working! 🎉 + +--- + +For additional details on issues you may face when setting up REPL with Cursive [see this document](https://notes.status.im/9Gr7kqF8SzC_SmYK0eB7uQ?view#Connecting-Cursive--IntelliJ-IDEA-to-REPL-Problems) + +## Visual Studio Code + +### Set up the REPL + +1. Install Calva extension. +2. Open the `status-mobile` folder. +3. Start [Status development](starting-guide.md#development) (Starting the + `run-clojure` and `run-metro` jobs in split view in the VS Code integrated + terminal works great). +4. Run the VS Code command: **Calva: Connect to a running REPL Server in the + project**. + - Select the project type `shadow-cljs`. + - Accept the suggested connection `host:port`. + - Select to connect to the `:mobile` build. + +Open any `.cljs` file in the project and evaluate forms in it. See +https://calva.io/try-first/ for some starter tips and links. Confirm that your +REPL is connected to the app by evaluating: + +```clojure +(js/alert "Hello from Status App!") +``` + +🎉 Tada! You are ready to use the REPL to improve Status.im! 🎉 + +Consider bookmarking [calva.io](https://calva.io/) for quick access to the Calva +documentation. + +### Auto-format files on save + +We format Clojure code with [zprint](https://github.com/kkinnear/zprint). We +recommend configuring VSCode to auto-format Clojure files on every save, +otherwise you'll need to constantly rely on the much slower `make lint-fix` +command. + +1. Create a file `~/.zprintrc` and enable the `:search-config?` option. This is + necessary so the VSCode extension finds the project's `.zprintrc`. + +```bash +echo "{:search-config? true}" > ~/.zprintrc +``` + +2. Install the extension + [vscode-clj-zprint](https://github.com/rflagreca/vscode-clj-zprint). By the + way, did you know this extension is written in ClojureScript? +3. Copy the recommended settings from our repository in + [.vscode/settings.example.json](/.vscode/settings.example.json) and merge it + with your workspace settings in `.vscode/settings.json`. + +The extension `vscode-clj-zprint` is only available for VSCode. If you are using +VSCodium, you'll need to build the `vsix` (extension) yourself (it's easy, only +`yarn` and `vsce` are required). + +## Using Emacs with CIDER + +1. Install Emacs/Cider/etc. (there is a lot of variability in how to manage things in emacs, so please google for help with this) +2. Add a local ~/.shadow-cljs/config.edn file like below (corresponding to the version numbers of the packages you are using): + +```clojure +{:dependencies + [[nrepl/nrepl "0.9.0"] + [cider/cider-nrepl "0.28.4"] + [cider/piggieback "0.5.2"]]} +``` diff --git a/doc/images/architecture.png b/doc/images/architecture.png new file mode 100644 index 00000000000..2cc86240d5d Binary files /dev/null and b/doc/images/architecture.png differ diff --git a/doc/images/debugging/geth-path.png b/doc/images/debugging/geth-path.png new file mode 100644 index 00000000000..0fa34ec11f0 Binary files /dev/null and b/doc/images/debugging/geth-path.png differ diff --git a/doc/images/debugging/log-settings.png b/doc/images/debugging/log-settings.png new file mode 100644 index 00000000000..8821d8c218c Binary files /dev/null and b/doc/images/debugging/log-settings.png differ diff --git a/doc/images/debugging/re-frisk.png b/doc/images/debugging/re-frisk.png new file mode 100644 index 00000000000..a34a100728b Binary files /dev/null and b/doc/images/debugging/re-frisk.png differ diff --git a/doc/images/debugging/share-logs.jpeg b/doc/images/debugging/share-logs.jpeg new file mode 100644 index 00000000000..b56d3579b12 Binary files /dev/null and b/doc/images/debugging/share-logs.jpeg differ diff --git a/doc/images/export-icons/export-icons.gif b/doc/images/export-icons/export-icons.gif new file mode 100644 index 00000000000..f60c12a03c2 Binary files /dev/null and b/doc/images/export-icons/export-icons.gif differ diff --git a/doc/images/figma-properties.png b/doc/images/figma-properties.png new file mode 100644 index 00000000000..50fc9ca1ffe Binary files /dev/null and b/doc/images/figma-properties.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/automatically-manage-signing.png b/doc/images/how-to-catch-crash-on-ios/automatically-manage-signing.png new file mode 100644 index 00000000000..fba99af587c Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/automatically-manage-signing.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/change-diagnostics.png b/doc/images/how-to-catch-crash-on-ios/change-diagnostics.png new file mode 100644 index 00000000000..38120cff49f Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/change-diagnostics.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/choose-scheme-StatusImPR.png b/doc/images/how-to-catch-crash-on-ios/choose-scheme-StatusImPR.png new file mode 100644 index 00000000000..f7f99b44679 Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/choose-scheme-StatusImPR.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/config-release.png b/doc/images/how-to-catch-crash-on-ios/config-release.png new file mode 100644 index 00000000000..355cdeb15ba Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/config-release.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/edit-dev.png b/doc/images/how-to-catch-crash-on-ios/edit-dev.png new file mode 100644 index 00000000000..ee06ba0a89b Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/edit-dev.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/edit-scheme.png b/doc/images/how-to-catch-crash-on-ios/edit-scheme.png new file mode 100644 index 00000000000..8ec6096a4e1 Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/edit-scheme.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/edit-shadow-cljs.png b/doc/images/how-to-catch-crash-on-ios/edit-shadow-cljs.png new file mode 100644 index 00000000000..4704d3d395c Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/edit-shadow-cljs.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/located-go-code.png b/doc/images/how-to-catch-crash-on-ios/located-go-code.png new file mode 100644 index 00000000000..b8138ce8f0a Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/located-go-code.png differ diff --git a/doc/images/how-to-catch-crash-on-ios/located-stack-trace.png b/doc/images/how-to-catch-crash-on-ios/located-stack-trace.png new file mode 100644 index 00000000000..c0b06d15d8d Binary files /dev/null and b/doc/images/how-to-catch-crash-on-ios/located-stack-trace.png differ diff --git a/doc/images/how-to-launch-e2e/how-to-launch-e2e-1.png b/doc/images/how-to-launch-e2e/how-to-launch-e2e-1.png new file mode 100644 index 00000000000..13bd065b646 Binary files /dev/null and b/doc/images/how-to-launch-e2e/how-to-launch-e2e-1.png differ diff --git a/doc/images/how-to-launch-e2e/how-to-launch-e2e-2.png b/doc/images/how-to-launch-e2e/how-to-launch-e2e-2.png new file mode 100644 index 00000000000..bdde50b4fee Binary files /dev/null and b/doc/images/how-to-launch-e2e/how-to-launch-e2e-2.png differ diff --git a/doc/images/how-to-launch-e2e/how-to-launch-e2e-3.png b/doc/images/how-to-launch-e2e/how-to-launch-e2e-3.png new file mode 100644 index 00000000000..04acac2f9a4 Binary files /dev/null and b/doc/images/how-to-launch-e2e/how-to-launch-e2e-3.png differ diff --git a/doc/images/how-to-launch-e2e/how-to-launch-e2e-4.png b/doc/images/how-to-launch-e2e/how-to-launch-e2e-4.png new file mode 100644 index 00000000000..775364ab787 Binary files /dev/null and b/doc/images/how-to-launch-e2e/how-to-launch-e2e-4.png differ diff --git a/doc/images/ide-setup/10_REPL_8.png b/doc/images/ide-setup/10_REPL_8.png new file mode 100644 index 00000000000..cddbb129fc5 Binary files /dev/null and b/doc/images/ide-setup/10_REPL_8.png differ diff --git a/doc/images/ide-setup/11_REPL_9.png b/doc/images/ide-setup/11_REPL_9.png new file mode 100644 index 00000000000..6237894d5a5 Binary files /dev/null and b/doc/images/ide-setup/11_REPL_9.png differ diff --git a/doc/images/ide-setup/12_REPL_10.png b/doc/images/ide-setup/12_REPL_10.png new file mode 100644 index 00000000000..1b2b56d2d8c Binary files /dev/null and b/doc/images/ide-setup/12_REPL_10.png differ diff --git a/doc/images/ide-setup/1_fake_project_file.png b/doc/images/ide-setup/1_fake_project_file.png new file mode 100644 index 00000000000..e96e9b9c9f1 Binary files /dev/null and b/doc/images/ide-setup/1_fake_project_file.png differ diff --git a/doc/images/ide-setup/2_resolve.jpeg b/doc/images/ide-setup/2_resolve.jpeg new file mode 100644 index 00000000000..a6a79891225 Binary files /dev/null and b/doc/images/ide-setup/2_resolve.jpeg differ diff --git a/doc/images/ide-setup/3_REPL_1.png b/doc/images/ide-setup/3_REPL_1.png new file mode 100644 index 00000000000..585f3ddb7e9 Binary files /dev/null and b/doc/images/ide-setup/3_REPL_1.png differ diff --git a/doc/images/ide-setup/4_REPL_2.png b/doc/images/ide-setup/4_REPL_2.png new file mode 100644 index 00000000000..1cbd4bb81cb Binary files /dev/null and b/doc/images/ide-setup/4_REPL_2.png differ diff --git a/doc/images/ide-setup/5_REPL_3.png b/doc/images/ide-setup/5_REPL_3.png new file mode 100644 index 00000000000..94b60c1bf13 Binary files /dev/null and b/doc/images/ide-setup/5_REPL_3.png differ diff --git a/doc/images/ide-setup/6_REPL_4.png b/doc/images/ide-setup/6_REPL_4.png new file mode 100644 index 00000000000..4ffd02c3264 Binary files /dev/null and b/doc/images/ide-setup/6_REPL_4.png differ diff --git a/doc/images/ide-setup/7_REPL_5.png b/doc/images/ide-setup/7_REPL_5.png new file mode 100644 index 00000000000..5ede5f14c34 Binary files /dev/null and b/doc/images/ide-setup/7_REPL_5.png differ diff --git a/doc/images/ide-setup/8_REPL_6.png b/doc/images/ide-setup/8_REPL_6.png new file mode 100644 index 00000000000..979d47f7f80 Binary files /dev/null and b/doc/images/ide-setup/8_REPL_6.png differ diff --git a/doc/images/ide-setup/9_REPL_7.png b/doc/images/ide-setup/9_REPL_7.png new file mode 100644 index 00000000000..6f5669b45ee Binary files /dev/null and b/doc/images/ide-setup/9_REPL_7.png differ diff --git a/doc/images/layers-relationships.png b/doc/images/layers-relationships.png new file mode 100644 index 00000000000..abc7763716e Binary files /dev/null and b/doc/images/layers-relationships.png differ diff --git a/doc/images/pipeline-process/automation-checks.png b/doc/images/pipeline-process/automation-checks.png new file mode 100644 index 00000000000..cf88b43608c Binary files /dev/null and b/doc/images/pipeline-process/automation-checks.png differ diff --git a/doc/images/pixel-perfection/layer-width.png b/doc/images/pixel-perfection/layer-width.png new file mode 100644 index 00000000000..bebba1e2739 Binary files /dev/null and b/doc/images/pixel-perfection/layer-width.png differ diff --git a/doc/images/quo-component.png b/doc/images/quo-component.png new file mode 100644 index 00000000000..048b077766a Binary files /dev/null and b/doc/images/quo-component.png differ diff --git a/doc/import-assets.md b/doc/import-assets.md new file mode 100644 index 00000000000..66ad0c3cd6e --- /dev/null +++ b/doc/import-assets.md @@ -0,0 +1,23 @@ +# Importing assets from Figma into project + +## Icons + +![](images/export-icons/export-icons.gif) + +1. Export from figma 2 pngs 2x and 3x put them in `./resources/images/icons2` +2. if necessary, rename file so that filename contains only lower case chars, e.g. `"Icon-Name@2x.png"` should be renamed to `"icon_name@2x.png"`. +3. In the app `icon_name.png` still can be accessed as `icon-name`, so in order to use can add the next code: + ```clojure + ;; icon_name.png + [vector-icons/icon :icon-name {:color ...}] + ``` + 2x@2x +4. If you want platform specific icon use `.android` or `.ios` suffixes. Example `icon_name@2x.android.png`.:w + +## Images + +Make sure to compress images before using into project. +``` +make shell +./scripts/compress_image.sh image_path +``` diff --git a/doc/intro.md b/doc/intro.md deleted file mode 100644 index b3702d4122b..00000000000 --- a/doc/intro.md +++ /dev/null @@ -1,3 +0,0 @@ -# Introduction to status-im - -TODO: write [great documentation](http://jacobian.org/writing/what-to-write/) diff --git a/doc/logging-and-sharing-flow.md b/doc/logging-and-sharing-flow.md new file mode 100644 index 00000000000..a95403b8b7c --- /dev/null +++ b/doc/logging-and-sharing-flow.md @@ -0,0 +1,45 @@ +# Status App Logging and Sharing Flow + +## Overview +The Status app maintains four log files to track different aspects of its operation. This document outlines the purpose of each log file, their configuration, storage, and the process for sharing logs. + +## Log Files + +- **api.log** + Records interactions between the frontend and the backend(status-go). + +- **pre-login.log** + Captures logs generated before user login. + +- **Status.log** + Stores logs output by the frontend. + +- **Profile log** + Dynamically named log file that records user-specific logs after successful login. The log file name is generated based on the user's keyUID which is truncated to 8 characters. Each user profile has its own log file. + +## Log Level Configuration + +### pre-login.log +- **Setting Method:** Shake the phone before login to open a dialog box. +- **Options:** Includes a log level setting option (e.g., DEBUG, INFO). +- **Behavior:** The log level setting is only available pre-login. After login, shaking the phone does not display this option. +- **Impact:** The configured log level is inherited by the Profile log for newly created users. + +### Profile Log +- **Setting Method:** Can be configured after user login through app advanced settings. +- **Note:** Inherits the log level from pre-login.log for new users. + +## Log File Storage +- **Default Behavior:** All log files are stored in a protected folder named "logs" within the app to ensure privacy and security. +- **Exception:** On Android e2e build, logs are stored in the publicly accessible Download folder. + +## Log setting storage +- pre-login setting is stored with [mmkv](https://github.com/mrousavy/react-native-mmkv), we have some pre-configured values for log level in files `.env.xxx` e.g `.env` / `.env.e2e` , corresponding field name is `LOG_LEVEL` +- profile log setting is stored in db with status-go + +## Log Sharing +- **Method:** + - Shake the phone to open a dialog box. + - Select the "Share logs" option from the menu. +- **Note:** Be careful when sharing logs with others, as it may leak sensitive information. + diff --git a/doc/merging-pr-process.md b/doc/merging-pr-process.md new file mode 100644 index 00000000000..96f75e1500d --- /dev/null +++ b/doc/merging-pr-process.md @@ -0,0 +1,51 @@ +## PR process + +1) Create a PR in status-mobile +2) Add some reviewers to the PR and wait for feedback +3) Address feedback +4) Make sure builds and tests are green (run `make test` locally, `make lint-fix` to fix any indentation issue and `make lint`) +5) Once the PR has been reviewed by the dev team, run e2e tests on it by going to https://github.com/status-im/status-mobile/projects/7 and move the pr under the column E2E tests. This will trigger tests. **Running E2E tests is required for all PRs.** + 1) Read our [PR Review Policy](pr-review-policy.md) for more details on our approach to PR reviews. + 2) Learn more about our [Pipeline for QA](pipeline_process.md) process +6) Once e2e tests have run, they will report the result on the PR, if it's less than 100%, ask QA to take a look to make sure everything is in order (some might fail for legitimate reasons) +7) Ask QA for manual testing if the PR requires it (more details [here](pipeline_process.md)) +8) Once it has been tested successfully, squash everything into one commit. rebase and merge. The commands we use: +``` + git checkout develop + git pull develop + git checkout your-feature-branch + git rebase develop + git checkout develop + git rebase your-feature-branch + git push +``` + + +## Status-go changes + +If you are introducing status-go changes, the PR process is pretty similar, with some differences. + +The most important thing is that + +status-mobile code that makes it to the `develop` branch, should always point to a tagged version of status-go in the `develop` branch of status-go. + +In practice, this means that sometimes they need to be merged in lockstep. +1) Create a PR in status-go and status-mobile. Update the status-go version to the PR revision `scripts/update-status-go.sh $git_revision`. +2) Get both PRs reviewed and approved. Once status-mobile PR has been approved, go through manual QA testing if necessary. Don't merge status-mobile PR just yet. +3) Now that you know the integration between client & server is working, merge the status-go PR first. +4) Once merged, tag the merged commit with the new version and push the tag: +``` + git checkout develop + git pull develop + make tag-version + git push origin vx.y.z +``` +:warning: If a specific commit need to tagged in status-go, use `make tag-version TARGET_COMMIT={hash}`. More info about tagging in [status-go](https://github.com/status-im/status-go/blob/develop/RELEASING.md#tagging-versions). + +5) Update status-mobile with the new status-go version, using the new tag `scripts/update-status-go.sh "vx.y.z"` +6) If you had to rebase status-go to include new changes, e2e test MUST be re-run. If there's any issue you will + have to fix in status-go with another PR and follow the same process. +7) In status-mobile, push, rebase against `develop` and merge it 🚀 + + +important note : make sure your status-go PRs get a tested-ok by QA before merging them in. diff --git a/doc/new-guidelines.md b/doc/new-guidelines.md new file mode 100644 index 00000000000..93c1a20c5ed --- /dev/null +++ b/doc/new-guidelines.md @@ -0,0 +1,958 @@ +# Code Style Guidelines + +> [!IMPORTANT] +> The goal of this document is to help all contributors (core and external) to +> write code in _unison_ and help establish good practices that serve the Status +> Mobile contributors well. + +We don't want to turn this document into an exhaustive list of rules to be +followed that nobody will read. As much as possible, we'll try to document only +what we consider important for Status Mobile. In other words, we don't want to +maintain a general Clojure convention/style guide, nor do we want to turn this +document into a long tutorial. + +> [!WARNING] +> This is a **work in progress**, and not all conventions are properly +> implemented in the codebase yet. The project structure is also undergoing +> major changes, and it will take a considerable amount of time until we migrate +> the existing code to the new structure. + +If you find out anything is outdated or missing, please, share with us or even +better, create a pull-request! 🤸 + +## Style guide + +We follow the [Clojure Style +Guide](https://github.com/bbatsov/clojure-style-guide) and we use +[zprint](https://github.com/kkinnear/zprint) to format Clojure code. Running +`make lint-fix` should fix most formatting issues, but not all of them. + +## Dos and don'ts + +### Hiccup + +Never use anonymous inline function in hiccup, this will lead to +reinitialization of component on each render of parent component. + +```clojure +;; bad +(defn checkbox-view + [{:keys [size]}] + [rn/view + [(fn [] [rn/view])]]) + +;; good +(defn comp [] + [rn/view]) + +(defn checkbox-view + [{:keys [size]}] + [rn/view + [comp]]) +``` + +This mistake mostly happens with functional components. + +```clojure +;; bad +(fn [] + (let [atom (rf/sub [:sub])] + (fn [] + [:f> + (fn [] + [rn/text atom] + +;; good +(defn f-comp [atom] + [rn/text atom]) + +(fn [] + (let [atom (rf/sub [:sub])] + (fn [] + [:f> f-comp atom]))) +``` + +It's important to name functional components with `f-` prefix. + +### Component props and API scheme to match Figma as closely as possible + +Ideally, the prop names for components (particularly in quo Design System) +should match the Figma properties as best as possible. This makes it easier for +the developer using that component to configure it correctly for the screen it +is being used on and avoids unnecessary overwrites and adjustments being made. + +#### Avoid unnecessarily grouping categories to reduce the number of props + +For example in Figma if there is a component and it has the following variants: + +|theme: "light" blur: "False"|theme: "dark" blur: "False"|theme: "light" blur: "True"|theme: "dark" blur: "True"| +|----------------------------|---------------------------|---------------------------|---------------------------| +| type :neutral label "ABC" | type :neutral label "ABC" | | | +| type :active label "ABC" | type :active label "ABC" | | | +| type :danger label "ABC" | type :danger label "ABC" | type :danger label "ABC" | type :danger label "ABC" | + +```clojure +;; bad +"theme - :light or :dark +type - can be :neutral :active :danger :danger-blur" +(defn my-component [{:keys [theme type]} label]) + +;; good +"theme - :light or :dark + type - can be :neutral :active :danger + blur? - boolean +" +(defn my-component [{:keys [theme blur? type]} label]) +``` + +Please note this is only for the external API of the component and there should +be no restriction of how the component manages its internal API as that will not +affect the developer using the component with the issues described above. + +In some cases this is not always possible or does not make sense. However the +thought process should be how easy will it be for another developer to use this +component with the correct configuration given the screen designs for Figma. + +#### Avoid unnecessarily renaming props + +In general it can be helpful to avoid renaming props from their counterpart in +Figma. + +For example if Figma has sizes `:small`, `:medium` and `:large` + +```clojure +;; bad +":size - :little, :default or :big" +(defn my-component [{:keys [size]}]) + +;; good +":size - :small, :medium or :large" +(defn my-component [{:keys [size]}]) +``` + +### Component styles + +Prefer to define styles in a separate file named `style.cljs`, colocated with +the source file. For a real example, see +[src/quo/components/record_audio/record_audio/style.cljs](../src/quo/components/record_audio/record_audio/style.cljs). + +```clojure +;; bad +(defn checkbox-view + [{:keys [size]}] + [rn/view + {:style {:width size + :height size + :border-radius 4 + :justify-content :center + :align-items :center}} + [rn/view (do-something)]]) + +;; good +(defn checkbox-view + [{:keys [size]}] + [rn/view {:style (style/checkbox size)} + [rn/view (do-something)]]) +``` + +### Always add styles inside the `:style` key + +Although when compiling ReactNative for mobile some components are able work with +their styles in the top-level of the properties map, prefer to add them inside the +`:style` key in order to separate styles from properties: + +```clojure +;; bad +[rn/button {:flex 1 + :padding-vertical 10 + :padding-horizontal 20 + :on-press #(js/alert "Hi!") + :title "Button"}] + +;; good +[rn/button {:style {:flex 1 + :padding-vertical 10 + :padding-horizontal 20} + :on-press #(js/alert "Hi!") + :title "Button"}] + +;; better +;; (define them in a style ns & place them inside `:style` key) +[rn/button {:style (style/button) + :on-press #(js/alert "Hi!") + :title "Button"}] +``` + +Also its fine to keep one liner styles in view + +```clojure +;; ok +[rn/view {:style {:flex 1 :padding-top 5}}] +``` + +### Abstract styles and use the vector syntax + +We modified reagent to support passing styles in the [React Native way](https://reactnative.dev/docs/0.73/style): +by using Clojure vectors (arrays in JS). + +```clojure +;; ...style.cljs +(def absolute-position + {:position :absolute + :top 0 + :left 0 + :right 0 + :bottom 0}) + +(defn padding [amount] + {:background-color :red + :padding amount}) + +;; ...view.cljs + +;; bad +[rn/view {:style style/absolute-position} + [rn/view {:style (merge style/absolute-position ;; <- merge is not performant + (style/padding 20))}]] + +;; good +[rn/view {:style style/absolute-position} + [rn/view {:style [style/absolute-position ;; <- vector syntax, RN merges the styles + (style/padding 20)]}]] + +;; better +;; Reference an already existing JS obj with the required styles, by doing this, Reagent +;; skips the transformation of styles and uses the obj directly. +[rn/view {:style rn/stylesheet-absolute-fill} ;; <- Already provided by RN, used directly + [rn/view {:style [rn/stylesheet-absolute-fill ;; <- Reagent skips this transformation + (style/padding 20)]}]] ;; <- Reagent transforms this map +``` + +### Don't define properties in styles ns + +Properties must be set on view level + +```clojure +;; bad +{:style {:position :absolute + :left 0 + :right 0 + :bottom 0} + :blur-amount 30 + :blur-radius 25 + :blur-type :transparent + :overlay-color :transparent} + +;; good +{:position :absolute + :left 0 + :right 0 + :bottom 0} +``` + +### Animated styles in the style file + +```clojure +;; bad +(defn circle + [] + (let [opacity (reanimated/use-shared-value 1)] + [reanimated/view {:style [{:opacity opacity} + style/circle-container]}])) + +;; good +(defn circle + [] + (let [opacity (reanimated/use-shared-value 1)] + [reanimated/view {:style (style/circle-container opacity)}])) +``` + +### Pass a vector of styles to Reanimated view + +Prefer to pass a vector of styles to `react-native.reanimated/view` `:style` +prop instead of using `apply-animations-to-style` directly. For more details, check out Reanimated docs about [inline +styles](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/your-first-animation/#defining-a-shared-value) +and [useAnimatedStyle](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/animating-styles-and-props/#animating-styles). + +```clojure +(defn f-view [] + (let [scroll-x (reanimated/use-shared-value 0) + opacity (reanimated/interpolate scroll-x [0 45 50] [1 1 0])] + [reanimated/view + ;; bad + {:style (reanimated/apply-animations-to-style + {:opacity opacity + :transform [{:translate-x scroll-x}]} + {:flex-direction :row})} + + ;; good + {:style [{:opacity opacity + :transform [{:translate-x scroll-x}]} + {:flex-direction :row}]} + + ;; other valid and good variants + {:style [{:opacity opacity} + {:transform [{:translate-x scroll-x}]} + {:flex-direction :row}]} + + {:style {:opacity opacity + :transform [{:translate-x scroll-x}] + :flex-direction :row}}])) +``` +### Don't use percents to define width/height + +In ReactNative, all layouts use the [flexbox +model](https://reactnative.dev/docs/flexbox), so percentages are unnecessary the +vast majority of the time, don't use them. Check out this great [interactive +flexbox guide](https://www.joshwcomeau.com/css/interactive-guide-to-flexbox/) by +Joshua Comeau. + +```clojure +;; bad +[rn/view {:style {:width "80%"}}] + +;; good +[rn/view {:style {:padding-horizontal 20}}] +``` + +### Use a question mark to convey the value is a boolean + +The Clojure Style Guide suggests using a question mark only in [predicate +functions](https://guide.clojure.style/#naming-predicates), but nothing is +mentioned about other symbols and keywords. We prefer to extend the convention +to all boolean references. + +```clojure +;; bad +(let [is-open? true] ...) +(def flag-is-enabled false) + +;; good +(let [open? true] ...) +(def flag-enabled? false) +``` + +And for keywords too: + +```clojure +;; bad +[some-component {:logged-in true}] + +;; good +[some-component {:logged-in? true}] +``` + +### Styles def vs defn + +Always use `def` over `defn` if there are no dynamic values. This helps cut the +cost of function calls. + +```clojure +;; bad +(defn title-column [] + {:height 56}) + +;; good +(def title-column + {:height 56}) +``` + +```clojure +;; bad +(def community-card + {:background-color (colors/theme-colors colors/white colors/neutral-90)}) + +;; good +(defn community-card [] + {:background-color (colors/theme-colors colors/white colors/neutral-90)}) +``` + +### Custom Colors + +The Status designs have a lot of customization of user and group colors. For +consistency it is best to use `customization-color` as the prop key on pages and +components. This will help easily identify what pages and components in the +application are using customized colors. + +```clojure +;; bad +(defn community-card [{keys [custom-color]}] + ...) + +;; good +(defn community-card [{keys [customization-color]}] + ...) +``` + +### Using TODOs comments + +_TODO_ comments are used extensively in the codebase, but prefer to use them +only when strictly necessary and when an issue is not enough to track the work +left to be done. + +These are all good examples: + +```clojure +;; TODO(@username): +;; TODO(@username): , +;; TODO(YYYY-MM-DD): +;; TODO(@username,YYYY-MM-DD): +``` + +### Subscription names and event names + +Always register events and subscriptions using a meaningful namespace, but don't +namespace them with `::`. We understand it's a controversial decision because +there are both pros and cons to such practice. + +Whenever appropriate, it's also recommended to use _fake_ namespaces to convey +more knowledge in the keyword about which bounded context (domain) it refers to. +You may also use dots to convey hierarchical structures. + +```clojure +;; bad +;; Don't use real namespaced keywords. +(re-frame/reg-sub + ::profile-pictures-visibility + :<- [:multiaccount] + (fn [multiaccount] + (:profile-pictures-visibility multiaccount))) + +;; good +;; Uses a fake namespaced keyword. +(re-frame/reg-sub + :profile/pictures-visibility + :<- [:multiaccount] + (fn [multiaccount] + (:profile-pictures-visibility multiaccount))) + +;; better +;; Uses a fake namespaced keyword with a parent namespace (multiaccount). +(re-frame/reg-sub + :multiaccount.profile/pictures-visibility + :<- [:multiaccount] + (fn [multiaccount] + (:profile-pictures-visibility multiaccount))) +``` + +### Declaring view components + +Use the simple `defn` to declare components. Don't use `utils.views/defview` and +`utils.views/letsubs`. + +```clojure +;; bad +(utils.views/defview browser [] + (utils.views/letsubs [window-width [:dimensions/window-width]] + (do-something window-width))) + +;; good +(defn browser [] + (let [window-width (rf/sub [:dimensions/window-width])] + (do-something window-width))) +``` + +### Use `[]` instead of `()` in Reagent components + +- The `()` version [does NOT work with Form-2 and + Form-3](https://github.com/reagent-project/reagent/blob/master/doc/UsingSquareBracketsInsteadOfParens.md#a-further-significant-why) + components. +- Components defined with `[]` will be [more efficient at re-render + time](https://github.com/reagent-project/reagent/blob/master/doc/UsingSquareBracketsInsteadOfParens.md#which-and-why) + because they're interpreted by Reagent and transformed into distinct React + components, with their own lifecycle. + +```clojure +;; bad +[rn/view + (message-card message)] + +;; good +[rn/view + [message-card message]] +``` + +### Using re-frame subscriptions and dispatching events + +Use the `utils.re-frame` namespace instead of `re-frame.core` to subscribe and +dispatch. + +```clojure +;; bad +(ns my-namespace + (:require [re-frame.core :as rf])) + +(let [username @(rf/subscribe [:username])] + [pressable/pressable {:on-press #(rf/dispatch [:do-something])} + [rn/view + (str "Hello " username)]]) + +;; good +(ns my-namespace + (:require [utils.re-frame :as rf])) + +(let [username (rf/sub [:username])] + [pressable/pressable {:on-press #(rf/dispatch [:do-something])} + [rn/view + (str "Hello " username)]]) +``` + +### Registering effects + +When registering re-frame effects (`reg-fx`), prefer to expose a data-only +interface because that will allow event handlers to stay pure. + +For instance, if an effect needs a `on-success` callback, allow it to receive a +*re-frame event vector*. This approach is used by us in the [json-rpc/call +effect](src/status_im2/common/json_rpc/events.cljs), but also by third-party +effects, such as https://github.com/Day8/re-frame-http-fx. For the complete +rationale, see [PR #15936](https://github.com/status-im/status-mobile/pull/15936). + +### Using the effect `:json-rpc/call` + +Prefer the pure version of `:json-rpc/call` (no callbacks). + +```clojure +;; not as good +(rf/defn accept-contact-request + {:events [:activity-center.contact-requests/accept]} + [_ contact-id] + {:json-rpc/call + [{:method "wakuext_acceptContactRequest" + :params [{:id contact-id}] + :on-success #(rf/dispatch [:sanitize-messages-and-process-response %]) + :on-error #(rf/dispatch [:activity-center.contact-requests/accept-error contact-id %])}]}) + +;; better +(rf/defn accept-contact-request + {:events [:activity-center.contact-requests/accept]} + [_ contact-id] + {:json-rpc/call + [{:method "wakuext_acceptContactRequest" + :params [{:id contact-id}] + :on-success [:sanitize-messages-and-process-response] + :on-error [:activity-center.contact-requests/accept-error contact-id]}]}) +``` + +### Registering event handlers + +Register events with `utils.re-frame/reg-event-fx` and follow [re-frame's best +practice](https://github.com/day8/re-frame/blob/39adca93673f334dc751ee2d99d340b51a9cc6db/docs/FAQs/BestPractice.md#use-the-fx-effect) +so use only `:db` and `:fx` effects. `utils.re-frame/merge` and `utils.re-frame/defn` are deprecated and should not be +used in the new code in `src/status_im2/`. Don't use +`re-frame.core/reg-event-db`. + +```clojure +;; bad +(rf/defn invite-people-pressed + {:events [:communities/invite-people-pressed]} + [cofx id] + (rf/merge cofx + (reset-community-id-input id) + (bottom-sheet/hide-bottom-sheet) + (navigation/open-modal :screen/invite-people-community {:invite? true}))) + +;; good +(re-frame/reg-event-fx :communities/invite-people-pressed + (fn [{:keys [db]} [id]] + {:db (assoc db :communities/community-id-input id) + :fx [[:dispatch [:hide-bottom-sheet]] + [:dispatch [:open-modal :screen/invite-people-community {:invite? true}]]]})) +``` + +### Registering top-level re-frame subscriptions + +Use `subs.root/reg-root-key-sub` to register top-level (root) subscriptions. +Additionally, register root subscriptions in the `subs.root` namespace. + +```clojure +;; bad +(re-frame/reg-sub + :view-id + (fn [db] + (:view-id db))) + +;; good +(reg-root-key-sub :view-id :view-id) +``` + +### Registering layer-3 subscriptions + +The majority of the subscriptions should be defined as [layer-3 +subscriptions](https://day8.github.io/re-frame/subscriptions/#the-four-layer) +due to performance constraints. + +```clojure +;; bad +(re-frame/reg-sub + :ens/preferred-name + (fn [db] + (get-in db [:multiaccount :preferred-name]))) + +;; good +(re-frame/reg-sub + :ens/preferred-name + :<- [:multiaccount] + (fn [multiaccount] + (:preferred-name multiaccount))) +``` + +### Requiring quo components + +Consume `quo` components from `quo.core`, unless the namespace is also inside +the `quo/` directory. + +```clojure +;; bad +(ns my-namespace + (:require [quo.components.icon :as icon])) + +(icon/icon :i/verified) + +;; good +(ns my-namespace + (:require [quo.core :as quo])) + +(quo/icon :i/verified) + +;; also good because both namespaces are inside quo/ +(ns quo.components.tabs.account-selector + (:require [quo.components.markdown.text :as text])) +``` + +### Require/import + +Prefer `:as` instead of `:refer`. There are exceptions to this rule, e.g. the +test macros `deftest` and `is`, which are ubiquitous in the Clojure community. + +```clojure +;; bad +(ns status-im.utils.datetime + (:require [cljs-time.coerce :refer [from-long]])) + +;; good +(ns status-im.utils.datetime + (:require [cljs-time.coerce :as time.coerce])) +``` + +### Javascript interop + +Use [binaryage/oops](https://github.com/binaryage/cljs-oops) macros instead of +core interop macros. + +```clojure +;; bad +(fn [^js event] + (.-width (.-nativeEvent event))) + +;; good +(require '[oops.core :as oops]) +(fn [event] + (oops/oget event "nativeEvent.width")) +``` + +### Accessibility labels + +Accessibility labels are currently used only for end-to-end tests. Use keywords +instead of strings (remember keywords are cached). + +```clojure +;; bad +[text/text {:accessibility-label "profile-nickname"} + "Markov"] + +;; good +[text/text {:accessibility-label :profile-nickname} + "Markov"] +``` + +Avoid dynamic labels, for example to specify an element's index because +[Appium](https://appium.io/) already supports element selection based on +indices. + +```clojure +;; bad +[button {:accessibility-label (str "do-something" index)}] + +;; good +[button {:accessibility-label :do-something}] +``` + +### Icons + +Use the appropriate keyword qualification/namespace. + +```clojure +;; bad +(require '[quo.components.icon :as icons]) +(icons/icon :main-icons2/verified) + +;; good +(require '[quo.core :as quo]) +(quo/icon :i/verified) +``` + +### Translations + +Prefer to use translation placeholders instead of creating multiple translation +keywords and concatenating them into a single string. + +```clojure +;; bad +;; Assume the translation key is: +;; "biometric-auth-error": "Unable perform biometric authentication" +(str (i18n/label :t/biometric-auth-error) "(" error-code ")") + +;; good +;; Assume the translation key is: +;; "biometric-auth-error": "Unable perform biometric authentication ({{code}})" +(i18n/label :t/biometric-auth-error {:code error-code}) +``` + +### Tests +#### Prefer `match?` over `=` when comparing data structures + +Prefer the `match?` directive over `=` when comparing data structures, otherwise +when the check fails the output can be too difficult to read. `match?` is +defined by library https://github.com/nubank/matcher-combinators. + +```clojure +;; bad +(deftest some-test + (let [expected {...} + actual {...}] + (is (= expected actual)))) + +;; good +(deftest some-test + (let [expected {...} + actual {...}] + (is (match? expected actual)))) +``` + +#### Subscription tests + +Test [layer-3 subscriptions](https://day8.github.io/re-frame/subscriptions/) by +actually subscribing to them, so reframe's signal graph gets validated too. + +```clojure +;; bad +(defn user-recipes + [[current-user all-recipes location]] + ...) + +(re-frame/reg-sub + :user/recipes + :<- [:current-user] + :<- [:all-recipes] + :<- [:location] + user-recipes) + +(deftest user-recipes-test + (testing "builds list of recipes" + (let [current-user {...} + all-recipes {...} + location [...]] + (is (= expected (recipes [current-user all-recipes location])))))) + +;; good +(require '[test-helpers.unit :as h]) + +(re-frame/reg-sub + :user/recipes + :<- [:current-user] + :<- [:all-recipes] + :<- [:location] + (fn [[current-user all-recipes location]] + ...)) + +(h/deftest-sub :user/recipes + [sub-name] + (testing "builds list of recipes" + (swap! rf-db/app-db assoc + :current-user {...} + :all-recipes {...} + :location [...]) + (is (= expected (rf/sub [sub-name]))))) +``` + +## Project Structure + +First, the bird's-eye view with some example ClojureScript files: + +``` +src +├── js/ +├── mocks/ +├── quo +│ ├── components/ +│ ├── foundations/ +│ └── theme.cljs +├── react_native +│ ├── gesture.cljs +│ └── platform.cljs +├── status_im/ +├── status_im2 +│ ├── common +│ │ └── components +│ │ └── bottom_sheet.cljs +│ ├── contexts/ +│ ├── setup/ +│ └── subs/ +├── test_helpers/ +└── utils.cljs +``` + +- `src/js`: Raw Javascript files, e.g. React Native Reanimated worklets. +- `src/mocks`: Plumbing configuration to be able to run tests. +- `src/quo/`: The component library for Status Mobile. [Read more...](../src/quo/README.md) +- `src/react_native/`: Contains only low-level constructs to help React Native + work in tandem with Clojure(Script). +- `src/status_im2/`: Directory where we try to be as strict as possible about + our guidelines and where we prefer to write code for the new, redesigned + mobile app. +- `src/status_im/`: Directory containing what we call "old code", not yet + migrated to new guidelines for the new mobile app. +- `src/status_im2/common/`: Directories named `common` can appear at any level + of the directory tree. Just like directories named `utils`, their directory + nesting level communicates their applicable limits. +- `src/status_im2/common/components/`: Contains reusable components that are not + part of the design system (quo). +- `src/status_im2/contexts/`: Contains [bounded contexts](#glossary), like + `browser/`, `messaging/`, etc. As much as possible, _bounded contexts_ should + not directly require each other's namespaces. +- `src/status_im2/setup/`: Contains namespaces that are mostly used to + initialize the application, configure test runners, etc. In general, such + namespaces should not be required from the outside. +- `src/test_helpers/`: Reusable utilities for writing all kinds of tests. +- `src/status_im/subs/`: All subscriptions should live inside it. + +Directories named `utils/` can appear at any level of the directory tree. The +directory nesting level precisely indicates its boundaries. For example, a +`contexts/user_settings/utils/datetime.cljs` file communicates that it should +only be used in the `user_settings` context. + +### src/quo + +The `src/quo/` directory holds all components for the new design system. As +much as possible, its sub-directories and component names should reflect the +same language used by designers. + +Even though the directory lives alongside the rest of the codebase, we should +think of it as an external entity that abstracts away particular Status domain +knowledge. + +Components inside `src/quo/` should not rely on re-frame, i.e. they should not +dispatch events or use subscriptions. + +Example structure: + +``` +src +└── quo + ├── components + │ └── dropdown + │ ├── style.cljs + │ ├── test.cljs + │ └── view.cljs + └── screens + └── dropdown + └── view.cljs +``` + +### Re-frame events + +Event handlers should be defined in files named `events.cljs`, and they should +be _close_ to other _things_, like view files, components, etc. + +For example: + +``` +src +└── contexts + └── browser + ├── bookmarks/ + ├── options/ + ├── permissions/ + ├── events.cljs + ├── events_test.cljs + ├── style.cljs + └── view.cljs +``` + +## Deprecation process + +To deprecate a var, add the `:deprecated` metadata and, if necessary, suggest an +alternative. + +```clojure +;; Good if there's no better alternative yet, but we want to deprecate it anyway. +(defn ^:deprecated foo + [] + (bar)) + +;; Good +(defn foo + {:deprecated "Use some.namespace/var-name instead."} + [] + (bar)) +``` + +Please check the [Clojure Style](https://guide.clojure.style/#deprecated) documentation + +To reduce visual clutter from deprecated methods in your text editor, consult this [example](https://rider-support.jetbrains.com/hc/en-us/community/posts/4419728641810-How-to-disable-the-the-strike-thru-for-deprecated-methods-in-Javascript-#:~:text=Try%20disabling%20%22Preferences%20%7C%20Editor%20%7C,It%20works%20for%20me). The approach can be adapted for settings in VSCode, Emacs, VIM, and others. + +### Test structure + +[Unit tests](#glossary) should be created alongside their respective source +implementation. We prefer them colocated with the source and not like most +Clojure (JVM) codebases which mirror the sources in a top-level test directory. + +``` +├── models +│ ├── message.cljs +│ └── message_test.cljs +├── models.cljs +└── models_test.cljs +``` + +Component tests should be created in the same directory as the source component, +and named as `component_spec.cljs`. + + +``` +└── filter + ├── component_spec.cljs + ├── style.cljs + └── view.cljs +``` + +There's no hard rule on how integration test namespaces should be split, but +we're at least striving to define them under appropriate bounded contexts that +mirror the source code. + +``` +test +├── appium/ +└── integration + ├── browser/ + ├── communities/ + ├── messaging/ + ├── user_settings/ + └── wallet + └── payment_test.cljs +``` + +## Glossary + +**Unit test**: The smallest atomic unit that's meaningful to test. For example, +tests for utility functions and event handlers are considered unit tests in the +mobile codebase. They should be completely deterministic, _fast_, and they +should work flawlessly in the REPL. + +**Bounded context**: A logical separation between different domains. It's an +important concept in the [Domain-Driven +Design](https://en.wikipedia.org/wiki/Domain-driven_design) literature. See +[Bounded Context, by Martin +Fowler](https://martinfowler.com/bliki/BoundedContext.html) for an introduction +to the topic. diff --git a/doc/patching.md b/doc/patching.md new file mode 100644 index 00000000000..f0de38639d7 --- /dev/null +++ b/doc/patching.md @@ -0,0 +1,13 @@ +# Patching + +## Libraries +If 3rd party library has an issue and fix is not yet released (or we can't switch to a new release), we use forks. Fix should be committed to the fork, tagged and referenced from package.json. + +Example: [`react-native-hole-view`](https://github.com/status-im/react-native-hole-view#refs/tags/v2.1.1-status) + +## React Native +When patch need to be applied to React Native itself Status does patching with Nix instead of doing it nodejs-way. + +Patches should be added to [this file](https://github.com/status-im/status-mobile/blob/develop/nix/deps/nodejs-patched/default.nix). + +Example: [patching `react-native/Yoga` to build app with XCode 14.3](https://github.com/status-im/status-mobile/pull/15589) diff --git a/doc/pipeline_process.md b/doc/pipeline_process.md new file mode 100644 index 00000000000..6324639fc7b --- /dev/null +++ b/doc/pipeline_process.md @@ -0,0 +1,125 @@ +# Pipeline process + +[Pipeline for QA](https://github.com/status-im/status-mobile/projects/7) is a project board for developers and testers used to track the status of a pull request, get reviews and manual testing, and run autotests. + +The generally accepted requirements for its use are described below: + +## Opening a PR +- Once a PR is created, it moves to the ```REVIEW``` column where a review will be requested automatically. +- You can also request a review inside the PR from a particular person if needed. +- When creating a PR, do not forget to assign it to yourself. +- Also in case the PR adds new functionality, a description **MUST** be added. + +### What if the work is still in progress? + +- If PR work is not finished yet, please mark it as a draft or add [WIP] to the title and keep it in the `CONTRIBUTOR` column until it's ready to be reviewed/tested. +- Alternatively, you can open a `draft`. + +### When is a PR considered ready to move forward? + +Ready for testing, a PR should meet the following criteria: + +1. Reviewed and has at least 1 approval. +2. Rebased to the `develop` branch (both `status-mobile` and `status-go` if needed, depending on what part has changes). + - **NOTE:** QAs can use the `Update with rebase` button from GitHub if: + - The PR has no `status-go` changes. + - The PR has no conflict with the develop branch. +3. All possible conflicts have been resolved. +4. Has the label: `request-manual-qa` or `skip-manual-qa`. +5. PRs **MUST** identify what area is affected and should have a description. + + +### E2E tests and analyzing the results + +The PR **MUST** be moved to the E2E column when it is ready for testing (**mandatory for all PRs**). +That will also trigger e2e tests run. QAs are monitoring PRs from E2E column and take it into test. +This step cannot be skipped. So, at least one comment from the `status-im-auto` bot with results is a prerequisite for moving forward. +Information on how to analyze tests can be found [here](https://github.com/status-im/status-mobile/blob/develop/doc/tests/how-to-launch-e2e.md). +Tests might be flaky, as they depend on infrastructure - SauceLabs and Waku. + +If there are `Failed tests` and you are not sure about the reason, you can always ping the mobile QAs for help (preferably in PRs by `@status-im/mobile-qa`). + +**For now, it is the only reliable source of regression in the app because, due to time constraints, it is not possible to test thoroughly each PR. +Please, respect this rule.** + +## Testing PR + +### Adding `skip-manual-qa` + +**Do not hesitate to use a `skip-manual-qa`** if you're sure that it is a simple flow and you checked it. +- Please ask another team member before adding the `skip-manual-qa` label (PR/Status community/DMs) so that there's a second opinion. +- The PR MUST have a proper reasoning why manual QA is skipped. +- The PR MUST include the steps of testing that has been done by the developer prior to moving it forward. + +**NOTE:** Make sure that QAs are OK with that; + +Before merging PRs, please make sure that information is added about how you tested the PRs, that e2s have been passed and their results have been reviewed. + +The QA team appreciates your help! + + +### Manual testing + +#### Prerequisites for manual testing +1. PR has a description of the change and details the area of the application affected by the change. +2. PR has automation results from the previous E2E test run step. +3. PR includes a demo, test steps, and any possible regression(s) +4. If appropriate, PR details what elements of a feature are out of scope. + +**If one of the prerequisites is missing, the PR will be moved to the contributor folder with a corresponding comment.** + +- If you think a PR needs and is ready for manual testing, please add the `request-manual-qa` label. +- QA engineer picks up one of PRs with the ```request-manual-qa``` label, drags the item to the ```IN TESTING``` column and assigns it to themselves. +- During testing, QA will add comments describing the issues found, and also review automation tests results. +Usually found issues are numbered as "Issue 1, Issue 2", etc. +When the first round of testing is completed and all issues for this stage are found, the QA can add the ```Tested - Issues``` label and drag the card to the ```CONTRIBUTOR``` column. These two actions are optional. + +**IMPORTANT NOTE:** when the issues are fixed, developer **MUST** notify the QA that it is ready to be re-tested again by mention them in the PR. + +- When manual testing of the PR is fully completed and all the issues are fixed, the QA adds the ```Tested - OK``` label and drags the card to the ```Design review``` column (the cases when design review is necessary are described below). +- If design review is not required, the QA drags the PR to the ```MERGE``` column. After that the developer merges PR into develop. +- If design review has been done, the designer (```@Francesca-G```) drags the PR to the ```MERGE``` column. +After that the developer merges PR into develop. +- If manual testing/design review was not carried out, the developer drags PR to the ```MERGE``` column themselves. + +### Design review +_**How do I know if a design review is needed?**_ + +There are three cases here depending on the changes in the PR: +1. **Functional PRs with UI changes:** after the ```Tested - OK``` label is added, the QA moves the PR to the ```Design review``` column + mentions ```@Francesca-G``` in comments. +2. **Component PRs:** once the PR has received a review from developers and e2e tests results, it can be moved directly to the ```Design review``` column by the developer (manual testing step can be skipped) + the developer mentions ```@Francesca-G``` in comments. +3. **Functional PRs changes in which are not related to UI (e.g. a crash fix):** skip the ```Design review``` step (the PR should only be manually tested by QA). + +There are three possible scenarios when the design review is completed: +1. **Approved by design** > the PR is moved to the ```MERGE``` column by Francesca +2. **Some changes requested, but can be fixed as followups** > need to be negotiated with Francesca > Francesca moves PR to the ```MERGE``` column and adds the ```Follow-up required``` label > follow-ups should be added **by the dev** right after the PR is merged +3. **Some changes requested, they should be fixed before merge** > Francesca reviews the PR again after the fixes and moves PR to the ```MERGE``` column from ```Design review``` + +--- +**Notes:** +- If your PR has a long story and started from `develop` branch several days ago, please rebase it to current develop before adding label +- if PR can be tested by developer (in case of small changes) and/or developer is sure that the changes made cannot introduce a regression, then PR can be merged without manual testing. Also, currently, PRs are not manually tested if the changes relate only the design (creation of components, etc.) and do not affect the functionality (see `skip-manual-qa` label) +--- + +#### Why my PR is in `Contributor` column? +PR can be moved to this column by the ```status-github-bot``` or by QA engineer with label `Tested-issues` or if one of the requirements for manual QA was not met. +In the first case most often this happens due to conflicting files in PR. +In the second case - after fixing of all found issues, the developer should ping the QA in the PR comments for retesting. + +## Merging a PR +**Merge conditions:** +1. Required number of reviews received +2. E2E results are received and reviewed +3. All commits are squashed into one. +4. No conflicting files in PR +5. No issues from lint +6. Pay attention to automation checks (some of them are not blockers, best to check before merge anyway) +![](images/pipeline-process/automation-checks.png) + + +6. In case of manual testing - the label ```Tested - OK``` from QA +7. In case of design review - the approval from the designer + +You can merge your PR into develop - some useful clues you can find [here](https://notes.status.im/setup-e2e#3-Merging-PR) + +HAPPY DEVELOPMENT! :tada: diff --git a/doc/pixel-perfection.md b/doc/pixel-perfection.md new file mode 100644 index 00000000000..49a4bd45252 --- /dev/null +++ b/doc/pixel-perfection.md @@ -0,0 +1,23 @@ +# Pixel Perfection +The Status Mobile team aims to align the design implementation perfectly according to a given screens respective Figma design spec. + +Currently, the Figma Designs match up with both "iPhone 11 Pro" and "iPhone 13" screen size. + +The Dimension reference for iPhone 11 Pro is 375 x 812 (width x height) and for iPhone 13 is 390 x 844. + +To test your implementation is correct you can take the following steps + +- Open a new Figma file so that you have write privileges. + +- Copy in the component or screen from the Figma file. + +- Using the "iPhone 11 Pro" or the "iPhone 13" simulator (it is the default now) you take a screenshot of your component and paste it into your Figma file. + +- To get the right size, set your screenshot to width according to your simulator: + - for iPhone 13 set 390 + - for iPhone 11 Pro set 375 + + +![](images/pixel-perfection/layer-width.png) + +- Lower the opacity so you can see it sitting on top of the Figma mock ups. diff --git a/doc/post-mortem.md b/doc/post-mortem.md new file mode 100644 index 00000000000..b88e496506b --- /dev/null +++ b/doc/post-mortem.md @@ -0,0 +1,42 @@ +This document MUST be updated everytime a PR has been identified has the source of a bug in develop. The post mortem analysis MUST include: the CAUSE of the bug, the RESOLUTION PROCESS and PREVENTION MEASURES. + + +# "sql: no rows in result set" error on iOS login + +## Cause + +There were errors in the iOS native code: +- "loginWithKeycard" method was not implemented +- "createAndLoginWithKeycard" method was actually used instead of "createAndLogin** which is used for regular account creation without keycard and doesn't have the same final argument + +QA process was focused on account creation and login with keycard, and this bug would only appear specifically on iOS when creating an account without keycard and only during the next login. It was therefore a more complex path to reach than what could have been expected from this PR, and it was caused in develop by a developer working on iOS simulator because that is a common path during development. + +## Resolution process + +- the commit was reverted locally by the developer which fixed the issue locally and confirmed the faulty commit +- the bug was only reproducible on iOS which strongly hinted at a potential issue with native code +- the missing method was not the origin of the problem but was found at this point and further analysis lead to the shadowing error + +## Prevention measures + +- PRs that change native code should be checked for platform parity: + - same methods are created/modified for each platform + - test cases in the PR should take these methods in consideration + +# Missing labels for en translation + +https://github.com/status-im/status-mobile/issues/9003 + +## Cause + +Unused labels in the application have been listed by QA and an issue created for their removal. The PR was made by an external contributor and it had to be rebased many time because it touched many files and other PRs got merged before this one could be tested. After a last rebase the PR was merged with 100% e2e test but no manual testing. + +The reason some translations got deleted despite the fact that they were used is because the `message status` related labels were not explicitly mentioned in the code unlike every other labels. They were built from the actual `message status` and the prefix `status-`. + +## Resolution process + +The mistake was quickly noticed in develop and an issue created. The fix was to recover the 3 labels that were accidentally deleted. + +## Prevention measures + +The code has been changed so that the labels are no longer generated and appear in the code like other labels. diff --git a/doc/pr-review-policy.md b/doc/pr-review-policy.md new file mode 100644 index 00000000000..3769c025ba6 --- /dev/null +++ b/doc/pr-review-policy.md @@ -0,0 +1,96 @@ +## Pull Request Review Policy + +This document details the pull request policy of the Status Mobile repository / team. + +- [Terms](#terms) +- [Policy](#policy) + - [Overview](#overview) + - [Full Policy](#fully-policy) +- [Rationale](#rationale) + - [Front pressure and Demand control](#front-pressure-and-demand-control) + - [Back pressure and Supply control](#back-pressure-and-supply-control) + - [Honour System](#honour-system) +- [Review Support](#review-support) +- [Background](#background) + +### Terms: + +| Term | Definition | +|----------------------|---------------------------------------------------------------------------------------------------------------| +| **Requester** | The team member submitting a pull request. | +| **Reviewer** | A team member asked by a requester to review the requester’s pull request. | +| **Review bandwidth** | The number of reviews a team member has self-limited themselves to giving within their defined review period. | +| **Review period** | The period of time over which a reviewer’s bandwidth is consumed | + +### Policy: + +#### Overview + +- 🔀 - You are responsible for getting your PR reviewed and approved. +- ✅ - You must give a review on a PR if you are asked to do so, unless your review limit has been reached. +- ✨ - The honour system underpins this policy, without acting in good faith it will not work. + +#### Fully policy + +1) The requester has the responsibility for getting a PR reviewed and approved. + 1) The requester has the right and responsibility to pursue code reviews. + 2) The requester has the right and responsibility to make multiple requests of the same reviewer. + 3) The requester will select a limited number of reviewers to review any of the requester’s PRs. +2) Reviewers are obligated to give a review for all PRs they are requested to review, except when their review bandwidth has been exhausted: + 1) Reviewers have the right to refuse a requester a review if the reviewer’s review bandwidth has been exhausted. + 2) Reviewers are expected to manage and track their review bandwidth. + 3) Reviewers can manage their review bandwidth via any means they feel works best for them. Examples include: + 1) Using the GitHub busy feature + 2) Declining a review on the PR + 3) Declining a review when pursued by a code reviewer + 4) Proactively declining to review a PR +3) All team members will set a review bandwidth that is reasonable. +4) All team members acknowledge that giving reviews is a requirement of membership of the team. +5) All team members will manage their review bandwidth honestly. + 1) The right to refuse a PR review is only eligible if a reviewer’s review bandwidth has actually been exhausted. + 2) Breaching the team’s honour is very bad form. Do not do it (please). +6) All team members acknowledge that without acting with honesty this review process will not work and jeopardises their own future ability to receive reviews. + +### Rationale + +#### Front pressure and Demand control + +Foremost in the rationale for the above policy is that giving a PR review is a requirement. If a requester requests + a PR review of a team member, the reviewer is now obligated to review the PR within a reasonable timeframe. + +This principle enforces that there is a pressure and demand that PR reviews must be given. + +#### Back pressure and Supply control + +Front pressure alone is not enough to balance the PR review load across the team. Because of this an exception is granted +to reviewers that have exhausted their review bandwidth, the exemption permits these reviewers to refuse a PR review. + +This principle gives the reviewer pool back-pressure, relieving the exhausted reviewer and increasing pressure / demand on +the other reviewers. + +#### Honour system + +The two principles of demand and supply control are underpinned by an honour system and are useless without honest action. +If a team member does not honestly manage their review bandwidth this action seriously damages the collective balance of +PR review load. Because of this potential damage a breach of the honour system is considered a deeply shameful act. + +The honour system is the mechanism of control and enforcement, without it the policy would need to be controlled and enforced +using less dynamic and forgiving mechanisms. An example is a GitHub review counting tools with quotas and metrics. So just +be cool. + +### Review Support + +Sometimes reviewing is time-consuming or generally painful, to help make reviews as simple as possible consider the following suggestions: +- Paired reviews: Ask an experienced reviewer to review with you. +- If a PR is the product of multiple developers only ask 1 or 2 other developers for their review. + +### Background + +The contents of this policy document is the product of 2 councils of the Status Mobile team, the below documents summarise the topics and outcomes of the councils: + +- [2023-05-15 - Council of Deadwater](https://docs.google.com/document/d/1TtUZCke2OzumjdWGu6TIECHEOUPwvaLrvQ8Re2nEGCo) +- [2023-06-13 - Mauve Council of Deadwater](https://docs.google.com/document/d/19hfr8xXrShLk9ROdQfOwb9_vwbTah9nOCqKSLIrgoSI) + +The aims of the council were to allow developers that are relied on heavily for reviews to better balance their time +between reviews and other responsibilities. Equally, the council aimed to give other team members better opportunity and +understanding that giving PR reviews is a requirement and will help the team generally if more review burden is shared. diff --git a/doc/react_tree.png b/doc/react_tree.png new file mode 100644 index 00000000000..e5ade680dd4 Binary files /dev/null and b/doc/react_tree.png differ diff --git a/doc/release-checklist.md b/doc/release-checklist.md new file mode 100644 index 00000000000..a40fca996f0 --- /dev/null +++ b/doc/release-checklist.md @@ -0,0 +1,21 @@ +#### Before submission +- [ ] Feature or improvements release? (Feature release needs more lead time and assets for comms) +- [ ] Sign off by QA +- [ ] App store listing content reviewed and updated ([copy](https://docs.google.com/spreadsheets/d/1fLDr3BD1dcg0dolvLiozXoZU27IQirjBzn0h4_QS2u0/edit#gid=0), [images](https://www.dropbox.com/sh/6baklctvxy3nuoo/AACG9kYIVdt2qREW76rP8SP-a?dl=0) ) +- [ ] Play store content reviewed and updated +- [ ] Release notes written and added (500 character limit for updates (Android), no Android references for App store) +- [ ] Comms timeframe agreed on (Mon/Tue ping when both submissions are in) +- [ ] Privacy policy reviewed and updated +- [ ] App translations for key features merged and tested +- [ ] Countries to be excluded +- [ ] Changes to our FAQ made + +#### Before publishing +- [ ] Translations for comms available +- [ ] Promotional content ready +- [ ] Update Draft with release on https://github.com/status-im/status-mobile/releases +- [ ] Add release to DO store and [update site](https://notes.status.im/s/status-release-upload#) (Jakub - requires credentials to upload) + +#### At time of publishing +- [ ] validate draft release on github release page https://github.com/status-im/status-mobile/releases +- [ ] update https://github.com/status-im/status-mobile/blob/develop/RELEASES.md with release notes diff --git a/doc/release-guide.md b/doc/release-guide.md new file mode 100644 index 00000000000..44b9b2cdbf6 --- /dev/null +++ b/doc/release-guide.md @@ -0,0 +1,117 @@ +# Description + +This document explains some of the steps that are involved in releases. + +# Release process + +## Coordination + +All the coordination is done in the `#release` channel on discord. + +Release readiness can be tracked by watching an appropriate milestone at [milestones](https://github.com/status-im/status-mobile/milestones) section in github. + +When release is building you can check the progress in a testrail. Ask @churik for access if you don't have it + +## Preparing branches +Special branches should be created at the start of a release process. That can be done manually or with the script + +### Prepare branches with the script + +You can use the script to cut a release branch. No arguments needed, the new release version will be deducted automatically: + +`scripts/cut-release.sh` + +Upon script call two branches will be created: +- `release/a.b.x` +- `chore/update-release-to-$version` + +The first one is the main release branch. All bugfixes should be cherry-picked from `develop` to it. Jenkins treats that branch specially and prepares release builds from it. + +The second branch only updates the `VERSION` file and all you need to do is to merge it to `develop`. If you have the `gh` command installed, `cut-release` script will automatically create a PR for this. + +### Prepare branches manually + +#### Create a branch + +First, we need to create a release branch cut from develop. +The name of the branch should be `release/a.b.x` where `x` is actually `x`, not a variable, and `a` and `b` are the `MAJOR` and `MINOR` version of the app. + +For example, valid branch names are: + +`release/1.12.x` or `release/3.12.x` + +#### Update version + +We need to update the `VERSION` file to reflect the release we want to build. + + +## Building + +Jenkins will automatically build this branch and create release candidates. +Those will go through the QA process and the QA team will let us know when +tested successfully. + +You can see the state at https://ci.infra.status.im/ -> status-mobile -> release -> pick the right version number + +## Bugfixes before an app is released + +Because both `status-mobile` and `status-go` might have newer commits that we don't want to include, bug fixes should be applied separately to develop and the release branch. +The best workflow is to send a PR to develop, get it merged, and the cherry-pick on the +release branch. + +It is a release manager's responsibility to cherry-pick bugfix from `develop` to release branch. In order to do this, you should be a part of a `release group` on github. Contact @jakubgs to be added. + +If cherry-picking not practical for some reason (i.e develop has diverged significantly from release) +other workflows are possible. + +To change status-go, a similar workflow applies. +First checkout the tag used in `status-go-version.json` of release branch. + +`git checkout v0.62.3` + +Create a branch on status-go named: `release/vx.y.z+hotfix.w` where (make sure branch name is not the same as the tag) + +`x` is the `MAJOR` version +`y` is the `MINOR` version +`z` is the `PATCH` version +`w` is the `HOTFIX` version + +For example valid names are: + +`release/v0.62.3+hotfix.2` +`release/v1.3.4+hotfix.4` + +Once the branch is ready to use and tested successfully, tag the branch: + +`git tag v0.62.3+hotfix.2` + +Push the branch and then the tag to origin: +`git push --set-upstream origin release/v0.62.3+hotfix.2` +`git push origin v0.62.3+hotfix.2` + +Switch to status-mobile release branch, and cherry pick the commit you need. + +Once that's done, update the status-mobile release branch with the new tag: + +`make shell` + +`scripts/update-status-go.sh v0.62.3+hotfix.2` + +And commit and push the changes + +# Hotfix process + +The hotfix process is basically identical to the workflow of a bugfix: + +1) Add the changes on status-mobile +2) Make sure you use a hotfix branch for status-go (unless we are happy to release from develop) +3) Update the `VERSION` in status-mobile + +# PlayStore Metadata Updates +This section is relevant only for the marketing team, no developer participation is required. + +You can update Play Store release metadata using `fastlane android upload_metadata`. + +But that requires credentials necessary for accessing Play Store API. The simpler way is to edit files contained within [`fastlane/metadata`](metadata) and run the following CI job: + +https://ci.status.im/job/status-mobile/job/tools/job/update-playstore-metadata/ diff --git a/doc/sign_in/readme.md b/doc/sign_in/readme.md new file mode 100644 index 00000000000..c18c0f82086 --- /dev/null +++ b/doc/sign_in/readme.md @@ -0,0 +1,70 @@ +# Sign in flow + +TODO: this document is outdated + +## tl;dr +In general, at first we try to encrypt realm database using password +and then proceed with the rest of operations. We do not wait for +`Statusgo.Login` callback in order to show `:home` screen with chats +as this call may add more than 1s to the process. + +![img](sign_in_diagram.jpg) + +## In details + +#### Main flow: +1. User enters password +2. Presses "Sign In" +3. Attempt to open account's db +4. + _a._ If DB file doesn't exist go to [**Empty DB flow**](#empty-db-flow) + + _b._ Otherwise continue +5. + _a._ If db can't be encrypted go to [**Verify password flow**](#verify-password-flow) + + _b._ Otherwise continue +6. + _a._ If db can't be migrate DB schema **show migrations failure popup with + option to erase DB** + + _b._ Otherwise continue +7. Proceed with [**UI flow**](#ui-flow) and [**Statusgo.Login flow**] +(#statusgologin-flow) + +#### Empty DB flow: +1. Verify password +2. + _a._ If password is wrong **show "Wrong password" label** + + _b._ Otherwise continue +3. Create account's DB (by opening it with correct encryption key) +4. Proceed with [**UI flow**](#ui-flow) and [**Statusgo.Login flow**] +(#statusgologin-flow) + +#### Verify password flow: +1. Verify password +2. + _a._ If password is correct **show encryption failure popup with option to + erase DB** + + _b._ Otherwise **show "Wrong password" label** + +#### Statusgo.Login flow: +1. Start node +2. "node.ready" event received +3. Statusgo.Login is called +4. Statusgo.Login callback +5. + _a._ If password is incorrect **show error popup (passwords used for db + encryption and for account do not match)** + + _b._ Otherwise continue +6. Done + +#### UI flow: +1. Load necessary data for last 10 chats +2. Show `:home` screen +2. Load the rest of chats +3. Show them too +4. Done diff --git a/doc/sign_in/sign_in_diagram.jpg b/doc/sign_in/sign_in_diagram.jpg new file mode 100644 index 00000000000..548fccc6dd7 Binary files /dev/null and b/doc/sign_in/sign_in_diagram.jpg differ diff --git a/doc/sign_in/sign_in_diagram.xml b/doc/sign_in/sign_in_diagram.xml new file mode 100644 index 00000000000..d9537608ab5 --- /dev/null +++ b/doc/sign_in/sign_in_diagram.xml @@ -0,0 +1 @@ +7V1dd6M2Gv41PtteTA4gwHA5idNu2+lMutnNdPZmjwwC02LkCjyJ++tXMsgGIduaGAHO8VxkbAEC3s/n/ZA8AXfLlx8JXC1+xSFKJ5YRvkzAbGJZvmPQv2xgUw5MTb8ciEkSlkPmfuAx+RtVg9V18ToJUd44scA4LZJVczDAWYaCojEGCcHPzdMinDbvuoIxag08BjBtj35OwmJRjnr8tdj4P1ESL/idTaM6soT85GogX8AQP9eGwP0E3BGMi/LT8uUOpYx2nC7ldT8cOLp7MIKyQuWC+ebp68/LX/3ZE948PcysF+Ljd5ZXPVyx4W+MQkqA6ismxQLHOIPp/X70luB1FiI2rUG/LYplSj+a9CN6SYrf2fCNU337wo9kBdnUDrGvX6oJ/kBFsak4D9cFpkP7+37AeFXN0X7higY5XpMAHXlLLjiQxKg4Ro3yPEaB2g0qcv6I8BLRx6YnEJTCIvnaFBFYSVq8O2/PDPqh4sc38Kaa9ytM19WdHgjK8wnjs/vXmsnN7WMSZ3Tgp2w/1GLonl2Mis+LpECPK7gl2DPV2SYLoyRN73CKyfZaEELkRQEdzwuC/0S1I27goXl0jC1fESnQy1FCVkeB6ZSXbLgWTW+qkee90plckxY1hQOGJupbLep/WiFGaxgElKDFP/KtIMB0Sf+fvQmqe9bgVLdbVGekNSh9EFPMlyQv6C1/aFN7gZfzdX6a0p3QzWjQjTo1Gd2AhG5eB3QDP01/u/3fu/XP//plMbv9+PnJ/c+Xd06XZly/QXYUDbIPRmWRnZZ03kFmElAWkM2qKA3B0NJpNaUTTM22bJoS2ZwCXZZ02inG2CGJBo7YwgpVwRXNrYO80JaZW8+aA9c9S9RdRVHnLOlO1LeXvicEbmonrHCSURO6n/mBDdTEZ9p0Cq7tCAJQzrgXh92jnWH1py3FGsKeCWIReQEKpF547jm2Y/QiFnbnYnEeJjX0KLP5tpR56o1EmV1BmV39yuy2dPlxHQQ0cInWabopo5eUBSpzQj/F7NMyiQksqIBQFgQLtISDO1GjaQVtTwrxbIkbdXVBYxUbmYXvWc6DfgtSmOdJoBqfv14lVGPmGt0cCdn42LcpRFviBcY5e8bxSco3qq6r50tOeMIazOdTlXagNVVXmuTp5HifZtNWNJvOqGXJBa+XJeekWGqWJV+nLB3L7vUpZ6phpXuVM11yxsOYuvunt2TPmOEQtb366NNktt0MqF0eYJ9Kkjm6kIDZzk2OAgpw3p+OdVXTOv0ooO03OTwV05uq6ue4wkSWMJFu5QMSweB1AaZ+NwTBcFOvFRh5EtN46g3o5dRQ1EttCN1sZ6/HoZdAVS/HBcBEvfREdVLWS1FUpj3rJbeMXadABymmqqIsMFWUJr1JEEeAV55rHBeW4+frSZqY7dIChU3FOo/xzQccJ1k7afIWTLY/tMnevUMHJtusGeyaZh6oVfSZbFaNv/nLj8X+AyED4746MLL9k1Np9gHgDbkALienBarz+u3rXIDd5D6v4B/GC0fP1+MCOFFrpugJkSTavmit52RFTdAzJiH9+F2+9RHvYvz9JXoDMcEKlLt+tPkDVyXn2nslUmvSzFKNDtzBmjGkLS9ml4w5ZE/HWj5WZpppqPp0vSbYFU2q7/VgUtv5kDtMCOsTtly4ZEYwm+erLSdEeL0zswOXIm2viZmB02u3mTzP3imW0Y9XgCpeMUehK2Ll0T+OVo6frkezOEWlmcaqKZkFrQZlp2WUoWwz7RgQhDqPajvQN6G5k+faa7rmybrnukAkUjdna3JzvtPouTFvDAD4wAPFnfTpEektogCqISoXvJH0Q4F2yvdxgZ/ZAxJC/T2lBl6tV+dJdYfAQl0PdrULrgiOcne4NnTu+VqU4UKaz3g+9aSOeCOJuoVEqmk4PXgmv9O4YIzYX1kOuHEai61sd7B9wHG8bfvbYoW83ic4NOy2hCqALFXt9gq6wRCCfYaY+oO59FeZK1N0eOA47D5xvibcLevjKjF0vmJrUUoUzTFIuS4lwUy7Ipika8KWUQU4ixKyhNWBCqEY3z0nVLItA/MrttgdEZizi2a33/M70Sev3+wCwY3TZJ01HT7z6HSaaKwBfYPa3SbQN3cD/QN9XgG8FKsgVCyBd9woHD9d0+qZdsvdEZtQ9tpfTYJoEgRrfqDjv1+TIOsnqhIme0qXAxHeimGwI84+1wKiCNB/9aHy2o+fauwrJ2hOSofnB1lK6Vo0+dbkT4YzJDCzGoIpSxCBWUC5xUzPLeNSEsD0fXVgmYTh1r7JBKVp87rgvC8qrSthvWyth+np4nx7Ec2V8xo4L7RL2/7wnJct87lyvmvO20BAgNLac7+cl5Wer5zvmvOO0AkEXG9wzh8O6r6J864bBIbR5vyX+8cr6yftQpktTWnLWC82HnfXb2JdWd+L1tvjY70M411Sgs9V70GZjCGUF2XA8ew6EyX1C+PY+WcH87d/xvefivzpv58XfznZ0+8P/34Iuu1qGpEMjGRHhLYMnEjy2qIM9JDQcSVtSwTBguVc6p2gM0nbUkt8LqAP1FPabKHX1Mv0cE7tCsb1uWXPt4cG4xwj6t4R82zb3LElbZu+adP0uY4wherai/ZERt8bachQ9iW52anqxkNe51DrPGVqY9wPGIbsTRZo+xQ5ExQc0T8ZYsV/uH26EBaQ/hcRvBR8Xji/QA8ntPDulp8Ot1LZvDCcyeHjaZypurdHTwpwOKknqc1NwPsFvfFk3x5rVAW4KCFbTWGhlBEsIMO4+itvg2iHy43zKe2wdUEAT2Ud/5i1hVN0gE7B8wgv2Tym1AzILm4u2ai04NLF3TeHdgZeO9ycffp43xb5NE1W+aHY4AhZz2iKfTVZTUOVrtoa9vyOYshrbvdEWl9YJu7wTsmhQkhfFm5cGd99EVdoMPfdgVP6fre/ptHBmtTXYwhfNbPrj6vL3G97s7e9jN70d+nS3ZbvsgQqr3v3gil8V4smXMhKHa4Sp5tc/XHpjqad+i9jTb0y17gmjYVr7XD14la5W0KttbY/T92E9QnfTUPPakPjxvInzYZ8w50M1pDPhfnSVt7y527nCmRFUQ6hPxOcxQ3vX1uTnsI56nYnzCiKLLm9Ct2563QU+lriQktJAOT1ml42rqFvLxGQWFqzPGfotibTkG2pdy2dd967LpTOLdvvsXQu3aqi0wWqNX859WwRPw7kLHe7KV2at9w9+NVdUren8muTMofp6MoYmtIt3a8OU3sLODBU1328wmHSr/uf9y17Wfa/kQzu/w8= \ No newline at end of file diff --git a/doc/starting-guide.md b/doc/starting-guide.md new file mode 100644 index 00000000000..959f098c9a1 --- /dev/null +++ b/doc/starting-guide.md @@ -0,0 +1,131 @@ +# Description + +This document provides information on how to start developing Status App. + +# Getting Started + +To start developing clone the status-mobile repo in the directory of your choice. +``` +git clone https://github.com/status-im/status-mobile.git +``` + +Then open a terminal and cd into this directory. + +``` +cd status-mobile +``` + +Then build the clojure terminal + +``` +make run-clojure +``` + +note: ⚠️ This might take a while if this is your first time. + +This command installs `nix` and pulls in all the dependencies. +Do answer with "Y" to all the prompts and press "Enter" when `nix` setup asks you to Acknowledge. +This command builds the `jsbundle` and then compiles `Clojure` into `JavaScript`, watches for changes on `cljs` files, and hot-reloads code in the app. + +wait till you see the following message : + +``` +[:mobile] Build completed. (1801 files, 52 compiled, 0 warnings, 9.52s) +``` + +Once the clojure terminal is running you need to run the appropriate command next for your platform in a separate terminal : + +`make run-android` or `make run-ios` + +These commands will build the app, start a metro bundler and deploy the app on your simulator OR connected device (android only). For building and deploying to connected iPhones use `make run-ios-device` instead of `make run-ios` +Also check [developing on a physical iOS Device](#Additional-requirements-for-developing-on-physical-ios-device). + +## Simulators and Devices +### Android + +You need to have an emulator like [AVD](https://developer.android.com/studio/run/emulator), or [Genymotion](#genymotion-virtualization), or a real device running and visible to [adb](https://developer.android.com/studio/command-line/adb), before you run `make run-android`. + +### iOS + +#### Running on a simulator + +We highly recommend using either the `iPhone 11 Pro` or `iPhone 13` simulator as its screen dimensions match with our design. + +If you have Xcode `v12.x` (and above) installed in your system, you need to follow the below steps to add `iPhone 13` simulator: + +1. Open Xcode +2. Menu `>` Window `>` Devices and Simulators +3. Tap `+` button on bottom left +4. Select **Device Type** as `iPhone 13` +5. Leave the **Simulator Name** empty and tap on **Create** + +##### NOTE ⚠️ + +Running `make run-ios` will target `iPhone 13` by default. + +If you need to run on any other simulator, you can specify the simulator type by adding the `SIMULATOR` flag: +```sh +make run-ios SIMULATOR="iPhone 15" +``` + +# Build release + +To build the app, you can simply run on of the following: +``` +make release-android +make release-ios +``` + +For more `make` targets run `make help`. + +# Updating Dependencies + +* `make nix-update-pods` - iOS CocoaPods dependencies (updates `ios/Podfile` and `ios/Podfile.loc`) +* `make nix-update-gradle` - Android Gradle/Maven dependencies (updates `nix/deps/gradle/deps.json`) +* `make nix-update-clojure` - Clojure Maven dependencies (updates `nix/deps/clojure/deps.json`) +* `make nix-update-gems` - Fastlane Ruby dependencies (updates `fastlane/Gemfile.lock` and `fastlane/gemset.nix`) + +# Manual Steps + +There are a few manual steps you might want to do in order to start contributing. + +## Genymotion Virtualization + +Optionally set up Genymotion if you don't want to use Android Virtual Device: + +https://www.genymotion.com + +## Android Development Environment + +You can also setup Android Development Environment + Simulator: + +https://facebook.github.io/react-native/docs/getting-started.html + +## Configure GitHub Account + +The optimal way of pushing to GitHub is using SSH instead of user/pass auth. + +It's recommended that you [add your public SSH key to your GitHub account](https://help.github.com/en/github/authenticating-to-github/adding-a-new-ssh-key-to-your-github-account). + +## Configure GPG Keys for signing commits + +In order to increase security we require all commits in `status-mobile` repo to be signed with a GPG key. + +Steps: +1. [Generate a new GPG key](https://help.github.com/en/github/authenticating-to-github/generating-a-new-gpg-key) +2. [Setup Git to use your GPG key](https://help.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key) +3. [Setup Git to sign commits](https://help.github.com/en/github/authenticating-to-github/signing-commits) +4. [Setup GitHub to validate commits](https://help.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account) + +## Additional requirements for developing on Physical iOS Device + +To use a physical iPhone your device UDID must be added to provisioning profiles and your Apple account invited as Developer to Status team. + +1. [Get your UDID of your iPhone.](https://www.extentia.com/post/finding-the-udid-of-an-ios-device) +2. Request from someone with access like @cammellos or @jakubgs to +- Add the UDID to development devices on Apple Developer Portal. +- Invite your Apple account to be Developer in Status team. +3. Open XCode using the project from `status-mobile/ios` directory. +- You might see error: `Select a development team in the Signing & Capabilities editor` +- Select `Status Research & Development GmbH` as the development team. +4. In a new terminal execute `make clean` and then `make xcode-clean` diff --git a/doc/status-go-changes.md b/doc/status-go-changes.md new file mode 100644 index 00000000000..c6e9d48ef9e --- /dev/null +++ b/doc/status-go-changes.md @@ -0,0 +1,31 @@ +# How to make changes to status-go + + +## Overview + +To make changes to status-go, the best approach is to first identify the issue/feature and the changes to be made directly in status-go. +For any bugs we want to most likely write a failing test in status-go, and make sure that it passes, before we test on mobile. + +Once you are quite confident that the status-go code is ready to be tested on mobile, you can test it locally by running the following command: + +``` +env STATUS_GO_SRC_OVERRIDE={your-status-go-directory} make run-{android/ios} +``` + +This will recompile status-go and run status-mobile on your device with that updated status-go version. + +Once you have tested the status-go changes locally and you think it's ready for a PR: + +1) Create a PR in status-go + +2) Point your local status-mobile branch to that PR by running the script: + +``` +scripts/update-status-go.sh {status-go-branch-name} +``` + +This will update `status-go-version.json` + +Commit updated status-go-version.json and create a status-mobile PR + +Once both PRs have been approved and are good to merge, you can follow the [merge guidelines](./merging-pr-process.md) diff --git a/doc/tests/component-tests-overview.md b/doc/tests/component-tests-overview.md new file mode 100644 index 00000000000..1e336729068 --- /dev/null +++ b/doc/tests/component-tests-overview.md @@ -0,0 +1,55 @@ +# Component Tests + +The component tests are using React Native Testing Library - https://callstack.github.io/react-native-testing-library/ +and Jest - https://jestjs.io/ + + +It is highly recommended to read some advice from Kent C.Dodds on how to write tests and use these tools correctly. + + +https://kentcdodds.com/blog/common-mistakes-with-react-testing-library + +https://www.youtube.com/watch?v=ahrvE062Kv4 + +Both of these links are showing it for React-Testing-Library (not Native) however the approach is for the most part considered the same. + +## Running the tests +To run these tests there are two methods. + +`make test-component` +setups and runs the test suite once. + +`make test-component-watch` +setups and runs the test suite and watches for code changes will then retrigger the test suite. + +## Writing Tests +New test files will need their namespace added to either the file "src/quo/core_spec.cljs" or "src/status_im2/core_spec.cljs. These locations may update overtime but it is dependent on the entrypoint in shadow-cljs config discussed below. + + +### Best practices +For the moment we will keep best practices for tests in our other guidelines document: + +To that point these guidelines will follow the conventions of Jest and React Native Testing Library recommendations and Status mobile will just stack their preferences on top. + +### Utilities +There is a file of utility functions defined in "src/test_helpers/component.cljs" and "src/test_helpers/component.clj". It will be great to use these utilities and to add any common testing tools to these files as it should make writing tests easier and faster. + + +## Configuration +Status Mobile has a bespoke tech stack, as such there is more complexities to configuring the tests. + +### Shadow-CLJS +the configuration for compiling our tests are defined in the "shadow-cljs.edn" file. +The three main parts of this are +`:target :npm-module` +Needed for the configuration we are using +`:entries` +a vector of entry points for the test files. +and the `ns-regexp` to specify what tests to find. Since we have multiple forms of tests we decided that "component-spec" is the least likely to detect the wrong file type. + +It's worth knowing that our tests are compiled to JS and then run in the temporary folder `component-tests`. + +### Jest +There is also further configuration for Jest in "test/jest". There is a jest config file which has some mostly standard configuration pieces, where the tests live, what environment variables are set etc. This is documented by Jest here: https://jestjs.io/docs/configuration + +There is also a setup file which is used to set some global and default values. Additionally this file is used to mock some of the react native (among other) dependencies. diff --git a/doc/tests/how-to-launch-e2e.md b/doc/tests/how-to-launch-e2e.md new file mode 100644 index 00000000000..a536042f3a2 --- /dev/null +++ b/doc/tests/how-to-launch-e2e.md @@ -0,0 +1,103 @@ +How to Launch E2E +=== + +## Overview for how automated test structured for Status app + +As a part of CI for Status mobile app and in order to ensure there are no regressions appear after the changes in code (bug fix, new/updated feature) we are using automated tests (e2e tests). + +- Automated tests written on Python 3.9 and pytest. +- Appium (server) and Selenium WebDriver (protocol) are the base of test automation framework. + +TestRail is a test case management system tool where we have test cases. + + +Each of the test case gets a priority (Critical/High/Medium) + +**SauceLabs** - is a cloud based mobile application test platform. We are using Android emulators (Android 10.0) for test script execution there. We have 16 session be running at the same time max. +For now we support e2e for Android only. + +## What's happening when any e2e job is running +Whenever we need to push set of test scripts we create 16 parallel sessions (max, but depending on amount of cases that are included in job) and each thread: 1) uploads Android .apk file to SauceLabs -> 2) runs through the test steps -> 3) receives results whether test failed on particular step or succeeded with no errors -> 3) Parse test results and push them as a Github comment (if the suite ran against respective PR) and into TestRail. + +We push **whole automation test suite (currently 155, amount is changing)** against each nightly build (if the nightly builds job succeeded). Results of the test run are saved in TestRail. +And also we push set of autotests whenever PR with successful builds got moved in to `E2E Tests` column from [Pipeline for QA dashboard ](https://github.com/status-im/status-react/projects/7). +In that case we save results in TestRail as well and push a comment with test results in a respective PR. + +For example: https://github.com/status-im/status-react/pull/9147#issuecomment-540008770 + +![](../images/how-to-launch-e2e/how-to-launch-e2e-1.png) + + +The test_send_stt_from_wallet opens link in TestRail https://ethstatus.testrail.net/index.php?/tests/view/890885 where performed steps could be found +List of all runs performed by test jobs could be found here https://ethstatus.testrail.net/index.php?/runs/overview/14 + +**For credentials for TestRail to see results ping Chu in DM**: + +Opening any test run navigates you to list of test cases with results: +![](../images/how-to-launch-e2e/how-to-launch-e2e-2.png) + + +## What about launching e2e manually + +To manage e2e there are several jobs in https://ci.status.im/job/status-mobile/job/e2e : +1) [nightly](https://ci.status.im/job/status-mobile/job/e2e/job/status-app-nightly/) - running automatically after building nightly apk e2e build. QA running it manually for results of e2e when testing release. +2) [upgrade](https://ci.status.im/job/status-mobile/job/e2e/job/status-app-upgrade/) - running manually by QA in release testing for smoke upgrade tests. +3) [prs](https://ci.status.im/job/status-mobile/job/e2e/job/status-app-prs/) - running **only automatically** when PR moves into `e2e column` +4) [prs-rerun](https://ci.status.im/job/status-mobile/job/e2e/job/status-app-prs-rerun/) - for manual run, can be run on request by anyone. **If you need to launch e2e against your build, use this job.** +Params to specify: + +- apk: [url_to_apk_build_here] +- pr_id: pull request number (e.g. 1234) +- branch: branch name from which the test are taken (in most of cases `develop`) +- keyword expression: tests by area (let's say `ens` or `chat`, they can be combined`ens or chat or send_tx`. All keywords can be found in testrail, ping Chu for details) +- test_marks: tests by priorities (by default: `critical or high or medium`, which corresponds the whole suite; to launch the same suite as in PRs, use `critical or high`) +- testrail_case_id: here is the list of test cases which you may find in test rail (4-digit value) + +For easier access you can hit `Rerun tests` in GH comment and testrail_case_id/ apk_name/ pr_id will be filled automatically. For making sure that tests are being rerun on most recent e2e build it is recommended to paste link to the last e2e build in apk_name field. The list of PR builds can be found in Jenkins Builds block on PR page. +![](../images/how-to-launch-e2e/how-to-launch-e2e-3.png) +And then hit ‘Build’. +Once the job starts it picks up specified tests, runs them against provided apk and sends results to pull request. + +Even we have 16 parallel sessions for testing it’s a time consuming operation (whole test suite we have automated at the moment takes ~140 minutes to finish). +So for PRs we pick only set of `critical or high` (you can also use this in TEST_MARKS param for job) +tests (otherwise some PRs could wait their turn of the scheduled Jenkins job till the next day). + +## Analysing test results (and why test fails to pass) + +After automated test run finished test results could be found in GH comment (if the test suite ran against PR) and TestRail. There are two states of the test: Passed and Failed. Test failure happens when certain condition of test step has not met or automated test can not proceed execution because it can not find the respective element on screen it expects should be there. + +Several examples of when test fails to succeed: + +- Test clicked on element which should load new screen (or pop-up) and awaits some element on this screen. But test did not wait enough allowing the new screen to appear and so it fails with “Could not find element XYZ” (this case is more app issue in our opinion rather then test issue, but we just can not spend our and dev time with too specific random places which happens once causing app lags in different moments) + +- Test sent transaction to address but it was not mined in time (we have a limit to wait until balance is changed on recipient side up to ~6 mins now). We classify this as False Fail, because it’s not the app issue but more network issue. + +- Test infrastructure issues, - anything related to infrastructure including SauceLabs side issues (apk failed to install - rare case, or LTE connection was set by default instead WiFi or unexpected pop-up appeared preventing test to going further) + +- Failure due to changed feature which has not been taken into account in some test after code merge (for instance: some element on screen has been removed, and we want to locate another element on this screen via XPath which is different now) + +- **Valid issue in the automated test scripts** - that's what we're looking for + +Example: here is the test results https://github.com/status-im/status-react/pull/13015#issuecomment-1016495043 where one test failed. + 1. Open the test in TestRail and open session recorded for this test in SauceLabs +![](../images/how-to-launch-e2e/how-to-launch-e2e-4.png) + + +In TestRail you may find all the steps performed by the test. +In SauceLabs testrun page you may find useful: video of the session, step logs, logcat.log of the session + 2. Analyze step where test was failed +For particular example it was failed on `Recover access(password:qwerty, keycard:False)` and unexpected error appeared. + +## Limits for e2e tests coverage +Not all features of the app could be covered by e2e at the moment: + +- Colours or place of an element on UI. +- Real ETH/token transactions. That’s the main reason we have separate .apk build for automation needs - it defaults to Sepolia network. Also it has enabled keycard test menu, ENS names and chat commands are also on Sepolia network (the same in PR builds, but not in nightlies / release) +- Autologin/Biometric related actions (autologin available when device meets certain conditions like the it has set unlock password and device is not rooted: all emulators are rooted in SauceLabs) + +## Brief flow for test to be automated + +Whenever there is a need to have a new test: +1) Create a test scenario in TestRail. +2) If certain item could be checked in scope of existing test case we update existing one (otherwise we may have thousands of test cases which is overkill to manage in TestRail as well as in automated test scripts). And also complex autotests increase probability to not catch regressions by stopping test execution (due to valid bug or changed feature) keeping the rest test steps uncovered. So here we need to balance when it makes sense to update existing test case with more checks. +3) Then we create test script based on the test case, ensure test passes for the build and pushing the changes to repo. diff --git a/doc/tests/how-to-run-local-tests.md b/doc/tests/how-to-run-local-tests.md new file mode 100644 index 00000000000..317a38b493d --- /dev/null +++ b/doc/tests/how-to-run-local-tests.md @@ -0,0 +1,94 @@ +# Local testing + +## Unit & integration tests + +To run all tests: + +``` +make test +``` + +Also test watcher can be launched. It will re-run the entire test suite when any file is modified + +``` +make test WATCH=true +``` + +Developers can also manually change the shadow-cljs option `:ns-regex` to control which namespaces the test runner should pick. + +## Testing with REPL + +The most convenient way to develop and run test locally is using REPL: + +1. Run command `make test-watch-for-repl`. +3. Once you see the message `[repl] shadow-cljs - #3 ready!` you can connect a REPL to the `:test` target from VS Code, Emacs, etc. +4. In any test namespace, run [cljs.test/run-tests](https://cljs.github.io/api/cljs.test/#run-tests) or your preferred method to run tests in the current namespace. + +You can run single test in REPL like this + +```clojure +(require 'cljs.test) +(cljs.test/test-var #'status-im.data-store.chats-test/normalize-chat-test) +``` + + + +Tests will use the bindings in `modules/react-native-status/nodejs`, if you make any changes to these you will need to restart the watcher. + + + +### Example in Emacs + +In the video below, you can see two buffers side-by-side. On the left the source implementation, on the right the REPL buffer. Whenever a keybinding is pressed, **tests in the current namespace instantly run**. You can achieve this exact flow in VS Code, IntelliJ, Vim, etc. + +[2022-12-19 12-46.webm](https://user-images.githubusercontent.com/46027/208465927-4ad9a935-5494-45e7-85b0-8134dc32d1a1.webm) + +### Example in terminal emulator + +Here I'm showing a terminal-only experience using Tmux (left pane Emacs, right pane the output coming from running the make target). + +[2022-12-19 13-17.webm](https://user-images.githubusercontent.com/46027/208471199-1909c446-c82d-42a0-9350-0c15ca562713.webm) + +## Component tests only + +To run tests: + +``` +make test-component +``` + +Also test watcher can be launched. It will re-run the entire test suite when any file is modified + +``` +make test-component-watch +``` + +Check [component tests doc](./component-tests-overview.md) for more. + +## Unit tests only + +To run unit tests: + +``` +make test-unit +``` + +Also test watcher can be launched. It will re-run the entire test suite when any file is modified + +``` +make test-unit WATCH=true +``` + +## Integration tests only + +To run integration tests: + +``` +make test-integration +``` + +Also test watcher can be launched. It will re-run the entire test suite when any file is modified + +``` +make test-integration WATCH=true +``` diff --git a/doc/tests/tests-overview.md b/doc/tests/tests-overview.md new file mode 100644 index 00000000000..6a60149affe --- /dev/null +++ b/doc/tests/tests-overview.md @@ -0,0 +1,167 @@ +# Tests + +## Introduction + +This document provides a general overview of the types of tests we use and when +to use them. It is not meant to be a tutorial or a detailed documentation about +testing in software development. + +## Types of tests + +Tests in `status-mobile` are comprised of: + +- Unit tests + - Subscription tests + - Event tests + - Tests for various utilities +- [Component tests](./component-tests-overview.md) +- Integration/contract tests +- [End-to-end tests](./how-to-launch-e2e.md) + +We apply the [test +pyramid](https://en.wikipedia.org/wiki/Test_automation#Testing_at_different_levels) +strategy, which means we want the majority of tests at the bottom of the +pyramid. Those should be fast and deterministic and support REPL-Driven +development (RDD). Slightly above them, we have component tests, then +integration/contract tests and finally end-to-end tests. The closer to the top +of the pyramid, the more valuable a test can be, but also more difficult to +pinpoint why it failed and harder to make it dependable. + +*Note*: there are literally dozens of [types of +tests](https://en.wikipedia.org/wiki/Software_testing), each with its strengths +and weaknesses. + +We tend not to stub or mock implementations in our tests, which means our tests +are [sociable](https://martinfowler.com/bliki/UnitTest.html). + +## What to test? + +The UI is driven by global & local state changes caused by events. Global state +is managed by re-frame and local state by Reagent atoms or React hooks. Except +for component and end-to-end tests, we test only non-UI code in `status-mobile`. +Given that the UI is greatly derived from global state, by guaranteeing the +state is correct we can prevent bugs and, more importantly, reduce the [cost of +change](https://www.pmi.org/disciplined-agile/agile/costofchange). + +We strive to minimize the amount of _business logic_ in views (UI code). We +achieve this by moving capabilities to status-go and also by adhering to +re-frame's architecture. + +Whenever appropriate (see section `When to test?`), we _may_ test: + +- Re-frame events. +- Re-frame subscriptions. +- Utility functions. +- User journeys through integration/contract tests. + +Interestingly, we don't test re-frame _effects_ in isolation. + +### What are status-mobile integration and contract tests? + +The mobile _integration tests_ can be used to "simulate" user interactions and +make actual calls to status-go via the RPC layer and actually receive signals. +We can also use these tests to verify the app-db and multiple subscriptions are +correct. We use the word _simulate_ because there is no UI. Basically, any flow +that can be driven by re-frame events is possible to automatically test. There +is no way to change or inspect local state managed by React. + +A _contract test_ has the same capabilities as an integration test, but we want +to draw the line that they should focus more on a particupar RPC endpoint or +signal, and not on a user journey (e.g. create a wallet account). In the future, +we may consider running them automatically in status-go. + +**Note:** integration tests and contract tests are currently overlapping in +their responsibilities and still require a clearer distinction. + +## When to test? + +(Automated) tests basically exist to support rapid software changes, but not +every piece of code should be tested. The following are general recommendations, +not rules. + +- What would be the consequences to the user of a bug in the implementation you + are working on? +- Can a QA exercise all the branches in the code you changed? Not surprisingly, + usually QAs can't test many code paths (it may be nearly impossible), and + because PRs are not often tested by reviewers, many PRs can get into `develop` + without the necessary quality assurance. +- How costly was it for you to verify a function/event/etc was correct? Now + consider that this cost will be dispersed to every developer who needs to + change the implementation if there are no tests. +- Check the number of conditionals, and if they nest as well. Every conditional + may require two different assertions, and the number of assertions can grow + exponentially. +- How complicated are the arguments to the function? If they contain nested maps + or data that went through a few transformations, it may be tricky to decipher + what they are, unless you are familiar with the code. A test would be able to + capture the data, however complex they are. + +### When to unit-test subscriptions? + +Only test [layer-3 +subscriptions](https://day8.github.io/re-frame/subscriptions/#the-four-layers), +i.e. don't bother testing extractor subscriptions (check the related +[guideline](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/doc/new-guidelines.md#subscription-tests)). +Some layer-3 subscriptions can still be straightforward and may not be worth +testing. + +- Check the number of _inputs_ to the sub (from the graph). The higher this + number, the greater the chance the subscription can break if any of the + input's implementation changes. + +**Note**: if a tested subscription changes inadvertently, even if its own tests +still pass, other subscriptions that depend on it and have tests may still fail. +This is why we don't directly test the subscription handler, but instead, use +the macro `test-helpers.unit/deftest-sub`. + +### When to unit-test events? + +A good hint is to ask if you and other CCs need to rely on re-frisk, UI, REPL, +or FlowStorm to understand the event. If the answer is yes or probably, then a +test would be prudent. + +- Many events only receive arguments and pass them along without much or any + transformation to an RPC call. These are straightforward and usually don't + need tests ([example](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/status_im/contexts/contact/blocking/events.cljs#L79-L85)). +- Overall, every event basically returns two effects at most, `:fx` and/or + `:db`. Usually, the complicated part lies in the computation to return the new + app-db. If the event doesn't perform transformations in the app-db or just + does a trivial `assoc`, for example, it may not be worth testing. + +For reference, the re-frame author particularly [suggests testing events and +subscriptions](https://github.com/day8/re-frame/blob/09e2d7132c479aa43f2a64164e54e42bf8511902/docs/Testing.md#what-to-test). + +### When to unit-test utility functions? + +Most utility functions in `status-mobile` are pure and can be readily and +cheaply tested. + +- If the utility is used in an event/subscription and if the event/subscription + has tests, you may prefer to test the event/subscription and not the utility, + or the other way around sometimes. +- If the utility is tricky to verify, such as functions manipulating time, write + tests ([example](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/utils/datetime.cljs#L1)). +- Utilities can be particularly hard to verify by QAs because they can be lower + level and require very particular inputs. In such cases, consider writing + tests. + +### When to write integration/contract tests? + +- You want to make real calls to status-go because you think the unit tests are + not enough (test pyramid strategy). +- You constantly need to retest the same things on the UI, sometimes over + multiple screens. +- The flow is too important to rely only on manual QA, which can't always be + done due to resource limits, so an integration/contract test fills this gap. +- You want to rely less on end-to-end tests, which can be more unreliable and + slower to change. +- You want automatic verifications for some area of the mobile app whenever + status-go is upgraded. + +**Note**: the feedback cycle to write integration tests is longer than unit +tests because they are slower and harder to debug. Using the REPL with them is +difficult due to their stateful nature. + +### When to test Quo components? + +This is covered in [quo/README.md#component-tests](https://github.com/status-im/status-mobile/blob/7774c4eac16fdee950a17bf5d07630c45a980f41/src/quo/README.md#component-tests). diff --git a/doc/troubleshooting.md b/doc/troubleshooting.md new file mode 100644 index 00000000000..9e203f396a4 --- /dev/null +++ b/doc/troubleshooting.md @@ -0,0 +1,146 @@ +## `yarn add` is not working + +While running any yarn add command like `yarn add react-native-share@7.0.2`, it is showing error + +``` +error status-mobile/node_modules/better-sqlite3: Command failed. +``` + +### Cause + +Local `node` version can be different from the one needed by Status project. + +### Solution + +Before running `yarn add`, nix shell should be started: + +``` +make shell +``` + + +## [DEPRECATED] Undefined is not an object evaluating `register_handler_fx` + +### Deprecation note + +This type of error should not occur anymore now that we require the namespace in the `fx.cljs` file. + +It can however happen with other macros requiring a cljs namespace. + +The general fix for that type of issue is to have two files for the namespace where your macros are defined, let's say for `my-project.my-macro` namespace you would have: +- my_macro.cljs in which you need `(:require-macros my-project.my-macro)` and `(:require my-project.the-namespace-used-in-the-macro)` +- my_macro.clj in which you define the macro + +That way you don't need to use any magical call like `find-ns` or inline `require` with some kind of call only once switch (which was the root cause of another bug in ``defstyle`` macro because the compilation phase at which the evaluation of the switch is done was not properly considered). + +You also want to make sure users are using the macro by using a aliased namespace defined in require statement rather than require-macro and refer to the macro directly. Otherwise it won't require the cljs file and the require statement of the namespace in the macroexpension might not be there. + +### Stacktrace + +``` +13:25:22, Requiring: hi-base32 +13:25:23, Possible Unhandled Promise Rejection (id: 0): +TypeError: undefined is not an object (evaluating 'status_im.utils.handlers.register_handler_fx') +eval code +eval@[native code] +asyncImportScripts$@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:200728:21 +tryCatch@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:26567:23 +invoke@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:26742:32 +tryCatch@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:26567:23 +invoke@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:26643:30 +http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:26653:21 +tryCallOne@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3725:16 +http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:3826:27 +_callTimer@http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false:28405:17 +_callImmediatesPass@http://localhost:8081/index.bundle?pla<…> +``` + +### Cause + +- stacktrace mentions `register_handler_fx`, +- common cause is when requires have been cleaned up and a require of `status-im.utils.handlers` namespace was removed because it looked like it was unused but was actually used through a fx/defn macro + +### Solution + +go through known faulty commit looking for deleted requires + + +## Git "unable to access" errors during `yarn install` + +### Description +Developer updates `package.json` file with a new dependency using a GitHub URL. So it looks like this: +``` + "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#feature/exportKeyWithPath", +``` +Afterwards, when running e.g. `make run-metro`, they might see the following confusing error: +``` +# macOS +fatal: unable to access 'https://github.com/siphiuel/react-native-status-keycard.git/': SSL certificate problem: unable to get local issuer certificate +# Linux +fatal: unable to access 'https://github.com/status-im/react-native-status-keycard.git/': Could not resolve host: github.com +info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command. +``` + +### Cause +`yarn.lock` is not updated to be in sync with `package.json`. + +### Solution +Update yarn.lock file. In order to do this, perform the following steps on a clean `status-mobile` repo: +``` +cd status-mobile +make shell +yarn install +``` +and don't forget to commit updated `yarn.lock` together with `package.json`. + + +## adb server/client version mismatch errors + +### Description +Running some adb commands, e.g. `adb devices` or `make android-ports` (in turn invokes `adb reverse`/`adb forward` commands) may display the following message: +``` +adb server version (40) doesn't match this client (41); killing... +``` +or the reverse +``` +adb server version (41) doesn't match this client (40); killing... +``` + +This might cause all kinds of difficult-to-debug errors, e.g.: + - not being able to find the device through `adb devices` + - `make run-android` throwing `com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: device 'device-id' not found.` + - `make run-android` throwing `- Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 Unable to install /status-mobile/android/app/build/outputs/apk/debug/app-debug.apk com.android.ddmlib.InstallException: EOF` + - dropped CLJS repl connections (that have been enabled previously with the help of `make android-ports`) + +### Cause +System's local adb and Nix's adb differ. As adb include of server/client processes, this can cause subtle version errors that cause adb to kill mismatching server processes. + +### Solution +Always use respective `make` commands, e.g. `make android-ports`, `make android-devices`, etc. + +Alternatively, run adb commands only from `make shell TARGET=android` shell. Don't forget the `TARGET=android` env var setting - otherwise `adb` will still be selected from the system's default location. You can double-check this by running `which adb`. + +# Hot Reloading Crashes +## APP Crashes on reloading changes + +### Cause +Status-mobile uses `shadow-cljs` for hot reloading changes and uses its own [reloader](https://github.com/status-im/status-mobile/blob/develop/src/status_im/reloader.cljs) for updating them in the running app. If react-native's fast refresh is also enabled then it creates conflicts and crashes the app. + +### Solution +Open react native's [In-App Developer Menu](https://reactnative.dev/docs/debugging#accessing-the-in-app-developer-menu) and press "Disable Fast Refresh" or "Disable Hot Reloading" + +# App crashing after running `make run-ios` + +### Cause +It's possible that installing XCode from a `.xip` file might cause XCode to act funny +Since it's not installed from the App Store, Or you might be missing a Rosetta installation. + +[Reference/Similar issue](https://github.com/expo/expo-cli/issues/3197) + +You might see something like this after running `make run-ios`: +``` +Underlying error (domain=FBSOpenApplicationServiceErrorDomain, code=1): +``` +### Solution +Run `softwareupdate --install-rosetta --agree-to-license` +to accept XCode's license and install Rosetta. diff --git a/doc/ui-guidelines.md b/doc/ui-guidelines.md new file mode 100644 index 00000000000..cd659c6a061 --- /dev/null +++ b/doc/ui-guidelines.md @@ -0,0 +1,254 @@ +# UI components coding guidelines + +> [!IMPORTANT] +> React apps are made out of components. A component is a piece of the UI (user interface) that has its own logic and appearance. A component can be as small as a button, or as large as an entire screen. +> React components are JavaScript functions that return markup +> This document will provide best practices on how to write efficient React components in ClojureScript + + +At the time of creating the Status app, the Reagent library was a solid choice. Back then, hooks didn't exist, and there weren't any libraries providing effective global state management. After Reagent's emergence, another library called Re-frame built upon Reagent. Together, they offered powerful tools for developing React applications with ClojureScript. However, as React evolved, significant changes occurred. Class components, utilized in Reagent, became deprecated. Instead, functional components and hooks emerged for state management. In Status 2.0, we began incorporating more functional components and hooks, resulting in a blend of both approaches. To simplify matters and reduce confusion, we opted to transition to functional components and hooks for local state management. + +BEFORE: +```clojure +(defn- view-internal + [_ _] + (let [pressed? (reagent/atom false)] + (fn + [{:keys [theme on-press on-long-press icon]}] + [rn/pressable + {:style (style/main @pressed? theme) + :on-press on-press + :on-press-in #(reset! pressed? true) + :on-press-out #(reset! pressed? nil) + :on-long-press on-long-press} + [quo.icons/icon icon]]))) + +(def view (theme/with-theme view-internal)) +``` + +NOW: +```clojure +(defn view + [{:keys [on-press on-long-press icon]}] + (let [[pressed? set-pressed] (rn/use-state false) + theme (context/use-theme) + on-press-in (rn/use-callback #(set-pressed true)) + on-press-out (rn/use-callback #(set-pressed nil))] + [rn/pressable + {:style (style/main pressed? theme) + :on-press on-press + :on-press-in on-press-in + :on-press-out on-press-out + :on-long-press on-long-press} + [quo.icons/icon icon]])) +``` + + +- We no longer need to create an anonymous function for rendering. This removes unnecessary confusion and the need for specific knowledge on how it works and why it was needed. +- `rn/use-state` is used instead of `reagent/atom` +- State values no longer need to be dereferenced; they are accessible as regular symbols. This eliminates a common bug where the "@" symbol was inadvertently omitted. +- `theme/with-theme` wrapper is not needed anymore, `(theme/use-theme)` hook can be used directly in the components +- `:f>` not needed anymore, all components are functional by default +- `rn/use-callback` hook should be used for anon callback functions + +> [!IMPORTANT] +> DO NOT USE anon functions directly in the props + +BAD +```clojure +(defn view + [] + (let [[pressed? set-pressed] (rn/use-state false)] + [rn/pressable + {:style (style/main pressed?) + :on-press-in #(set-pressed true) + :on-press-out #(set-pressed nil)}])) +``` + +GOOD: +```clojure +(defn view + [] + (let [[pressed? set-pressed] (rn/use-state false) + on-press-in (rn/use-callback #(set-pressed true)) + on-press-out (rn/use-callback #(set-pressed nil))] + [rn/pressable + {:style (style/main pressed?) + :on-press-in on-press-in + :on-press-out on-press-out}])) +``` + +## Global state and subscriptions + +For global state management, we utilize Re-frame subscriptions. They can be likened to React state. To obtain the state, `(rf/sub [])` is employed, and to modify it, `(rf/dispatch [])` is utilized. However, they update components in a similar manner to React states. + +```clojure +(defn view + [{:keys [selected-tab]}] + (let [collectible-list (rf/sub [:wallet/all-collectibles]) + on-collectible-press (rn/use-callback + (fn [{:keys [id]}] + (rf/dispatch [:wallet/get-collectible-details id])))] + [rn/view {:style style/container} + (case selected-tab + :assets [assets/view] + :collectibles [collectibles/view {:collectibles collectible-list + :on-collectible-press on-collectible-press}]) + [activity/view]])) +``` + +## Regular atoms + +In certain instances, components utilized regular atoms; however, they should now be used with `rn/use-ref-atom` + +BEFORE: +```clojure +(defn view + [] + (let [focused? (atom false)] + (fn [] + (let [on-clear #(reset! status (if @focused? :active :default)) + on-focus #(reset! focused? true) + on-blur #(reset! focused? false)])))) +``` + +NOW: +```clojure +(defn view + [] + (let [focused? (rn/use-ref-atom false) + on-clear (rn/use-callback #(set-status (if @focused? :active :default))) + on-focus (rn/use-callback #(reset! focused? true)) + on-blur (rn/use-callback #(reset! focused? false))])) +``` + +## Effects + +LIFECYCLE: + +```clojure +(defn view + [{:keys []}] + (let [opacity (reanimated/use-shared-value 0)] + (rn/use-mount #(reanimated/animate opacity 1)) + [rn/view + {:style (style/opacity opacity)}])) +``` + +```clojure +(defn view + [{:keys []}] + (let [] + (rn/use-unmount #(rn/dispatch [:unmounted])) + [rn/view])) +``` + +> [!IMPORTANT] +> Effects should NOT be utilized as a response to state changes for modifying logic. If you're unsure how to achieve this without using effects, please consult the team in the general chat. There may be instances where using effects is appropriate, so we can explore a solution together and enhance our guidelines. + +BAD: +```clojure +(defn f-zoom-button + [{:keys [selected? current-zoom]}] + (let [size (reanimated/use-shared-value (if selected? 37 25))] + (rn/use-effect #(reanimated/animate size (if selected? 37 25)) [current-zoom]) + [rn/touchable-opacity + {:style (style/zoom-button-container size)}])) +``` + +BAD: + +```clojure +(defn view + [collectible-list (rf/sub [:wallet/all-collectibles])] + (let [] + (rn/use-effect #(rn/dispatch [:all-collectibles-changed]) [collectible-list]) + [rn/view])) +``` + +Instead `:all-collectibles-changed` should be used in the handler which changes `collectible-list` state + + + +## Performance tips + +To begin with, we need to understand that there are two distinct stages for a component: creation and update. React creates a render tree, a UI tree, composed of the rendered components. + +![react_tree.png](react_tree.png) + +### Component creation + +For component creation, the most critical factor is the number of elements involved, so we should strive to minimize them. For instance, it's advisable to avoid using unnecessary wrappers or containers. + +BAD: + +```clojure +(defn view + [] + (let [] + [rn/view {:style {:padding-top 20}} + [quo/button]])) +``` + +GOOD: +```clojure +(defn view + [] + (let [] + [quo/button {:container-style {:padding-top 20}}])) +``` + +### Component updates + +For component updates, it's crucial to recognize that React will invoke the function where state is utilized. Therefore, if you utilize state in the root component, React will execute the root function and re-render the entire root component along with all its children (unless optimizations like memoization are implemented). + +BAD: + +```clojure +(defn component + [{:keys [label]}] + (let [] + [rn/text label])) + +(defn component2 + [{:keys [label2]}] + (let [] + [rn/text label2])) + +(defn screen + [] + (let [screen-params (rf/sub [:screen-params])] + [component screen-params] + [component1] + [component2 screen-params] + [component3] + [rn/view {:padding-top 20} + [quo/button]])) +``` + +Here, we have lost control over the `screen-params` map. It can contain any data, and if any field within this map changes, the entire screen function will be executed, resulting in the re-rendering of both `component` and `component2`. + +GOOD: +```clojure +(defn component + [] + (let [label (rf/sub [:screen-params-label])] + [rn/text label])) + +(defn component2 + [] + (let [label2 (rf/sub [:screen-params-label2])] + [rn/text label2])) + +(defn screen + [] + (let [] + [component] + [component1] + [component2] + [component3] + [rn/view {:padding-top 20} + [quo/button]])) +``` + +So, now the screen component function will never be invoked, and `component` and `component2` will be re-rendered only when `label` or `label2` have changed. diff --git a/doc/use-status-backend-server.md b/doc/use-status-backend-server.md new file mode 100644 index 00000000000..db297aa9a3c --- /dev/null +++ b/doc/use-status-backend-server.md @@ -0,0 +1,61 @@ +## What is Status Backend Server +Status Backend Server is a http server that runs status-go, it exposed endpoints come from [mobile/status.go](https://github.com/status-im/status-go/blob/master/mobile/status.go) so that you can call them through http requests. It brings the following benefits: +- When verifying changes made in status-go, you only need to run these commands once (unless modifying Kotlin/Objective-C code): + - `make clean && make run-clojure` + - `make run-android` or `make run-ios` + This avoids repeatedly rebuilding and saves development time. +- Debug status-go while running status mobile app + +## Solution to use Status Backend Server for mobile development +`StatusBackendClient` is the entry point to use Status Backend Server. We need always to call `status-im.setup.status-backend-client/init` whether `STATUS_BACKEND_SERVER_ENABLED` is `1` or not. If it's not enabled, the invocation to functions in `native-module.core` will be delegated to built-in status-go library, otherwise it will be delegated to status-go running in status-backend server. Currently, all functions has usages in `native-module.core` should be supported delegated to. +NOTE: not all the native functions used `StatusBackendClient`, only the corresponding functions in `native-module.core` has usages should be supported delegated to ATM. + +related [PR](https://github.com/status-im/status-mobile/pull/21550) + +## Usage +### Add environment variables to your local machine: +```shell +# enable using status backend server or not, otherwise it will use built-in status-go library +export STATUS_BACKEND_SERVER_ENABLED=1 + +#The host should contain an IP address and a port separated by a colon. +#The port comes from your running status backend server. +#If you run it by PORT=60000 make run-status-backend , then host will likely be 127.0.0.1:60000 +export STATUS_BACKEND_SERVER_HOST="127.0.0.1:60000" + +export STATUS_BACKEND_SERVER_ROOT_DATA_DIR="/path/to/your/root/data/dir" +``` +You need to change `STATUS_BACKEND_SERVER_ROOT_DATA_DIR` to your preferred directory and ensure it exists, it should be in absolute path. +All the db files and log files(api.log/geth.log) and keystore files etc will be stored in this directory. + +### Start the status backend server: +```shell +PORT=60000 make run-status-backend +``` +MAKE SURE the status-backend is checked out to a revision that's at least compatible with the revision in status-mobile/status-go-version.json before starting the server. + +For the Android simulator, you need to reverse the port: +```shell +adb reverse tcp:60000 tcp:60000 +``` +However, there is restriction when use adb reverse, we use random port for media server. So I'd suggest use "10.0.2.2:60000" as `STATUS_BACKEND_SERVER_HOST`. + +### Debug status-go using IDEA +Assume you've already set up the development environment for status-go, open status-go project use IDEA, run `make generate` with terminal in the status-go project root directory to ensure all the generated files are up to date, then open `cmd/status-backend/main.go` file, navigate to function `main()`, click the green play button on the left of `main()`, choose `Modify Run Configuration`, in `Program arguments` section, add `--address=localhost:60000 --media-https=false`, then click `OK`, finally click the green play button on the left of `main()` again and choose `Debug ...`. +Basically, you don't have to run `make generate` again and again, just run it once at the beginning. So you can re-run and debug it faster! + +## Known Android simulator issues +- Issue#1: Android simulator may not display images due to TLS certificate validation issues with the image server + - solution: use http instead of https for media server with set env: `export STATUS_BACKEND_SERVER_MEDIA_SERVER_ENABLE_TLS=0`, you also need to set env variable `STATUS_BACKEND_SERVER_IMAGE_SERVER_URI_PREFIX` to "http://10.0.2.2:" so that `image_server.cljs` can work, and to make `/accountInitials` work, you need to copy `Inter-Medium.ttf` to your host machine from the android simulator, let's say you store it in `/Users/mac/Downloads/Inter-Medium.ttf`, then you need to update `get-font-file-ready` manually in `image_server.cljs` to return the correct path so that status backend server can access it. +- Issue#2: exportUnencryptedDatabaseV2/import-multiaccount does not work for android, probably cause of tech debt, I found it during creating the draft PR. +- Issue#3: unable to invoke `multiaccounts_storeIdentityImage` to change avatar image. + - The reason is that we path the absolute path of the image to the backend server, but the image file is stored in the android simulator. the backend server cannot access it as it runs in the host machine. + +If you're using ios simulator, you can skip above issues! + +## Details for issue#1 if you're interested +- we use `react-native-fast-image` which use okhttpclient behind +- we were using custom cert for https +- we fetch the custom cert through endpoint `ImageServerTLSCert` +- we fetched it through built-in status-go before, now we need to fetch it through status backend server +- we expect `OkHttpClientProvider.setOkHttpClientFactory(StatusOkHttpClientFactory())` to be invoked early(will trigger fetching wrong custom cert via built-in status-go since StatusBackendClient is not initialised yet!) in `MainApplication.kt` before executing clojure code, otherwise we will get black screen after `make run-android` . After deep research, I found there's no way to update the cert okhttpclient used to the correct one return from status backend server diff --git a/env/dev/env/android/main.cljs b/env/dev/env/android/main.cljs deleted file mode 100644 index ebf4294df3c..00000000000 --- a/env/dev/env/android/main.cljs +++ /dev/null @@ -1,24 +0,0 @@ -(ns ^:figwheel-no-load env.android.main - (:require [reagent.core :as r] - [re-frisk-remote.core :as rr] - [status-im.android.core :as core] - [figwheel.client :as figwheel :include-macros true])) - -(enable-console-print!) - -(def cnt (r/atom 0)) -(defn reloader [] @cnt [core/app-root]) -(def root-el (r/as-element [reloader])) -(defn callback [] - (swap! cnt inc) - (status-im.components.status/init-jail) - (re-frame.core/dispatch [:load-commands!])) - -(figwheel/watch-and-reload - :websocket-url "ws://10.0.3.2:3449/figwheel-ws" - :heads-up-display false - :jsload-callback callback) - -(rr/enable-re-frisk-remote! {:host "10.0.3.2:4567" :pre-send (fn [db] (update db :chats #(into {} %)))}) - -(core/init) diff --git a/env/dev/env/ios/main.cljs b/env/dev/env/ios/main.cljs deleted file mode 100644 index 5e13f712d9a..00000000000 --- a/env/dev/env/ios/main.cljs +++ /dev/null @@ -1,21 +0,0 @@ - (ns ^:figwheel-no-load env.ios.main - (:require [reagent.core :as r] - [re-frisk-remote.core :as rr] - [status-im.ios.core :as core] - [figwheel.client :as figwheel :include-macros true] - [cljs.pprint])) - -(enable-console-print!) - -(def cnt (r/atom 0)) -(defn reloader [] @cnt [core/app-root]) -(def root-el (r/as-element [reloader])) - -(figwheel/watch-and-reload - :websocket-url "ws://localhost:3449/figwheel-ws" - :heads-up-display false - :jsload-callback #(swap! cnt inc)) - -(rr/enable-re-frisk-remote! {:host "localhost:4567" :pre-send (fn [db] (update db :chats #(into {} %)))}) - -(core/init) \ No newline at end of file diff --git a/env/dev/user.clj b/env/dev/user.clj deleted file mode 100644 index c52065d4cca..00000000000 --- a/env/dev/user.clj +++ /dev/null @@ -1,77 +0,0 @@ -(ns user - (:use [figwheel-sidecar.repl-api :as ra]) - (:require [hawk.core :as hawk] - [re-frisk-sidecar.core :as rfs] - [clojure.string :as s])) -;; This namespace is loaded automatically by nREPL - -;; read project.clj to get build configs -(def profiles (->> "project.clj" - slurp - read-string - (drop-while #(not= % :profiles)) - (apply hash-map) - :profiles)) - -(defn get-test-build [build] - (update build :source-paths - (fn [paths] (let [paths-set (set paths)] - (-> paths-set - (disj "env/dev") - (conj "env/test" "test/cljs") - vec))))) - -(def cljs-builds - (get-in profiles [:dev :cljsbuild :builds])) - -(def buids-by-id - (into {} (map (fn [{:keys [id] :as build}] [id build]) cljs-builds))) - -(defn start-figwheel - "Start figwheel for one or more builds" - [build-ids cljs-builds] - (ra/start-figwheel! - {:figwheel-options {:nrepl-port 7888} - :build-ids build-ids - :all-builds cljs-builds})) - -(def start-cljs-repl ra/cljs-repl) - -(defn stop-figwheel - "Stops figwheel" - [] - (ra/stop-figwheel!)) - -(hawk/watch! [{:paths ["resources" "bots"] - :handler (fn [ctx e] - (let [path "src/status_im/utils/js_resources.cljs" - js-resourced (slurp path)] - (spit path (str js-resourced " ;;")) - (spit path js-resourced)) - ctx)}]) - -(defn test-id? [id] - (s/includes? (name id) "-test")) - -(defn get-id [id] - (-> id - name - (s/replace #"-test" "") - keyword)) - -(defn get-builds [ids all-builds] - (keep - (fn [id] - (let [build (get all-builds (get-id id))] - (if (test-id? id) - (get-test-build build) - build))) - ids)) - -(let [env-build-ids (System/getenv "BUILD_IDS") - build-ids (if env-build-ids - (map keyword (s/split env-build-ids #",")) - [:android]) - builds (get-builds build-ids buids-by-id)] - (start-figwheel build-ids builds) - (rfs/-main)) diff --git a/env/prod/env/android/main.cljs b/env/prod/env/android/main.cljs deleted file mode 100644 index b1e717e0781..00000000000 --- a/env/prod/env/android/main.cljs +++ /dev/null @@ -1,6 +0,0 @@ - (ns env.android.main - (:require [status-im.android.core :as core])) - - (core/init) - - diff --git a/env/prod/env/ios/main.cljs b/env/prod/env/ios/main.cljs deleted file mode 100644 index 67664f36de6..00000000000 --- a/env/prod/env/ios/main.cljs +++ /dev/null @@ -1,6 +0,0 @@ - (ns env.ios.main - (:require [status-im.ios.core :as core])) - - (core/init) - - diff --git a/env/test/env/android/main.cljs b/env/test/env/android/main.cljs deleted file mode 100644 index beea0fb9f5d..00000000000 --- a/env/test/env/android/main.cljs +++ /dev/null @@ -1,25 +0,0 @@ -(ns ^:figwheel-no-load env.android.main - (:require [reagent.core :as r] - [status-im.android.core :as core] - [figwheel.client :as figwheel :include-macros true] - [status-im.test.handlers-stubs :refer [init-stubs]])) - -(set! js/console.disableYellowBox true) - -(enable-console-print!) - -(def cnt (r/atom 0)) -(defn reloader [] @cnt [core/app-root]) -(def root-el (r/as-element [reloader])) -(defn callback [] - (swap! cnt inc) - (status-im.components.status/init-jail) - (re-frame.core/dispatch [:load-commands!])) - -(figwheel/watch-and-reload - :websocket-url "ws://10.0.3.2:3449/figwheel-ws" - :heads-up-display false - :jsload-callback callback) - -(core/init) -(init-stubs) diff --git a/externs/externs.js b/externs/externs.js deleted file mode 100644 index 909fa417f49..00000000000 --- a/externs/externs.js +++ /dev/null @@ -1,222 +0,0 @@ -var TopLevel = { -"ActionSheetIOS" : function () {}, -"addEntropy" : function () {}, -"addEventListener" : function () {}, -"addListener" : function () {}, -"addOrientationListener" : function () {}, -"addSymKey" : function () {}, -"Alert" : function () {}, -"alert" : function () {}, -"Animated" : function () {}, -"Array" : function () {}, -"awesome-phonenumber" : function () {}, -"blur" : function () {}, -"call" : function () {}, -"callJail" : function () {}, -"capture" : function () {}, -"catch" : function () {}, -"Chance" : function () {}, -"clear" : function () {}, -"clearCookies" : function () {}, -"clearInterval" : function () {}, -"clearStorageAPIs" : function () {}, -"clearTimeout" : function () {}, -"Clipboard" : function () {}, -"cloneWithRows" : function () {}, -"close" : function () {}, -"closeDrawer" : function () {}, -"codec" : function () {}, -"completeTransaction" : function () {}, -"console" : function () {}, -"contentOffset" : function () {}, -"contentSize" : function () {}, -"create" : function () {}, -"createAccount" : function () {}, -"data" : function () {}, -"DataSource" : function () {}, -"Date" : function () {}, -"DEBUG" : function () {}, -"decay" : function () {}, -"decrypt" : function () {}, -"default" : function () {}, -"defaultPath" : function () {}, -"defaultSeparator" : function () {}, -"delay" : function () {}, -"delete" : function () {}, -"deleteAll" : function () {}, -"DeviceEventEmitter" : function () {}, -"digest" : function () {}, -"Dimensions" : function () {}, -"discardTransaction" : function () {}, -"dy" : function () {}, -"encrypt" : function () {}, -"ENC_DEC" : function () {}, -"end" : function () {}, -"endCoordinates" : function () {}, -"Error" : function () {}, -"eth" : function () {}, -"event" : function () {}, -"fallbacks" : function () {}, -"fetch" : function () {}, -"filter" : function () {}, -"filtered" : function () {}, -"find" : function () {}, -"finished" : function () {}, -"focus" : function () {}, -"forceUpdate" : function () {}, -"fromUtf8" : function () {}, -"fromWei" : function () {}, -"generate" : function () {}, -"get" : function () {}, -"getAll" : function () {}, -"getBlock" : function () {}, -"getCardId" : function () {}, -"getExample" : function () {}, -"getInitialOrientation" : function () {}, -"getIPAddress" : function () {}, -"getLayout" : function () {}, -"getNumber" : function () {}, -"getSyncing" : function () {}, -"getTime" : function () {}, -"getTimezoneOffset" : function () {}, -"goog" : function () {}, -"guid" : function () {}, -"hash" : function () {}, -"hasSymKey" : function () {}, -"headers" : function () {}, -"height" : function () {}, -"hex" : function () {}, -"hide" : function () {}, -"HttpProvider" : function () {}, -"IBGLog" : function () {}, -"initialPage" : function () {}, -"initJail" : function () {}, -"isAddress" : function () {}, -"isConnected" : function () {}, -"isMatches" : function () {}, -"isMobile" : function () {}, -"isNaN" : function () {}, -"isValid" : function () {}, -"Item" : function () {}, -"JSON" : function () {}, -"jsonEvent" : function () {}, -"Keyboard" : function () {}, -"layout" : function () {}, -"length" : function () {}, -"Linking" : function () {}, -"ListView" : function () {}, -"locale" : function () {}, -"lockToPortrait" : function () {}, -"log" : function () {}, -"login" : function () {}, -"map" : function () {}, -"Math" : function () {}, -"message" : function () {}, -"moveFile" : function () {}, -"moveY" : function () {}, -"nativeEvent" : function () {}, -"NativeModules" : function () {}, -"Number" : function () {}, -"objects" : function () {}, -"ok" : function () {}, -"open" : function () {}, -"openDrawer" : function () {}, -"openPicker" : function () {}, -"openURL" : function () {}, -"OS" : function () {}, -"p" : function () {}, -"panHandlers" : function () {}, -"PanResponder" : function () {}, -"parallel" : function () {}, -"parse" : function () {}, -"parseInt" : function () {}, -"parseJail" : function () {}, -"path" : function () {}, -"Platform" : function () {}, -"post" : function () {}, -"props" : function () {}, -"prototype" : function () {}, -"providers" : function () {}, -"push" : function () {}, -"random" : function () {}, -"randomBytes" : function () {}, -"ReactNative" : function () {}, -"readFile" : function () {}, -"readTag" : function () {}, -"realm-class" : function () {}, -"recoverAccount" : function () {}, -"registerComponent" : function () {}, -"reload" : function () {}, -"remove" : function () {}, -"removeAllListeners" : function () {}, -"require" : function () {}, -"reset" : function () {}, -"reverse" : function () {}, -"round" : function () {}, -"schema" : function () {}, -"schemaVersion" : function () {}, -"scrollBy" : function () {}, -"scrollTo" : function () {}, -"scrollView" : function () {}, -"selection" : function () {}, -"sendToBridge" : function () {}, -"sequence" : function () {}, -"set" : function () {}, -"setInterval" : function () {}, -"setSoftInputMode" : function () {}, -"setState" : function () {}, -"setString" : function () {}, -"setTimeout" : function () {}, -"setValue" : function () {}, -"Sha256" : function () {}, -"sha3" : function () {}, -"shh" : function () {}, -"show" : function () {}, -"showActionSheetWithOptions" : function () {}, -"sjcl" : function () {}, -"slice" : function () {}, -"sorted" : function () {}, -"SplashScreen" : function () {}, -"spring" : function () {}, -"start" : function () {}, -"startNode" : function () {}, -"startNodeRPCServer" : function () {}, -"startsWith" : function () {}, -"Status" : function () {}, -"status" : function () {}, -"stop" : function () {}, -"stopAnimation" : function () {}, -"stopNodeRPCServer" : function () {}, -"stopWatching" : function () {}, -"stringify" : function () {}, -"t" : function () {}, -"Text" : function () {}, -"text" : function () {}, -"then" : function () {}, -"timing" : function () {}, -"toAscii" : function () {}, -"toBits" : function () {}, -"toDecimal" : function () {}, -"toHex" : function () {}, -"toLocaleString" : function () {}, -"toLowerCase" : function () {}, -"toNumber" : function () {}, -"toString" : function () {}, -"toUtf8" : function () {}, -"translations" : function () {}, -"update" : function () {}, -"Value" : function () {}, -"value" : function () {}, -"ValueXY" : function () {}, -"View" : function () {}, -"vy" : function () {}, -"Web3" : function () {}, -"web3" : function () {}, -"width" : function () {}, -"window" : function () {}, -"write" : function () {}, -"writeTag" : function () {}, -"x" : function () {}, -"y" : function () {}, -"_value" : function () {} -} \ No newline at end of file diff --git a/fastlane/.env b/fastlane/.env new file mode 100644 index 00000000000..055dffbdba2 --- /dev/null +++ b/fastlane/.env @@ -0,0 +1 @@ +RCT_NO_LAUNCH_PACKAGER=true diff --git a/fastlane/Appfile b/fastlane/Appfile new file mode 100644 index 00000000000..f01e56d20d5 --- /dev/null +++ b/fastlane/Appfile @@ -0,0 +1,19 @@ +# iOS + +app_identifier('im.status.ethereum') # The bundle identifier of your app +apple_id(ENV['FASTLANE_APPLE_ID']) # Your Apple email address +itc_team_id('118430139') # iTunes Connect Team ID + +for_platform :ios do + for_lane :pr do + app_identifier('im.status.ethereum.pr') + end +end + +# Android + +# json_key_file('') # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one +package_name('im.status.ethereum') # e.g. com.krausefx.app + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/fastlane/Fastfile b/fastlane/Fastfile new file mode 100644 index 00000000000..a9b039fd824 --- /dev/null +++ b/fastlane/Fastfile @@ -0,0 +1,322 @@ +# This file contains the fastlane.tools configuration + +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# Fastlane is updated quite frequently with security patches +# update_fastlane + +# There are a few env variables defined in the .env file in +# this directory (fastlane/.env) + +def curl_upload(url, file, auth, conn_timeout = 5, timeout = 60, retries = 3) + rval = sh( + 'curl', + '--silent', + '--user', auth, + '--write-out', "\nHTTP_CODE:%{http_code}", + '--request', 'POST', + '--header', 'Content-Type: application/octet-stream', + # we retry few times if upload doesn't succeed in sensible time + '--retry-connrefused', # consider ECONNREFUSED as error too retry + '--data-binary', "@../#{file}", # `fastlane` is the cwd so we go one folder up + '--connect-timeout', conn_timeout.to_s, # max time in sec. for establishing connection + '--max-time', timeout.to_s, # max time in sec. for whole transfer to take + '--retry', retries.to_s, # number of retries to attempt + '--retry-max-time', timeout.to_s, # same as --max-time but for retries + '--retry-delay', '0', # an exponential backoff algorithm in sec. + url + ) + # We're not using --fail because it suppresses server response + raise "Error:\n#{rval}" unless rval.include? 'HTTP_CODE:200' + + rval +end + +def retry_curl_upload(url, file, auth, conn_timeout = 5, timeout = 60, retries = 3) + # since curl doesn't retry on connection and operation timeouts we roll our own + (1..retries).each do |try| + begin + return curl_upload(url, file, auth, conn_timeout, timeout, retries) + rescue StandardError => e + if try == retries + UI.error "Error:\n#{e}" + raise + end + UI.important "Warning: Retrying cURL upload! (attempt #{try}/#{retries})" + end + end +end + +# Creates and unlocks a keychain into which Fastlane match imports signing keys and certs. +class Keychain + attr_accessor :name, :pass + + def initialize(name) + # Local devs will not have KEYCHAIN_PASSWORD set, and will be prompted for password. + return "login.keychain-db" unless ENV['KEYCHAIN_PASSWORD'] + # We user the same keychain every time because we need to set a default. + @name = "#{name}.keychain-db" + @pass = ENV['KEYCHAIN_PASSWORD'] + Fastlane::Actions::CreateKeychainAction.run( + name: @name, + password: @pass, + unlock: true, + # Fastlane can't find the signing cert without setting a default. + default_keychain: true, + # Deleting the keychain would cause race condition for parallel jobs. + require_create: false, + # Lock it up after 25 minutes just in case we don't delete it. + lock_when_sleeps: true, + lock_after_timeout: true, + timeout: 1500 + ) + end +end + +# App Store Connect API is an official public API used to manage Apps. +# This includes metadata, pricing and availability, provisioning, and more. +# It provides a JSON API and auth using API Keys to generate a JSON Web Token (JWT). +def asc_api_key() + app_store_connect_api_key( + key_id: ENV['FASTLANE_ASC_API_KEY_ID'], + issuer_id: ENV['FASTLANE_ASC_API_ISSUER_ID'], + key_filepath: ENV['FASTLANE_ASC_API_KEY_FILE_PATH'], + duration: 1200, # seconds, session length + in_house: false, + ) +end + +# builds an ios app with ad-hoc configuration and put it +# to "status-ios" output folder +# `readonly`: +# if true - only fetch existing certificates and profiles, don't upgrade from AppStoreConnect +# if false - read list of devices from AppStoreConnect, and upgrade the provisioning profiles from it +# `pr_build`: +# if true - uses StatusImPR scheme and postfixed app id with `.pr` to build an app, which can be used in parallel with release +# if false - uses StatusIm scheme to build the release app + +def build_ios_adhoc(readonly: false, pr_build: false) + # PR builds should appear as a separate App on iOS + scheme = pr_build ? 'StatusImPR' : 'StatusIm' + app_id = pr_build ? 'im.status.ethereum.pr' : 'im.status.ethereum' + + kc = Keychain.new('fastlane') + + match( + type: 'adhoc', + readonly: readonly, + api_key: asc_api_key(), + app_identifier: app_id, + force_for_new_devices: true, + keychain_name: kc.name, + keychain_password: kc.pass + ) + + build_ios_app( + scheme: scheme, + workspace: 'ios/StatusIm.xcworkspace', + configuration: 'Release', + clean: true, + export_method: 'ad-hoc', + output_name: 'StatusIm', + output_directory: 'status-ios', + buildlog_path: 'logs', + export_options: { + signingStyle: 'manual', + provisioningProfiles: { + "im.status.ethereum": "match AdHoc im.status.ethereum", + "im.status.ethereum.pr": "match AdHoc im.status.ethereum.pr" + } + } + ) +end + +# builds an ios app with e2e configuration and put it +# to "status-ios" output folder +def build_ios_e2e + # determine a simulator SDK installed + showsdks_output = sh('xcodebuild', '-showsdks') + simulator_sdk = showsdks_output.scan(/iphonesimulator\d\d?\.\d\d?/).first + + kc = Keychain.new('fastlane') + + match( + type: 'adhoc', + readonly: true, + api_key: asc_api_key(), + force_for_new_devices: true, + keychain_name: kc.name, + keychain_password: kc.pass + ) + + build_ios_app( + # Creating a build for the iOS Simulator + # 1. https://medium.com/rocket-fuel/fastlane-to-the-simulator-87549b2601b9 + sdk: simulator_sdk, + destination: 'generic/platform=iOS Simulator', + # 2. fixing compilations issues as stated in https://stackoverflow.com/a/20505258 + # it looks like i386 isn't supported by React Native + xcargs: 'ARCHS="x86_64" ONLY_ACTIVE_ARCH=NO', + # 3. directory where to up StatusIm.app + derived_data_path: 'status-ios', + output_name: 'StatusIm.app', + buildlog_path: 'logs', + # ------------------------------------- + # Normal stuff + scheme: 'StatusIm', + workspace: 'ios/StatusIm.xcworkspace', + configuration: 'Release', + # Simulator apps can't be archived... + skip_archive: true, + # ...and we don't need an .ipa file for them, because we use .app directly + skip_package_ipa: true + ) + + zip( + path: 'status-ios/Build/Products/Release-iphonesimulator/StatusIm.app', + output_path: 'status-ios/StatusIm.app.zip', + verbose: false + ) +end + +platform :ios do + desc '`fastlane ios adhoc` - ad-hoc lane for iOS.' + desc 'This lane is used for PRs, Releases, etc.' + desc 'It creates an .ipa that can be used by a list of devices, registeded in the App Store Connect.' + desc 'This .ipa is ready to be distibuted through diawi.com' + lane :adhoc do + build_ios_adhoc(readonly: true) + end + + desc '`fastlane ios e2e` - e2e lane for iOS.' + desc 'This lane is used for SauceLabs end-to-end testing.' + desc 'It creates an .app that can be used inside of a iPhone simulator.' + lane :e2e do + build_ios_e2e + end + + desc '`fastlane ios pr` - makes a new pr build' + desc 'This lane builds a new adhoc build and leaves an .ipa that is ad-hoc signed (can be uploaded to diawi)' + lane :pr do + build_ios_adhoc(pr_build: true) + end + + desc '`fastlane ios nightly` - makes a new nightly' + desc 'This lane builds a new nightly and leaves an .ipa that is ad-hoc signed (can be uploaded to diawi)' + lane :nightly do + build_ios_adhoc() + end + + desc '`fastlane ios release` builds a release & uploads it to TestFlight' + lane :release do + kc = Keychain.new('fastlane') + + # recreate keychain + sh("security delete-keychain #{kc.name}", error_callback: ->(result) { }) + sh("security create-keychain -p #{kc.pass} #{kc.name}") + sh("security set-keychain-settings -t 3600 -l #{kc.name}") + sh("security unlock-keychain -p #{kc.pass} #{kc.name}") + sh("security list-keychains -d user -s login.keychain #{kc.name}") + + match( + type: 'appstore', + readonly: true, + api_key: asc_api_key(), + app_identifier: 'im.status.ethereum', + keychain_name: kc.name, + keychain_password: kc.pass + ) + + # Fix certificate access permissions + sh("security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k #{kc.pass} #{kc.name}") + + # Debug + sh("security find-identity -v -p codesigning #{kc.name}") + + build_ios_app( + scheme: 'StatusIm', + workspace: 'ios/StatusIm.xcworkspace', + configuration: 'Release', + clean: true, + export_method: 'app-store', + output_directory: 'status-ios', + buildlog_path: 'logs', + include_symbols: false, + export_options: { + "combileBitcode": true, + "uploadBitcode": false, + "ITSAppUsesNonExemptEncryption": false + } + ) + + upload_to_testflight( + ipa: 'status-ios/StatusIm.ipa', + skip_waiting_for_build_processing: true + ) + end + + desc '`fastlane ios saucelabs` - upload .app to sauce labs' + desc 'also notifies in a GitHub comments' + desc 'expects to have an .apk prepared: `result/app.apk`' + desc 'expects to have a saucelabs access key as SAUCE_ACCESS_KEY env variable' + desc 'expects to have a saucelabs username token as SAUCE_USERNAME env variable' + desc 'expects to have a saucelabs destination name as SAUCE_LABS_NAME env variable' + desc "will fails if file isn't there" + lane :saucelabs do + upload_to_saucelabs( + 'status-ios/StatusIm.app.zip' + ) + end + + desc 'This fastlane step cleans up XCode DerivedData folder' + lane :cleanup do + clear_derived_data + end +end + +platform :android do + # Optional env variables + APK_PATHS = ENV["APK_PATHS"]&.split(";") or ["result/app.apk"] + + desc 'Deploy a new internal build to Google Play' + desc 'expects GOOGLE_PLAY_JSON_KEY environment variable' + lane :nightly do + upload_to_play_store( + track: 'internal', + apk_paths: APK_PATHS, + json_key_data: ENV['GOOGLE_PLAY_JSON_KEY'] + ) + end + + desc 'Deploy a new alpha (public) build to Google Play' + desc 'expects GOOGLE_PLAY_JSON_KEY environment variable' + lane :release do + upload_to_play_store( + track: 'alpha', + apk_paths: APK_PATHS, + json_key_data: ENV['GOOGLE_PLAY_JSON_KEY'] + ) + end + + desc 'Upload metadata to Google Play.' + desc 'Metadata is always updated when builds are uploaded,' + desc 'but this action can update metadata without uploading a build.' + desc 'expects GOOGLE_PLAY_JSON_KEY environment variable' + lane :upload_metadata do + upload_to_play_store( + skip_upload_apk: true, + skip_upload_changelogs: true, + json_key_data: ENV['GOOGLE_PLAY_JSON_KEY'], + # These don't matter much as we're not uploading any new builds + # and indeed, we're skipping changelogs. This is just so that + # the library can find what it thinks it needs and continue with + # the work we actually want it to do. + track: 'production', + version_code: '2020042307' + ) + end +end diff --git a/fastlane/Gemfile b/fastlane/Gemfile new file mode 100644 index 00000000000..a0be0a1ee5f --- /dev/null +++ b/fastlane/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' +gem 'fastlane', '>= 2.131.0' diff --git a/fastlane/Gemfile.lock b/fastlane/Gemfile.lock new file mode 100644 index 00000000000..4e4e1e8e3f3 --- /dev/null +++ b/fastlane/Gemfile.lock @@ -0,0 +1,228 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.6) + rexml + activesupport (7.0.8) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.3.0) + aws-partitions (1.872.0) + aws-sdk-core (3.190.1) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.8) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.75.0) + aws-sdk-core (~> 3, >= 3.188.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.141.0) + aws-sdk-core (~> 3, >= 3.189.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + concurrent-ruby (1.2.2) + declarative (0.0.20) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.6.20231109) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.108.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.0) + faraday (~> 1.0) + fastimage (2.2.7) + fastlane (2.217.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.3) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + http-cookie (~> 1.0.5) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (~> 0.1.1) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (~> 3) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.54.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.2) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-iamcredentials_v1 (0.17.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-playcustomapp_v1 (0.13.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-storage_v1 (0.29.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.6.1) + google-cloud-env (>= 1.0, < 3.a) + google-cloud-errors (~> 1.0) + google-cloud-env (2.1.0) + faraday (>= 1.0, < 3.a) + google-cloud-errors (1.3.1) + google-cloud-storage (1.45.0) + addressable (~> 2.8) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.29.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.9.1) + faraday (>= 1.0, < 3.a) + google-cloud-env (~> 2.1) + jwt (>= 1.4, < 3.0) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.5) + domain_name (~> 0.5) + httpclient (2.8.3) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + jmespath (1.6.2) + json (2.7.1) + jwt (2.7.1) + mini_magick (4.12.0) + mini_mime (1.1.5) + minitest (5.20.0) + multi_json (1.15.0) + multipart-post (2.3.0) + nanaimo (0.3.0) + naturally (2.2.1) + optparse (0.1.1) + os (1.1.4) + plist (3.7.0) + public_suffix (5.0.4) + rake (13.1.0) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.6) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.3) + signet (0.18.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.10) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.2) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uber (0.1.0) + unicode-display_width (2.5.0) + webrick (1.8.1) + word_wrap (1.0.0) + xcodeproj (1.23.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + arm64-darwin-22 + arm64-darwin-23 + x86_64-darwin-22 + +DEPENDENCIES + activesupport (>= 6.1.7.3, < 7.1.0) + fastlane (>= 2.131.0) + +BUNDLED WITH + 2.4.13 diff --git a/fastlane/Matchfile b/fastlane/Matchfile new file mode 100644 index 00000000000..0d17f94ad31 --- /dev/null +++ b/fastlane/Matchfile @@ -0,0 +1,9 @@ +git_url('git@github.com:status-im/ios-certificates.git') + +type('development') # The default type, can be: appstore, adhoc, enterprise or development + +app_identifier(['im.status.ethereum', 'im.status.ethereum.pr']) +username(ENV['FASTLANE_APPLE_ID']) # Your Apple Developer Portal username + +# For all available options run `fastlane match --help` +# Remove the # in the beginning of the line to enable the other options diff --git a/fastlane/default.nix b/fastlane/default.nix new file mode 100644 index 00000000000..745831b388a --- /dev/null +++ b/fastlane/default.nix @@ -0,0 +1,40 @@ +{ stdenv, lib, bundlerEnv, ruby, makeWrapper }: + +let + fastlane = stdenv.mkDerivation rec { + name = "${pname}-${version}"; + pname = "fastlane"; + version = (import ./gemset.nix).fastlane.version; + + nativeBuildInputs = [ makeWrapper ]; + + env = bundlerEnv { + name = "${name}-gems"; + inherit pname ruby; + gemdir = ./.; + }; + + phases = [ "installPhase" ]; + + installPhase = '' + mkdir -p $out/bin + makeWrapper ${env}/bin/fastlane $out/bin/fastlane \ + --set FASTLANE_SKIP_UPDATE_CHECK 1 + ''; + + shellHook = '' + [ -z "$STATUS_MOBILE_HOME" ] && echo "STATUS_MOBILE_HOME is empty!" && exit 1 + ''; + + meta = with lib; { + description = "A tool to automate building and releasing iOS and Android apps"; + longDescription = "fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application."; + homepage = https://github.com/fastlane/fastlane; + license = licenses.mit; + maintainers = with maintainers; [ + peterromfeldhk + ]; + }; + }; + +in fastlane diff --git a/fastlane/gemset.nix b/fastlane/gemset.nix new file mode 100644 index 00000000000..4f96bbf178c --- /dev/null +++ b/fastlane/gemset.nix @@ -0,0 +1,946 @@ +{ + activesupport = { + dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "188kbwkn1lbhz40ala8ykp20jzqphgc68g3d8flin8cqa2xid0s5"; + type = "gem"; + }; + version = "7.0.8"; + }; + addressable = { + dependencies = ["public_suffix"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0irbdwkkjwzajq1ip6ba46q49sxnrl2cw7ddkdhsfhb6aprnm3vr"; + type = "gem"; + }; + version = "2.8.6"; + }; + artifactory = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wify8rhjwr5bw5y6ary61vba290vk766cxw9a9mg05yswmaisls"; + type = "gem"; + }; + version = "3.0.15"; + }; + atomos = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17vq6sjyswr5jfzwdccw748kgph6bdw30bakwnn6p8sl4hpv4hvx"; + type = "gem"; + }; + version = "0.1.3"; + }; + aws-eventstream = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gvdg4yx4p9av2glmp7vsxhs0n8fj1ga9kq2xdb8f95j7b04qhzi"; + type = "gem"; + }; + version = "1.3.0"; + }; + aws-partitions = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ddbcz8p3abbw8d8pn796z1ry1mbapl6ayhh37ziwal6bd047kvm"; + type = "gem"; + }; + version = "1.872.0"; + }; + aws-sdk-core = { + dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ansagfl5irx1y6b9xf4xpi9j6q6k5pbd2aw80hn0p4m3ycafamh"; + type = "gem"; + }; + version = "3.190.1"; + }; + aws-sdk-kms = { + dependencies = ["aws-sdk-core" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qzxqfgrhnl5rdc39a1gl2pgrdxgnsj12zycpxnsx8lg6arfmnr1"; + type = "gem"; + }; + version = "1.75.0"; + }; + aws-sdk-s3 = { + dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bnhpmi0iiaj88rqc5lhhnp2gyrk4fs8xz51lj36wwzng94qinya"; + type = "gem"; + }; + version = "1.141.0"; + }; + aws-sigv4 = { + dependencies = ["aws-eventstream"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g3w27wzjy4si6kp49w10as6ml6g6zl3xrfqs5ikpfciidv9kpc4"; + type = "gem"; + }; + version = "1.8.0"; + }; + babosa = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "16dwqn33kmxkqkv51cwiikdkbrdjfsymlnc0rgbjwilmym8a9phq"; + type = "gem"; + }; + version = "1.0.4"; + }; + CFPropertyList = { + dependencies = ["rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1a36zn77yyibqsfpka0i8vgf3yv98ic2b9wwlbc29566y8wpa2bq"; + type = "gem"; + }; + version = "3.0.6"; + }; + claide = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bpqhc0kqjp1bh9b7ffc395l9gfls0337rrhmab4v46ykl45qg3d"; + type = "gem"; + }; + version = "1.1.0"; + }; + colored = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0b0x5jmsyi0z69bm6sij1k89z7h0laag3cb4mdn7zkl9qmxb90lx"; + type = "gem"; + }; + version = "1.2"; + }; + colored2 = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i"; + type = "gem"; + }; + version = "3.1.2"; + }; + commander = { + dependencies = ["highline"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n8k547hqq9hvbyqbx2qi08g0bky20bbjca1df8cqq5frhzxq7bx"; + type = "gem"; + }; + version = "4.6.0"; + }; + concurrent-ruby = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q"; + type = "gem"; + }; + version = "1.2.2"; + }; + declarative = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yczgnqrbls7shrg63y88g7wand2yp9h6sf56c9bdcksn5nds8c0"; + type = "gem"; + }; + version = "0.0.20"; + }; + digest-crc = { + dependencies = ["rake"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09114ndpnnyamc2q07bmpzw7kp3rbbfv7plmxcbzzi9d6prmd92w"; + type = "gem"; + }; + version = "0.6.5"; + }; + domain_name = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1gpciaifmxql8h01ci12qq08dnqrdlzkkz6fmia9v9yc3r9a29si"; + type = "gem"; + }; + version = "0.6.20231109"; + }; + dotenv = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1n0pi8x8ql5h1mijvm8lgn6bhq4xjb5a500p5r1krq4s6j9lg565"; + type = "gem"; + }; + version = "2.8.1"; + }; + emoji_regex = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0jsnrkfy345v66jlm2xrz8znivfnamg3mfzkddn414bndf2vxn7c"; + type = "gem"; + }; + version = "3.2.3"; + }; + excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q9yz7x36mpzpz04bg6hdyrzzk4bri9jg3h2ygw26bf6v3axq53q"; + type = "gem"; + }; + version = "0.108.0"; + }; + faraday = { + dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1c760q0ks4vj4wmaa7nh1dgvgqiwaw0mjr7v8cymy7i3ffgjxx90"; + type = "gem"; + }; + version = "1.10.3"; + }; + faraday-cookie_jar = { + dependencies = ["faraday" "http-cookie"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00hligx26w9wdnpgsrf0qdnqld4rdccy8ym6027h5m735mpvxjzk"; + type = "gem"; + }; + version = "0.0.7"; + }; + faraday-em_http = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12cnqpbak4vhikrh2cdn94assh3yxza8rq2p9w2j34bqg5q4qgbs"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-em_synchrony = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-excon = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh"; + type = "gem"; + }; + version = "1.1.0"; + }; + faraday-httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fyk0jd3ks7fdn8nv3spnwjpzx2lmxmg2gh4inz3by1zjzqg33sc"; + type = "gem"; + }; + version = "1.0.1"; + }; + faraday-multipart = { + dependencies = ["multipart-post"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "09871c4hd7s5ws1wl4gs7js1k2wlby6v947m2bbzg43pnld044lh"; + type = "gem"; + }; + version = "1.0.4"; + }; + faraday-net_http = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j"; + type = "gem"; + }; + version = "1.0.1"; + }; + faraday-net_http_persistent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b"; + type = "gem"; + }; + version = "1.2.0"; + }; + faraday-patron = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-rack = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g"; + type = "gem"; + }; + version = "1.0.0"; + }; + faraday-retry = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd"; + type = "gem"; + }; + version = "1.0.3"; + }; + faraday_middleware = { + dependencies = ["faraday"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy"; + type = "gem"; + }; + version = "1.2.0"; + }; + fastimage = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1pd7pamzhdz2w0fbcvsfn2nyslznvphnwj16zw35g2b28zd2xyzx"; + type = "gem"; + }; + version = "2.2.7"; + }; + fastlane = { + dependencies = ["CFPropertyList" "addressable" "artifactory" "aws-sdk-s3" "babosa" "colored" "commander" "dotenv" "emoji_regex" "excon" "faraday" "faraday-cookie_jar" "faraday_middleware" "fastimage" "gh_inspector" "google-apis-androidpublisher_v3" "google-apis-playcustomapp_v1" "google-cloud-storage" "highline" "http-cookie" "json" "jwt" "mini_magick" "multipart-post" "naturally" "optparse" "plist" "rubyzip" "security" "simctl" "terminal-notifier" "terminal-table" "tty-screen" "tty-spinner" "word_wrap" "xcodeproj" "xcpretty" "xcpretty-travis-formatter"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0p2b92csayzlj60v15fz3mq4h23kvvr7swhaavi6fpaqzf70iafi"; + type = "gem"; + }; + version = "2.217.0"; + }; + gh_inspector = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f8r9byajj3bi2c7c5sqrc7m0zrv3nblfcd4782lw5l73cbsgk04"; + type = "gem"; + }; + version = "1.1.3"; + }; + google-apis-androidpublisher_v3 = { + dependencies = ["google-apis-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "046j100lrh5dhb8p3gr38fyqrw8vcif97pqb55ysipy874lafw49"; + type = "gem"; + }; + version = "0.54.0"; + }; + google-apis-core = { + dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "rexml" "webrick"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cly6ycryjhk15d60v3nqvhqpjk9f0nznnslbdnin90f5r54sbpd"; + type = "gem"; + }; + version = "0.11.2"; + }; + google-apis-iamcredentials_v1 = { + dependencies = ["google-apis-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0ysil0bkh755kmf9xvw5szhk1yyh3gqzwfsrbwsrl77gsv7jarcs"; + type = "gem"; + }; + version = "0.17.0"; + }; + google-apis-playcustomapp_v1 = { + dependencies = ["google-apis-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mlgwiid5lgg41y7qk8ca9lzhwx5njs25hz5fbf1mdal0kwm37lm"; + type = "gem"; + }; + version = "0.13.0"; + }; + google-apis-storage_v1 = { + dependencies = ["google-apis-core"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1k432qgxf41c4m6d68rascm0gyj18r7ypmrnyzmxh7k7nh543awx"; + type = "gem"; + }; + version = "0.29.0"; + }; + google-cloud-core = { + dependencies = ["google-cloud-env" "google-cloud-errors"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00wfvdvdv9m4l5ydn6xp65n68mgmpqr3n09hzvxs7gp8fly3j17v"; + type = "gem"; + }; + version = "1.6.1"; + }; + google-cloud-env = { + dependencies = ["faraday"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "056r1p8vhjswnx2cy3mzhwc5gj03whmpz8m4p2ph37gag5bpnxmf"; + type = "gem"; + }; + version = "2.1.0"; + }; + google-cloud-errors = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0flpj7v196c3xsqx4yjb7rjcj8p0by4rhj6qf5zanw4p1i41ssf0"; + type = "gem"; + }; + version = "1.3.1"; + }; + google-cloud-storage = { + dependencies = ["addressable" "digest-crc" "google-apis-iamcredentials_v1" "google-apis-storage_v1" "google-cloud-core" "googleauth" "mini_mime"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0033bi8qwm0ksxsv5zhz4nzwsiaapq3xk79z8f8rx3v09vdap07j"; + type = "gem"; + }; + version = "1.45.0"; + }; + googleauth = { + dependencies = ["faraday" "google-cloud-env" "jwt" "multi_json" "os" "signet"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0spv89di017rg25psiv4w3pn6f67y2w6vv8w910i83b5yii84rl1"; + type = "gem"; + }; + version = "1.9.1"; + }; + highline = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0yclf57n2j3cw8144ania99h1zinf8q3f5zrhqa754j6gl95rp9d"; + type = "gem"; + }; + version = "2.0.3"; + }; + http-cookie = { + dependencies = ["domain_name"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk"; + type = "gem"; + }; + version = "1.0.5"; + }; + httpclient = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99"; + type = "gem"; + }; + version = "2.8.3"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx"; + type = "gem"; + }; + version = "1.14.1"; + }; + jmespath = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393"; + type = "gem"; + }; + version = "1.6.2"; + }; + json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r9jmjhg2ly3l736flk7r2al47b5c8cayh0gqkq0yhjqzc9a6zhq"; + type = "gem"; + }; + version = "2.7.1"; + }; + jwt = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "16z11alz13vfc4zs5l3fk6n51n2jw9lskvc4h4prnww0y797qd87"; + type = "gem"; + }; + version = "2.7.1"; + }; + mini_magick = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0slh78f9z6n0l1i2km7m48yz7l4fjrk88sj1f4mh1wb39sl2yc37"; + type = "gem"; + }; + version = "4.12.0"; + }; + mini_mime = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vycif7pjzkr29mfk4dlqv3disc5dn0va04lkwajlpr1wkibg0c6"; + type = "gem"; + }; + version = "1.1.5"; + }; + minitest = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0bkmfi9mb49m0fkdhl2g38i3xxa02d411gg0m8x0gvbwfmmg5ym3"; + type = "gem"; + }; + version = "5.20.0"; + }; + multi_json = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z"; + type = "gem"; + }; + version = "1.15.0"; + }; + multipart-post = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0lgyysrpl50wgcb9ahg29i4p01z0irb3p9lirygma0kkfr5dgk9x"; + type = "gem"; + }; + version = "2.3.0"; + }; + nanaimo = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xi36h3f7nm8bc2k0b6svpda1lyank2gf872lxjbhw3h95hdrbma"; + type = "gem"; + }; + version = "0.3.0"; + }; + naturally = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "04x1nkx6gkqzlc4phdvq05v3vjds6mgqhjqzqpcs6vdh5xyqrf59"; + type = "gem"; + }; + version = "2.2.1"; + }; + optparse = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j9l5a1zszvrlggp1ldx82i4kkqx34g4g3amwp488s499w5l1cvj"; + type = "gem"; + }; + version = "0.1.1"; + }; + os = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0gwd20smyhxbm687vdikfh1gpi96h8qb1x28s2pdcysf6dm6v0ap"; + type = "gem"; + }; + version = "1.1.4"; + }; + plist = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wzhnbzraz60paxhm48c50fp9xi7cqka4gfhxmiq43mhgh5ajg3h"; + type = "gem"; + }; + version = "3.7.0"; + }; + public_suffix = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m"; + type = "gem"; + }; + version = "5.0.4"; + }; + rake = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy"; + type = "gem"; + }; + version = "13.1.0"; + }; + representable = { + dependencies = ["declarative" "trailblazer-option" "uber"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kms3r6w6pnryysnaqqa9fsn0v73zx1ilds9d1c565n3xdzbyafc"; + type = "gem"; + }; + version = "3.2.0"; + }; + retriable = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1q48hqws2dy1vws9schc0kmina40gy7sn5qsndpsfqdslh65snha"; + type = "gem"; + }; + version = "3.1.2"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0"; + type = "gem"; + }; + version = "3.2.6"; + }; + rouge = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sfikq1q8xyqqx690iiz7ybhzx87am4w50w8f2nq36l3asw4x89d"; + type = "gem"; + }; + version = "2.0.7"; + }; + ruby2_keywords = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz"; + type = "gem"; + }; + version = "0.0.5"; + }; + rubyzip = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz"; + type = "gem"; + }; + version = "2.3.2"; + }; + security = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ryjxs0j66wrbky2c08yf0mllwalvpg12rpxzbdx2rdhj3cbrlxa"; + type = "gem"; + }; + version = "0.1.3"; + }; + signet = { + dependencies = ["addressable" "faraday" "jwt" "multi_json"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0fzakk5y7zzii76zlkynpp1c764mzkkfg4mpj18f5pf2xp1aikb6"; + type = "gem"; + }; + version = "0.18.0"; + }; + simctl = { + dependencies = ["CFPropertyList" "naturally"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0sr3z4kmp6ym7synicyilj9vic7i9nxgaszqx6n1xn1ss7s7g45r"; + type = "gem"; + }; + version = "1.6.10"; + }; + terminal-notifier = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1slc0y8pjpw30hy21v8ypafi8r7z9jlj4bjbgz03b65b28i2n3bs"; + type = "gem"; + }; + version = "2.0.0"; + }; + terminal-table = { + dependencies = ["unicode-display_width"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr"; + type = "gem"; + }; + version = "3.0.2"; + }; + trailblazer-option = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "18s48fndi2kfvrfzmq6rxvjfwad347548yby0341ixz1lhpg3r10"; + type = "gem"; + }; + version = "0.1.2"; + }; + tty-cursor = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j5zw041jgkmn605ya1zc151bxgxl6v192v2i26qhxx7ws2l2lvr"; + type = "gem"; + }; + version = "0.7.1"; + }; + tty-screen = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0l4vh6g333jxm9lakilkva2gn17j6gb052626r1pdbmy2lhnb460"; + type = "gem"; + }; + version = "0.8.2"; + }; + tty-spinner = { + dependencies = ["tty-cursor"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0hh5awmijnzw9flmh5ak610x1d00xiqagxa5mbr63ysggc26y0qf"; + type = "gem"; + }; + version = "0.9.3"; + }; + tzinfo = { + dependencies = ["concurrent-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd"; + type = "gem"; + }; + version = "2.0.6"; + }; + uber = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1p1mm7mngg40x05z52md3mbamkng0zpajbzqjjwmsyw0zw3v9vjv"; + type = "gem"; + }; + version = "0.1.0"; + }; + unicode-display_width = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky"; + type = "gem"; + }; + version = "2.5.0"; + }; + webrick = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; + type = "gem"; + }; + version = "1.8.1"; + }; + word_wrap = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1iyc5bc7dbgsd8j3yk1i99ral39f23l6wapi0083fbl19hid8mpm"; + type = "gem"; + }; + version = "1.0.0"; + }; + xcodeproj = { + dependencies = ["CFPropertyList" "atomos" "claide" "colored2" "nanaimo" "rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "176ndahc5fssyx04q176vy6wngs1av4vrsdrkdpjij700hqll8hn"; + type = "gem"; + }; + version = "1.23.0"; + }; + xcpretty = { + dependencies = ["rouge"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1xq47q2h5llj7b54rws4796904vnnjz7qqnacdv7wlp3gdbwrivm"; + type = "gem"; + }; + version = "0.3.0"; + }; + xcpretty-travis-formatter = { + dependencies = ["xcpretty"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14rg4f70klrs910n7rsgfa4dn8s2qyny55194ax2qyyb2wpk7k5a"; + type = "gem"; + }; + version = "1.0.1"; + }; +} diff --git a/fastlane/metadata/android/ar-SA/full_description.txt b/fastlane/metadata/android/ar-SA/full_description.txt new file mode 100644 index 00000000000..71c07d40163 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/full_description.txt @@ -0,0 +1,21 @@ +يجمع Status بين برنامج مراسلة مجهول الهوية يركز على الخصوصية ومحفظة العملات المشفرة الآمنة في أداة اتصال قوية واحدة. يمكنك الدردشة مع الأصدقاء والمجتمعات المتنامية. وشراء وتخزين وتبادل الأصول الرقمية. + +Status هو نظام تشغيل Ethereum الخاص بك. + +محفظة Ethereum آمنة +تتيح لك محفظة العملات المشفرة Status إرسال وتخزين وتبادل أصول Ethereum بأمان مثل ETH وSNT والعملات المستقرة مثل DAI، بالإضافة إلى المقتنيات. تحكم بثقة في عملاتك المشفرة والأصول الرقمية من خلال تطبيق محفظة Ethereum متعددة السلاسل، والذي يدعم الشبكة الرئيسية و Base Arbitrum وOptimism. تدعم محفظة blockchain Status حاليًا أصول ETH وERC-20 وERC-721 وERC-1155 فقط؛ ولا تدعم Bitcoin. + +PRIVATE MESSENGER +أرسل محادثات فردية وجماعية خاصة دون أن يتجسس أحد على اتصالاتك. Status هو تطبيق مراسلة يلغي عمليات نقل الرسائل المركزية لمزيد من الخصوصية والمراسلة الآمنة. يتم تشفير جميع الرسائل باستخدام تشفير من البداية إلى النهاية. بالإضافة إلى ذلك، لا تكشف أي رسالة عن هوية المؤلف أو المستلم المقصود، لذلك لا أحد، ولا حتى Status، يعرف من يتحدث إلى من أو ما قيل. + +اربح مع DEFI + +استخدم عملتك المشفرة مع أحدث تطبيقات التمويل اللامركزية والبورصات اللامركزية (DEX) مثل Maker وAave وUniswap وSynthetix وPoolTogether وZerion وKyber والمزيد. + +تواصل مع مجتمعك + +استكشف مجتمعاتك وأصدقائك المفضلين وتواصل معهم ودردش معهم. سواء كانت مجموعة صغيرة من الأصدقاء أو مجموعة فنانين أو تجار عملات مشفرة أو منظمة كبيرة قادمة - أرسل رسائل نصية وتواصل مع مجتمعات Status. + +إنشاء حساب خاص + +ابق خاصًا من خلال إنشاء حساب مجهول الهوية. عند إنشاء حسابك المجاني، لن تضطر أبدًا إلى إدخال رقم هاتف أو عنوان بريد إلكتروني أو حساب مصرفي. يتم إنشاء مفاتيح المحفظة الخاصة بك محليًا وتخزينها بشكل آمن لضمان حصولك أنت فقط على حق الوصول إلى أموالك ومعاملاتك المالية. diff --git a/fastlane/metadata/android/ar-SA/short_description.txt b/fastlane/metadata/android/ar-SA/short_description.txt new file mode 100644 index 00000000000..282c5de3145 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/short_description.txt @@ -0,0 +1 @@ +ربط Private Finance وWeb3 diff --git a/fastlane/metadata/android/ar-SA/title.txt b/fastlane/metadata/android/ar-SA/title.txt new file mode 100644 index 00000000000..27f0018a91d --- /dev/null +++ b/fastlane/metadata/android/ar-SA/title.txt @@ -0,0 +1 @@ +Status: محفظة إيثريوم كريبتو diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 00000000000..1a6a7a4c839 --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,18 @@ +Status combines pseudonymous privacy-focused messenger and secure crypto wallet into one powerful communication tool. Chat with friends and growing communities. Buy, store, and exchange digital assets. + +Status is your Ethereum operating system. + +SECURE ETHEREUM WALLET +The Status crypto wallet allows you to securely send, store, and exchange Ethereum assets such as ETH, SNT, stable coins such as DAI, as well as collectibles. Confidently take control of your cryptocurrency and digital assets with our multichain Ethereum wallet app, supporting Ethereum Mainnet, Base, Arbitrum, and Optimism. The Status blockchain wallet currently only supports ETH, ERC-20, ERC-721, and ERC-1155 assets; it does not support Bitcoin. + +PRIVATE MESSENGER +Send private 1:1 and private group chats without anyone snooping on your communications. Status is a messenger app that eliminates centralised message relays for greater privacy and secure messaging. All messages are encrypted with end-to-end encryption. Additionally, no message exposes who the author or the intended recipient is, so nobody, not even Status, knows who is talking to who or what was said. + +EARN WITH DEFI +Put your crypto to work with the latest decentralised finance apps and decentralised exchanges (DEX) such as Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber, and more. + +CONNECT WITH YOUR COMMUNITY +Explore, connect, and chat with your favourite communities and friends. Whether it is a small group of friends, an artist collective, crypto traders, or the next big organization - text and communicate with Status communities. + +PRIVATE ACCOUNT CREATION +Stay private with pseudo-anonymous account creation. When creating your free account, you will NEVER have to enter a phone number, email address, or bank account. Your wallet private keys are locally generated and securely stored to ensure only you have access to your funds and financial transactions. diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.jpg b/fastlane/metadata/android/en-US/images/featureGraphic.jpg new file mode 100644 index 00000000000..d7d889b8337 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/featureGraphic.jpg differ diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 00000000000..1e95f046ba6 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/icon.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png new file mode 100644 index 00000000000..42493df3008 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png new file mode 100644 index 00000000000..a720dc24d1d Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png new file mode 100644 index 00000000000..edccd39c120 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png new file mode 100644 index 00000000000..eb8611516ad Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png new file mode 100644 index 00000000000..2ea43e57c96 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png new file mode 100644 index 00000000000..12125b30646 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png new file mode 100644 index 00000000000..e573b05cdf2 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png new file mode 100644 index 00000000000..aa112f3f5f5 Binary files /dev/null and b/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png differ diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt new file mode 100644 index 00000000000..873fc4371ea --- /dev/null +++ b/fastlane/metadata/android/en-US/short_description.txt @@ -0,0 +1 @@ +Connect Private Finance & Web3 diff --git a/fastlane/metadata/android/en-US/title.txt b/fastlane/metadata/android/en-US/title.txt new file mode 100644 index 00000000000..fef6ccbb055 --- /dev/null +++ b/fastlane/metadata/android/en-US/title.txt @@ -0,0 +1 @@ +Status: Ethereum Crypto Wallet diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt new file mode 100644 index 00000000000..b7bcbe00c50 --- /dev/null +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -0,0 +1,18 @@ +Status combina una mensajería seudónima centrada en la privacidad y una Billetera de criptomonedas segura en una poderosa herramienta de comunicación. Chatea con amigos y comunidades en crecimiento. Compra, almacena e intercambia activos digitales. + +Status es tu sistema operativo Ethereum. + +BILLETERA ETHEREUM SEGURA +La Billetera de criptomonedas Status te permite enviar, almacenar e intercambiar de forma segura activos Ethereum como ETH, SNT, stablecoins como DAI, así como coleccionables. Toma el control de tu criptomoneda y activos digitales con confianza con nuestra Billetera multicadena, compatible con Ethereum Mainnet, Base, Arbitrum y Optimism. La Billetera Status actualmente solo admite activos ETH, ERC-20, ERC-721 y ERC-1155; no admite Bitcoin. + +MENSAJERÍA PRIVADA +Envía chats privados 1:1 y grupales sin que nadie espíe tus comunicaciones. Status es una aplicación de mensajería que elimina los servidores de mensajes centralizados para una mayor privacidad y una mensajería segura. Todos los mensajes están encriptados de extremo a extremo. Además, ningún mensaje expone quién es el autor o el destinatario previsto, por lo que nadie, ni siquiera Status, sabe quién está hablando con quién o qué se dijo. + +GANA CON DEFI +Pon tus criptomonedas a trabajar con las últimas aplicaciones financieras descentralizadas y plataformas de intercambio descentralizadas (DEX) como Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber y más. + +CONECTA CON TU COMUNIDAD +Explora, conéctate y chatea con tus comunidades y amigos. Ya sea un pequeño grupo de amigos, un colectivo de artistas, traders de criptomonedas o la próxima gran organización, envía mensajes de texto y comunícate con las comunidades de Status. + +CREACIÓN DE CUENTAS PRIVADAS +Mantén la privacidad con la creación de cuentas seudónimas. Al crear tu cuenta gratuita, NUNCA tendrás que compartir tu número de teléfono, tu dirección de correo electrónico o una cuenta bancaria. Las claves privadas de tu billetera se generan localmente y se almacenan de forma segura para garantizar que solo tú tienes acceso a tus fondos y transacciones financieras. diff --git a/fastlane/metadata/android/es-ES/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt new file mode 100644 index 00000000000..55a7c3b1545 --- /dev/null +++ b/fastlane/metadata/android/es-ES/short_description.txt @@ -0,0 +1 @@ +Conecta tus finanzas y la web3 diff --git a/fastlane/metadata/android/es-ES/title.txt b/fastlane/metadata/android/es-ES/title.txt new file mode 100644 index 00000000000..941e46c1de1 --- /dev/null +++ b/fastlane/metadata/android/es-ES/title.txt @@ -0,0 +1 @@ +Status: Billetera Ethereum diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt new file mode 100644 index 00000000000..74162b0f257 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -0,0 +1,18 @@ +Status combine une messagerie pseudonyme axée sur la confidentialité et un portefeuille cryptographique sécurisé en un seul outil de communication puissant. Discutez avec des amis et des communautés en pleine croissance. Achetez, stockez et échangez des actifs numériques. + +Status est votre système d'exploitation Ethereum. + +PORTEFEUILLE ETHEREUM SÉCURISÉ +Le portefeuille cryptographique Status vous permet d'envoyer, de stocker et d'échanger en toute sécurité des actifs Ethereum tels que ETH, SNT, des pièces stables telles que DAI, ainsi que des objets de collection. Prenez le contrôle en toute confiance de votre cryptomonnaie et de vos actifs numériques avec notre application de portefeuille Ethereum multichaîne, prenant en charge le réseau principal, Base, Arbitrum et Optimism. Le portefeuille blockchain Status ne prend actuellement en charge que les actifs ETH, ERC-20, ERC-721 et ERC-1155 ; il ne prend pas en charge Bitcoin. + +MESSAGERIE PRIVÉE +Envoyez des conversations privées en tête-à-tête et en groupe sans que personne ne surveille vos communications. Status est une application de messagerie qui élimine les relais de messages centralisés pour une plus grande confidentialité et une messagerie sécurisée. Tous les messages sont cryptés avec un cryptage de bout en bout. De plus, aucun message n'expose l'identité de l'auteur ou du destinataire prévu, de sorte que personne, pas même Status, ne sait qui parle à qui ou ce qui a été dit. + +GAGNEZ DE L'ARGENT AVEC DEFI +Mettez votre crypto au travail avec les dernières applications financières décentralisées et les échanges décentralisés (DEX) tels que Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber, et plus encore. + +CONNECTEZ-VOUS AVEC VOTRE COMMUNAUTÉ +Explorez, connectez-vous et discutez avec vos communautés et amis préférés. Qu'il s'agisse d'un petit groupe d'amis, d'un collectif d'artistes, de traders de crypto-monnaies ou de la prochaine grande organisation, envoyez des SMS et communiquez avec les communautés Status. + +CRÉATION DE COMPTE PRIVÉ +Restez privé grâce à la création de compte pseudo-anonyme. Lors de la création de votre compte gratuit, vous n'aurez JAMAIS besoin de saisir un numéro de téléphone, une adresse e-mail ou un compte bancaire. Les clés privées de votre portefeuille sont générées localement et stockées en toute sécurité pour garantir que vous seul avez accès à vos fonds et à vos transactions financières. diff --git a/fastlane/metadata/android/fr-FR/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt new file mode 100644 index 00000000000..209638df37a --- /dev/null +++ b/fastlane/metadata/android/fr-FR/short_description.txt @@ -0,0 +1 @@ +Finance privée + Web3 diff --git a/fastlane/metadata/android/fr-FR/title.txt b/fastlane/metadata/android/fr-FR/title.txt new file mode 100644 index 00000000000..d5ae8d762f7 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/title.txt @@ -0,0 +1 @@ +Status: Portefeuille Ethereum diff --git a/fastlane/metadata/android/ja-JP/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt new file mode 100644 index 00000000000..a9efa0992f8 --- /dev/null +++ b/fastlane/metadata/android/ja-JP/full_description.txt @@ -0,0 +1,21 @@ +Statusは、匿名のプライバシー重視のメッセンジャーと安全な暗号通貨ウォレットを1つの強力なコミュニケーションツールに組み合わせています。友達や成長中のコミュニティとチャットしましょう。デジタル資産を購入、保管、交換しましょう。 + +StatusはあなたのEthereumオペレーティングシステムです。 + +安全なEthereumウォレット +Status暗号通貨ウォレットを使用すると、ETH、SNT、DAIなどのステーブルコイン、収集品などのEthereum資産を安全に送信、保管、交換できます。メインネット、Base、 Arbitrum、OptimismをサポートするマルチチェーンEthereumウォレットアプリを使用して、暗号通貨とデジタル資産を自信を持って管理できます。 Status ブロックチェーン ウォレットは現在、ETH、ERC-20、ERC-721、ERC-1155 アセットのみをサポートしており、ビットコインはサポートしていません。 + +プライベート メッセンジャー +誰にも通信を覗かれることなく、プライベートな 1:1 チャットやプライベート グループ チャットを送信できます。Status は、集中型のメッセージ リレーを排除してプライバシーと安全なメッセージングを実現するメッセンジャー アプリです。すべてのメッセージはエンドツーエンドの暗号化で暗号化されます。さらに、メッセージの作成者や宛先の受信者が誰であるかは明らかにされないため、Status でさえ、誰が誰と話しているのか、何が話されたのかを知ることはできません。 + +DEFI で稼ぐ + +Maker、Aave、Uniswap、Synthetix、PoolTogether、Zerion、Kyber などの最新の分散型金融アプリや分散型取引所 (DEX) で暗号通貨を活用しましょう。 + +コミュニティとつながる + +お気に入りのコミュニティや友達を探索、接続、チャットしましょう。少人数の友人グループ、アーティスト集団、暗号通貨トレーダー、または次の大きな組織であっても、Status コミュニティとテキストでやり取りできます。 + +プライベート アカウントの作成 + +疑似匿名アカウントの作成でプライバシーを確保します。無料アカウントを作成するときに、電話番号、メール アドレス、銀行口座を入力する必要はありません。ウォレットの秘密鍵はローカルで生成され、安全に保管されるため、資金と金融取引にアクセスできるのはあなただけです。 diff --git a/fastlane/metadata/android/ja-JP/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt new file mode 100644 index 00000000000..825f8aadeeb --- /dev/null +++ b/fastlane/metadata/android/ja-JP/short_description.txt @@ -0,0 +1 @@ +プライベート ファイナンスと Web3 を接続 diff --git a/fastlane/metadata/android/ja-JP/title.txt b/fastlane/metadata/android/ja-JP/title.txt new file mode 100644 index 00000000000..efd647343d6 --- /dev/null +++ b/fastlane/metadata/android/ja-JP/title.txt @@ -0,0 +1 @@ +Status: イーサリアム クリプト ウォレット diff --git a/fastlane/metadata/android/ko-KR/full_description.txt b/fastlane/metadata/android/ko-KR/full_description.txt new file mode 100644 index 00000000000..02529c62b34 --- /dev/null +++ b/fastlane/metadata/android/ko-KR/full_description.txt @@ -0,0 +1,21 @@ +Status는 익명의 개인 정보 보호 중심 메신저와 안전한 암호화폐 지갑을 하나의 강력한 커뮤니케이션 도구로 결합합니다. 친구 및 성장하는 커뮤니티와 채팅하세요. 디지털 자산을 구매, 저장 및 교환하세요. + +Status는 귀하의 Ethereum 운영 체제입니다. + +안전한 이더리움 지갑 +Status 암호화폐 지갑을 사용하면 ETH, SNT, DAI와 같은 스테이블 코인, 수집품과 같은 이더리움 자산을 안전하게 보내고, 저장하고, 교환할 수 있습니다. 메인넷, Base Arbitrum 및 Optimism을 지원하는 멀티체인 이더리움 지갑 앱으로 암호화폐와 디지털 자산을 자신 있게 제어하세요. Status 블록체인 지갑은 현재 ETH, ERC-20, ERC-721 및 ERC-1155 자산만 지원하며 비트코인은 지원하지 않습니다. + +개인 메신저 +아무도 귀하의 커뮤니케이션을 엿보지 않고 개인 1:1 및 개인 그룹 채팅을 보내세요. Status는 중앙 집중식 메시지 릴레이를 제거하여 더 큰 프라이버시와 안전한 메시징을 제공하는 메신저 앱입니다. 모든 메시지는 종단 간 암호화로 암호화됩니다. 또한, 메시지에는 작성자 또는 의도된 수신자가 노출되지 않으므로 Status를 포함하여 아무도 누가 누구와 대화하고 있는지 또는 무슨 말을 했는지 알 수 없습니다. + +DEFI로 수익 창출 + +Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber 등과 같은 최신 분산 금융 앱 및 분산 거래소(DEX)에서 암호화폐를 활용하세요. + +커뮤니티와 연결 + +좋아하는 커뮤니티와 친구를 탐색하고, 연결하고, 채팅하세요. 소규모 친구 그룹, 아티스트 집단, 암호화폐 거래자 또는 차세대 대기업이든 Status 커뮤니티에 문자를 보내고 소통하세요. + +개인 계정 생성 + +익명 계정을 생성하여 개인 정보를 보호하세요. 무료 계정을 만들 때 전화번호, 이메일 주소 또는 은행 계좌를 입력할 필요가 없습니다. 지갑 개인 키는 로컬에서 생성되고 안전하게 저장되어 본인만 자금과 금융 거래에 액세스할 수 있습니다. diff --git a/fastlane/metadata/android/ko-KR/short_description.txt b/fastlane/metadata/android/ko-KR/short_description.txt new file mode 100644 index 00000000000..197b6757827 --- /dev/null +++ b/fastlane/metadata/android/ko-KR/short_description.txt @@ -0,0 +1 @@ +개인 금융 및 Web3 연결 diff --git a/fastlane/metadata/android/ko-KR/title.txt b/fastlane/metadata/android/ko-KR/title.txt new file mode 100644 index 00000000000..053cc6ca04f --- /dev/null +++ b/fastlane/metadata/android/ko-KR/title.txt @@ -0,0 +1 @@ +Status: 이더리움 크립토 지갑 diff --git a/fastlane/metadata/android/pt-BR/full_description.txt b/fastlane/metadata/android/pt-BR/full_description.txt new file mode 100644 index 00000000000..13921edcec1 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/full_description.txt @@ -0,0 +1,18 @@ +Status é um app de mensagem e uma carteira de criptomoedas focado em privacidade e anonimato. Você pode conversar com seus amigos e interagir com comunidades. Compre, armazene e troque ativos digitais. + +Status é o seu sistema operacional para Ethereum. + +CARTEIRA ETHEREUM SEGURA +A carteira de criptomoedas Status permite que você envie, armazene e troque ativos Ethereum, como ETH, SNT, stablecoins como DAI, além de colecionáveis, de forma segura. Controle com confiança suas criptomoedas e ativos digitais com nosso aplicativo de carteira Ethereum multichain, que suporta Ethereum Mainnet, Base, Arbitrum e Optimism. A carteira blockchain da Status atualmente suporta apenas ativos ETH, ERC-20, ERC-721 e ERC-1155; não suporta Bitcoin. + +APP DE MENSAGEM PRIVADO +Envie mensagens privadas em chats 1:1 ou em grupos. Status é um aplicativo de mensagem descentralizado que foca em privacidade e anonimato. Todas as mensagens são protegidas com criptografia de ponta a ponta. Além disso, nenhuma mensagem revela quem é o(a) autor(a) ou o(a) destinatário(a) pretendido(a), então ninguém, nem mesmo a Status, sabe quem está conversando com quem ou o que foi dito. + +MONETIZE COM DEFI E STAKING +Coloque suas criptomoedas para trabalhar (staking) com os mais recentes aplicativos de finanças descentralizadas e exchanges descentralizadas (DEX), como Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber e mais. + +CONECTE-SE COM SUA COMUNIDADE +Explore, conecte-se e converse com seus amigos e comunidades favoritas. Seja um grupo de amigos, de artistas, de traders de criptomoedas ou a próxima grande empresa - envie textos e comunique-se através das comunidades da Status. + +CRIAÇÃO DE CONTA PRIVADA +Mantenha sua privacidade com a criação de conta anônima. Ao criar sua conta gratuita, você NUNCA precisará inserir um número de telefone, endereço de e-mail ou conta bancária. Suas chaves privadas da carteira são geradas localmente e armazenadas com segurança para garantir que apenas você tenha acesso aos seus fundos e transações financeiras. diff --git a/fastlane/metadata/android/pt-BR/short_description.txt b/fastlane/metadata/android/pt-BR/short_description.txt new file mode 100644 index 00000000000..634d8b43559 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/short_description.txt @@ -0,0 +1 @@ +Privacidade Financeira e Web3 diff --git a/fastlane/metadata/android/pt-BR/title.txt b/fastlane/metadata/android/pt-BR/title.txt new file mode 100644 index 00000000000..47e98e79eb2 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/title.txt @@ -0,0 +1 @@ +Status: Carteira Ethereum diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt new file mode 100644 index 00000000000..5c21acb08b1 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -0,0 +1,18 @@ +Status объединяет анонимный мессенджер, ориентированный на конфиденциальность, и защищенный криптокошелек в один мощный инструмент для финансов и общения. Общайтесь с друзьями, находите новые сообщества, а также покупайте, храните и обменивайте цифровые активы. + +Status — это ваша операционная система для Ethereum. + +БЕЗОПАСНЫЙ КОШЕЛЕК ETHEREUM +Крипто-кошелек Status позволяет вам безопасно отправлять, хранить и обменивать активы Ethereum, такие как ETH, SNT, стейблкоины, такие как DAI, а также невзаимозаменяемые токены. Контролируйте свою криптовалюту с помощью нашего криптокошелека для Ethereum, поддерживающего Ethereum, Base, Arbitrum и Optimism. В настоящее время криптокошелек Status поддерживает такие активы ETH, ERC-20, ERC-721 и ERC-1155. + +ПРИВАТНИЙ МЕСЕНДЖЕР +Отправляйте приватные сообщения друзьям или группам. Status — это приложение для обмена сообщениями, которое поддерживает децентрализованную систему для повышения конфиденциальности и безопасного обмена сообщениями. Все сообщения зашифрованы с помощью сквозного шифрования. Более того, ни одно сообщение не содержит информации об авторе или получателе, поэтому никто, даже Status, не знает, кто с кем общается или что было отправлено. + +ЗАРАБАТЫВАЙТЕ С DEFI +Используйте свою криптовалюту для работы с новейшими приложениями для децентрализованных финансов и децентрализованными криптобиржами (DEX), такими как Maker, Aave, Uniswap, Synthetix, PoolTogether, Kyber и другие. + +НАЙДИТЕ ВАШЕ СООБЩЕСТВО +Находите, исследуйте и общайтесь с любимыми сообществами и друзьями. Независимо от того, является ли это небольшой группой друзей, коллективом художников, криптотрейдеров или следующим большим сообществом единомышленников — отправляйте текстовые сообщения и общайтесь с сообществами в Status. + +СОЗДАНИЕ ПРИВАТНОГО АККАУНТА +Оставайтесь конфиденциальными с помощью создания анонимного аккаунта. При создании аккаунта вам НИКОГДА не нужно будет вводить номер телефона, адрес электронной почты или банковский счет. Приватные ключи вашего криптокошелька генерируются локально на вашем устройстве и надежно хранятся, чтобы только вы имели доступ к своим средствам и финансовым транзакциям. diff --git a/fastlane/metadata/android/ru-RU/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt new file mode 100644 index 00000000000..5811246908c --- /dev/null +++ b/fastlane/metadata/android/ru-RU/short_description.txt @@ -0,0 +1 @@ +Web3 финансы и приват чат diff --git a/fastlane/metadata/android/ru-RU/title.txt b/fastlane/metadata/android/ru-RU/title.txt new file mode 100644 index 00000000000..1f01ef2483d --- /dev/null +++ b/fastlane/metadata/android/ru-RU/title.txt @@ -0,0 +1 @@ +Status: Ethereum Криптокошелек diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt new file mode 100644 index 00000000000..1869c0f50f3 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -0,0 +1,18 @@ +Status, takma adlı gizlilik odaklı mesajlaşmayı ve güvenli kripto cüzdanını tek bir güçlü iletişim aracında birleştiriyor. Arkadaşlarınızla ve büyüyen topluluklarla sohbet edin. Dijital varlıkları satın alın, saklayın ve değiştirin. + +Status, Ethereum işletim sisteminizdir. + +GÜVENLİ ETHEREUM CÜZDANI +Status kripto cüzdanı, ETH, SNT, DAI gibi sabit paralar ve koleksiyonluk eşyalar gibi Ethereum varlıklarını güvenli bir şekilde göndermenize, saklamanıza ve değiştirmenize olanak tanır. Ana ağ, Base, Arbitrum ve Optimism'i destekleyen çok zincirli Ethereum cüzdan uygulamamızla kripto paranızın ve dijital varlıklarınızın kontrolünü güvenle ele alın. Status blok zinciri cüzdanı şu anda yalnızca ETH, ERC-20, ERC-721 ve ERC-1155 varlıklarını destekliyor; Bitcoin'i desteklemiyor. + +ÖZEL MESAJLAŞMACI +İletişimlerinizi kimse gözetlemeden özel 1:1 ve özel grup sohbetleri gönderin. Status, daha fazla gizlilik ve güvenli mesajlaşma için merkezi mesaj iletimlerini ortadan kaldıran bir mesajlaşma uygulamasıdır. Tüm mesajlar uçtan uca şifrelemeyle şifrelenir. Ayrıca, hiçbir mesaj yazarının veya hedeflenen alıcının kim olduğunu ifşa etmez, bu nedenle hiç kimse, Status bile kimin kiminle konuştuğunu veya ne söylendiğini bilmez. + +DEFI İLE KAZANIN +Kripto paranızı Maker, Aave, Uniswap, Synthetix, PoolTogether, Zerion, Kyber ve daha fazlası gibi en son merkezi olmayan finans uygulamaları ve merkezi olmayan borsalarla (DEX) çalıştırın. + +TOPLULUĞUNUZLA BAĞLANTI KURUN +En sevdiğiniz toplulukları ve arkadaşlarınızla keşfedin, bağlantı kurun ve sohbet edin. İster küçük bir arkadaş grubu, ister bir sanatçı kolektifi, kripto tüccarları veya bir sonraki büyük organizasyon olsun - Status topluluklarıyla mesajlaşın ve iletişim kurun. + +ÖZEL HESAP OLUŞTURMA +Sahte anonim hesap oluşturma ile gizli kalın. Ücretsiz hesabınızı oluştururken ASLA bir telefon numarası, e-posta adresi veya banka hesabı girmeniz gerekmeyecek. Cüzdan özel anahtarlarınız yerel olarak oluşturulur ve yalnızca sizin fonlarınıza ve finansal işlemlerinize erişebilmenizi sağlamak için güvenli bir şekilde saklanır. diff --git a/fastlane/metadata/android/tr-TR/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt new file mode 100644 index 00000000000..62d38cb14af --- /dev/null +++ b/fastlane/metadata/android/tr-TR/short_description.txt @@ -0,0 +1 @@ +Özel Finans ve Web3'ü Bağlayın diff --git a/fastlane/metadata/android/tr-TR/title.txt b/fastlane/metadata/android/tr-TR/title.txt new file mode 100644 index 00000000000..b40a6bf0f13 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/title.txt @@ -0,0 +1 @@ +Status Ethereum Kripto Cüzdanı diff --git a/fastlane/metadata/android/uk-UA/full_description.txt b/fastlane/metadata/android/uk-UA/full_description.txt new file mode 100644 index 00000000000..098f9976041 --- /dev/null +++ b/fastlane/metadata/android/uk-UA/full_description.txt @@ -0,0 +1,18 @@ +Status поєднує анонімний месенджер, орієнтований на конфіденційність та захищений криптогаманець в один потужний інструмент для фінансів та спілкування. Спілкуйтеся з друзями та спільнотами. Купуйте, зберігайте та обмінюйте крипто активи. + +Status — це ваша операційна система для Ethereum. + +БЕЗПЕЧНИЙ КРИПТОГАМАНЕЦЬ ДЛЯ ETHEREUM +Криптогаманець Status дозволяє безпечно надсилати, зберігати та обмінювати крипто активи на Ethereum, такі як ETH, SNT, стейблкоїни та DAI, а також невзаємозамінні токени. Впевнено контролюйте свої крипто активи за допомогою нашого блокчейн гаманця для Ethereum, який підтримує Ethereum, Base, Arbitrum та Optimism. Криптогаманець Status наразі підтримує такі кприпто активи як ETH, ERC-20, ERC-721 та ERC-1155. + +ПРИВАТНИЙ МЕСЕНДЖЕР +Надсилайте приватні повідомлення друзям або групам. Status — це програма для обміну повідомленнями, яка підтримує децентралізовану систему повідомлень для більшої конфіденційності та безпечного обміну повідомленнями. Усі повідомлення зашифровано за допомогою наскрізного шифрування. Крім того, жодне повідомлення не містить інформації про автора чи одержувача, тому ніхто, навіть Status, не знає, хто з ким спілкувється або що було надіслано. + +ЗАРОБЛЯЙТЕ З DEFI +Налаштуйте свою криптовалюту на роботу з найновішими програмами для децентралізованих фінансів і децентралізованими крипто біржами (DEX), такими як Maker, Aave, Uniswap, Synthetix, PoolTogether, Kyber тощо. + +ЗНАЙДІТЬ ВАШУ СПІЛЬНОТУ +Знаходьте, досліджуйте та спілкуйтеся з улюбленими спільнотами та друзями. Незалежно від того, чи це невелика група друзів, колектив художників, криптотрейдерів чи наступна велика спільнота однодумців – надсилайте текстові повідомлення та спілкуйтеся зі спільнотами у Status. + +СТВОРЕННЯ ПРИВАТНОГО ОБЛІКОВОГО ЗАПИСУ +Залишайтеся конфіденційними за допомогою створення анонімного облікового запису. Під час створення облікового запису вам НІКОЛИ не доведеться вводити номер телефону, адресу електронної пошти чи банківський рахунок. Приватні ключі вашого крипто гаманця генеруються локально на вашому пристрої та надійно зберігаються, щоб лише Ви мали доступ до своїх коштів і фінансових транзакцій. diff --git a/fastlane/metadata/android/uk-UA/short_description.txt b/fastlane/metadata/android/uk-UA/short_description.txt new file mode 100644 index 00000000000..34bd9af60d8 --- /dev/null +++ b/fastlane/metadata/android/uk-UA/short_description.txt @@ -0,0 +1 @@ +Web3 фінанси та приват чат diff --git a/fastlane/metadata/android/uk-UA/title.txt b/fastlane/metadata/android/uk-UA/title.txt new file mode 100644 index 00000000000..3741b63365c --- /dev/null +++ b/fastlane/metadata/android/uk-UA/title.txt @@ -0,0 +1 @@ +Status Ethereum Криптогаманець diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt new file mode 100644 index 00000000000..28d310190b3 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -0,0 +1,18 @@ +Status 将保护匿名私密的消息应用,与安全的加密货币钱包结合成一个强大的通信工具。您可以与朋友或在社群中聊天,也可以购买、存储和交换数字资产。 + +Status 是你的以太坊操作系统。 + +安全的以太坊钱包 +Status 加密货币钱包支持安全地发送、存储和交换以太坊资产(例如 ETH、SNT)、稳定币(例如 DAI)以及数字藏品。Status 多链以太坊钱包支持主网、Base Arbitrum 和 Optimism,让您安心掌控加密货币和数字资产。Status 区块链钱包目前仅支持 ETH、ERC-20、ERC-721 和 ERC-1155 资产;不支持 Bitcoin。 + +私密通信 +一对一或同多人发送私密消息,没有人能窥探你的通信内容。Status 不使用中心化消息中继,提升消息的隐私和安全。所有消息都经过端到端加密。此外,消息不含发送或接收者的身份信息,包括 Status 在内的任何人都无法获知消息内容或交流者身份。 + +赚取 DeFi 收益 +使用最新的去中心化金融应用和去中心化交易所 (DEX),如 Maker、Aave、Uniswap、Synthetix、PoolTogether、Zerion、Kyber 等,充分发挥加密货币的作用。 + +连接社群 +探索、连接并与你最喜欢的社群和朋友聊天。无论是朋友群聊、艺术家团体、加密货币交易者,还是潜在大型组织,都可以通过在 Status 社群中发送信息,进行交流。 + +创建私密账号 +免费创建匿名账号,保护隐私。Status 不会向您索要电话号码、电子邮件地址或银行账户。钱包私钥在本地生成并安全存储,只有您自己可以获取资金和金融交易记录。 diff --git a/fastlane/metadata/android/zh-CN/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt new file mode 100644 index 00000000000..1f735456a30 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/short_description.txt @@ -0,0 +1 @@ +连接个人金融和Web3 diff --git a/fastlane/metadata/android/zh-CN/title.txt b/fastlane/metadata/android/zh-CN/title.txt new file mode 100644 index 00000000000..d1152f6c389 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/title.txt @@ -0,0 +1 @@ +Status: 以太坊加密钱包 diff --git a/fastlane/update.sh b/fastlane/update.sh new file mode 100755 index 00000000000..91f10dd6e4b --- /dev/null +++ b/fastlane/update.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p bash ruby bundler bundix +set -x +set -e + +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )" +GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) + +rm -f "${GIT_ROOT}/fastlane/Gemfile.lock" + +bundler install \ + --gemfile="${GIT_ROOT}/fastlane/Gemfile" \ + --path "${GIT_ROOT}/fastlane/.bundle/vendor" +bundix \ + --gemfile="${GIT_ROOT}/fastlane/Gemfile" \ + --lockfile="${GIT_ROOT}/fastlane/Gemfile.lock" \ + --gemset="${GIT_ROOT}/fastlane/gemset.nix" + +rm -rf "${GIT_ROOT}/fastlane/.bundle/vendor" + +if [ "clean" == "$1" ]; then + rm -r ~/.gem +fi diff --git a/figwheel-bridge.js b/figwheel-bridge.js deleted file mode 100644 index 9e3163203a3..00000000000 --- a/figwheel-bridge.js +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Originally taken from https://github.com/decker405/figwheel-react-native - * - * @providesModule figwheel-bridge - */ - -var CLOSURE_UNCOMPILED_DEFINES = null; -var debugEnabled = false; - -var config = { - basePath: "target/", - googBasePath: 'goog/', - serverPort: 8081 -}; - -var React = require('react'); -var ReactNative = require('react-native'); -var WebSocket = require('WebSocket'); -var self; -var scriptQueue = []; -var serverHost = null; // will be set dynamically -var fileBasePath = null; // will be set dynamically -var evaluate = eval; // This is needed, direct calls to eval does not work (RN packager???) -var externalModules = {}; -var evalListeners = [ // Functions to be called after each js file is loaded and evaluated - function (url) { - if (url.indexOf('jsloader') > -1) { - shimJsLoader(); - } - }, - function (url) { - if (url.indexOf('/figwheel/client/socket') > -1) { - setCorrectWebSocketImpl(); - } - }]; - -var figwheelApp = function (platform, devHost) { - return React.createClass({ - getInitialState: function () { - return {loaded: false} - }, - render: function () { - if (!this.state.loaded) { - var plainStyle = {flex: 1, alignItems: 'center', justifyContent: 'center'}; - return ( - - Waiting for Figwheel to load files. - - ); - } - return this.state.root; - }, - componentDidMount: function () { - var app = this; - if (typeof goog === "undefined") { - loadApp(platform, devHost, function (appRoot) { - app.setState({root: appRoot, loaded: true}) - }); - } - } - }) -}; - -function logDebug(msg) { - if (debugEnabled) { - console.log(msg); - } -} - -// evaluates js code ensuring proper ordering -function customEval(url, javascript, success, error) { - if (scriptQueue.length > 0) { - if (scriptQueue[0] === url) { - try { - evaluate(javascript); - logDebug('Evaluated: ' + url); - scriptQueue.shift(); - evalListeners.forEach(function (listener) { - listener(url) - }); - success(); - } catch (e) { - console.error(e); - error(); - } - } else { - setTimeout(function () { - customEval(url, javascript, success, error) - }, 5); - } - } else { - console.error('Something bad happened...'); - error() - } -} - -var isChrome = function () { - return typeof importScripts === "function" -}; - -function asyncImportScripts(url, success, error) { - logDebug('(asyncImportScripts) Importing: ' + url); - scriptQueue.push(url); - fetch(url) - .then(function (response) { - return response.text() - }) - .then(function (responseText) { - return customEval(url, responseText, success, error); - }) - .catch(function (error) { - console.error(error); - return error(); - }); -} - -function syncImportScripts(url, success, error) { - try { - importScripts(url); - logDebug('Evaluated: ' + url); - evalListeners.forEach(function (listener) { - listener(url) - }); - success(); - } catch (e) { - console.error(e); - error() - } -} - -// Loads js file sync if possible or async. -function importJs(src, success, error) { - if (typeof success !== 'function') { - success = function () { - }; - } - if (typeof error !== 'function') { - error = function () { - }; - } - - var file = fileBasePath + '/' + src; - - logDebug('(importJs) Importing: ' + file); - if (isChrome()) { - syncImportScripts(serverBaseUrl("localhost") + '/' + file, success, error); - } else { - asyncImportScripts(serverBaseUrl(serverHost) + '/' + file, success, error); - } -} - -function interceptRequire() { - var oldRequire = window.require; - console.info("Shimming require"); - window.require = function (id) { - console.info("Requiring: " + id); - if (externalModules[id]) { - return externalModules[id]; - } - return oldRequire(id); - }; -} - -function compileWarningsToYellowBox() { - var log = window.console.log; - var compileWarningRx = /Figwheel: Compile/; - var compileExceptionRx = /Figwheel: Compile Exception/; - var errorInFileRx = /Error on file/; - var isBuffering = false; - var compileExceptionBuffer = ""; - window.console.log = function (msg) { - log.apply(window.console, arguments); - if (compileExceptionRx.test(msg)) { // enter buffering mode to get all the messages for exception - isBuffering = true; - compileExceptionBuffer = msg + "\n"; - } else if (errorInFileRx.test(msg) && isBuffering) { // exit buffering mode and log buffered messages to YellowBox - isBuffering = false; - console.warn(compileExceptionBuffer + msg); - compileExceptionBuffer = ""; - } else if (isBuffering) { //log messages buffering mode - compileExceptionBuffer += msg + "\n"; - } else if (compileWarningRx.test(msg)) { - console.warn(msg); - } - }; -} - -function serverBaseUrl(host) { - return "http://" + host + ":" + config.serverPort -} - -function setCorrectWebSocketImpl() { - figwheel.client.socket.get_websocket_imp = function () { - return WebSocket; - }; -} - -function loadApp(platform, devHost, onLoadCb) { - serverHost = devHost; - fileBasePath = config.basePath + platform; - - // callback when app is ready to get the reloadable component - var mainJs = '/env/' + platform + '/main.js'; - evalListeners.push(function (url) { - if (url.indexOf(mainJs) > -1) { - onLoadCb(env[platform].main.root_el); - console.info('Done loading Clojure app'); - } - }); - - if (typeof goog === "undefined") { - console.info('Loading Closure base.'); - interceptRequire(); - compileWarningsToYellowBox(); - importJs('goog/base.js', function () { - shimBaseGoog(); - importJs('cljs_deps.js'); - importJs('goog/deps.js', function () { - // This is needed because of RN packager - // seriously React packager? why. - var googreq = goog.require; - - googreq('figwheel.connect.' + platform); - }); - }); - } -} - -function startApp(appName, platform, devHost) { - ReactNative.AppRegistry.registerComponent( - appName, () => figwheelApp(platform, devHost)); -} - -function withModules(moduleById) { - externalModules = moduleById; - return self; -} - -// Goog fixes -function shimBaseGoog() { - console.info('Shimming goog functions.'); - goog.basePath = 'goog/'; - goog.writeScriptSrcNode = importJs; - goog.writeScriptTag_ = function (src, optSourceText) { - importJs(src); - return true; - }; -} - -// Figwheel fixes -// Used by figwheel - uses importScript to load JS rather than " + (testing "it returns false" + (is + (not + (url/url-sanitized? + "https://www.etheremon.com/assets/images/mons_origin/025.png'>"))))) + + (testing + "https://www.etheremon.com/assets/images/mons'>origin/025.png" + (testing "it returns false" + (is + (not + (url/url-sanitized? + "https://www.etheremon.com/assets/images/mons'>origin/025.png")))))) + +(deftest url-host-check-test + (testing "Extract host/domain from URL" + (testing "Valid URL with endpoint" + (is (= "status.im" (url/url-host "https://status.im/testing")))) + (testing "Valid URL" + (is (= "status.im" (url/url-host "http://status.im")))) + (testing "Blank domainlocalhost" + (is (nil? (url/url-host "localhost:3000/testing"))))) + (testing "Return nil for Invalid URL" + (testing "Bad scheme" + (is (nil? (url/url-host "invalid//status.im/testing")))) + (testing "No scheme" + (is (nil? (url/url-host "status.im/testing")))))) diff --git a/src/utils/vector.cljs b/src/utils/vector.cljs new file mode 100644 index 00000000000..cedbb977e9e --- /dev/null +++ b/src/utils/vector.cljs @@ -0,0 +1,7 @@ +(ns utils.vector) + +(defn insert-element-at + [data element index] + (let [before (take index data) + after (drop index data)] + (vec (concat before [element] after)))) diff --git a/src/utils/vector_test.cljs b/src/utils/vector_test.cljs new file mode 100644 index 00000000000..f9613d64336 --- /dev/null +++ b/src/utils/vector_test.cljs @@ -0,0 +1,17 @@ +(ns utils.vector-test + (:require + [cljs.test :refer-macros [deftest is testing]] + [utils.vector :as vector])) + +(deftest insert-element-at-test + (testing "Inserting into an empty vector" + (is (= [42] (vector/insert-element-at [] 42 0)))) + + (testing "Inserting at the beginning of a vector" + (is (= [42 1 2 3] (vector/insert-element-at [1 2 3] 42 0)))) + + (testing "Inserting in the middle of a vector" + (is (= [1 42 2 3] (vector/insert-element-at [1 2 3] 42 1)))) + + (testing "Inserting at the end of a vector" + (is (= [1 2 3 42] (vector/insert-element-at [1 2 3] 42 3))))) diff --git a/src/utils/worklets/chat/messenger/composer.cljs b/src/utils/worklets/chat/messenger/composer.cljs new file mode 100644 index 00000000000..865bbcd2a0a --- /dev/null +++ b/src/utils/worklets/chat/messenger/composer.cljs @@ -0,0 +1,7 @@ +(ns utils.worklets.chat.messenger.composer) + +(def ^:private worklets (js/require "../src/js/worklets/chat/messenger/composer.js")) + +(defn scroll-down-button-opacity + [chat-list-scroll-y composer-focused? window-height] + (.scrollDownButtonOpacity ^js worklets chat-list-scroll-y composer-focused? window-height)) diff --git a/src/utils/worklets/chat/messenger/lightbox.cljs b/src/utils/worklets/chat/messenger/lightbox.cljs new file mode 100644 index 00000000000..b3c4a1f7557 --- /dev/null +++ b/src/utils/worklets/chat/messenger/lightbox.cljs @@ -0,0 +1,7 @@ +(ns utils.worklets.chat.messenger.lightbox) + +(def ^:private layout-worklets (js/require "../src/js/worklets/chat/messenger/lightbox.js")) + +(defn info-layout + [input top?] + (.infoLayout ^js layout-worklets input top?)) diff --git a/src/utils/worklets/chat/messenger/messages.cljs b/src/utils/worklets/chat/messenger/messages.cljs new file mode 100644 index 00000000000..adfaf17a8e5 --- /dev/null +++ b/src/utils/worklets/chat/messenger/messages.cljs @@ -0,0 +1,8 @@ +(ns utils.worklets.chat.messenger.messages) + +(def ^:private worklets (js/require "../src/js/worklets/chat/messenger/messages.js")) + +(defn messages-list-on-scroll + [distance-from-list-top chat-list-scroll-y callback] + (.messagesListOnScroll ^js worklets distance-from-list-top chat-list-scroll-y callback)) + diff --git a/src/utils/worklets/communities.cljs b/src/utils/worklets/communities.cljs new file mode 100644 index 00000000000..5476f8c3269 --- /dev/null +++ b/src/utils/worklets/communities.cljs @@ -0,0 +1,33 @@ +(ns utils.worklets.communities + (:require [goog.object :as gobj] + [react-native.utils :as utils])) + +(def ^:private worklets (js/require "../src/js/worklets/communities.js")) + +(defn- transform-args + [f] + (fn [& args] + (apply f (map utils/kebab-case-map->camelCase-obj args)))) + +(defn- worklet-wrapper + [worklet-name] + (if-let [worklet-fn (gobj/get worklets worklet-name)] + (transform-args worklet-fn) + (throw (js/Error. + (ex-info "Non-existing worklet!" + {:name worklet-name + :file "../src/js/worklets/communities.js"}))))) + +(def use-logo-styles (worklet-wrapper "useLogoStyles")) +(def use-sheet-styles (worklet-wrapper "useSheetStyles")) +(def use-name-styles (worklet-wrapper "useNameStyles")) +(def use-info-styles (worklet-wrapper "useInfoStyles")) +(def use-channels-styles (worklet-wrapper "useChannelsStyles")) +(def use-scroll-to (worklet-wrapper "useScrollTo")) +(def use-header-opacity (worklet-wrapper "useHeaderOpacity")) +(def use-opposite-header-opacity (worklet-wrapper "useOppositeHeaderOpacity")) +(def use-nav-content-opacity (worklet-wrapper "useNavContentOpacity")) + +(def on-pan-start (worklet-wrapper "onPanStart")) +(def on-pan-update (worklet-wrapper "onPanUpdate")) +(def on-pan-end (worklet-wrapper "onPanEnd")) diff --git a/src/utils/worklets/core.cljs b/src/utils/worklets/core.cljs new file mode 100644 index 00000000000..dcb75edd35c --- /dev/null +++ b/src/utils/worklets/core.cljs @@ -0,0 +1,18 @@ +(ns utils.worklets.core) + +(def core-js (js/require "../src/js/worklets/core.js")) + +(defn interpolate-value + [shared-value + input-range + output-range + extrapolation] + (.interpolateValue ^js core-js + shared-value + (clj->js input-range) + (clj->js output-range) + (clj->js extrapolation))) + +(defn apply-animations-to-style + [animations style] + (.applyAnimationsToStyle ^js core-js (clj->js animations) (clj->js style))) diff --git a/src/utils/worklets/header_animations.cljs b/src/utils/worklets/header_animations.cljs new file mode 100644 index 00000000000..d0dd15f7f04 --- /dev/null +++ b/src/utils/worklets/header_animations.cljs @@ -0,0 +1,7 @@ +(ns utils.worklets.header-animations) + +(def worklets (js/require "../src/js/worklets/header_animations.js")) + +(def use-blur-amount (.-useBlurAmount worklets)) + +(def use-layer-opacity (.-useLayerOpacity worklets)) diff --git a/src/utils/worklets/onboarding_carousel.cljs b/src/utils/worklets/onboarding_carousel.cljs new file mode 100644 index 00000000000..dea06f83450 --- /dev/null +++ b/src/utils/worklets/onboarding_carousel.cljs @@ -0,0 +1,11 @@ +(ns utils.worklets.onboarding-carousel) + +(def worklets (js/require "../src/js/worklets/onboarding_carousel.js")) + +(defn dynamic-progress-bar-width + [static-progress-bar-width progress] + (.dynamicProgressBarWidth ^js worklets static-progress-bar-width progress)) + +(defn carousel-left-position + [window-width progress is-dragging? drag-amount] + (.carouselLeftPosition ^js worklets window-width progress is-dragging? drag-amount)) diff --git a/src/utils/worklets/profile_header.cljs b/src/utils/worklets/profile_header.cljs new file mode 100644 index 00000000000..a5d1fc0a45b --- /dev/null +++ b/src/utils/worklets/profile_header.cljs @@ -0,0 +1,10 @@ +(ns utils.worklets.profile-header) + +(def ^:private worklets (js/require "../src/js/worklets/profile_header.js")) + +(defn profile-header-animation + [scroll-y threshold top-bar-height] + (.profileHeaderAnimation ^js worklets + scroll-y + threshold + top-bar-height)) diff --git a/src/utils/worklets/record_audio.cljs b/src/utils/worklets/record_audio.cljs new file mode 100644 index 00000000000..f83ae8e1f62 --- /dev/null +++ b/src/utils/worklets/record_audio.cljs @@ -0,0 +1,7 @@ +(ns utils.worklets.record-audio) + +(def ^:private record-audio-worklets (js/require "../src/js/worklets/record_audio.js")) + +(defn ring-scale + [scale substract] + (.ringScale ^js record-audio-worklets scale substract)) diff --git a/src/utils/worklets/shell.cljs b/src/utils/worklets/shell.cljs new file mode 100644 index 00000000000..747b64832b4 --- /dev/null +++ b/src/utils/worklets/shell.cljs @@ -0,0 +1,18 @@ +(ns utils.worklets.shell) + +(def bottom-tabs-worklets (js/require "../src/js/worklets/shell/bottom_tabs.js")) +(def home-stack-worklets (js/require "../src/js/worklets/shell/home_stack.js")) + +;; Derived values for Bottom tabs +(defn bottom-tab-icon-color + [id selected-stack-id selected-tab-color default-color] + (.bottomTabIconColor ^js bottom-tabs-worklets id selected-stack-id selected-tab-color default-color)) + +;; Derived values for stacks (communities, chat, wallet, browser) +(defn stack-opacity + [id selected-stack-id] + (.stackOpacity ^js home-stack-worklets id selected-stack-id)) + +(defn stack-z-index + [id selected-stack-id] + (.stackZIndex ^js home-stack-worklets id selected-stack-id)) diff --git a/status-go-version.json b/status-go-version.json new file mode 100644 index 00000000000..7763ddf481b --- /dev/null +++ b/status-go-version.json @@ -0,0 +1,9 @@ +{ + "_comment": "THIS SHOULD NOT BE EDITED BY HAND.", + "_comment": "Instead use: scripts/update-status-go.sh ", + "owner": "status-im", + "repo": "status-go", + "version": "v10.29.4", + "commit-sha1": "658d142d1664c87b9610e7ee8babf79827bc3a20", + "src-sha256": "1zcgrcfmy9qr5k558r66lh8wg4ma36zcgjgcmf1vzz7wablk9k2d" +} diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 00000000000..486f37d2aab --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,14 @@ +[supervisord] +nodaemon = true + +[program:fighweel] +command = make startdev-android-real +autorestart = true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 +stderr_logfile=/dev/stdout +stderr_logfile_maxbytes=0 + +[program:adbd] +command = adb -a -P 5037 server nodaemon +autorestart = true diff --git a/test-resources/override.js b/test-resources/override.js new file mode 100644 index 00000000000..224f9d7d973 --- /dev/null +++ b/test-resources/override.js @@ -0,0 +1,28 @@ +var Mocks = require('../target/mocks/mocks.js'); +var Module = require('module'); +process.env.TZ = 'Etc/UTC'; + +const originalLoader = Module._load; + +/* + Hook `require` so that RN abuse of require does not break when running tests in nodejs. +*/ + +Module._load = function hookedLoader(request, parent, isMain) { + if (request.match(/.jpeg|.jpg|.png|.mp4$/)) { + return { uri: request }; + } + + return originalLoader(request, parent, isMain); +}; + +var originalRequire = Module.prototype.require; + +Module.prototype.require = function (req) { + module = Mocks.mocks(req); + if (module == null) { + return originalRequire.apply(this, arguments); + } else { + return module; + } +}; diff --git a/test/appium/AppiumTests.iml b/test/appium/AppiumTests.iml deleted file mode 100644 index 4d44f624cff..00000000000 --- a/test/appium/AppiumTests.iml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/test/appium/README.md b/test/appium/README.md new file mode 100644 index 00000000000..d8623705845 --- /dev/null +++ b/test/appium/README.md @@ -0,0 +1,23 @@ +# E2E tests requirements + +### Environment variables +- WEB3_INFURA_PROJECT_ID +- ETHERSCAN_API_KEY + +1) If running on LambdaTest emulators: +- LAMBDA_TEST_USERNAME +- LAMBDA_TEST_ACCESS_KEY +2) If running with Testrail (`--testrail_report=True` param): +- TESTRAIL_PASS +- TESTRAIL_USER + +## Other +Userdata is stored in `tests.users` module (`test/appium/tests/users.py`, which is not committed to repo). + +So to launch e2e you need to copy `users.py` to `test/appium/tests/` to prevent `ImportError` + +If you are external contributor, you can contact us at [error-reports@status.im](mailto:error-reports@status.im) to get `users.py` + +More info on local setup for e2e can be found [here](https://notes.status.im/setup-e2e) + + diff --git a/test/appium/docker/Dockerfile b/test/appium/docker/Dockerfile new file mode 100644 index 00000000000..fdb80592666 --- /dev/null +++ b/test/appium/docker/Dockerfile @@ -0,0 +1,110 @@ +FROM ubuntu:16.04 + +LABEL maintainer "Lukasz Fryc " + +WORKDIR /root + +#================== +# General Packages +#------------------ +# openjdk-8-jdk +# Java +# ca-certificates +# SSL client +# tzdata +# Timezone +# zip +# Make a zip file +# unzip +# Unzip zip file +# curl +# Transfer data from or to a server +# wget +# Network downloader +# libqt5webkit5 +# Web content engine (Fix issue in Android) +# libgconf-2-4 +# Required package for chrome and chromedriver to run on Linux +# xvfb +# X virtual framebuffer +#================== +RUN apt-get -qqy update && \ + apt-get -qqy --no-install-recommends install \ + openjdk-8-jdk \ + ca-certificates \ + tzdata \ + zip \ + unzip \ + curl \ + wget \ + libqt5webkit5 \ + libgconf-2-4 \ + xvfb \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +#=============== +# Set JAVA_HOME +#=============== +ENV JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre" \ + PATH=$PATH:$JAVA_HOME/bin + +#===================== +# Install Android SDK +#===================== +ARG SDK_VERSION=sdk-tools-linux-4333796 +ARG ANDROID_BUILD_TOOLS_VERSION=28.0.1 +ARG ANDROID_PLATFORM_VERSION="android-27" + +ENV SDK_VERSION=$SDK_VERSION \ + ANDROID_BUILD_TOOLS_VERSION=$ANDROID_BUILD_TOOLS_VERSION \ + ANDROID_HOME=/root + +RUN wget -O tools.zip https://dl.google.com/android/repository/${SDK_VERSION}.zip && \ + unzip tools.zip && rm tools.zip && \ + chmod a+x -R $ANDROID_HOME && \ + chown -R root:root $ANDROID_HOME + +ENV PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin + +# https://askubuntu.com/questions/885658/android-sdk-repositories-cfg-could-not-be-loaded +RUN mkdir -p ~/.android && \ + touch ~/.android/repositories.cfg && \ + echo y | sdkmanager "platform-tools" && \ + echo y | sdkmanager "build-tools;$ANDROID_BUILD_TOOLS_VERSION" && \ + echo y | sdkmanager "platforms;$ANDROID_PLATFORM_VERSION" + +ENV PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools + +#==================================== +# Install latest nodejs, npm, appiuma +#==================================== +# ARG APPIUM_VERSION=1.7.2 +# ENV APPIUM_VERSION=$APPIUM_VERSION + +RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - +RUN apt-get -qqy install nodejs +RUN npm set maxsockets 3 && \ + npm install -g appium@1.7.2 --unsafe-perm=true --allow-root +RUN apt-get remove --purge -y npm && \ + apt-get autoremove --purge -y && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ + apt-get clean + +#================================== +# Fix Issue with timezone mismatch +#================================== +# ENV TZ="US/Pacific" +# RUN echo "${TZ}" > /etc/timezone + +#=============== +# Expose Ports +#--------------- +# 4723 +# Appium port +#=============== +EXPOSE 4723 + +COPY entry_point.sh /root/ +RUN chmod +x /root/entry_point.sh +ENTRYPOINT /root/entry_point.sh \ No newline at end of file diff --git a/test/appium/docker/HOWTO.md b/test/appium/docker/HOWTO.md new file mode 100644 index 00000000000..94d4e7425b4 --- /dev/null +++ b/test/appium/docker/HOWTO.md @@ -0,0 +1,66 @@ +## Instructions + +Use device with Android 7.1 or newer. + +1. Install needed tools + + - Install Docker https://docs.docker.com/install/ + - Install Python 3 + + Go to https://realpython.com/installing-python and follow the instructions. For macOS with Homebrew, you can run `brew install python3` to install it. + +2. Build Appium docker image + + - Make sure Docker app is running + - Build Appium image to have environment in which tests will be executed + + ``` + $ cd appium/docker + $ docker build -t "appium/appium:local" . + ``` + + Make sure all build steps were successful. You should see: + ``` + Successfully tagged appium/appium:local + ``` + +3. Find out IP address of the device + + On device, open wifi settings and click on the current network. Write down the IP address as it will be needed for running the battery test wirelessly. + +4. Run the battery test + + - Make sure the device is sufficiently charged + - Disconnect the device USB cable + - Create a directory that will be shared with the docker container. E.g. `mkdir /Users/lukas/Desktop/shared` + - Put .apk to test into the shared directory. E.g. `mv StatusIm-181109-092655-009d97-e2e.apk /Users/lukas/Desktop/shared` + - Run a test with using appium container + - `--device_ip` - IP address of the device (see 3.) + - `--apk=StatusIm-181109-092655-009d97-e2e.apk` - name of the apk file + - `--docker=True` - run the tests using appium docker container + - `--docker_shared_volume=/Users/lukas/Desktop/shared` - path to the shared directory + - `--bugreport=True` - generate bugreport file + + ``` + $ cd status-mobile/test/appium + $ python3 -m pytest --apk=StatusIm-181109-092655-009d97-e2e.apk --device_ip=192.168.0.104 --bugreport=True --docker=true --docker_shared_volume=/Users/lukas/Desktop/shared tests/atomic/transactions/test_wallet.py::TestTransactionWalletSingleDevice::test_send_eth_from_wallet_to_contact + ``` + - Follow the instructions shown in the command line + + **In case of issues:** + + Find out the Appium container id: `docker ps` and get the latest logs: `docker logs ebdf1761f51f` where `ebdf1761f51f` is the container id. + +5. Analyse test results + + The test generates Android bugreport that is saved in shared directory. It contains data about battery, cpu, memory, network usage, and more. See [energy-efficient-bok](https://github.com/status-im/energy-efficient-bok/blob/master/QA_Android.md) or [Battery Historian](https://developer.android.com/studio/profile/battery-historian) to learn how to analyse it. + + +## Issues with adb connect + +To run the battery test without charging the device, adb needs to connect to it wirelessly. To avoid wifi connection issues, you can connect to the device via bluetooth. + +macOS instructions: +- On device, enable bluetooth on your device in Android settings -> connections -> bluetooth +- On device, go to mobile hotspots and tethering and enable bluetooth tethering +- On macOS, go to the bluetooth settings and connect with the device (click "Connect to Network") diff --git a/test/appium/docker/entry_point.sh b/test/appium/docker/entry_point.sh new file mode 100644 index 00000000000..f0907e95e01 --- /dev/null +++ b/test/appium/docker/entry_point.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +APPIUM_LOG="/var/log/appium.log" +CMD="appium --log $APPIUM_LOG" + +$CMD diff --git a/test/appium/pom.xml b/test/appium/pom.xml deleted file mode 100644 index 2680f725e26..00000000000 --- a/test/appium/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - 4.0.0 - - im.status - AppiumTests - 1.0-SNAPSHOT - - - - io.appium - java-client - 5.0.0-BETA7 - - - org.seleniumhq.selenium - selenium-java - 3.3.1 - - - junit - junit - 4.12 - - - - com.saucelabs - sauce_junit - 2.1.23 - - - - - - - maven-compiler-plugin - 3.6.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.20 - - methods - 4 - - - - - \ No newline at end of file diff --git a/test/appium/pytest.ini b/test/appium/pytest.ini new file mode 100644 index 00000000000..10fff662117 --- /dev/null +++ b/test/appium/pytest.ini @@ -0,0 +1,10 @@ +[pytest] +norecursedirs = .git views +addopts = -s -v --tb=short --junitxml=result.xml --dist loadgroup -n 9 +junit_family=legacy +markers = + testrail_id: case ID in testrail + flaky: flaky tests for re-run if necessary + smoke: PR tests + nightly: nightly tests + secured: tests where SauceLabs session link is not posted in PR comments \ No newline at end of file diff --git a/test/appium/requirements.txt b/test/appium/requirements.txt new file mode 100644 index 00000000000..702b7673201 --- /dev/null +++ b/test/appium/requirements.txt @@ -0,0 +1,20 @@ +pytest~=7.4.0 +Appium-Python-Client~=2.11.1 +selenium~=4.11.2 +emoji~=0.5.0 +urllib3~=1.26.12 +requests~=2.31.0 +filelock~=3.16.1 +python-dateutil~=2.8.1 +ImageHash~=4.3.1 +Pillow~=10.0.0 +pytest-xdist==3.2.0 +pytz~=2020.4 +PyGithub==1.55 +typing-extensions==4.12.2 +mnemonic==0.21 +bip-utils==2.9.3 +testrail==0.3.15 +webcolors==24.8.0 +CurrencyConverter==0.17.34 +bs4==0.0.2 \ No newline at end of file diff --git a/test/appium/src/test/java/app/StatusApp.java b/test/appium/src/test/java/app/StatusApp.java deleted file mode 100644 index 2586ac952da..00000000000 --- a/test/appium/src/test/java/app/StatusApp.java +++ /dev/null @@ -1,17 +0,0 @@ -package app; - -import io.appium.java_client.AppiumDriver; -import screens.ChatScreen; - - -public class StatusApp { - - private final AppiumDriver driver; - - public StatusApp(AppiumDriver driver) { - this.driver = driver; - } - - public ChatScreen ChatScreen() { return new ChatScreen(driver); } - -} diff --git a/test/appium/src/test/java/screens/AbstractScreen.java b/test/appium/src/test/java/screens/AbstractScreen.java deleted file mode 100644 index 1c853b0d244..00000000000 --- a/test/appium/src/test/java/screens/AbstractScreen.java +++ /dev/null @@ -1,32 +0,0 @@ -package screens; - -import io.appium.java_client.AppiumDriver; -import io.appium.java_client.MobileElement; -import io.appium.java_client.pagefactory.AppiumFieldDecorator; -import org.openqa.selenium.By; -import org.openqa.selenium.OutputType; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.PageFactory; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.openqa.selenium.support.ui.WebDriverWait; - -public class AbstractScreen { - - protected final AppiumDriver driver; - protected WebDriverWait wait; - - - public AbstractScreen(AppiumDriver driver) { - this.driver = driver; - wait = new WebDriverWait(driver,45); - PageFactory.initElements(new AppiumFieldDecorator(driver), this); - } - - public MobileElement findElementWithTimeout(By by, int timeOutInSeconds) { - return (MobileElement)(new WebDriverWait(driver, timeOutInSeconds)).until(ExpectedConditions.presenceOfElementLocated(by)); - } - - protected void takeScreenShot(){ - driver.getScreenshotAs(OutputType.BASE64); - } -} diff --git a/test/appium/src/test/java/screens/ChatScreen.java b/test/appium/src/test/java/screens/ChatScreen.java deleted file mode 100644 index fd57729729a..00000000000 --- a/test/appium/src/test/java/screens/ChatScreen.java +++ /dev/null @@ -1,75 +0,0 @@ -package screens; - -import io.appium.java_client.AppiumDriver; -import io.appium.java_client.pagefactory.AndroidFindBy; -import org.openqa.selenium.By; -import org.openqa.selenium.InvalidSelectorException; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.support.ui.ExpectedConditions; -import org.springframework.util.Assert; - - -public class ChatScreen extends AbstractScreen { - - public ChatScreen(AppiumDriver driver){ - super(driver); - } - - - @AndroidFindBy(id="android:id/button1") - public WebElement btnContinue; - - @AndroidFindBy(accessibility="request-password") - public WebElement requestPassword; - - @AndroidFindBy(accessibility="chat-message-input") - public WebElement inputChatMessage; - - @AndroidFindBy(accessibility="chat-send-button") - public WebElement btnSend; - - @AndroidFindBy(accessibility="request-phone") - public WebElement btnRequestPhone; - - @AndroidFindBy(accessibility="chat-cancel-response-button") - public WebElement btnCancelPasswordRequest; - - public void continueForRootedDevice() - { - if (isElementPresent(By.id("android:id/button1"))) { - btnContinue.click(); - } - } - - public void createPassword(String password){ - requestPassword.click(); - for (int i=0; i<2; i++){ - inputChatMessage.sendKeys(password); - btnSend.click(); - } - } - - public void verifyPasswordIsSet(){ - //button "tap to enter phone number" is shown - wait.until(ExpectedConditions.elementToBeClickable(btnRequestPhone)); - - //screen contains text "Phew that was hard" TODO: replace hardcoded string "Find a bug" check - Assert.isTrue(driver.getPageSource().contains("Find a bug"),"Text Phew that was hard is not found on screen"); - } - - public void verifyPasswordRequestIsVisible(){ - //button "tap to enter phone number" is shown - wait.until(ExpectedConditions.elementToBeClickable(requestPassword)); - //screen contains text "Phew that was hard" TODO: replace hardcoded string "Welcome to Status " check - Assert.isTrue(driver.getPageSource().contains("Welcome to Status"),"Welcome to Status is not found on screen"); - } - - - public boolean isElementPresent(By locator) { - try { - return driver.findElements(locator).size() > 0; - } catch (InvalidSelectorException ex) { - throw ex; - } - } -} \ No newline at end of file diff --git a/test/appium/src/test/java/tests/AbstractTest.java b/test/appium/src/test/java/tests/AbstractTest.java deleted file mode 100644 index a708907aafe..00000000000 --- a/test/appium/src/test/java/tests/AbstractTest.java +++ /dev/null @@ -1,62 +0,0 @@ -package tests; - -import app.StatusApp; -import com.saucelabs.common.SauceOnDemandSessionIdProvider; -import io.appium.java_client.android.AndroidDriver; -import org.junit.*; -import org.junit.rules.TestName; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.RemoteWebDriver; -import utility.AppiumDriverBuilder; -import java.net.MalformedURLException; -import java.net.URL; -import com.saucelabs.junit.SauceOnDemandTestWatcher; -import com.saucelabs.common.SauceOnDemandAuthentication; - -public abstract class AbstractTest implements SauceOnDemandSessionIdProvider { - - private AndroidDriver driver; - protected StatusApp app; - - public static final String USERNAME = System.getenv("SAUCE_USERNAME"); - public static final String ACCESS_KEY = System.getenv("SAUCE_ACCESS_KEY"); - public static final String URL = "https://" + USERNAME + ":" + ACCESS_KEY + "@ondemand.saucelabs.com:443/wd/hub"; - // public String buildTag = System.getenv("JOB_NAME") + "__" + System.getenv("BUILD_NUMBER"); - - protected String sessionId; - - public SauceOnDemandAuthentication authentication = new SauceOnDemandAuthentication(USERNAME, ACCESS_KEY); - - @Rule - public SauceOnDemandTestWatcher resultReportingTestWatcher = new SauceOnDemandTestWatcher(this, authentication); - - @Rule - public TestName name = new TestName() { - public String getMethodName() { - return String.format("%s", super.getMethodName()); - } - }; - - - @Before - public void SetupRemote() throws MalformedURLException { - driver = AppiumDriverBuilder.forAndroid() - .withEndpoint(new URL(URL)) - .build(); - - app = new StatusApp(driver); - this.sessionId = (((RemoteWebDriver) driver).getSessionId()).toString(); - } - - @After - public void teardown(){ - //close the app - driver.quit(); - } - - @Override - public String getSessionId() { - return sessionId; - } - -} diff --git a/test/appium/src/test/java/tests/InitialRunTest.java b/test/appium/src/test/java/tests/InitialRunTest.java deleted file mode 100644 index ae5a0318aeb..00000000000 --- a/test/appium/src/test/java/tests/InitialRunTest.java +++ /dev/null @@ -1,28 +0,0 @@ -package tests; - - -import org.junit.*; - - - -public class InitialRunTest extends AbstractTest { - - - @Test - public void canRunAppTest() - { - app.ChatScreen().continueForRootedDevice(); - app.ChatScreen().verifyPasswordRequestIsVisible(); - } - - @Test - public void canCreatePasswordTest() - { - - app.ChatScreen().continueForRootedDevice(); - app.ChatScreen().createPassword("password"); - app.ChatScreen().verifyPasswordIsSet(); - } - - -} \ No newline at end of file diff --git a/test/appium/src/test/java/utility/AppiumDriverBuilder.java b/test/appium/src/test/java/utility/AppiumDriverBuilder.java deleted file mode 100644 index ed42a704faa..00000000000 --- a/test/appium/src/test/java/utility/AppiumDriverBuilder.java +++ /dev/null @@ -1,58 +0,0 @@ -package utility; - - -import io.appium.java_client.AppiumDriver; -import io.appium.java_client.android.AndroidDriver; -import org.openqa.selenium.WebElement; -import org.openqa.selenium.remote.DesiredCapabilities; - - -import java.net.MalformedURLException; -import java.net.URL; -import java.sql.Timestamp; - - -public abstract class AppiumDriverBuilder { - - public String jobName = System.getenv("JOB_NAME"); - public String buildNumber = System.getenv("BUILD_NUMBER"); - protected URL endpoint; - DesiredCapabilities capabilities = new DesiredCapabilities(); - - public static AndroidDriverBuilder forAndroid() throws MalformedURLException { - return new AndroidDriverBuilder(); - } - - public static class AndroidDriverBuilder extends AppiumDriverBuilder { - - - - public AndroidDriver build() { - capabilities.setCapability("appiumVersion", "1.6.3"); - capabilities.setCapability("deviceName","Samsung Galaxy S4 Emulator"); - capabilities.setCapability("deviceOrientation", "portrait"); - capabilities.setCapability("browserName", ""); - capabilities.setCapability("platformVersion","4.4"); - capabilities.setCapability("platformName","Android"); - - jobName = (null == jobName) ? "Local run " : jobName; - buildNumber = (null == buildNumber) ? new Timestamp(System.currentTimeMillis()).toString() : buildNumber; - capabilities.setCapability("build", jobName + "__" + buildNumber); - - //read url to apk file from Jenkins property or from maven parameter - // example of maven run: mvn -DapkUrl=http://artifacts.status.im:8081/artifactory/nightlies-local/im.status.ethereum-baebbe.apk test - capabilities.setCapability("app", System.getProperty("apkUrl")); - return new AndroidDriver(endpoint, capabilities); - } - } - - public SELF withEndpoint(URL endpoint) { - this.endpoint = endpoint; - - return (SELF) this; - } - - public abstract DRIVER build(); - -} - diff --git a/test/appium/support/api/lightweight_browser_api.py b/test/appium/support/api/lightweight_browser_api.py new file mode 100644 index 00000000000..83e99b710ab --- /dev/null +++ b/test/appium/support/api/lightweight_browser_api.py @@ -0,0 +1,54 @@ +import requests +from bs4 import BeautifulSoup +import re + + +class LightweightBrowserHandler: + + def __init__(self, base_url: str): + self.base_url = base_url + + + def load_tx_etherscan_page(self, tx_hash: str) -> BeautifulSoup: + headers = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", + "Accept-Language": "en-US,en;q=0.9", + "Cache-Control": "no-cache", + "Connection": "keep-alive", + "DNT": "1", + } + tx_url = '%s/tx/%s' % (self.base_url, tx_hash) + response = requests.get(tx_url, headers=headers, timeout=10) + response.raise_for_status() + return BeautifulSoup(response.text, "html.parser") + + def extract_tx_details(self, soup: BeautifulSoup) -> dict: + tx_fee_elem = soup.select_one("#txfeebutton") + tx_fee = tx_fee_elem.text.strip() if tx_fee_elem else "Not Found" + + confirmation_time_elem = soup.find(string=re.compile('Confirmed within')) + confirmation_time = ( + confirmation_time_elem.text.replace("Confirmed within", "").strip() + if confirmation_time_elem + else "Not Found" + ) + + return {'fee': tx_fee, 'confirmation_time': confirmation_time} + + def find_text(self, soup: BeautifulSoup, text: str) -> bool: + return soup.find(string=re.compile(re.escape(text))) is not None + + def find_success_badge(self, soup: BeautifulSoup): + for span in soup.find_all("span", class_=lambda x: x and "text-green-600" in x): + if "Success" in span.get_text(): + return span + return None + + def get_fee_and_confirmation_time(self, tx_url: str) -> dict: + try: + soup = self.load_tx_etherscan_page(tx_url) + return self.extract_tx_details(soup) + except requests.RequestException as e: + print(f"An error occurred while fetching transaction details: {e}") + return {'fee': None, 'confirmation_time': None} + \ No newline at end of file diff --git a/test/appium/support/api/network_api.py b/test/appium/support/api/network_api.py new file mode 100644 index 00000000000..d3ea2cbbbbb --- /dev/null +++ b/test/appium/support/api/network_api.py @@ -0,0 +1,103 @@ +import logging +import time +from datetime import datetime +from json import JSONDecodeError +from os import environ +from typing import List +import json + +import pytest +import pytz +import requests +from selenium.common import TimeoutException + +import tests + + +class NetworkApi: + def __init__(self): + self.network_url = 'http://api-sepolia.arbiscan.io/api' + self.api_key = environ.get('ETHERSCAN_API_KEY') + + def log(self, text: str): + tests.test_suite_data.current_test.testruns[-1].steps.append(text) + logging.info(text) + + def send_etherscan_request(self, params): + params['apikey'] = self.api_key + try: + response = requests.get(url=self.network_url, params=params).json() + if response: + return response['result'] + except TypeError as e: + self.log("Check response from etherscan API. Returned values do not match expected. %s" % str(e)) + except JSONDecodeError as e: + self.log("No valid JSON response from Etherscan: %s " % str(e)) + pass + + def get_token_transactions(self, address: str) -> List[dict]: + params = {'module': 'account', 'action': 'tokentx', 'address': address, 'sort': 'desc'} + return self.send_etherscan_request(params) + + def get_transactions(self, address: str) -> List[dict]: + params = {'module': 'account', 'action': 'txlist', 'address': address, 'page': 1, 'offset': 10, 'sort': 'desc'} + return self.send_etherscan_request(params) + + def get_balance(self, address: str): + params = {'module': 'account', 'action': 'balance', 'address': address, 'tag': 'latest'} + balance = self.send_etherscan_request(params) + if balance: + self.log('Balance is %s Gwei' % balance) + return int(balance) / 1000000000000000000 + else: + self.log('Cannot extract balance!') + + def wait_for_confirmation_of_transaction(self, address, tx_time, confirmations=7, token=False): + expected_tx_timestamp = datetime.strptime(tx_time, "%Y-%m-%dT%H:%M:%S%z").replace(tzinfo=pytz.UTC) + start_time = time.time() + if token: + token_info = "token transaction" + else: + token_info = "ETH transaction" + self.log('Waiting for %s of %s to have %s confirmations' % (token_info, address, confirmations)) + while round(time.time() - start_time, ndigits=2) < 600: # should be < idleTimeout capability + if token: + transaction = self.get_token_transactions(address)[0] + else: + transaction = self.get_transactions(address)[0] + tx_timestamp = datetime.fromtimestamp(int(transaction['timeStamp'])).replace(tzinfo=pytz.UTC) + if tx_timestamp > expected_tx_timestamp: + if int(transaction['confirmations']) >= confirmations: + return + time.sleep(20) + self.log( + 'Expected amount of confirmations is %s, in fact %s' % (confirmations, transaction['confirmations'])) + pytest.fail('The last transaction was not confirmed, address is %s, still has %s confirmations' % ( + address, int(transaction['confirmations']))) + + def wait_for_balance_to_be(self, address: str, expected_balance: int): + expected_balance = round(expected_balance, 4) + for _ in range(5): + balance = round(self.get_balance(address), 4) + if balance == expected_balance: + return + time.sleep(20) + raise TimeoutException( + 'balance is not updated on Etherscan, it is %s but expected to be %s' % (balance, expected_balance)) + + +class SepoliaNetworkApi: + def __init__(self): + self.rpc_url = 'https://ethereum-sepolia.rpc.subquery.network/public' + + def is_tx_successful(self, tx_hash): + response = requests.post(headers={"Content-Type": "application/json"}, + url=self.rpc_url, + data=json.dumps( + {"jsonrpc": "2.0", "method": "eth_getTransactionReceipt", "params": [tx_hash], + "id": 1})).json() + result = response.get('result') + if result is not None: + return result.get('status') == '0x1' + return None + \ No newline at end of file diff --git a/test/appium/support/base_test_report.py b/test/appium/support/base_test_report.py new file mode 100644 index 00000000000..aebd581300f --- /dev/null +++ b/test/appium/support/base_test_report.py @@ -0,0 +1,123 @@ +import json +import os +import re +import urllib + +from support.lambda_test import get_session_info +from support.test_data import SingleTestData + + +class BaseTestReport: + TEST_REPORT_DIR = "%s/../report" % os.path.dirname(os.path.abspath(__file__)) + + def __init__(self): + self.init_report() + + def init_report(self): + if not os.path.exists(self.TEST_REPORT_DIR): + os.makedirs(self.TEST_REPORT_DIR) + # delete all old files in report dir + file_list = [f for f in os.listdir(self.TEST_REPORT_DIR)] + for f in file_list: + os.remove(os.path.join(self.TEST_REPORT_DIR, f)) + + def get_test_report_file_path(self, test_name): + file_name = "%s.json" % test_name + return os.path.join(self.TEST_REPORT_DIR, file_name) + + def save_logs(self, logs: dict): + logs_paths = {} + for log_name, log_content in logs.items(): + log_path = os.path.join(self.TEST_REPORT_DIR, log_name) + with open(log_path, "wb") as archive_file: + archive_file.write(log_content) + logs_paths[log_name] = log_path + return logs_paths + + def save_test(self, test, geth: dict = None, requests_log: dict = None): + for log in geth, requests_log: + if log: + logs_paths = self.save_logs(log) + else: + if hasattr(test, 'logs_paths'): + logs_paths = test.logs_paths + else: + logs_paths = '' + + file_path = self.get_test_report_file_path(test.name) + test_dict = { + 'testrail_case_id': test.testrail_case_id, + 'name': test.name, + 'logs_paths': logs_paths, + 'testruns': list(), + 'group_name': test.group_name, + 'secured': test.secured + } + for testrun in test.testruns: + test_dict['testruns'].append(testrun.__dict__) + json.dump(test_dict, open(file_path, 'w')) + + def get_all_tests(self): + tests = list() + file_list = [f for f in os.listdir(self.TEST_REPORT_DIR) if f.endswith('json')] + for file_name in file_list: + file_path = os.path.join(self.TEST_REPORT_DIR, file_name) + test_data = json.load(open(file_path)) + testruns = list() + for testrun_data in test_data['testruns']: + testruns.append(SingleTestData.TestRunData( + steps=testrun_data['steps'], + jobs=testrun_data['jobs'], + error=testrun_data['error'], + first_commands=testrun_data['first_commands'], + xfail=testrun_data['xfail'], + run=testrun_data['run'])) + tests.append(SingleTestData(name=test_data['name'], + logs_paths=test_data['logs_paths'], + testruns=testruns, + testrail_case_id=test_data['testrail_case_id'], + grop_name=test_data['group_name'], + secured=test_data['secured'])) + return tests + + def get_tests_by_status(self): + tests = self.get_all_tests() + passed, failed, xfailed = list(), list(), list() + for test in tests: + if self.is_test_successful(test): + passed.append(test) + else: + if test.testruns[-1].xfail: + xfailed.append(test) + else: + failed.append(test) + return passed, failed, xfailed + + def get_lambda_test_job_url(self, job_id, first_command=0): + return "https://appautomation.lambdatest.com/test?testID=" + get_session_info(job_id)['test_id'] + + @staticmethod + def get_jenkins_link_to_rerun_e2e(branch_name="develop", pr_id="", tr_case_ids=""): + branch_name = urllib.parse.quote(branch_name) + return 'https://ci.status.im/job/status-mobile/job/e2e/job/status-app-prs-rerun/parambuild/' \ + '?BRANCH_NAME=%s&PR_ID=%s&APK_NAME=%s.apk&TR_CASE_IDS=%s' % (branch_name, pr_id, pr_id, tr_case_ids) + + @staticmethod + def is_test_successful(test): + # Test passed if last testrun has passed + return test.testruns[-1].error is None + + @staticmethod + def separate_xfail_error(error): + issue_id_list = re.findall(r'#\d+', error) + issue_id = issue_id_list[0] if issue_id_list else '' + + xfail_error = re.findall(r'\[\[.*\]\]', error) + if xfail_error: + no_code_error_str = xfail_error[0] + main_error = error.replace(no_code_error_str, '') + else: + no_code_error_str = '' + main_error = error + + return main_error, no_code_error_str, issue_id diff --git a/test/appium/support/github_report.py b/test/appium/support/github_report.py new file mode 100644 index 00000000000..5c8de23a3cb --- /dev/null +++ b/test/appium/support/github_report.py @@ -0,0 +1,174 @@ +import os + +from support.base_test_report import BaseTestReport +from support.testrail_report import TestrailReport + + +class GithubHtmlReport(BaseTestReport): + TEST_REPORT_DIR = "%s/../report" % os.path.dirname(os.path.abspath(__file__)) + + def __init__(self): + super(GithubHtmlReport, self).__init__() + + def list_of_failed_testrail_ids(self, tests_data): + ids_failed_test = [] + for i, test in enumerate(tests_data): + if test.testrail_case_id: + ids_failed_test.append(test.testrail_case_id) + return ','.join(map(str, ids_failed_test)) + + def build_html_report(self, run_id): + tests = self.get_all_tests() + passed, failed, xfailed = self.get_tests_by_status() + not_executed_tests = TestrailReport().get_not_executed_tests(run_id) + + if len(tests) > 0: + title_html = "## %.0f%% of end-end tests have passed\n" % (len(passed) / len(tests) * 100) + summary_html = "```\n" + summary_html += "Total executed tests: %d\n" % len(tests) + summary_html += "Failed tests: %d\n" % len(failed) + summary_html += "Expected to fail tests: %d\n" % len(xfailed) + summary_html += "Passed tests: %d\n" % len(passed) + if not_executed_tests: + summary_html += "Not executed tests: %d\n" % len(not_executed_tests) + summary_html += "```\n" + not_executed_tests_html = str() + failed_tests_html = str() + xfailed_tests_html = str() + passed_tests_html = str() + if not_executed_tests: + not_executed_tests_html = self.build_tests_table_html(not_executed_tests, run_id, + not_executed_tests=True) + summary_html += "```\n" + summary_html += 'IDs of not executed tests: %s \n' % ','.join([str(i) for i in not_executed_tests]) + summary_html += "```\n" + if failed: + failed_tests_html = self.build_tests_table_html(failed, run_id, failed_tests=True) + summary_html += "```\n" + summary_html += 'IDs of failed tests: %s \n' % self.list_of_failed_testrail_ids(failed) + summary_html += "```\n" + if xfailed: + xfailed_tests_html = self.build_tests_table_html(xfailed, run_id, xfailed_tests=True) + summary_html += "```\n" + summary_html += 'IDs of expected to fail tests: %s \n' % self.list_of_failed_testrail_ids(xfailed) + summary_html += "```\n" + if passed: + passed_tests_html = self.build_tests_table_html(passed, run_id, failed_tests=False) + return title_html + summary_html + not_executed_tests_html + failed_tests_html + xfailed_tests_html \ + + passed_tests_html + else: + return None + + def build_tests_table_html(self, tests, run_id, failed_tests=False, xfailed_tests=False, not_executed_tests=False): + if failed_tests: + tests_type = "Failed tests" + elif not_executed_tests: + tests_type = "Not executed tests" + elif xfailed_tests: + tests_type = "Expected to fail tests" + else: + tests_type = "Passed tests" + html = "

%s (%d)

" % (tests_type, len(tests)) + html += "
" + html += "Click to expand" + html += "
" + + from tests import pytest_config_global + pr_id = pytest_config_global['pr_number'] + + from github import Github + from conftest import github_token + branch_name = Github(github_token).get_user('status-im').get_repo('status-mobile').get_pull(int(pr_id)).head.ref + + if not_executed_tests: + html += "
  • Rerun not executed tests
  • " % self.get_jenkins_link_to_rerun_e2e( + branch_name=branch_name, + pr_id=pr_id, + tr_case_ids=','.join([str(i) for i in tests])) + + if failed_tests: + html += "
  • Rerun failed tests
  • " % self.get_jenkins_link_to_rerun_e2e( + branch_name=branch_name, + pr_id=pr_id, + tr_case_ids=','.join([str(test.testrail_case_id) for test in tests])) + + if not not_executed_tests: + groups = {i: list() for i in set([test.group_name for test in tests])} + for i in tests: + groups[i.group_name].append(i) + + html += "
    " + + for class_name, tests_list in groups.items(): + if class_name: + html += "

    Class %s:

    " % class_name + else: + html += "

    Single device tests:

    " + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + html += "" + for i, test in enumerate(tests_list): + html += self.build_test_row_html(i, test, run_id) + html += "" + html += "
    " + html += "
    " + return html + + def build_test_row_html(self, index, test, run_id): + test_rail_link = TestrailReport().get_test_result_link(run_id, test.testrail_case_id) + if test_rail_link: + html = "%s. %s, id: %s " % ( + index + 1, test_rail_link, test.name, test.testrail_case_id) + else: + html = "%d. %s (TestRail link is not found)" % (index + 1, test.name) + html += "" + test_steps_html = list() + last_testrun = test.testruns[-1] + for step in last_testrun.steps: + test_steps_html.append("
    %s
    " % step) + if last_testrun.error: + error = last_testrun.error + if test_steps_html: + html += "

    " + html += "

    " + # last 2 steps as summary + html += "%s" % ''.join(test_steps_html[-2:]) + html += "
    " + html += "

    " + code_error, no_code_error_str, _ = self.separate_xfail_error(error) + if no_code_error_str: + html += "\n\n```\n%s\n```\n\n" % code_error + html += "%s" % no_code_error_str + else: + html += "\n\n```\n%s\n```\n\n" % error.replace("[[", "[[").replace("]]", "]]") + html += "

    " + if last_testrun.jobs and not test.secured: + html += self.build_device_sessions_html(last_testrun) + html += "" + return html + + def build_device_sessions_html(self, test_run): + html = "Device sessions" + html += "

      " + for job_id, i in test_run.jobs.items(): + html += "

      " + html += "Device %d:" % i + html += "

        " + if test_run.first_commands: + try: + first_command = test_run.first_commands[job_id] + except KeyError: + first_command = 0 + else: + first_command = 0 + html += "
      • Steps, video, logs
      • " % self.get_lambda_test_job_url(job_id, first_command) + # if test_run.error: + # html += "
      • Failure screenshot
      • " % self.get_sauce_final_screenshot_url(job_id) + html += "

      " + html += "

    " + return html diff --git a/test/appium/support/helpers.py b/test/appium/support/helpers.py new file mode 100644 index 00000000000..86d1bcd3bb8 --- /dev/null +++ b/test/appium/support/helpers.py @@ -0,0 +1,15 @@ +from bip_utils import Bip39SeedGenerator, Bip44, Bip44Coins, Bip44Changes + + +def generate_wallet_address(passphrase: str, number: int = 1): + # Derive accounts using the standard MetaMask path + seed_bytes = Bip39SeedGenerator(passphrase).Generate() + bip44_mst_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.ETHEREUM) + + # Generate first n addresses + expected_addresses = list() + for i in range(number): + bip44_acc_ctx = bip44_mst_ctx.Purpose().Coin().Account(0).Change(Bip44Changes.CHAIN_EXT).AddressIndex(i) + expected_addresses.append(bip44_acc_ctx.PublicKey().ToAddress().lower()) + + return expected_addresses diff --git a/test/appium/support/lambda_test.py b/test/appium/support/lambda_test.py new file mode 100644 index 00000000000..ff5c11b2438 --- /dev/null +++ b/test/appium/support/lambda_test.py @@ -0,0 +1,38 @@ +import requests + +from conftest import lambda_test_username, lambda_test_access_key +from tests import test_suite_data + +session = requests.Session() +session.auth = (lambda_test_username, lambda_test_access_key) + + +def upload_apk(apk_file_path): + resp = session.post( + url="https://manual-api.lambdatest.com/app/upload/virtualDevice", + files={'appFile': open(apk_file_path, 'rb')}, + data={'name': test_suite_data.apk_name} + ) + assert resp.status_code == 200 + return resp.json()['app_url'] + + +def update_session(session_id, session_name, status): + resp = session.get( + url="https://mobile-api.lambdatest.com/mobile-automation/api/v1/sessions/%s" % session_id, + data={ + "name": session_name # , "status_ind": status + } + ) + assert resp.status_code == 200 + + +def get_session_info(session_id): + resp = session.get(url="https://mobile-api.lambdatest.com/mobile-automation/api/v1/sessions/%s" % session_id) + assert resp.status_code == 200 + return resp.json()['data'] + + +def upload_image(): + 'curl -u "yevheniia:fZaXHEAFEWOVCZLnSVrwHY11eJGsWAknibtG572PiZsvT1h57V" -X POST https://mobile-mgm.lambdatest.com/mfs/v1.0/media/upload -F media_file=@/Users/yberdnyk/Downloads/aaa.png -F type=image -F custom_id=SampleImage' + pass diff --git a/test/appium/support/test_data.py b/test/appium/support/test_data.py new file mode 100644 index 00000000000..80aefd38a4c --- /dev/null +++ b/test/appium/support/test_data.py @@ -0,0 +1,41 @@ +from typing import Dict + + +class SingleTestData(object): + def __init__(self, name, testruns, testrail_case_id, logs_paths, grop_name, secured): + self.testrail_case_id = testrail_case_id + self.name = name + self.testruns = testruns + self.logs_paths = logs_paths + self.group_name = grop_name + self.secured = secured + + class TestRunData(object): + def __init__(self, steps, jobs, error, first_commands: Dict[str, int], xfail, run): + self.steps = steps + self.jobs = jobs + self.error = error + self.first_commands = first_commands + self.xfail = xfail + self.run = run + + def create_new_testrun(self): + self.testruns.append(SingleTestData.TestRunData( + steps=list(), jobs=dict(), error=None, first_commands=dict(), xfail='', run=True + )) + + +class TestSuiteData(object): + def __init__(self): + self.apk_name = None + self.current_test = None + self.tests = list() + + def set_current_test(self, test_name, testrail_case_id, secured): + existing_test = next((test for test in self.tests if test.name == test_name), None) + if existing_test: + self.current_test = existing_test + else: + test = SingleTestData(test_name, list(), testrail_case_id, list(), None, secured) + self.tests.append(test) + self.current_test = test diff --git a/test/appium/support/testrail_report.py b/test/appium/support/testrail_report.py new file mode 100644 index 00000000000..9bc0a49c676 --- /dev/null +++ b/test/appium/support/testrail_report.py @@ -0,0 +1,299 @@ +import base64 +import json +import logging +from json import JSONDecodeError +from os import environ +from sys import argv + +import emoji +import requests +from testrail.client import TestRail + +from support.base_test_report import BaseTestReport + + +class TestrailReport(BaseTestReport): + + def __init__(self): + super(TestrailReport, self).__init__() + + self.password = environ.get('TESTRAIL_PASS') + self.user = environ.get('TESTRAIL_USER') + + self.run_id = None + self.suite_id = 5274 + self.project_id = 14 + + self.outcomes = { + 'passed': 1, + 'failed': 5, + 'undefined_fail': 10, + 'skipped': 11} + + self.headers = dict() + self.headers['Authorization'] = 'Basic %s' % str( + base64.b64encode(bytes('%s:%s' % (self.user, self.password), 'utf-8')), 'ascii').strip() + self.headers['Content-Type'] = 'application/json' + self.headers['x-api-ident'] = 'beta' + + self.url = 'https://ethstatus.testrail.net' + self.api_url = self.url + '/index.php?/api/v2/' + self.client = TestRail(email=self.user, key=self.password, url=self.url, project_id=self.project_id) + + def get(self, method): + rval = self.client.api._get(method) + if 'error' in rval: + logging.error("Failed TestRail request: %s" % rval['error']) + return rval + + def post(self, method, data): + data = bytes(json.dumps(data), 'utf-8') + return self.client.api._post(method, data=json.loads(data)) + + def add_attachment(self, method, path): + files = {'attachment': (open(path, 'rb'))} + result = requests.post(self.api_url + method, headers={'Authorization': self.headers['Authorization']}, + files=files) + files['attachment'].close() + try: + return result.json() + except JSONDecodeError: + pass + + def get_suites(self): + return self.get('get_suites/%s' % self.project_id) + + def get_tests(self): + return self.get('get_tests/%s' % self.run_id)['tests'] + + def get_milestones(self): + return self.get('get_milestones/%s' % self.project_id)['milestones'] + + def get_runs(self, pr_number): + return [i for i in self.get('get_runs/%s' % self.project_id)['runs'] if 'PR-%s ' % pr_number in i['name']] + + def get_run(self, run_id: int): + return self.get('get_run/%s' % run_id) + + def get_last_pr_run(self, pr_number): + run_id = max([run['id'] for run in self.get_runs(pr_number)]) + return self.get_run(run_id=run_id) + + @property + def actual_milestone_id(self): + return self.get_milestones()[-1]['id'] + + def add_run(self, run_name): + request_body = {'suite_id': self.suite_id, + 'name': run_name, + 'milestone_id': self.actual_milestone_id, + 'case_ids': self.get_regression_cases(), + 'include_all': False} + run = self.post('add_run/%s' % self.project_id, request_body) + try: + self.run_id = run['id'] + except KeyError: + print("TestRail error when creating a run: %s" % run) + print("Testrun: %sruns/view/%s" % (self.url, self.run_id)) + + def get_cases(self, section_id): + return self.get('get_cases/%s&suite_id=%s§ion_id=%s' % (self.project_id, self.suite_id, section_id))[ + 'cases'] + + def get_regression_cases(self): + test_categories = dict() + test_categories['all'] = 50955 + test_categories['one_to_one_chat'] = 50956 + test_categories['group_chat'] = 50964 + test_categories['community_multiple'] = 50982 + test_categories['community_single'] = 50983 + test_categories['activity_centre_contact_request'] = 50984 + test_categories['activity_centre_other'] = 51005 + test_categories['deep_links'] = 51535 + test_categories['wallet'] = 59443 + test_categories['fallback'] = 63472 + test_categories['android_versions'] = 63809 + test_categories['profile'] = 63854 + test_categories['real_tx'] = 63867 + test_categories['wallet_connect'] = 64122 + + case_ids = list() + for arg in argv: + if "run_testrail_ids" in arg: + key, value = arg.split('=') + case_ids = value.split(',') + if len(case_ids) == 0: + if 'smoke' in argv: + for category in test_categories.values(): + case_ids.extend([case['id'] for case in self.get_cases(category) if case['type_id'] == 11]) + else: + for category in test_categories.values(): + case_ids.extend([case['id'] for case in self.get_cases(category)]) + return case_ids + + def add_results(self): + data = list() + all_tests = self.get_all_tests() + for test in all_tests: + test_steps = "# Steps: \n" + devices = str() + last_testrun = test.testruns[-1] + for step in last_testrun.steps: + test_steps += step + "\n" + for i, device in enumerate(last_testrun.jobs): + if last_testrun.first_commands: + try: + first_command = last_testrun.first_commands[device] + except KeyError: + first_command = 0 + else: + first_command = 0 + try: + devices += "# [Device %d](%s) \n" % (i + 1, self.get_lambda_test_job_url(job_id=device, + first_command=first_command)) + except KeyError: + devices += "# Device %s: LambdaTest session was not found \n" % (i + 1) + comment = str() + if test.group_name: + comment += "# Class: %s \n" % test.group_name + if last_testrun.error: + full_error = last_testrun.error + (code_error, no_code_error_str, issue_id) = self.separate_xfail_error(full_error) + if issue_id: + test_rail_xfail = self.make_error_with_gh_issue_link(no_code_error_str, issue_id) + error = "%s %s" % (code_error, test_rail_xfail) + else: + error = full_error + error = error.replace("[[", "**").replace("]]", "**") + comment += '%s' % ('# Error: \n %s \n' % emoji.demojize(error)) + devices + test_steps + else: + comment += devices + test_steps + + if last_testrun.xfail and not last_testrun.run: + status_id = self.outcomes['skipped'] + elif last_testrun.error: + if last_testrun.xfail: + status_id = self.outcomes['failed'] + else: + status_id = self.outcomes['undefined_fail'] + else: + status_id = self.outcomes['passed'] + data.append( + {'case_id': test.testrail_case_id, + 'status_id': status_id, + 'comment': comment}) + + results = self.post('add_results_for_cases/%s' % self.run_id, data={"results": data}) + try: + results[0] + except (IndexError, KeyError): + print("Got TestRail error when adding results: \n%s" % results) + + for test in all_tests: + last_testrun = test.testruns[-1] + if last_testrun.error: + try: + device = list(last_testrun.jobs.keys())[0] + except IndexError: + continue + for res in results: + if ('setup failed' in last_testrun.error and self.get_lambda_test_job_url(job_id=device) in res[ + 'comment']) or test.name in res['comment']: + try: + for log in test.logs_paths.keys(): + self.add_attachment(method='add_attachment_to_result/%s' % str(res['id']), + path=test.logs_paths[log]) + except (AttributeError, FileNotFoundError): + pass + break + + self.change_test_run_description() + + def change_test_run_description(self): + tests = self.get_all_tests() + passed, failed, xfailed = self.get_tests_by_status() + not_executed_tests = self.get_not_executed_tests(self.run_id) + final_description = "Nothing to report this time..." + if len(tests) > 0: + description_title = "# %.0f%% of end-end tests have passed\n" % (len(passed) / len(tests) * 100) + description_title += "\n" + description_title += "Total executed tests: %d\n" % len(tests) + description_title += "Failed tests: %d\n" % len(failed) + description_title += "Expected to fail tests: %d\n" % len(xfailed) + description_title += "Passed tests: %d\n" % len(passed) + if not_executed_tests: + description_title += "Not executed tests: %d\n" % len(not_executed_tests) + description_title += "\n" + ids_failed_test = [] + single_devices_block, group_blocks, case_info = str(), dict(), str() + if failed: + for test in failed: + if test.group_name: + group_blocks[test.group_name] = "\n-------\n## Class: %s:\n" % test.group_name + for test in failed: + last_testrun = test.testruns[-1] + test_rail_link = self.get_test_result_link(self.run_id, test.testrail_case_id) + ids_failed_test.append(test.testrail_case_id) + case_title = '\n' + case_title += '-------\n' + case_title += "### ID %s: [%s](%s) \n" % (test.testrail_case_id, test.name, test_rail_link) + full_error = last_testrun.error[-255:] + (code_error, no_code_error_str, issue_id) = self.separate_xfail_error(full_error) + if issue_id: + test_rail_xfail = self.make_error_with_gh_issue_link(no_code_error_str, issue_id) + error = "```%s```\n **%s** \n" % (code_error, test_rail_xfail) + else: + error = "```%s```\n **%s** \n" % (code_error, no_code_error_str) + for job_id, f in last_testrun.jobs.items(): + if last_testrun.first_commands: + try: + first_command = last_testrun.first_commands[job_id] + except KeyError: + first_command = 0 + else: + first_command = 0 + job_url = self.get_lambda_test_job_url(job_id=job_id, first_command=first_command) + case_info = "Logs for device %d: [steps](%s)" % (f, job_url) + + if test.group_name: + group_blocks[test.group_name] += case_title + error + case_info + else: + single_devices_block += case_title + error + case_info + description_title += '## Failed tests: %s \n' % ','.join(map(str, ids_failed_test)) + if not_executed_tests: + description_title += "## Not executed tests: %s\n" % ','.join([str(i) for i in not_executed_tests]) + final_description = description_title + single_devices_block + ''.join([i for i in group_blocks.values()]) + + request_body = {'description': final_description} + return self.post('update_run/%s' % self.run_id, request_body) + + def get_run_results(self, test_run_id=None): + return self.get('get_results_for_run/%s' % (test_run_id if test_run_id else self.run_id))['results'] + + def is_run_successful(self): + for test in self.get_run_results(): + if test['status_id'] != 1: + return False + else: + return True + + def get_test_result_link(self, test_run_id, test_case_id): + try: + test_id = self.get('get_results_for_case/%s/%s' % (test_run_id, test_case_id))['results'][0]['test_id'] + return '%s/index.php?/tests/view/%s' % (self.url, test_id) + except (KeyError, JSONDecodeError): + print('Cannot extract result for %s e2e' % test_case_id) + return None + + def get_not_executed_tests(self, test_run_id): + try: + results = self.get("get_tests/%s&status_id=3" % test_run_id) + return [result['case_id'] for result in results["tests"]] + except KeyError: + print('Cannot extract result for %s' % test_run_id) + pass + + @staticmethod + def make_error_with_gh_issue_link(error, issue_id): + return error.replace(issue_id, + '[%s](https://github.com/status-im/status-mobile/issues/%s)' % (issue_id, issue_id[1:])) diff --git a/test/appium/tests/__init__.py b/test/appium/tests/__init__.py new file mode 100644 index 00000000000..45ae68fe61a --- /dev/null +++ b/test/appium/tests/__init__.py @@ -0,0 +1,54 @@ +import asyncio +import functools +import json +import os +import time +from datetime import datetime + +from urllib3.exceptions import MaxRetryError + +from support.test_data import TestSuiteData + + +async def start_threads(test_name: str, quantity: int, func: type, returns: dict, **kwargs): + loop = asyncio.get_event_loop() + for i in range(quantity): + returns[i] = loop.run_in_executor(None, functools.partial(func, **kwargs)) + for k in returns: + for _ in range(3): + try: + returns[k] = await returns[k] + break + except MaxRetryError: + print("MaxRetryError when creating a driver for %s" % test_name) + time.sleep(10) + return returns + + +async def run_in_parallel(funcs): + loop = asyncio.get_event_loop() + res = [] + returns = [] + for func in funcs: + try: + res.append(loop.run_in_executor(None, functools.partial(func[0], **func[1]))) + except IndexError: + res.append(loop.run_in_executor(None, func[0])) + for k in res: + returns.append(await k) + return returns + + +def get_current_time(): + return datetime.now().strftime('%-m%-d%-H%-M%-S') + + +pytest_config_global = dict() +test_suite_data = TestSuiteData() + +common_password = 'qwerty1234' + +emojis = {'thumbs-up': 2, 'thumbs-down': 3, 'love': 1, 'laugh': 4, 'angry': 6, 'sad': 5} + +with open(os.sep.join(__file__.split(os.sep)[:-1]) + '/../../../translations/en.json') as json_file: + transl = json.load(json_file) diff --git a/test/appium/tests/activity_center/test_activity_center.py b/test/appium/tests/activity_center/test_activity_center.py new file mode 100644 index 00000000000..32706489550 --- /dev/null +++ b/test/appium/tests/activity_center/test_activity_center.py @@ -0,0 +1,507 @@ +import pytest +from appium.webdriver.connectiontype import ConnectionType +from selenium.common.exceptions import TimeoutException + +from tests import marks, run_in_parallel +from tests.base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from tests.users import transaction_senders +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="three_2") +@marks.nightly +class TestActivityCenterContactRequestMultipleDevicePR(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True}), + (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.profile_1, self.profile_2 = self.home_1.get_profile_view(), self.home_2.get_profile_view() + self.public_key_1 = self.home_1.get_public_key() + self.profile_link_2 = self.home_2.get_link_to_profile() + self.home_2.close_share_tab_button.click_until_absense_of_element(self.home_2.link_to_profile_button) + [home.navigate_to_chats_view() for home in self.homes] + + @marks.testrail_id(702850) + def test_activity_center_contact_request_decline(self): + app_package = self.device_1.driver.current_package + self.device_1.put_app_to_background() + self.device_2.just_fyi('Device2 sends a contact request to Device1 via Paste button and check user details') + self.home_2.new_chat_button.click_until_presence_of_element(self.home_2.add_a_contact_chat_bottom_sheet_button) + self.home_2.add_a_contact_chat_bottom_sheet_button.click() + self.home_2.driver.set_clipboard_text(self.public_key_1) + self.home_2.element_by_translation_id("paste").click() + self.home_2.element_by_translation_id("user-found").wait_for_visibility_of_element(10) + if self.home_2.user_name_text.is_element_displayed(30): + text_name = self.home_2.user_name_text.text + if text_name != self.username_1 and text_name != "%s...%s" % ( + self.public_key_1[:3], self.public_key_1[-6:]): + self.errors.append( + self.home_2, + "Neither username nor public key is shown on 'Add contact' page after entering valid public key") + else: + self.errors.append(self.home_2, "User is not found on 'Add contact' page after entering valid public key") + chat = self.home_2.get_chat_view() + + chat.view_profile_new_contact_button.click_until_presence_of_element(chat.profile_send_contact_request_button) + chat.profile_send_contact_request_button.click() + chat.contact_request_message_input.send_keys("hi") + chat.confirm_send_contact_request_button.click() + chat.close_button.click_until_absense_of_element(chat.close_button) + self.home_2.navigate_back_to_home_view() + + self.device_1.just_fyi("Device 1: check there is no PN when receiving new message to activity centre") + self.device_1.open_notification_bar() + if self.home_1.element_by_text_part("Please add me to your contacts").is_element_displayed(): + self.errors.append(self.home_1, + "Push notification with text was received for new message in activity centre") + self.device_1.click_system_back_button() + self.device_1.driver.activate_app(app_package) + self.device_1.wait_for_application_to_be_running(app_package) + + self.device_1.just_fyi('Device1 verifies pending contact request') + self.home_1.contacts_tab.click_until_presence_of_element(self.home_1.pending_contact_request_text) + for indicator in (self.home_1.notifications_unread_badge, self.home_1.contact_new_badge): + if not indicator.is_element_displayed(): + self.errors.append( + self.home_1, "Unread indicator on contacts tab or on activity center is not shown for incoming CR!") + if self.home_1.pending_contact_request_text.text != '1': + self.errors.append(self.home_1, "The amount of contact requests is not shown for incoming CR!") + + self.device_1.just_fyi('Device1 declines pending contact request') + self.home_1.handle_contact_request(username=self.username_2, action='decline') + for indicator in (self.home_1.notifications_unread_badge, self.home_1.contact_new_badge, + self.home_1.pending_contact_request_text): + if indicator.is_element_displayed(): + self.errors.append( + self.home_1, + "Unread indicator on contacts tab or on activity center is shown after declining contact request!") + + self.device_1.just_fyi("Check that it is still pending contact after declining on sender device") + self.home_2.navigate_back_to_home_view() + self.home_2.open_activity_center_button.click() + self.home_2.activity_unread_filter_button.click() + element = self.home_2.get_activity_center_element_by_text('connect') + if element.title.text != 'Contact request' or element.context_tag_text != self.username_1 \ + or not element.pending_status_tag.is_element_displayed(): + self.errors.append( + self.home_2, "Pending contact request is not shown on unread notification element on Activity center!") + self.home_2.close_activity_centre.click() + + self.errors.verify_no_errors() + + @marks.testrail_id(702851) + def test_activity_center_contact_request_accept_swipe_mark_all_as_read(self): + self.device_2.just_fyi('Creating a new user on Device2') + self.home_2.reopen_app(sign_in=False) + self.device_2.create_user(first_user=False) + new_username = self.home_2.get_username() + + self.device_2.just_fyi('Device2 sends a contact request to Device1 via Paste button and check user details') + self.home_2.chats_tab.click() + self.home_2.new_chat_button.click_until_presence_of_element(self.home_2.add_a_contact_chat_bottom_sheet_button) + self.home_2.add_a_contact_chat_bottom_sheet_button.click() + self.home_2.driver.set_clipboard_text(self.public_key_1) + self.home_2.element_by_translation_id("paste").click() + self.home_2.element_by_translation_id("user-found").wait_for_visibility_of_element(10) + chat = self.home_2.get_chat_view() + chat.view_profile_new_contact_button.click_until_presence_of_element(chat.profile_send_contact_request_button) + chat.profile_send_contact_request_button.click() + chat.contact_request_message_input.send_keys("hi") + chat.confirm_send_contact_request_button.click() + chat.close_button.click_until_absense_of_element(chat.close_button) + + self.device_1.just_fyi('Device1 accepts pending contact request by swiping') + self.home_1.chats_tab.click() + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(30) + if self.home_1.toast_content_element.is_element_displayed(10): + self.home_1.toast_content_element.wait_for_invisibility_of_element() + self.home_1.open_activity_center_button.click() + + self.home_1.just_fyi("Mark all as read") + cr_element = self.home_1.get_element_from_activity_center_view(new_username) + self.home_1.more_options_activity_button.click() + self.home_1.mark_all_read_activity_button.click() + if cr_element.is_element_displayed(): + self.errors.append( + self.home_1, "Contact request is still shown in activity centre after marking all messages as read!") + + self.home_1.just_fyi("Check that can accept contact request from read notifications") + self.home_1.activity_unread_filter_button.click() + cr_element.message_body.swipe_right_on_element() + self.home_1.activity_notification_swipe_button.click_inside_element_by_coordinate(rel_x=0.5, rel_y=0.5) + self.home_1.close_activity_centre.click() + self.home_1.contacts_tab.click() + if not self.home_1.contact_details_row(username=new_username).is_element_displayed(20): + self.errors.append(self.home_1, + "Contact was not added to contact list after accepting contact request (as receiver)") + + self.device_2.just_fyi('Device1 check that contact appeared in contact list mutually') + self.home_2.navigate_to_chats_view() + self.home_2.contacts_tab.click() + if not self.home_2.contact_details_row(username=self.username_1).is_element_displayed(20): + self.errors.append(self.home_2, + "Contact was not added to contact list after accepting contact request (as sender)") + + self.errors.verify_no_errors() + + @marks.testrail_id(702777) + def test_add_contact_field_validation(self): + public_key_2 = self.profile_link_2.split("#")[-1] + + def _device_1_creates_user(): + self.home_1.just_fyi("Device 1 creates a new user") + self.home_1.reopen_app(sign_in=False) + self.device_1.create_user(first_user=False) + return self.home_1.get_username() + + def _device_2_sign_in(): + self.home_2.just_fyi("Device 2 sign in, user name is " + self.username_2) + self.home_2.reopen_app(sign_in=False) + self.device_2.sign_in(user_name=self.username_2) + + new_username_1, _ = self.loop.run_until_complete(run_in_parallel(((_device_1_creates_user, {}), + (_device_2_sign_in, {})))) + + self.device_1.just_fyi('Device1 sends a contact request to Device2 using his profile link') + self.home_1.chats_tab.click() + self.home_1.new_chat_button.click_until_presence_of_element(self.home_1.add_a_contact_chat_bottom_sheet_button) + self.home_1.add_a_contact_chat_bottom_sheet_button.click() + self.home_1.driver.set_clipboard_text(self.profile_link_2) + self.home_1.element_by_translation_id("paste").click() + self.home_1.element_by_translation_id("user-found").wait_for_visibility_of_element(10) + if self.home_1.user_name_text.is_element_displayed(30): + text_name = self.home_1.user_name_text.text + if text_name != self.username_2 and text_name != "%s...%s" % (public_key_2[:3], public_key_2[-6:]): + self.errors.append( + self.home_1, + "Neither username nor public key is shown on 'Add contact' page after entering valid profile link") + else: + self.errors.append(self.home_1, "User is not found on 'Add contact' page after entering valid public key") + chat_1 = self.home_1.get_chat_view() + chat_1.view_profile_new_contact_button.click_until_presence_of_element( + chat_1.profile_send_contact_request_button) + chat_1.profile_send_contact_request_button.click() + chat_1.contact_request_message_input.send_keys("hi") + chat_1.confirm_send_contact_request_button.click() + chat_1.close_button.click_until_absense_of_element(chat_1.close_button) + + self.home_2.just_fyi("Device 2 accepts contact request") + self.home_2.handle_contact_request(new_username_1) + + self.home_1.just_fyi("Device 1 checks that can find already added contact using public key") + self.home_1.navigate_back_to_home_view() + self.home_1.new_chat_button.click_until_presence_of_element(self.home_1.add_a_contact_chat_bottom_sheet_button) + self.home_1.add_a_contact_chat_bottom_sheet_button.click() + self.home_1.driver.set_clipboard_text(public_key_2) + self.home_1.element_by_translation_id("paste").click() + self.home_1.element_by_translation_id("user-found").wait_for_visibility_of_element(10) + if self.home_1.user_name_text.is_element_displayed(30): + text_name = self.home_1.user_name_text.text + if text_name != self.username_2 and text_name != "%s...%s" % (public_key_2[:3], public_key_2[-6:]): + self.errors.append( + self.home_1, + "Neither username nor public key is shown on 'Add contact' page after entering valid public key") + else: + self.errors.append(self.home_1, "User is not found on 'Add contact' page after entering valid public key") + + self.home_2.just_fyi("Device 2 gets sync code") + self.home_2.navigate_back_to_home_view() + self.home_2.profile_button.click_until_presence_of_element(self.profile_2.default_username_text) + sync_code = self.profile_2.get_sync_code() + + invalid_values = [self.public_key_1[:-1], "random string 123", + '0x' + transaction_senders['ETH_ADI_STT_3']['address'], sync_code] + for value in invalid_values: + self.home_1.just_fyi("Device 1 checks adding a contact with invalid value \"%s\"" % value) + chat_1.public_key_edit_box.clear() + self.home_1.element_by_translation_id("invalid-ens-or-key").wait_for_invisibility_of_element() + self.home_1.driver.set_clipboard_text(value) + self.home_1.element_by_translation_id("paste").click() + try: + self.home_1.element_by_translation_id("invalid-ens-or-key").wait_for_visibility_of_element() + except TimeoutException: + self.errors.append(self.home_1, "Error message is not shown for value \"%s\"" % value) + + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="four_2") +@marks.nightly +class TestActivityMultipleDevicePR(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete( + run_in_parallel(((self.device_1.create_user,), + (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.profile_1, self.profile_2 = self.home_1.get_profile_view(), self.home_2.get_profile_view() + self.public_key_2 = self.home_2.get_public_key() + + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + self.text_message = 'hello' + + self.home_1.just_fyi("Open community to message") + self.home_1.communities_tab.click() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + self.channel_1.send_message(self.text_message) + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.home_1.get_to_community_channel_from_home(self.community_name) + + self.chat_2 = self.home_2.get_chat(self.username_1).click() + self.community_2.join_community() + self.channel_2 = self.community_2.get_channel(self.channel_name).click() + + @marks.testrail_id(702936) + @marks.skip("The feature is disabled") + def test_navigation_jump_to(self): + self.community_1.just_fyi("Check Jump to screen and redirect on tap") + self.community_1.click_on_floating_jump_to() + for card in (self.community_name, self.username_2): + if not self.community_1.element_by_text_part(card).is_element_displayed(20): + self.errors.append(self.community_1, "Card %s is not shown on Jump to screen!" % card) + self.community_1.element_by_translation_id("community-channel").click() + if not self.channel_1.chat_element_by_text(self.text_message).is_element_displayed(20): + self.errors.append(self.channel_1, + "User was not redirected to community channel after tapping on community channel card!") + self.channel_1.click_system_back_button() + self.community_1.click_on_floating_jump_to() + self.community_1.element_by_text_part(self.username_2).click() + if not self.chat_1.chat_element_by_text(self.one_to_one_message).is_element_displayed(20): + self.errors.append(self.chat_1, "User was not redirected to 1-1 chat after tapping card!") + + self.errors.verify_no_errors() + + @marks.testrail_id(702947) + def test_activity_center_reply_read_unread_delete_filter_swipe(self): + message_to_reply, reply_to_message_from_sender = 'something to reply to', 'this is a reply' + self.home_1.navigate_to_communities_view() + self.home_1.get_chat(self.community_name, community=True).click() + self.community_1.get_channel(self.channel_name).click() + self.channel_1.send_message(message_to_reply) + + self.home_1.navigate_to_communities_view() + self.channel_2.chat_element_by_text(message_to_reply).wait_for_visibility_of_element(120) + self.channel_2.quote_message(message_to_reply) + self.channel_2.send_message(reply_to_message_from_sender) + + self.home_1.just_fyi("Checking unread indicators") + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120) + community_element_1 = self.home_1.get_chat(self.community_name, community=True) + for unread_counter in community_element_1.new_messages_counter, self.home_1.communities_tab.counter: + if not unread_counter.is_element_displayed(60): + self.errors.append(self.home_1, 'New message counter badge is not shown!') + if int(unread_counter.text) != 1: + self.errors.append(self.home_1, 'New message counter badge is not 1, it is %s!' % unread_counter.text) + + self.home_1.just_fyi("Checking reply attributes in activity center") + self.home_1.open_activity_center_button.click() + reply_element = self.home_1.get_element_from_activity_center_view(reply_to_message_from_sender) + if reply_element.title.text != 'Reply': + self.errors.append(self.home_1, "Expected title is not shown, '%s' is instead!" % reply_element.title) + if not reply_element.unread_indicator.is_element_displayed(): + self.errors.append(self.home_1, "No unread dot is shown on activity center element!") + + self.home_2.chats_tab.is_element_displayed() # just saving device 2 session from expiration + + self.home_1.just_fyi("Swiping to 'Replies' on activity center and check unread there") + self.home_1.mention_activity_tab_button.click() + if reply_element.is_element_displayed(2): + self.errors.append(self.home_1, "Filter on mentions is not working in Activity centre!") + self.home_1.reply_activity_tab_button.click() + if not self.home_1.reply_activity_tab_button.counter.is_element_displayed(2): + self.errors.append(self.home_1, "No unread dot is shown on activity center tab element!") + if not reply_element.is_element_displayed(): + self.errors.append(self.home_1, "Filter on replies tab is not working in Activity centre!") + + self.home_2.chats_tab.is_element_displayed() # just saving device 2 session from expiration + + self.home_1.just_fyi("Mark it as read and check filter") + reply_element.title.swipe_right_on_element(width_percentage=6) + self.home_1.activity_notification_swipe_button.click() + if reply_element.is_element_displayed(2): + self.errors.append(self.home_1, "Message is not marked as read!") + self.home_1.activity_unread_filter_button.click() + if not reply_element.is_element_displayed(2): + self.errors.append(self.home_1, "Read filter is not displayed read message!") + + self.home_2.chats_tab.is_element_displayed() # just saving device 2 session from expiration + + self.home_1.just_fyi("Mark it as unread and check filter via right swipe") + reply_element.title.swipe_right_on_element(width_percentage=6) + self.home_1.activity_notification_swipe_button.click() + if not reply_element.unread_indicator.is_element_displayed(): + self.errors.append(self.home_1, + "No unread dot is shown on activity center element after marking it as unread!") + + self.home_1.just_fyi("Tap on it and check it marked as read") + reply_element.click() + if not self.channel_1.chat_element_by_text(reply_to_message_from_sender).is_element_displayed(): + self.errors.append(self.home_1, "Was not redirected to chat after tapping on reply!") + self.home_1.navigate_to_communities_view() + if self.home_1.notifications_unread_badge.is_element_displayed(): + self.errors.append(self.home_1, + "Notification was not marked as read after opening it in community channel!") + + self.home_2.chats_tab.is_element_displayed() # just saving device 2 session from expiration + + self.home_1.just_fyi("Delete it from unread via left swipe") + self.home_1.open_activity_center_button.click() + reply_element.swipe_left_on_element() + self.home_1.activity_notification_swipe_button.click() + if reply_element.is_element_displayed(): + self.errors.append(self.home_1, "Reply is still shown after removing from activity centre!") + + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="six_2") +@marks.nightly +class TestActivityMultipleDevicePRTwo(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete( + run_in_parallel(((self.device_1.create_user,), + (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.profile_1, self.profile_2 = self.home_1.get_profile_view(), self.home_2.get_profile_view() + self.public_key_2 = self.home_2.get_public_key() + + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + self.text_message = 'hello' + + self.home_1.just_fyi("Open community to message") + self.home_1.communities_tab.click() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + self.channel_1.send_message(self.text_message) + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.home_1.get_to_community_channel_from_home(self.community_name) + + self.chat_2 = self.home_2.get_chat(self.username_1).click() + self.community_2.join_community() + self.channel_2 = self.community_2.get_channel(self.channel_name).click() + self.channel_2.chat_message_input.wait_for_visibility_of_element(20) + + @marks.testrail_id(702957) + def test_activity_center_mentions(self): + self.home_1.navigate_to_communities_view() + + self.device_2.just_fyi("Invited member sends a message with a mention") + self.channel_2.mention_user(self.username_1) + self.channel_2.send_message_button.click() + + self.home_1.just_fyi("Checking unread indicators") + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120) + community_element_1 = self.home_1.get_chat(self.community_name, community=True) + for unread_counter in community_element_1.new_messages_counter, self.home_1.communities_tab.counter: + if not unread_counter.is_element_displayed(60): + self.errors.append(self.home_1, 'New message counter badge is not shown while mentioned!') + if int(unread_counter.text) != 1: + self.errors.append(self.home_1, 'New message counter badge is not 1, it is %s!' % unread_counter.text) + + self.home_1.just_fyi("Checking mention attributes in activity center") + self.home_1.open_activity_center_button.click() + mention_element = self.home_1.get_element_from_activity_center_view('@%s' % self.username_1) + if mention_element.title.text != 'Mention': + self.errors.append(self.home_1, "Expected title is not shown, '%s' is instead!" % mention_element.title) + if not mention_element.unread_indicator.is_element_displayed(): + self.errors.append(self.home_1, "No unread dot is shown on activity center element (mention)!") + if mention_element.message_body.text != '@%s' % self.username_1: + self.errors.append( + self.home_1, "Mention body in activity center does not match expected, it is %s!" + % mention_element.message_body.text) + + self.home_1.just_fyi("Tap on it and check redirect to channel") + mention_element.click() + if not self.channel_1.chat_element_by_text(self.username_1).is_element_displayed(): + self.errors.append(self.home_1, "Was not redirected to chat after tapping on mention!") + self.errors.verify_no_errors() + + @marks.testrail_id(702958) + def test_activity_center_admin_notification_accept_swipe(self): + self.home_2.just_fyi("Clearing history") + self.home_2.navigate_to_chats_view() + self.home_2.clear_chat_long_press(self.username_1) + + [home.navigate_back_to_home_view() for home in (self.home_1, self.home_2)] + + self.home_1.just_fyi("Open community to message") + self.home_1.communities_tab.click() + community_name = 'closed community' + self.channel_name = "dogs" + self.home_1.create_community(community_type="closed") + self.home_1.reopen_app(user_name=self.username_1) + self.community_1.invite_to_community(community_name, self.username_2) + + self.home_2.just_fyi("Request access to community") + self.home_2.navigate_to_chats_view() + self.chat_2 = self.home_2.get_chat(self.username_1).click() + self.community_2.join_community(open_community=False) + for home in self.home_1, self.home_2: + home.navigate_to_communities_view() + + self.home_1.just_fyi("Checking unread indicators") + try: + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120) + except TimeoutException: + self.errors.append(self.home_1, "Unread indicator is not shown in notifications") + self.home_1.open_activity_center_button.click() + reply_element = self.home_1.get_element_from_activity_center_view(self.username_2) + if reply_element.title.text != 'Join request': + self.errors.append(self.home_1, "Expected title is not shown, '%s' is instead!" % reply_element.title) + if not reply_element.unread_indicator.is_element_displayed(): + self.errors.append(self.home_1, "No unread dot is shown on activity center element!") + reply_element.title.swipe_right_on_element(width_percentage=2.5) + self.home_1.activity_notification_swipe_button.click() + self.home_1.close_activity_centre.click() + + self.home_2.just_fyi("Checking that community appeared on the list") + if not self.home_2.element_by_text_part(community_name).is_element_displayed(30): + self.errors.append( + self.home_2, "Community is not appeared in the list after accepting admin request from activity centre") + self.errors.verify_no_errors() + + @marks.testrail_id(741809) + def test_activity_centre_contact_request_receiver_offline(self): + self.device_2.navigate_back_to_home_view() + + self.device_1.just_fyi("Device 1: Create a new user") + self.device_1.reopen_app(sign_in=False) + self.device_1.create_user(first_user=False) + new_username_1 = self.home_1.get_username() + self.device_1.chats_tab.click() + + self.device_2.just_fyi("Device 2: Turn off network connection") + self.device_2.driver.set_network_connection(ConnectionType.AIRPLANE_MODE) + + self.device_1.just_fyi("Device 1: Send a contact request") + self.home_1.add_contact(self.public_key_2) + + self.device_2.just_fyi("Device 2: Turn on network connection and check that the contact request is received") + self.device_2.driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) + self.home_2.handle_contact_request(username=new_username_1, notifications_count=3) diff --git a/test/appium/tests/base_test_case.py b/test/appium/tests/base_test_case.py new file mode 100644 index 00000000000..c981ec8147e --- /dev/null +++ b/test/appium/tests/base_test_case.py @@ -0,0 +1,341 @@ +import asyncio +import base64 +import logging +import re +import sys +from abc import ABCMeta, abstractmethod +from http.client import RemoteDisconnected + +import pytest +import requests +from appium import webdriver +from appium.options.common import AppiumOptions +from appium.webdriver.common.mobileby import MobileBy +from appium.webdriver.connectiontype import ConnectionType +from selenium.common.exceptions import NoSuchElementException, WebDriverException +from urllib3.exceptions import MaxRetryError, ProtocolError + +from support.api.network_api import NetworkApi +from tests import test_suite_data, start_threads, pytest_config_global, transl +from tests.conftest import github_report, run_name, lambda_test_username, lambda_test_access_key +from views.base_view import BaseView + +executor_lambda_test = 'https://%s:%s@mobile-hub.lambdatest.com/wd/hub' % (lambda_test_username, lambda_test_access_key) + +executor_local = 'http://localhost:4723/wd/hub' + +implicit_wait = 5 + +def get_app_package(): + """ + Determines the app package dynamically based on the APK configuration. + :return: The app package name. + """ + apk = pytest_config_global['apk'] + app_folder = "im.status.ethereum" # Default app package name + + if re.findall(r'pr\d\d\d\d\d', apk) or re.findall(r'\d\d\d\d\d.apk', apk): + app_folder += ".pr" # Append `.pr` in specific cases + + return app_folder + +def get_lambda_test_capabilities_real_device(): + capabilities = { + "lt:options": { + "w3c": True, + "platformName": "android", + "deviceName": "Pixel 8", + "platformVersion": "14", + "app": pytest_config_global['lt_apk_url'], + "devicelog": True, + "visual": True, + "video": True, + "build": run_name, + "name": test_suite_data.current_test.group_name, + "idleTimeout": 1000, + "isRealMobile": True + } + } + options = AppiumOptions() + options.load_capabilities(capabilities) + return options + + +def get_lambda_test_capabilities_emulator(platform_version: int = 14, device_name: str = "Pixel 6"): + capabilities = { + "lt:options": { + "w3c": True, + "platformName": "android", + "deviceName": device_name, + "appiumVersion": "2.1.3", + "platformVersion": str(platform_version), + "app": pytest_config_global['lt_apk_url'], + "devicelog": True, + "visual": True, + "video": True, + "build": run_name, + "name": test_suite_data.current_test.group_name, + "idleTimeout": 1000, + # "enableImageInjection": True, + # "uploadMedia": ["lt://MEDIA2b3e34e2b0ee4928b9fc38c603f98191",], # "lt://MEDIAcfc1b4f1af0740759254404186bbe4f1"] + }, + "appium:options": { + "automationName": "UiAutomator2", + "hideKeyboard": True + } + } + options = AppiumOptions() + options.load_capabilities(capabilities) + return options + + +def get_app_path(): + return '/storage/emulated/0/Android/data/%s/files/Download/' % get_app_package() + + +def pull_logs_folder(driver): + result = driver.pull_folder(get_app_path()) + return base64.b64decode(result) + + +class AbstractTestCase: + __metaclass__ = ABCMeta + + def print_lt_session_info(self, driver): + sys.stdout = sys.stderr + print("LambdaTestSessionID=%s job-name=%s" % (driver.session_id, run_name)) + + def get_translation_by_key(self, key): + return transl[key] + + @abstractmethod + def setup_method(self, method): + raise NotImplementedError('Should be overridden from a child class') + + @abstractmethod + def teardown_method(self, method): + raise NotImplementedError('Should be overridden from a child class') + + @property + def environment(self): + return pytest_config_global['env'] + + network_api = NetworkApi() + + @staticmethod + def get_alert_text(driver): + try: + return driver.find_element(MobileBy.ID, 'android:id/message').text + except NoSuchElementException: + return None + + def add_alert_text_to_report(self, driver): + try: + alert_text = self.get_alert_text(driver) + if alert_text: + test_suite_data.current_test.testruns[-1].error = "%s; also Unexpected Alert is shown: '%s'" % ( + test_suite_data.current_test.testruns[-1].error, alert_text + ) + except (RemoteDisconnected, ProtocolError): + test_suite_data.current_test.testruns[-1].error = "%s; \n RemoteDisconnected" % \ + test_suite_data.current_test.testruns[-1].error + + +class Driver(webdriver.Remote): + + @property + def number(self): + return test_suite_data.current_test.testruns[-1].jobs[self.session_id] + + def info(self, text: str, device=True): + if device: + text = 'Device %s: %s ' % (self.number, text) + logging.info(text) + test_suite_data.current_test.testruns[-1].steps.append(text) + + def fail(self, text: str): + pytest.fail('Device %s: %s' % (self.number, text)) + + def update_lt_session_status(self, index, status): + data = { + "action": "setTestStatus", + "arguments": { + "status": status, + "remark": "Device %s" % index + } + } + self.execute_script("lambda-hook: %s" % str(data).replace("'", "\"")) + + +class Errors: + def __init__(self): + self.errors = [] + + def _add_error(self, view: BaseView, text): + """ + Adds an error message to the list and logs it. + + Args: + view (BaseView): The view object containing the driver. + text (str): The error message to log. + """ + error_text = f"Device {view.driver.number}: {text}" + self.errors.append(error_text) + view.driver.log_event("appium", error_text) + + def append(self, view: BaseView, errors: list | str): + """ + Appends errors to the error list and logs them. + + Args: + view (BaseView): The view object containing the driver. + errors (str | list): A single error message or a list of error messages. + + Raises: + TypeError: If the provided errors argument is not a string or a list of strings. + """ + if isinstance(errors, str): + self._add_error(view, errors) + elif isinstance(errors, list) and all(isinstance(error, str) for error in errors): + for error in errors: + self._add_error(view, error) + else: + raise TypeError(f"Invalid type for errors: {type(errors)}. Expected str or list of str.") + + def verify_no_errors(self): + if self.errors: + pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))])) + + +def create_shared_drivers(quantity: int, platform_version: int = 14, device_name: str = "Pixel 6"): + drivers = dict() + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + print('LT Executor: %s' % executor_lambda_test) + try: + drivers = loop.run_until_complete( + start_threads(test_suite_data.current_test.name, + quantity, + Driver, + drivers, + command_executor=executor_lambda_test, + options=get_lambda_test_capabilities_emulator(platform_version, device_name))) + if len(drivers) < quantity: + test_suite_data.current_test.testruns[-1].error = "Not all %s drivers are created" % quantity + + for i in range(quantity): + test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1 + drivers[i].implicitly_wait(implicit_wait) + drivers[i].update_settings({"enforceXPath1": True}) + drivers[i].set_network_connection(ConnectionType.ALL_NETWORK_ON) + return drivers, loop + except (MaxRetryError, AttributeError) as e: + test_suite_data.current_test.testruns[-1].error = str(e) + for i, driver in drivers.items(): + try: + driver.update_lt_session_status(i + 1, "failed") + driver.quit() + except (WebDriverException, AttributeError): + pass + raise e + + +class MultipleSharedDeviceTestCase(AbstractTestCase): + + def setup_method(self, method): + if not self.drivers: + pytest.fail(test_suite_data.current_test.testruns[-1].error) + for _, driver in self.drivers.items(): + driver.execute_script("lambda-testCase-start=%s" % method.__name__) + driver.log_event("appium", "Started %s" % method.__name__) + jobs = test_suite_data.current_test.testruns[-1].jobs + if not jobs: + for index, driver in self.drivers.items(): + jobs[driver.session_id] = index + 1 + self.errors = Errors() + test_suite_data.current_test.group_name = self.__class__.__name__ + + def teardown_method(self, method): + log_names, log_contents = [], [] + for driver in self.drivers: + try: + self.print_lt_session_info(self.drivers[driver]) + self.add_alert_text_to_report(self.drivers[driver]) + log_names.append( + '%s_logs_%s.zip' % (test_suite_data.current_test.name, str(self.drivers[driver].number))) + log_contents.append(pull_logs_folder(self.drivers[driver])) + except (WebDriverException, AttributeError, RemoteDisconnected, ProtocolError): + pass + finally: + if not log_contents: + test_suite_data.current_test.testruns[-1].error += "/nCan't extract logs!" + try: + logs = {log_names[i]: log_contents[i] for i in range(len(log_names))} + test_suite_data.current_test.logs_paths = github_report.save_logs(logs) + except IndexError: + pass + + @pytest.fixture(scope='class', autouse=True) + def prepare(self, request): + test_suite_data.current_test.group_name = request.cls.__name__ + try: + request.cls.prepare_devices(request) + finally: + for item, value in request.__dict__.items(): + setattr(request.cls, item, value) + + @classmethod + def teardown_class(cls): + requests_session = requests.Session() + requests_session.auth = (lambda_test_username, lambda_test_access_key) + if test_suite_data.tests[0].testruns[-1].error and 'setup failed' in test_suite_data.tests[0].testruns[ + -1].error: + group_setup_failed = True + else: + group_setup_failed = False + log_contents, log_names = list(), list() + try: + for i, driver in cls.drivers.items(): + if group_setup_failed: + try: + log_contents.append(pull_logs_folder(driver=driver)) + log_names.append('%s_logs_%s.zip' % (cls.__name__, i)) + except (WebDriverException, AttributeError, RemoteDisconnected, ProtocolError): + test_suite_data.current_test.testruns[-1].error += "/nCan't extract logs!" + lt_session_status = "failed" + else: + lt_session_status = "passed" + try: + driver.update_lt_session_status(i + 1, lt_session_status) + driver.quit() + except (WebDriverException, RemoteDisconnected): + pass + # url = 'https://api.%s/rest/v1/%s/jobs/%s/assets/%s' % (apibase, sauce_username, session_id, "log.json") + # try: + # WebDriverWait(driver, 60, 2).until(lambda _: requests_session.get(url).status_code == 200) + # commands = requests_session.get(url).json() + # for command in commands: + # try: + # if command['message'].startswith("Started "): + # for test in test_suite_data.tests: + # if command['message'] == "Started %s" % test.name: + # test.testruns[-1].first_commands[session_id] = commands.index(command) + 1 + # except KeyError: + # continue + # except (RemoteDisconnected, requests.exceptions.ConnectionError, TimeoutException): + # pass + except AttributeError: + pass + finally: + try: + cls.loop.close() + except AttributeError: + pass + + logs = dict(zip(log_names, log_contents)) + logs_paths = github_report.save_logs(logs) + + for test in test_suite_data.tests: + if group_setup_failed: + test.logs_paths = logs_paths + github_report.save_test(test) diff --git a/test/appium/tests/communities/test_community.py b/test/appium/tests/communities/test_community.py new file mode 100644 index 00000000000..b09f028fb6e --- /dev/null +++ b/test/appium/tests/communities/test_community.py @@ -0,0 +1,1406 @@ +import datetime +import random +import time + +import emoji +import pytest +from _pytest.outcomes import Failed +from appium.webdriver.connectiontype import ConnectionType +from selenium.common.exceptions import NoSuchElementException, TimeoutException, StaleElementReferenceException + +from tests import marks, run_in_parallel, pytest_config_global, transl +from tests.base_test_case import create_shared_drivers, MultipleSharedDeviceTestCase +from views.chat_view import CommunityView +from views.dbs.waku_backup import user as waku_user +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="two_1") +@marks.nightly +class TestCommunityOneDeviceMerged(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in = SignInView(self.drivers[0]) + + self.home = self.sign_in.create_user() + self.username = self.home.get_username() + self.home.communities_tab.click_until_presence_of_element(self.home.plus_community_button) + self.community_name = "closed community" + self.channel_name = "cats" + self.community = self.home.create_community(community_type="closed") + + self.home.get_chat(self.community_name, community=True).click() + self.community_view = self.home.get_community_view() + self.channel = self.community_view.get_channel(self.channel_name).click() + + @marks.testrail_id(702846) + def test_community_navigate_to_channel_when_relaunch(self): + text_message = 'some_text' + if not self.channel.chat_message_input.is_element_displayed(): + self.home.navigate_back_to_home_view() + self.home.get_to_community_channel_from_home(self.community_name) + + self.channel.send_message(text_message) + self.channel.chat_element_by_text(text_message).wait_for_visibility_of_element() + self.channel.reopen_app(user_name=self.username) + if not self.channel.chat_element_by_text(text_message).is_element_displayed(30): + self.drivers[0].fail("Not navigated to channel view after reopening app") + + @marks.testrail_id(702742) + @marks.smoke + def test_community_copy_and_paste_message_in_chat_input(self): + message_texts = ['mmmeowesage_text', 'https://status.im'] + if not self.channel.chat_message_input.is_element_displayed(): + self.home.navigate_back_to_home_view() + self.home.get_to_community_channel_from_home(self.community_name) + + for message in message_texts: + self.channel.send_message(message) + self.channel.copy_message_text(message) + actual_copied_text = self.channel.driver.get_clipboard_text() + if actual_copied_text != message: + self.errors.append( + self.channel, + 'Message %s text was not copied in community channel, text in clipboard %s' % actual_copied_text) + + self.errors.verify_no_errors() + + @marks.testrail_id(702869) + def test_community_undo_delete_message(self): + if not self.channel.chat_message_input.is_element_displayed(): + self.home.navigate_back_to_home_view() + self.home.get_to_community_channel_from_home(self.community_name) + message_to_delete = "message to delete and undo" + self.channel.send_message(message_to_delete) + self.channel.chat_element_by_text(message_to_delete).wait_for_sent_state() + self.channel.delete_message_in_chat(message_to_delete) + try: + self.channel.element_by_text("Undo").click() + except StaleElementReferenceException: + pytest.fail("Can't press Undo button, not enough time") + try: + self.channel.chat_element_by_text(message_to_delete).wait_for_visibility_of_element() + except TimeoutException: + pytest.fail("Message was not restored by clicking 'Undo' button") + if self.channel.element_starts_with_text("Message deleted").is_element_displayed(): + pytest.fail("Text about deleted message is shown in the chat") + + @marks.testrail_id(703382) + def test_community_mute_community_and_channel(self): + self.home.navigate_to_communities_view() + self.home.just_fyi("Mute community and check that channels are also muted") + self.home.mute_chat_long_press(chat_name=self.community_name, mute_period="mute-for-1-hour", community=True) + device_time = self.home.driver.device_time + current_time = datetime.datetime.strptime(device_time, "%Y-%m-%dT%H:%M:%S%z") + expected_times = [current_time + datetime.timedelta(minutes=i) for i in range(59, 62)] + expected_texts = ["Muted until %s %s" % ( + exp_time.strftime('%H:%M'), "today" if current_time.hour < 23 else "tomorrow" + ) for exp_time in expected_times] + + self.home.get_chat(self.community_name, community=True).long_press_element() + self.home.unmute_community_button.wait_for_visibility_of_element() + try: + current_text = self.home.unmute_community_button.unmute_caption_text + if current_text not in expected_texts: + self.errors.append(self.home, "Text '%s' is not shown for muted community" % expected_texts[1]) + except NoSuchElementException: + self.errors.append(self.home, "Caption with text 'Muted until...' is not shown for muted community") + self.home.click_system_back_button() + + self.home.get_chat(self.community_name, community=True).click() + self.community_view.get_channel(self.channel_name).long_press_element() + self.home.mute_channel_button.wait_for_visibility_of_element() + try: + current_text = self.home.mute_channel_button.unmute_caption_text + if current_text not in expected_texts: + self.errors.append(self.home, + "Text '%s' is not shown for a channel in muted community" % expected_texts[1]) + except NoSuchElementException: + self.errors.append(self.home, + "Caption with text 'Muted until...' is not shown for a channel in muted community") + + self.home.just_fyi("Unmute channel and check that the community is also unmuted") + self.home.mute_channel_button.click() + self.home.navigate_to_communities_view() + self.home.get_chat(self.community_name, community=True).long_press_element() + if not self.home.element_by_text("Mute community").is_element_displayed(): + self.errors.append(self.home, "Community is not unmuted when channel is unmuted") + self.home.click_system_back_button() + + self.home.just_fyi("Mute channel and check that community is not muted") + self.home.get_chat(self.community_name, community=True).click() + self.home.mute_chat_long_press(chat_name=self.channel_name, mute_period="mute-for-1-week", + community_channel=True) + device_time = self.home.driver.device_time + current_time = datetime.datetime.strptime(device_time, "%Y-%m-%dT%H:%M:%S%z") + expected_times = [current_time + datetime.timedelta(days=7, minutes=i) for i in range(-1, 2)] + expected_texts = ["Muted until %s" % exp_time.strftime('%H:%M %a %-d %b') for exp_time in expected_times] + self.community_view.get_channel(self.channel_name).long_press_element() + self.home.mute_channel_button.wait_for_visibility_of_element() + try: + current_text = self.home.mute_channel_button.unmute_caption_text + if current_text not in expected_texts: + self.errors.append(self.home, + "Text '%s' is not shown for a muted community channel" % expected_texts[1]) + except NoSuchElementException: + self.errors.append(self.home, + "Caption with text '%s' is not shown for a muted community channel" % expected_texts[1]) + self.home.click_system_back_button() + self.home.navigate_to_communities_view() + self.home.get_chat(self.community_name, community=True).long_press_element() + if self.home.element_by_text_part("Muted until").is_element_displayed() or \ + self.home.mute_community_button.text != transl["mute-community"]: + self.errors.append(self.home, "Community is muted when channel is muted") + self.home.click_system_back_button() + + self.errors.verify_no_errors() + + @marks.testrail_id(703133) + def test_restore_multiaccount_with_waku_backup_remove_profile_switch(self): + self.home.reopen_app(sign_in=False) + self.home.just_fyi("Restore user with predefined communities and contacts") + self.sign_in.recover_access(passphrase=waku_user.seed, second_user=True) + recover_user_name = self.home.get_username() + + self.home.just_fyi("Check contacts/blocked users") + self.home.chats_tab.click() + self.home.contacts_tab.click() + contacts_number = self.home.get_contact_rows_count() + # Todo: enable when https://github.com/status-im/status-mobile/issues/18096 is fixed + # if contacts_number != len(waku_user.contacts): + # self.errors.append( + # "Incorrect contacts number restored: %s instead of %s" % (contacts_number, len(waku_user.contacts))) + for contact in waku_user.contacts: + if not self.home.element_by_text(contact).is_element_displayed(30): + self.errors.append(self.home, '%s was not restored as a contact from waku backup!' % contact) + # Disabled for simple check as sometimes from waku-backup users restored with 3-random names + # self.home.click_system_back_button_until_element_is_shown() + # contact_row = self.home.contact_details_row(index=i + 1) + # shown_name_text = contact_row.username_text.text + # if shown_name_text in waku_user.contacts: + # waku_user.contacts.remove(shown_name_text) + # continue + # else: + # contact_row.click() + # shown_name_text = profile.default_username_text.text + # if shown_name_text in waku_user.contacts: + # waku_user.contacts.remove(shown_name_text) + # continue + # else: + # chat = self.home.get_chat_view() + # chat.profile_send_message_button.click() + # for name in waku_user.contacts: + # if chat.element_starts_with_text(name).is_element_displayed(sec=20): + # waku_user.contacts.remove(name) + # continue + # if waku_user.contacts: + # self.errors.append( + # "Contact(s) was (were) not restored from backup: %s!" % ", ".join(waku_user.contacts)) + + self.home.just_fyi("Check restored communities") + self.home.communities_tab.click() + for key in ['admin_open', 'member_open', 'admin_closed', 'member_closed']: + if not self.home.element_by_text(waku_user.communities[key]).is_element_displayed(30): + self.errors.append(self.home, "%s was not restored from waku-backup!!" % key) + # TODO: there is a bug when pending community sometimes restored as joined; needs investigation + # self.home.opened_communities_tab.click() + # if not self.home.element_by_text(waku_user.communities['member_pending']).is_element_displayed(30): + # self.errors.append("Pending community %s was not restored from waku-backup!" % waku_user.communities['member_pending']) + + if not pytest_config_global['pr_number']: + self.home.just_fyi("Perform back up") + self.home.navigate_back_to_home_view() + profile = self.home.profile_button.click() + profile.logout_button.scroll_to_element() + profile.advanced_button.click() + profile.backup_settings_button.click() + profile.perform_backup_button.click() + + self.home.just_fyi("Check that can login with different user") + self.home.reopen_app(user_name=self.username) + self.home.navigate_to_communities_view() + if self.home.element_by_text(waku_user.communities['admin_open']).is_element_displayed(30): + self.errors.append(self.home, "Community of previous user is shown!") + + self.home.just_fyi("Check that can remove user from logged out state") + self.home.reopen_app(sign_in=False) + self.sign_in.show_profiles_button.click_if_shown() + user_card = self.sign_in.get_user_profile_by_name(username=recover_user_name) + user_card.open_user_options() + self.sign_in.remove_profile_button.click() + if not self.sign_in.element_by_translation_id("remove-profile-confirm-message").is_element_displayed(30): + self.errors.append(self.home, "Warning is not shown on removing profile!") + self.sign_in.element_by_translation_id("remove").click() + + self.home.just_fyi("Check that removed user is not shown in the list anymore") + self.home.reopen_app(sign_in=False) + if self.sign_in.element_by_text(recover_user_name).is_element_displayed(): + self.errors.append(self.home, "Removed user is re-appeared after relogin!") + + self.errors.verify_no_errors() + + @marks.testrail_id(703503) + @marks.xfail(reason="Might fail if the Discover curation dapp is too slow to load > 2 mins") + def test_community_discovery(self): + try: + # workaround for case if a user is logged out in the previous test + self.sign_in.explore_new_status_button.click_if_shown() + self.sign_in.sign_in(user_name=self.username) + except NoSuchElementException: + pass + self.home.navigate_back_to_home_view() + self.home.just_fyi("Turn off testnet in the profile settings") + profile = self.home.profile_button.click() + profile.switch_network() + + self.home.just_fyi("Check Discover Communities content") + self.home.navigate_to_communities_view() + self.home.discover_communities_button.click() + self.home.community_card_item.wait_for_elements(seconds=120) + + expected_communities = { + # ' 0xUX': ['Design', 'Ethereum', 'Collaboration'], + 'Status': ['Web3', 'Blockchain', 'Ethereum'], + # 'Status Inu': ['News', 'Social', 'Web3'], + } + for community_name, tags in expected_communities.items(): + self.home.just_fyi("Check %s community tags in the Discover communities screen" % community_name) + card = self.home.get_discover_community_card_by_name(community_name=community_name) + try: + card.wait_for_visibility_of_element(90) + # if community_name == 'Status': + # card.swipe_to_web_element() + missing_tags = list() + for text in tags: + try: + card.get_child_element_by_text(text=text).wait_for_element() + except TimeoutException: + missing_tags.append(text) + if missing_tags: + self.errors.append(self.home, + "Community '%s' is missing tag(s) %s." % (community_name, ','.join(tags))) + # if community_name == 'Status': + self.home.just_fyi("Check Status community screen") + card.click() + if self.community_view.join_button.is_element_differs_from_template( + 'status_community_join_button.png'): + self.errors.append(self.home, "Status community Join button is different from expected template.") + if self.community_view.community_logo.is_element_differs_from_template('status_community_logo.png'): + self.errors.append(self.home, "Status community logo is different from expected template.") + + # self.community_view.close_community_view_button.click() + # self.home.swipe_up() + + except TimeoutException: + self.errors.append(self.home, + "Community '%s' is not in the Discover Communities list." % community_name) + + self.errors.verify_no_errors() + # Note: this test should always be the LAST ONE in the group because it turns on mainnet in the app! + + +@pytest.mark.xdist_group(name="one_2") +@marks.nightly +class TestCommunityMultipleDeviceMerged(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True}), + (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.public_key_2 = self.home_2.get_public_key() + self.profile_1 = self.home_1.get_profile_view() + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + self.text_message = 'hello' + + # self.home_2.just_fyi("Send message to contact (need for blocking contact) test") + self.home_1.get_chat(self.username_2).wait_for_visibility_of_element() + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message('hey') + self.chat_2 = self.home_2.get_chat(self.username_1).click() + + self.home_1.just_fyi("Open community to message") + self.home_1.navigate_to_communities_view() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + self.channel_1.send_message(self.text_message) + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.home_1.get_to_community_channel_from_home(self.community_name) + + self.home_2.just_fyi("Send message to contact (need for blocking contact) test") + self.chat_2.send_message(self.text_message) + self.community_2.join_community() + self.channel_2 = self.community_2.get_channel(self.channel_name).click() + self.channel_2.chat_message_input.wait_for_visibility_of_element(20) + + @marks.smoke + @marks.testrail_id(702838) + def test_community_message_send_check_timestamps_sender_username(self): + message = self.text_message + sent_time_variants = self.channel_1.convert_device_time_to_chat_timestamp() + timestamp = self.channel_1.chat_element_by_text(message).timestamp + if sent_time_variants and timestamp: + if timestamp not in sent_time_variants: + self.errors.append(self.channel_1, "Timestamp is not shown, expected: '%s', in fact: '%s'" % + (", ".join(sent_time_variants), timestamp)) + self.channel_1.verify_message_is_under_today_text(message, self.errors) + self.channel_2.send_message("one more message") + new_message = "new message" + self.channel_1.send_message(new_message) + self.channel_2.verify_message_is_under_today_text(new_message, self.errors, 60) + if self.channel_2.chat_element_by_text(new_message).username.text != self.username_1: + self.errors.append(self.channel_2, + "Default username '%s' is not shown next to the received message" % self.username_1) + self.errors.verify_no_errors() + + @marks.smoke + @marks.testrail_id(702843) + def test_community_message_edit(self): + message_before_edit, message_after_edit = 'Message BEFORE edit', "Message AFTER edit 2" + self.channel_1.send_message(message_before_edit) + self.channel_1.chat_element_by_text(message_before_edit).wait_for_sent_state() + self.channel_1.edit_message_in_chat(message_before_edit, message_after_edit) + for channel in (self.channel_1, self.channel_2): + if not channel.element_by_text_part(message_after_edit).is_element_displayed(60): + self.errors.append(channel, 'Message is not edited') + message_text_after_edit = message_after_edit + ' (Edited)' + self.channel_2.set_reaction(message_text_after_edit) + try: + self.channel_1.chat_element_by_text(message_text_after_edit).emojis_below_message().wait_for_element_text(1) + except (Failed, NoSuchElementException): + self.errors.append(self.channel_1, "Message reaction is not shown for the sender") + self.errors.verify_no_errors() + + @marks.smoke + @marks.testrail_id(702839) + def test_community_message_delete(self): + message_to_delete_everyone = 'delete for everyone' + message_to_delete_for_me = 'delete for me' + self.channel_2.send_message(message_to_delete_everyone) + self.channel_2.chat_element_by_text(message_to_delete_everyone).wait_for_sent_state() + self.home_2.just_fyi('Delete for message everyone. Checking that message is deleted for all members') + self.channel_2.delete_message_in_chat(message_to_delete_everyone) + for channel in (self.channel_1, self.channel_2): + if not channel.chat_element_by_text(message_to_delete_everyone).is_element_disappeared(30): + self.errors.append(channel, "Deleted message is shown in channel") + if not self.channel_2.element_by_translation_id('message-deleted-for-everyone').is_element_displayed(30): + self.errors.append(self.channel_2, "System message about deletion for everyone is not displayed") + + self.home_2.just_fyi( + 'Deleting message for me. Checking that message is deleted only for the author of the message') + self.channel_2.send_message(message_to_delete_for_me) + self.channel_1.chat_element_by_text(message_to_delete_for_me).wait_for_element(120) + self.channel_2.delete_message_in_chat(message_to_delete_for_me, everyone=False) + if not self.channel_2.chat_element_by_text(message_to_delete_for_me).is_element_disappeared(30): + self.errors.append(self.channel_2, "Deleted for me message is shown in channel for the author of message") + if not self.channel_2.element_by_translation_id('message-deleted-for-you').is_element_displayed(30): + self.errors.append(self.channel_2, "System message about deletion for you is not displayed") + if not self.channel_1.chat_element_by_text(message_to_delete_for_me).is_element_displayed(30): + self.errors.append(self.channel_1, "Deleted for me message is deleted all channel members") + self.errors.verify_no_errors() + + @marks.testrail_id(703194) + def test_community_several_images_send_reply(self): + self.home_1.just_fyi('Send several images in 1-1 chat from Gallery') + image_description = 'gallery' + self.channel_1.send_images_with_description(image_description, [0, 1]) + + self.channel_2.just_fyi("Check gallery on second device") + self.channel_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + chat_element = self.channel_2.chat_element_by_text(image_description) + try: + chat_element.wait_for_visibility_of_element(120) + received = True + image = chat_element.image_container_in_message + if (image.is_element_differs_from_template("images_gallery.png", 5) and + image.is_element_differs_from_template("images_gallery_inverted.png", 5)): + self.errors.append(self.channel_2, "Gallery message does not match the template!") + except TimeoutException: + self.errors.append(self.channel_2, "Gallery message was not received") + received = False + + if received: + self.channel_2.just_fyi("Checking an ability to save and share an image from gallery") + chat_element.image_container_in_message.image_by_index(1).click() + if not self.channel_2.share_image_icon_button.is_element_displayed(): + self.errors.append(self.channel_2, "Can't share an image from gallery.") + if self.channel_2.view_image_options_button.is_element_displayed(): + self.channel_2.view_image_options_button.click() + if not self.channel_2.save_image_icon_button.is_element_displayed(): + self.errors.append(self.channel_2, "Can't save an image from gallery.") + else: + self.errors.append(self.channel_2, "Image options button is not shown for an image from gallery.") + + self.channel_2.navigate_back_to_chat_view() + + self.channel_2.just_fyi("Can reply to gallery") + self.channel_2.quote_message(image_description) + message_text = 'reply to gallery' + self.channel_2.chat_message_input.send_keys(message_text) + self.channel_2.send_message_button.click() + chat_element_1 = self.channel_1.chat_element_by_text(message_text) + if not chat_element_1.is_element_displayed( + sec=60) or chat_element_1.replied_message_text != image_description: + self.errors.append(self.channel_1, 'Reply message was not received by the sender') + self.errors.verify_no_errors() + + @marks.smoke + @marks.xfail(reason="Might fail from time to time as reaction are set too slowly") # TODO: needs investigation + @marks.testrail_id(702859) + def test_community_one_image_send_reply_set_reaction(self): + self.home_1.just_fyi('Send image in 1-1 chat from Gallery') + image_description = 'description' + self.channel_1.send_images_with_description(image_description) + + self.home_2.just_fyi('Check image, description and options for receiver') + if not self.channel_2.chat_element_by_text(image_description).is_element_displayed(60): + self.channel_2.hide_keyboard_if_shown() + self.channel_2.chat_element_by_text(image_description).wait_for_visibility_of_element(10) + if not self.channel_2.chat_element_by_text( + image_description).image_in_message.is_element_image_similar_to_template('image_1_chat_view.png'): + self.errors.append(self.channel_2, "Not expected image is shown to the receiver") + + if not self.channel_1.chat_element_by_text(image_description).is_element_displayed(60): + self.channel_1.hide_keyboard_if_shown() + self.channel_1.chat_element_by_text(image_description).image_in_message.click() + self.home_1.just_fyi('Save image') + self.channel_1.view_image_options_button.click() + self.channel_1.save_image_icon_button.click() + toast_element = self.channel_1.toast_content_element + if toast_element.is_element_displayed(): + toast_element_text = toast_element.text + if toast_element_text != self.channel_1.get_translation_by_key("photo-saved"): + self.errors.append(self.channel_1, + "Shown message '%s' doesn't match expected '%s' after saving an image." % ( + toast_element_text, self.channel_1.get_translation_by_key("photo-saved"))) + else: + self.errors.append(self.channel_1, "Message about saving a photo is not shown.") + self.channel_1.navigate_back_to_chat_view() + + self.channel_1.just_fyi("Check that image is saved in gallery") + self.channel_1.show_images_button.click() + self.channel_1.allow_all_button.click_if_shown() + if not self.channel_1.get_image_by_index(0).is_element_image_similar_to_template( + "image_1_gallery_view.png"): + self.errors.append(self.channel_1, 'Saved image is not shown in Recent') + self.channel_1.click_system_back_button() + + self.home_2.just_fyi('Check share option on opened image') + self.channel_2.chat_element_by_text(image_description).image_in_message.click() + self.channel_2.share_image_icon_button.click() + self.channel_2.element_starts_with_text("Drive").click() + try: + self.channel_2.wait_for_current_package_to_be('com.google.android.apps.docs') + except TimeoutException: + self.errors.append(self.channel_2, "Can't share image") + self.channel_2.navigate_back_to_chat_view() + + self.channel_2.just_fyi("Can reply to images") + # self.channel_2.chat_element_by_text(image_description).long_press_element_by_coordinate(rel_x=0.8, rel_y=0.8) + # self.channel_2.reply_message_button.click() + self.channel_2.quote_message(image_description) + message_text = 'reply to image' + self.channel_2.chat_message_input.send_keys(message_text) + self.channel_2.send_message_button.click() + chat_element_1 = self.channel_1.chat_element_by_text(message_text) + if not chat_element_1.is_element_displayed(sec=60) or chat_element_1.replied_message_text != image_description: + self.errors.append(self.channel_1, 'Reply message was not received by the sender') + self.channel_2.just_fyi("Set a reaction for the image message") + self.channel_2.set_reaction(message=image_description) + try: + self.channel_1.chat_element_by_text(image_description).emojis_below_message().wait_for_element_text(1) + except (Failed, NoSuchElementException): + self.errors.append(self.channel_1, "Image message reaction is not shown for the sender") + self.channel_1.just_fyi("Set a reaction for the message reply") + self.channel_2.set_reaction(message=image_description, emoji="love") + try: + self.channel_2.chat_element_by_text(message_text).emojis_below_message( + emoji="love").wait_for_element_text(1) + except (Failed, NoSuchElementException): + self.errors.append(self.channel_2, "Reply message reaction is not shown for the reply sender") + + self.errors.verify_no_errors() + + @marks.testrail_id(702840) + def test_community_emoji_send_copy_paste_reply(self): + self.channel_1.navigate_back_to_chat_view() + emoji_name = random.choice(list(emoji.EMOJI_UNICODE)) + emoji_unicode = emoji.EMOJI_UNICODE[emoji_name] + emoji_message = emoji.emojize(emoji_name) + self.channel_1.send_message(emoji_message) + for channel in self.channel_1, self.channel_2: + if not channel.chat_element_by_text(emoji_unicode).is_element_displayed(30): + self.errors.append(channel, 'Message with emoji was not sent or received in community channel') + + self.channel_1.just_fyi("Can copy and paste emojis") + self.channel_1.copy_message_text(emoji_unicode) + actual_copied_text = self.channel_1.driver.get_clipboard_text() + if actual_copied_text != emoji_unicode: + self.errors.append(self.channel_1, + 'Emoji message was not copied, text in clipboard is %s' % actual_copied_text) + + self.channel_1.just_fyi("Can reply to emojis") + if not self.channel_2.chat_message_input.is_element_displayed(): + self.home_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + self.channel_2.quote_message(emoji_unicode) + message_text = 'test message' + self.channel_2.chat_message_input.send_keys(message_text) + self.channel_2.send_message_button.click() + chat_element_1 = self.channel_1.chat_element_by_text(message_text) + chat_element_1.wait_for_element(60) + if chat_element_1.replied_message_text != emoji_unicode: + self.errors.append(self.channel_1, 'Reply message is not reply to original message!') + self.errors.verify_no_errors() + + @marks.testrail_id(702844) + @marks.xfail(reason="Youtube links preview is not loaded on LambdaTest emulators, needs investigation") + def test_community_links_with_previews_github_youtube_twitter_gif_send_enable(self): + preview_urls = { + # TODO: disabled because of the bug in 15891 + # 'giphy':{'url': 'https://giphy.com/gifs/this-is-fine-QMHoU66sBXqqLqYvGO', + # 'title': 'This Is Fine GIF - Find & Share on GIPHY', + # 'description': 'Discover & share this Meme GIF with everyone you know. GIPHY is how you search, share, discover, and create GIFs.', + # 'link': 'giphy.com'}, + 'github_pr': {'url': 'https://github.com/status-im/status-mobile/pull/11707', + 'title': 'Update translations by jinhojang6 · Pull Request #11707 · status-im/status-mobile', + 'description': 'Update translation json files of 19 languages.', + 'link': 'github.com'}, + 'yotube_short': { + 'url': 'https://youtu.be/Je7yErjEVt4', + 'title': 'Status, your gateway to Ethereum', + 'description': 'Learn more at https://status.im. This video aims to provide an explanation ' + 'and brief preview of the utility that will be supported by the Status App - provid...', + 'link': 'youtu.be'}, + 'yotube_full': { + 'url': 'https://www.youtube.com/watch?v=XN-SVmuJH2g&list=PLbrz7IuP1hrgNtYe9g6YHwHO6F3OqNMao', + 'title': 'Status & Keycard – Hardware-Enforced Security', + 'description': 'With Status and Keycard, you can enable hardware enforced authorizations to ' + 'your Status account and transactions. Two-factor authentication to access your ac...', + 'link': 'www.youtube.com'}, + 'yotube_mobile': { + 'url': 'https://m.youtube.com/watch?v=Je7yErjEVt4', + 'title': 'Status, your gateway to Ethereum', + 'description': 'Learn more at https://status.im. This video aims to provide an explanation ' + 'and brief preview of the utility that will be supported by the Status App - provid...', + 'link': 'm.youtube.com', + }, + + # twitter link is temporary removed from check as current xpath locator in message.preview_title is not applicable for this type of links + # 'twitter': { + # 'url': 'https://twitter.com/ethdotorg/status/1445161651771162627?s=20', + # 'txt': "We've rethought how we translate content, allowing us to translate", + # 'subtitle': 'Twitter' + # } + } + for home in self.home_1, self.home_2: + if not home.chat_floating_screen.is_element_displayed(): + home.navigate_to_communities_view() + home.get_to_community_channel_from_home(self.community_name) + + for key, data in preview_urls.items(): + self.home_2.just_fyi("Checking %s preview case" % key) + url = data['url'] + self.channel_2.chat_message_input.send_keys(url) + try: + self.channel_2.url_preview_composer.wait_for_element(20) + except TimeoutException: + self.errors.append(self.channel_1, "No preview is loaded for url %s" % url) + self.channel_2.send_message_button.click() + continue + shown_title = self.channel_2.url_preview_composer_text.text + if shown_title != data['title']: + self.errors.append(self.channel_2, "Preview text is not expected, it is '%s'" % shown_title) + self.channel_2.send_message_button.click() + message = self.channel_1.get_preview_message_by_text(url) + message.wait_for_element(60) + if not message.preview_image: + self.errors.append(self.channel_1, "No preview image is shown for %s" % url) + shown_title = message.preview_title.text + if shown_title != data['title']: + self.errors.append(self.channel_1, + "Title is not equal expected for '%s', actual is '%s'" % (url, shown_title)) + shown_description = message.preview_subtitle.text + if shown_description != data['description']: + self.errors.append(self.channel_1, + "Description is not equal expected for '%s', actual is '%s'" % ( + url, shown_description)) + shown_link = message.preview_link.text + if shown_link != data['link']: + self.errors.append(self.channel_1, + "Link is not equal expected for '%s', actual is '%s'" % (url, shown_link)) + + self.channel_1.just_fyi("Set reaction and check it") + message_with_reaction = list(preview_urls.values())[-1]['url'] + self.channel_1.set_reaction(message=message_with_reaction, emoji="laugh") + if not self.channel_2.chat_element_by_text(message_with_reaction).emojis_below_message( + emoji="laugh").is_element_displayed(10): + self.channel_2.hide_keyboard_if_shown() + try: + self.channel_2.chat_element_by_text(message_with_reaction).emojis_below_message( + emoji="laugh").wait_for_element_text(1) + except (Failed, NoSuchElementException): + self.errors.append(self.channel_2, "Link message reaction is not shown for the sender") + + self.errors.verify_no_errors() + + @marks.testrail_id(702841) + def test_community_unread_messages_badge(self): + self.channel_1.navigate_to_communities_view() + message = 'test message' + if not self.home_2.chat_floating_screen.is_element_displayed(): + self.home_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + self.channel_2.send_message(message) + self.home_1.just_fyi('Check new messages badge is shown for community') + community_element_1 = self.home_1.get_chat(self.community_name, community=True) + if not community_element_1.new_messages_grey_dot.is_element_displayed(sec=30): + self.errors.append(self.home_1, 'New message community badge is not shown') + + community_1 = community_element_1.click() + channel_1_element = community_1.get_channel(self.channel_name) + + self.home_1.just_fyi('Check new messages badge is shown for channel') + if not channel_1_element.new_messages_grey_dot.is_element_displayed(): + self.errors.append(self.channel_1, 'New messages channel badge is not shown on channel') + channel_1_element.click() + self.errors.verify_no_errors() + + @marks.testrail_id(702894) + def test_community_contact_block_unblock_offline(self): + for i, channel in enumerate([self.channel_1, self.channel_2]): + if not channel.chat_message_input.is_element_displayed(): + channel.navigate_to_communities_view() + self.homes[i].get_to_community_channel_from_home(self.community_name) + + self.channel_1.send_message('message to get avatar of user 2 visible in next message') + + self.channel_2.just_fyi("Sending message before block") + message_to_disappear = "I should not be in chat" + self.channel_2.send_message(message_to_disappear) + + self.chat_1.just_fyi('Block user') + self.channel_1.chat_element_by_text(message_to_disappear).wait_for_visibility_of_element(30) + chat_element = self.channel_1.chat_element_by_text(message_to_disappear) + chat_element.find_element() + chat_element.member_photo.click() + self.channel_1.block_contact() + + self.chat_1.just_fyi('Check that messages from blocked user are hidden in public chat and close app') + if not self.chat_1.chat_element_by_text(message_to_disappear).is_element_disappeared(30): + self.errors.append(self.chat_1, "Messages from blocked user is not cleared in public chat ") + self.chat_1.navigate_to_chats_view() + if not self.home_1.element_by_translation_id("no-messages").is_element_displayed(): + self.errors.append("1-1 chat from blocked user is not removed and messages home is not empty!") + self.chat_1.driver.set_network_connection(ConnectionType.AIRPLANE_MODE) + + self.home_2.just_fyi('Send message to public chat while device 1 is offline') + message_blocked, message_unblocked = "Message from blocked user", "Hurray! unblocked" + self.channel_2.send_message(message_blocked) + + self.chat_1.just_fyi('Check that new messages from blocked user are not delivered') + self.chat_1.driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) + self.home_1.communities_tab.click() + self.home_1.get_chat(self.community_name, community=True).click() + self.home_1.get_chat(self.channel_name, community_channel=True).click() + for message in message_to_disappear, message_blocked: + if self.chat_1.chat_element_by_text(message).is_element_displayed(30): + self.errors.append(self.chat_1, + "'%s' from blocked user is fetched from offline in community channel" % message) + + self.chat_1.just_fyi('Unblock user and check that can see further messages') + # TODO: still no blocked users in new UI + profile_1 = self.home_1.get_profile_view() + self.home_1.navigate_back_to_home_view() + self.chat_1.profile_button.click() + profile_1.profile_messages_button.click() + profile_1.profile_blocked_users_button.wait_and_click() + self.home_1.get_chat(self.username_2).profile_unblock_button.click() + self.chat_1.confirm_block_contact_button.click() + self.chat_1.click_system_back_button(times=3) + + self.home_2.just_fyi("Check that can send message in community after unblock") + self.chat_2.send_message(message_unblocked) + self.home_1.communities_tab.click() + self.home_1.get_chat(self.community_name, community=True).click() + self.home_1.get_chat(self.channel_name, community_channel=True).click() + self.chat_1.hide_keyboard_if_shown() + if not self.chat_1.chat_element_by_text(message_unblocked).is_element_displayed(120): + self.errors.append(self.chat_1, + "%s was not received in public chat after user unblock!" % message_unblocked) + self.errors.verify_no_errors() + + self.home_1.just_fyi("Add blocked user to contacts again after removing(removed automatically when blocked)") + chat_element = self.channel_1.chat_element_by_text(message_unblocked) + chat_element.find_element() + chat_element.member_photo.click() + self.channel_1.profile_send_contact_request_button.click() + self.channel_1.contact_request_message_input.send_keys("hi") + self.channel_1.confirm_send_contact_request_button.click() + self.home_2.just_fyi("Accept contact request after being unblocked") + self.home_2.navigate_back_to_home_view() + self.home_2.handle_contact_request(self.username_1) + self.channel_1.profile_send_message_button.click_until_absense_of_element( + desired_element=self.channel_1.profile_send_message_button, attempts=20, timeout=3) + try: + self.chat_1.send_message("piy") + unblocked = True + except TimeoutException: + unblocked = False + self.errors.append(self.chat_1, "Chat with unblocked user was not enabled after 1 minute") + + if unblocked: + self.home_2.just_fyi("Check message in 1-1 chat after unblock") + self.home_2.chats_tab.click() + self.home_2.get_chat(self.username_1).click() + self.chat_2.send_message(message_unblocked) + try: + self.chat_2.chat_element_by_text(message_unblocked).wait_for_status_to_be(expected_status='Delivered', + timeout=120) + if not self.chat_1.chat_element_by_text(message_unblocked).is_element_displayed(30): + self.errors.append(self.chat_1, "Message was not received in 1-1 chat after user unblock!") + except TimeoutException: + self.errors.append(self.chat_2, 'Message was not delivered after back up online.') + + self.errors.verify_no_errors() + + @marks.testrail_id(703086) + def test_community_mark_all_messages_as_read(self): + for home in self.home_1, self.home_2: + home.navigate_to_communities_view() + self.home_2.get_chat(self.community_name, community=True).click() + self.community_2.get_channel(self.channel_name).click() + self.channel_2.send_message(self.text_message) + community_1_element = self.community_1.get_chat(self.community_name, community=True) + if not community_1_element.new_messages_grey_dot.is_element_displayed(90): + self.errors.append(self.community_1, 'New messages counter is not shown in home > Community element') + community_1_element.click() + channel_1_element = self.community_1.get_chat(self.channel_name, community_channel=True) + if not channel_1_element.new_messages_grey_dot.is_element_displayed(): + self.errors.append(self.community_1, "New messages counter is not shown in community channel element") + self.community_1.click_system_back_button() + mark_as_read_button = self.community_1.mark_all_messages_as_read_button + self.home_1.community_floating_screen.wait_for_invisibility_of_element() + community_1_element.long_press_until_element_is_shown(mark_as_read_button) + mark_as_read_button.click() + if community_1_element.new_messages_grey_dot.is_element_displayed(): + self.errors.append(self.community_1, + 'Unread messages badge is shown in community element while there are no unread messages') + community_1_element.click() + if channel_1_element.new_messages_grey_dot.is_element_displayed(): + self.errors.append( + self.community_1, + "New messages badge is shown in community channel element while there are no unread messages") + self.errors.verify_no_errors() + + @marks.testrail_id(704615) + def test_community_edit_delete_message_when_offline(self): + self.channel_2.just_fyi("Sending messages for edit and delete") + message_to_edit, message_to_delete = "message to edit", "message to delete" + self.channel_2.send_message(message_to_edit) + self.channel_2.send_message(message_to_delete) + self.home_1.navigate_to_communities_view() + self.home_1.get_chat(self.community_name, community=True).click() + self.community_1.get_channel(self.channel_name).click() + self.channel_1.just_fyi("Receiver is checking if initial messages were delivered") + for message in message_to_edit, message_to_delete: + if not self.channel_1.chat_element_by_text(message).is_element_displayed(30): + self.channel_1.driver.fail("Message '%s' was not received" % message) + + self.channel_2.just_fyi("Turning on airplane mode and editing/deleting messages") + self.channel_2.driver.set_network_connection(ConnectionType.AIRPLANE_MODE) + message_after_edit = "text after edit" + self.channel_2.edit_message_in_chat(message_to_edit, message_after_edit) + self.channel_2.delete_message_in_chat(message_to_delete) + self.channel_2.just_fyi("Turning on network connection") + self.channel_2.driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) + + self.channel_1.just_fyi("Receiver is checking if messages were updated and deleted") + if not self.channel_1.chat_element_by_text(message_after_edit).is_element_displayed(30): + self.errors.append(self.channel_1, + "Updated message '%s' is not delivered to the receiver" % message_after_edit) + if not self.channel_1.chat_element_by_text(message_to_delete).is_element_disappeared(): + self.errors.append(self.channel_1, "Message '%s' was not deleted for the receiver" % message_to_delete) + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="two_2") +@marks.nightly +class TestCommunityMultipleDeviceMergedTwo(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True}), + (self.device_2.create_user, {'enable_notifications': True})))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.public_key_2 = self.home_2.get_public_key() + self.profile_1 = self.home_1.get_profile_view() + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + self.text_message = 'hello' + + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message('hey') + self.chat_2 = self.home_2.get_chat(self.username_1).click() + + self.home_1.just_fyi("Open community to message") + self.home_1.navigate_to_communities_view() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + + self.home_2.just_fyi("Send message to contact (need for blocking contact) test") + self.chat_2.send_message(self.text_message) + self.community_2.join_community() + self.channel_2 = self.community_2.get_channel(self.channel_name).click() + + @marks.testrail_id(702786) + def test_community_mentions_push_notification(self): + self.home_1.navigate_back_to_home_view() + self.device_1.open_notification_bar() + + self.device_2.just_fyi("Invited member sends a message with a mention") + self.channel_2.send_message("hi") + self.channel_2.mention_user(self.username_1) + self.channel_2.send_message_button.click() + + self.device_1.just_fyi("Admin gets push notification with the mention and tap it") + message_received = False + pn_element = self.home_1.get_pn(pn_text=self.username_1, wait_time=90) + if pn_element: + pn_element.click() + message_received = True + if not self.channel_1.chat_element_by_text(self.username_1).is_element_displayed(): + if self.channel_1.chat_message_input.is_element_displayed(): + self.errors.append(self.channel_1, + "Message with the mention is not shown in the chat for the admin") + else: + self.errors.append(self.channel_1, + "Channel did not open by clicking on a notification with the mention for admin") + else: + self.errors.append(self.channel_1, "Push notification with the mention was not received by admin") + + if not self.channel_1.chat_message_input.is_element_displayed(): + self.channel_1.navigate_to_communities_view() + self.home_1.get_to_community_channel_from_home(self.community_name) + + if message_received: + self.channel_1.just_fyi("Set reaction for the message with a mention") + self.channel_1.set_reaction(message=self.username_1, emoji="sad", times_to_long_press=2) + + self.device_2.just_fyi("Sender edits the message with a mention") + chat_element = self.channel_2.chat_element_by_text(self.username_1) + chat_element.wait_for_sent_state() + chat_element.long_press_without_release() + edit_done = False + expected_message = "" + try: + self.channel_2.element_by_translation_id("edit-message").double_click() + time.sleep(1) + for i in range(29, 32): + self.channel_2.driver.press_keycode(i) + input_text = self.channel_2.chat_message_input.text + if 'cba' in input_text: # sometimes method press_keycode adds symbols to the beginning of line + expected_message = "0 cba (Edited)" + else: + expected_message = "0 abc (Edited)" + self.channel_2.send_message_button.click() + edit_done = True + if chat_element.message_body_with_mention.text != expected_message: + self.errors.append(self.channel_2, "Edited message is not shown correctly for the sender") + except NoSuchElementException: + self.errors.append(self.channel_2, "Can not edit a message with a mention") + if edit_done: + element = self.channel_1.chat_element_by_text(self.username_1).message_body_with_mention + if not element.is_element_displayed(10) or element.text != expected_message: + self.errors.append(self.channel_1, "Edited message is not shown correctly for the (receiver) admin") + + self.device_2.just_fyi("Sender checks the reaction for a message with a mention") + try: + self.channel_2.chat_element_by_text(self.username_1).emojis_below_message( + emoji="sad").wait_for_element_text(text=1, wait_time=60) + except (Failed, NoSuchElementException): + self.errors.append(self.channel_2, "Message reaction is not shown for the sender") + + self.home_2.navigate_back_to_home_view() + if not self.channel_1.chat_message_input.is_element_displayed(): + self.channel_1.navigate_to_communities_view() + self.home_1.get_chat(self.community_name, community=True).click() + self.community_1.get_channel(self.channel_name).click() + + self.device_1.just_fyi("Admin sends a message with a mention") + self.channel_1.mention_user(self.username_2) + self.channel_1.send_message_button.click() + self.device_2.just_fyi("Invited member gets push notification with the mention and tap it") + self.device_2.open_notification_bar() + push_notification_element = self.home_2.get_pn(pn_text=self.username_2, wait_time=90) + if push_notification_element: + push_notification_element.click() + if not self.channel_2.chat_element_by_text(self.username_2).is_element_displayed(): + if self.channel_2.chat_message_input.is_element_displayed(): + self.errors.append(self.channel_2, + "Message with the mention is not shown in the chat for the invited member") + else: + self.errors.append( + self.channel_2, + "Channel did not open by clicking on a notification with the mention for the invited member") + else: + self.errors.append(self.channel_2, + "Push notification with the mention was not received by the invited member") + self.errors.verify_no_errors() + + @marks.testrail_id(702809) + def test_community_markdown_support(self): + markdown = { + 'bold text in asterics': '**', + 'bold text in underscores': '__', + 'italic text in asteric': '*', + 'italic text in underscore': '_', + 'inline code': '`', + 'code blocks': '```', + 'quote reply (one row)': '>', + } + + for home in self.homes: + home.navigate_to_communities_view() + community = home.get_chat(self.community_name, community=True).click() + community.get_channel(self.channel_name).click() + + for message, symbol in markdown.items(): + self.home_1.just_fyi('Checking that "%s" is applied (%s) in community channel' % (message, symbol)) + message_to_send = symbol + message + symbol if 'quote' not in message else symbol + message + self.channel_2.send_message(message_to_send) + if not self.channel_2.chat_element_by_text(message).is_element_displayed(): + self.errors.append( + self.channel_2, + '%s is not displayed with markdown in community channel for the sender \n' % message) + + if not self.channel_1.chat_element_by_text(message).is_element_displayed(60): + self.errors.append( + self.channel_1, + '%s is not displayed with markdown in community channel for the recipient \n' % message) + + for home in self.homes: + home.navigate_to_chats_view() + home.recent_tab.click() + + self.home_1.get_chat(self.username_2).click() + self.home_2.get_chat(self.username_1).click() + + for message, symbol in markdown.items(): + self.home_1.just_fyi('Checking that "%s" is applied (%s) in 1-1 chat' % (message, symbol)) + message_to_send = symbol + message + symbol if 'quote' not in message else symbol + message + self.chat_1.send_message(message_to_send) + if not self.chat_1.chat_element_by_text(message).is_element_displayed(30): + self.errors.append( + self.chat_1, '%s is not displayed with markdown in 1-1 chat for the sender (device 1) \n' % message) + + if not self.chat_2.chat_element_by_text(message).is_element_displayed(60): + self.errors.append( + self.chat_2, + '%s is not displayed with markdown in 1-1 chat for the recipient (device 2) \n' % message) + + self.errors.verify_no_errors() + + @marks.testrail_id(702845) + def test_community_leave(self): + self.home_2.navigate_to_communities_view() + community = self.home_2.get_chat(self.community_name, community=True) + community_to_leave = CommunityView(self.drivers[1]) + community.long_press_until_element_is_shown(community_to_leave.leave_community_button) + community_to_leave.leave_community_button.click() + community_to_leave.leave_community_button.click() + if not community.is_element_disappeared(): + self.errors.append(self.home_2, 'Community is still shown in the list after leave') + self.errors.verify_no_errors() + + @marks.xfail(reason="Can't navigate to a community channel before joining the community, " + "https://github.com/status-im/status-mobile/issues/21776") + @marks.testrail_id(702948) + def test_community_hashtag_links_to_community_channels(self): + self.home_2.navigate_to_chats_view() + self.home_1.navigate_to_communities_view() + + self.home_1.just_fyi("Device 1 creates a closed community") + self.home_1.create_community(community_type="closed") + community_name = "closed community" + self.community_1.invite_to_community(community_name, self.username_2) + self.community_1.get_to_community_channel_from_home(community_name, "general") + control_message_general_chat = "this message should be visible to the user before joining" + self.channel_1.send_message(control_message_general_chat) + + self.home_2.just_fyi("Device 2 checks the community channels and message inside") + self.home_2.get_chat(self.username_1).click() + control_message_1_1_chat = "it is just a message text" + self.chat_2.send_message(control_message_1_1_chat) + self.chat_2.chat_element_by_text("https://status.app/c/").click_on_link_inside_message_body() + closed_com_channels = dogs_channel, cats_channel = "dogs", "cats" # not checking the last channel '# rules' to avoid scrolling + not_shown = list() + for chan_name in closed_com_channels: + if not self.community_2.get_channel(chan_name).is_element_displayed(): + not_shown.append(chan_name) + if not_shown: + self.errors.append(self.community_2, + "Not all channels are shown in community before joining: %s" % not_shown) + chan = self.community_2.get_channel("general") + if chan.is_element_displayed(): + chan.find_element().click() + if not self.channel_2.chat_element_by_text(control_message_general_chat).is_element_displayed(20): + self.errors.append(self.channel_2, "Message in community channel is not visible for user before join") + else: + not_shown.append("general") + + self.home_2.just_fyi("Device 2 joins the community") + self.home_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + self.community_2.join_community(open_community=False) + + self.home_1.just_fyi("Device 1 accepts the community request") + self.home_1.navigate_back_to_home_view() + try: + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120) + except TimeoutException: + self.errors.append(self.home_1, "Unread indicator is not shown in notifications on membership request") + self.home_1.open_activity_center_button.click() + reply_element = self.home_1.get_element_from_activity_center_view(self.username_2) + reply_element.title.swipe_right_on_element(width_percentage=2.5) + self.home_1.activity_notification_swipe_button.click() + self.home_1.close_activity_centre.click() + + cats_message = "Where is a cat?" + + self.home_1.just_fyi("Device 1 sends a message in the cats channel") + self.home_1.get_to_community_channel_from_home(community_name=community_name, channel_name=cats_channel) + self.channel_1.send_message(cats_message) + self.channel_1.navigate_to_communities_view() + self.home_1.get_to_community_channel_from_home(community_name=community_name, channel_name=dogs_channel) + + self.home_1.just_fyi("Device 1 sends a message with hashtag in the dogs channel") + message_with_hashtag = "#cats" + self.channel_1.send_message(message_with_hashtag) + + self.home_2.just_fyi("Device 2 clicks on the message with hashtag in the community channel") + self.home_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(community_name, dogs_channel) + self.channel_2.chat_element_by_text(message_with_hashtag).click_on_link_inside_message_body() + if not self.channel_2.chat_element_by_text(cats_message).is_element_displayed(30): + self.errors.append(self.channel_2, "Receiver was not navigated to the cats channel") + + self.home_1.just_fyi("Device 1 clicks on the message with hashtag in the community channel") + self.channel_1.chat_element_by_text(message_with_hashtag).click_on_link_inside_message_body() + if not self.channel_1.chat_element_by_text(cats_message).is_element_displayed(30): + self.errors.append(self.channel_1, "Sender was not navigated to the cats channel") + + for home in self.homes: + home.navigate_to_chats_view() + + self.home_2.just_fyi("Device 2 sends a message with hashtag in 1-1 chat") + self.home_2.get_chat(self.username_1).click() + self.chat_2.send_message(message_with_hashtag) + + self.home_1.just_fyi("Device 1 clicks on the message with hashtag in 1-1 chat") + self.home_1.get_chat(self.username_2).click() + self.chat_1.chat_element_by_text(message_with_hashtag).click_on_link_inside_message_body() + if self.chat_1.chat_element_by_text(control_message_1_1_chat).is_element_disappeared(): + self.errors.append(self.chat_1, "Receiver was navigated out of 1-1 chat") + + self.home_2.just_fyi("Device 2 clicks on the message with hashtag in 1-1 chat") + self.chat_2.chat_element_by_text(message_with_hashtag).click_on_link_inside_message_body() + if self.chat_2.chat_element_by_text(control_message_1_1_chat).is_element_disappeared(): + self.errors.append(self.chat_2, "Sender was navigated out of 1-1 chat") + + self.errors.verify_no_errors() + + @marks.xfail(reason="Can't navigate to a community channel before joining the community, " + "https://github.com/status-im/status-mobile/issues/21776") + @marks.testrail_id(703629) + def test_community_join_when_node_owner_offline(self): + for home in self.homes: + home.navigate_to_communities_view() + if self.home_2.get_chat(self.community_name, community=True).is_element_displayed(): + CommunityView(self.home_2.driver).leave_community(self.community_name) + + self.home_1.just_fyi("Device 1 creates open community") + self.home_1.create_community(community_type="open") + community_name = "open community" + self.community_1.invite_to_community(community_name, self.username_2) + self.community_1.get_to_community_channel_from_home(community_name, "general") + control_message_general_chat = "this message should be visible to the user before joining" + self.channel_1.send_message(control_message_general_chat) + try: + self.channel_1.chat_element_by_text(control_message_general_chat).wait_for_status_to_be( + expected_status='Delivered', + timeout=60) + message_sent = True + except TimeoutException: + message_sent = False + + self.home_1.just_fyi("Device 1 goes offline") + app_package = self.device_1.driver.current_package + self.device_1.driver.terminate_app(app_package) + + self.home_2.just_fyi("Device 2 requests to join the community") + self.home_2.chats_tab.click() + self.home_2.get_chat(self.username_1).click() + self.community_2.join_community(open_community=False) + exp_text = "You requested to join “%s”" % community_name + if self.community_2.toast_content_element.is_element_displayed(10): + cur_text = self.community_2.toast_content_element.text + if cur_text != exp_text: + self.errors.append(self.community_2, + "Text \"%s\" in shown toast element doesn't match expected \"%s\"" % ( + cur_text, exp_text)) + else: + self.errors.append(self.community_2, "Toast element with the text \"%s\" doesn't appear" % exp_text) + if not self.community_2.community_status_pending.is_element_displayed(): + self.errors.append(self.community_2, "Pending status is not displayed") + general_channel = self.community_2.get_channel("general") + if general_channel.is_element_displayed(): + general_channel.find_element().click() + if not self.channel_2.chat_element_by_text(control_message_general_chat).is_element_displayed(30): + self.errors.append( + self.community_2, + "Message in community channel is not visible for user before join, it was indicated as " \ + "%s sent for the sender before he went offline" % ("" if message_sent else "not")) + else: + self.errors.append(self.community_2, "Community channel is not displayed for user before join") + self.community_2.toast_content_element.wait_for_invisibility_of_element(30) + self.home_2.navigate_to_communities_view() + self.home_2.pending_communities_tab.click() + if self.home_2.get_chat(community_name, community=True).is_element_displayed(): + self.home_2.get_chat(community_name, community=True).click() + else: + self.errors.append(self.home_2, "%s is not listed inside Pending communities tab" % community_name) + + self.home_1.just_fyi("Device 1 goes back online") + self.home_1.driver.activate_app(app_package) + self.device_1.sign_in(user_name=self.username_1) + + self.home_2.just_fyi("Device 2 checks that he's joined the community") + exp_text = "You joined “%s”" % community_name + if self.community_2.toast_content_element.is_element_displayed(60): + cur_text = self.community_2.toast_content_element.text + if cur_text != exp_text: + self.errors.append(self.community_2, + "Text \"%s\" in shown toast element doesn't match expected \"%s\"" % ( + cur_text, exp_text)) + # else: + # self.errors.append("Toast element with the text \"%s\" doesn't appear" % exp_text) + # ToDo: add verification when toast is fixed + if not self.community_2.community_status_joined.is_element_displayed(): + self.errors.append(self.community_2, "Joined status is not displayed") + self.community_2.close_community_view_button.click_until_absense_of_element( + self.community_2.close_community_view_button) + self.home_2.joined_communities_tab.click() + chat_element = self.home_2.get_chat(community_name, community=True) + if chat_element.is_element_displayed(30): + chat_element.click() + else: + self.errors.append(self.home_2, "%s is not listed inside Joined communities tab" % community_name) + + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="six_2") +@marks.nightly +class TestCommunityMultipleDeviceMergedThree(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user,), + (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.public_key_2 = self.home_2.get_public_key() + self.profile_1 = self.home_1.get_profile_view() + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + self.text_message = 'hello' + + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message('hey') + self.chat_2 = self.home_2.get_chat(self.username_1).click() + + self.home_1.just_fyi("Open community to message") + self.home_1.navigate_to_communities_view() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + + self.community_2.join_community() + self.channel_2 = self.community_2.get_channel(self.channel_name).click() + + @marks.testrail_id(741924) + @marks.xfail(reason="Community message can be fetched from offline when using mobile data") + def test_community_mobile_data_and_wi_fi_only_fetching(self): + self.device_2.just_fyi("Receiver turns wi-fi off") + self.device_2.navigate_back_to_home_view() + self.device_2.driver.set_network_connection(ConnectionType.DATA_ONLY) + # ToDo: pop up is not shown on LT emulators, needs more investigation + # self.device_2.turn_wi_fi_off() + # + # for translation in ['which-connection-to-use', 'mobile-and-wifi', 'wifi-only']: + # if not self.device_2.element_by_translation_id(translation).is_element_displayed(): + # self.errors.append(self.device_2, + # "Element with text '%s' is not shown when switching to mobile data" % translation) + profile_2 = self.device_2.profile_button.click() + profile_2.syncing_button.scroll_and_click() + profile_2.sync_and_backup_button.click() + profile_2.wi_fi_only_button.click() + self.home_2.navigate_to_communities_view() + self.home_2.discover_communities_button.click() + if self.home_2.community_card_item.is_element_displayed(10): + self.errors.append(self.home_2, + "Community can be fetched while using mobile data with wi-fi only syncing settings") + + message_1 = 'message text 1' + self.channel_1.just_fyi("Sender sends a message in the community channel when receiver is using mobile data") + self.channel_1.send_message(message_1) + self.home_2.click_system_back_button() + self.home_2.get_to_community_channel_from_home(self.community_name) + if not self.channel_2.chat_element_by_text(message_1).is_element_displayed(120): + self.errors.append(self.device_2, + "Can't receive the message '%s' in community when using mobile data" % message_1) + + self.device_2.just_fyi("Receiver turns internet off") + self.device_2.driver.set_network_connection(ConnectionType.NO_CONNECTION) + message_2 = 'message text 2' + self.channel_1.just_fyi("Sender sends messages in the community channel and 1-1 chat when receiver is offline") + self.channel_1.send_message(message_2) + self.channel_1.chat_element_by_text(message_2).wait_for_sent_state() + self.device_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + message_3 = 'message text 3' + self.chat_1.send_message(message_3) + self.chat_1.chat_element_by_text(message_3).wait_for_sent_state() + + self.device_2.just_fyi("Receiver turns mobile data on") + self.device_2.driver.set_network_connection(ConnectionType.DATA_ONLY) + if self.channel_2.chat_element_by_text(message_2).is_element_displayed(120): + self.errors.append( + self.device_2, + "Message '%s' in community, which is sent when receiver was offline, is received using mobile data" % message_2) + self.device_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + if not self.chat_2.chat_element_by_text(message_3).is_element_displayed(120): + self.errors.append( + self.device_2, + "Message '%s' in 1-1 chat, which is sent when receiver was offline, is missed" % message_3) + + self.device_2.just_fyi("Receiver turns wi-fi on") + self.device_2.driver.set_network_connection(ConnectionType.WIFI_ONLY) + self.home_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + if not self.channel_2.chat_element_by_text(message_2).is_element_displayed(120): + self.errors.append( + self.device_2, + "Message '%s' in community channel, which is sent when receiver was offline, is missed after turning wi-fi on" % message_2) + self.errors.verify_no_errors() + + @marks.testrail_id(741925) + def test_community_send_message_from_offline(self): + self.device_1.just_fyi("Device 1 goes offline and send a message in 1-1 chat") + self.device_1.driver.set_network_connection(ConnectionType.NO_CONNECTION) + + message_1_1 = 'message in 1-1 chat' + + def _send_message_1_1(): + self.device_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message(message_1_1) + + self.device_2.just_fyi("Device 2 goes offline and send a message in community") + self.device_2.driver.set_network_connection(ConnectionType.NO_CONNECTION) + + message_community = 'message community' + + def _send_message_community(): + self.device_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + self.channel_2.send_message(message_community) + + self.loop.run_until_complete(run_in_parallel(((_send_message_1_1,), (_send_message_community,)))) + + self.device_1.just_fyi("Device 1 goes back online and checks a message in community channel") + self.device_1.driver.set_network_connection(ConnectionType.WIFI_ONLY) + + def _check_message_community(): + self.device_1.navigate_to_communities_view() + self.home_1.get_to_community_channel_from_home(self.community_name) + if not self.channel_1.chat_element_by_text(message_community).is_element_displayed(120): + self.errors.append( + self.device_1, + "Can't receive the message '%s' in community if it's sent from offline" % message_community) + + self.device_2.just_fyi("Device 2 goes back online and checks a message in 1-1 chat") + self.device_2.driver.set_network_connection(ConnectionType.WIFI_ONLY) + + def _check_message_1_1(): + self.device_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + if not self.chat_2.chat_element_by_text(message_1_1).is_element_displayed(120): + self.errors.append( + self.device_1, + "Can't receive the message '%s' in 1-1 chat if it's sent from offline" % message_1_1) + + self.loop.run_until_complete(run_in_parallel(((_check_message_community,), (_check_message_1_1,)))) + + self.errors.verify_no_errors() + + @marks.testrail_id(741926) + def test_community_messaging_on_mobile_data(self): + self.device_1.just_fyi("Device 1 turns mobile data on and send a message in community channel") + self.device_1.driver.set_network_connection(ConnectionType.DATA_ONLY) + self.device_2.just_fyi("Device 2 turns mobile data on and checks receiving a message in community channel") + self.device_2.driver.set_network_connection(ConnectionType.DATA_ONLY) + + self.device_1.navigate_to_communities_view() + self.home_1.get_to_community_channel_from_home(self.community_name) + message_community = 'message community' + self.channel_1.send_message(message_community) + self.device_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + if not self.channel_2.chat_element_by_text(message_community).is_element_displayed(60): + self.errors.append(self.channel_2, + "Message with text '%s' was not received in community" % message_community) + + self.device_2.just_fyi("Device 2 sends a message in 1-1 chat") + self.device_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + message_1_1 = "message 1-1 chat" + self.chat_2.send_message(message_1_1) + + self.device_1.just_fyi("Device 1 checks a message receiving in 1-1 chat") + self.device_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + if not self.chat_1.chat_element_by_text(message_1_1).is_element_displayed(60): + self.errors.append(self.chat_1, + "Message with text '%s' was not received in 1-1 chat" % message_1_1) + + self.errors.verify_no_errors() diff --git a/test/appium/tests/conftest.py b/test/appium/tests/conftest.py new file mode 100644 index 00000000000..d40ce9b3ced --- /dev/null +++ b/test/appium/tests/conftest.py @@ -0,0 +1,302 @@ +import json +import os +import re +import signal +import time +from contextlib import contextmanager +from dataclasses import dataclass +from datetime import datetime +from http.client import RemoteDisconnected +from os import environ + +import pytest +import requests +from filelock import FileLock +from requests.exceptions import ConnectionError as c_er + +import tests +from tests import test_suite_data + +lambda_test_username = environ.get('LAMBDA_TEST_USERNAME') +lambda_test_access_key = environ.get('LAMBDA_TEST_ACCESS_KEY') + +github_token = environ.get('GIT_HUB_TOKEN') + + +def pytest_addoption(parser): + parser.addoption("--build", + action="store", + default=datetime.now().strftime('%Y-%m-%d-%H-%M'), + help="Specify build name") + parser.addoption('--apk', + action='store', + default=None, + help='Url or local path to apk') + parser.addoption('--env', + action='store', + default='lt', + help='Specify environment: local/lt/api') + parser.addoption('--log_steps', + action='store', + default=False, + help='Display each test step in terminal as plain text: True/False') + parser.addoption('--pr_number', + action='store', + default=None, + help='Pull Request number') + parser.addoption('--testrail_report', + action='store', + default=False, + help='boolean; For creating testrail report per run') + parser.addoption("--run_testrail_ids", + action="store", + metavar="NAME", + default=None, + help="only run tests matching the environment NAME.") + parser.addoption("--apk_upgrade", + action="store", + metavar="NAME", + default=None, + help='Url or local path to apk for upgrade') + + +@dataclass +class Option: + pass + + +option = Option() +testrail_report = None +github_report = None +run_name = None + + +def is_master(config): + return not hasattr(config, 'workerinput') + + +@contextmanager +def _upload_time_limit(seconds): + def signal_handler(signum, frame): + raise TimeoutError("Apk upload took more than %s seconds" % seconds) + + signal.signal(signal.SIGALRM, signal_handler) + signal.alarm(seconds) + try: + start_time = time.time() + yield + print("Apk upload took %s seconds" % round(time.time() - start_time)) + finally: + signal.alarm(0) + + +class UploadApkException(Exception): + pass + + +def _upload_and_check_response(apk_file_path): + from support.lambda_test import upload_apk + with _upload_time_limit(1000): + return upload_apk(apk_file_path) + + +def _upload_and_check_response_with_retries(apk_file_path, retries=3): + for _ in range(retries): + try: + return _upload_and_check_response(apk_file_path) + except (ConnectionError, RemoteDisconnected, c_er): + time.sleep(10) + + +def _download_apk(url): + # Absolute path added to handle CI runs. + apk_path = os.path.join(os.path.dirname(__file__), test_suite_data.apk_name) + + print('Downloading: %s' % url) + try: + resp = requests.get(url) + resp.raise_for_status() + except requests.RequestException as err: + print(resp.text) + raise err + + with open(apk_path, 'wb') as f: + f.write(resp.content) + + return apk_path + + +def get_run_name(config, new_one=False): + pr_number = config.getoption('pr_number') + if config.getoption('testrail_report'): + if pr_number: + if new_one: + run_number = len(testrail_report.get_runs(pr_number)) + 1 + else: + run_number = len(testrail_report.get_runs(pr_number)) + return 'PR-%s run #%s (%s)' % (pr_number, run_number, test_suite_data.apk_name.split('-')[4]) + else: + return test_suite_data.apk_name + else: + return config.getoption('build') + + +def pytest_configure(config): + global option + option = config.option + from support.testrail_report import TestrailReport + global testrail_report + testrail_report = TestrailReport() + from support.github_report import GithubHtmlReport + global github_report + github_report = GithubHtmlReport() + tests.pytest_config_global = vars(config.option) + config.addinivalue_line("markers", "testrail_id(name): empty") + + if config.getoption('log_steps'): + import logging + logging.basicConfig(level=logging.INFO) + if config.getoption('env') == 'api': + return + + test_suite_data.apk_name = ([i for i in [i for i in config.getoption('apk').split('/') + if '.apk' in i]])[0] + global run_name + if is_master(config) and config.getoption('testrail_report'): + run_name = get_run_name(config, new_one=True) + testrail_report.add_run(run_name) + else: + run_name = get_run_name(config, new_one=False) + + if not is_master(config): + return + + pr_number = config.getoption('pr_number') + if pr_number: + from github import Github + repo = Github(github_token).get_user('status-im').get_repo('status-mobile') + pull = repo.get_pull(int(pr_number)) + pull.get_commits()[0].create_status( + state='pending', + context='Mobile e2e tests', + description='e2e tests are running' + ) + + +@pytest.fixture(scope='session', autouse=True) +def upload_apk(tmp_path_factory): + fn = tmp_path_factory.getbasetemp().parent / "lt_apk.json" + with FileLock(str(fn) + ".lock"): + if fn.is_file(): + data = json.loads(fn.read_text()) + tests.pytest_config_global['lt_apk_url'] = data['lambda_test_apk_url'] + else: + apk_src = tests.pytest_config_global['apk'] + if apk_src.startswith('http'): + apk_path = _download_apk(apk_src) + else: + apk_path = apk_src + tests.pytest_config_global['lt_apk_url'] = _upload_and_check_response(apk_path) + fn.write_text(json.dumps({'lambda_test_apk_url': tests.pytest_config_global['lt_apk_url']})) + if apk_src.startswith('http'): + os.remove(apk_path) + + +def pytest_unconfigure(config): + if is_master(config): + if config.getoption('testrail_report'): + testrail_report.add_results() + if config.getoption('pr_number'): + from github import Github + repo = Github(github_token).get_user('status-im').get_repo('status-mobile') + pull = repo.get_pull(int(config.getoption('pr_number'))) + comment = pull.create_issue_comment(github_report.build_html_report(testrail_report.run_id)) + if not testrail_report.is_run_successful(): + pull.get_commits()[0].create_status(state='failure', context='Mobile e2e tests', + description='Failure - e2e tests are failed', + target_url=comment.html_url) + else: + pull.get_commits()[0].create_status(state='success', context='Mobile e2e tests', + description='Success - e2e tests are passed', + target_url=comment.html_url) + + +@pytest.hookimpl(hookwrapper=True) +def pytest_runtest_makereport(item, call): + outcome = yield + report = outcome.get_result() + + case_ids_set = item.config.getoption("run_testrail_ids") + + def catch_error(): + error = report.longreprtext + failure_pattern = 'E.*Message:|E.*Error:|E.*Failed:' + exception = re.findall(failure_pattern, error) + if exception: + error = error.replace(re.findall(failure_pattern, report.longreprtext)[0], '') + return error + + secured_test = "secured" in item.keywords._markers or "secured" in item.parent.keywords._markers + + if report.when == 'setup': + is_group = "xdist_group" in item.keywords._markers or "xdist_group" in item.parent.keywords._markers + error_intro, error = 'Test setup failed:', '' + final_error = '%s %s' % (error_intro, error) + if (hasattr(report, 'wasxfail') and not case_ids_set) or (hasattr(report, 'wasxfail') and ( + str([mark.args[0] for mark in item.iter_markers(name='testrail_id')][0]) in str(case_ids_set))): + if '[NOTRUN]' in report.wasxfail: + test_suite_data.set_current_test(test_name=item.name, testrail_case_id=get_testrail_case_id(item), + secured=secured_test) + test_suite_data.current_test.create_new_testrun() + if is_group: + test_suite_data.current_test.group_name = item.instance.__class__.__name__ + test_suite_data.current_test.testruns[-1].xfail = report.wasxfail + test_suite_data.current_test.testruns[-1].run = False + error_intro, error = 'Test is not run, e2e blocker ', report.wasxfail + final_error = "%s [[%s]]" % (error_intro, error) + else: + if is_group: + test_suite_data.current_test.group_name = item.instance.__class__.__name__ + error = catch_error() + final_error = '%s %s [[%s]]' % (error_intro, error, report.wasxfail) + else: + if is_group and report.failed: + test_suite_data.current_test.group_name = item.instance.__class__.__name__ + error = catch_error() + final_error = '%s %s' % (error_intro, error) + if error: + test_suite_data.current_test.testruns[-1].error = final_error + github_report.save_test(test_suite_data.current_test) + + if report.when == 'call': + current_test = test_suite_data.current_test + error = catch_error() + if report.failed: + current_test.testruns[-1].error = error + if (hasattr(report, 'wasxfail') and not case_ids_set) or (hasattr(report, 'wasxfail') and ( + str([mark.args[0] for mark in item.iter_markers(name='testrail_id')][0]) in str(case_ids_set))): + current_test.testruns[-1].xfail = report.wasxfail + if '[NOTRUN]' in report.wasxfail: + current_test.testruns[-1].run = False + if error: + current_test.testruns[-1].error = '%s [[%s]]' % (error, report.wasxfail) + + +def get_testrail_case_id(item): + testrail_id = item.get_closest_marker('testrail_id') + if testrail_id: + return testrail_id.args[0] + + +def pytest_runtest_setup(item): + try: + testrail_id = [mark.args[0] for mark in item.iter_markers(name='testrail_id')][0] + except IndexError: + pass + run_testrail_ids = item.config.getoption("run_testrail_ids") + if run_testrail_ids: + if str(testrail_id) not in list(run_testrail_ids.split(",")): + pytest.skip("test requires testrail case id %s" % testrail_id) + secured = bool([mark for mark in item.iter_markers(name='secured')]) + test_suite_data.set_current_test(test_name=item.name, testrail_case_id=get_testrail_case_id(item), secured=secured) + test_suite_data.current_test.create_new_testrun() diff --git a/test/appium/tests/deep_links/test_deep_and_universal_links.py b/test/appium/tests/deep_links/test_deep_and_universal_links.py new file mode 100644 index 00000000000..f94fc2e7159 --- /dev/null +++ b/test/appium/tests/deep_links/test_deep_and_universal_links.py @@ -0,0 +1,153 @@ +import pytest + +from tests import marks +from tests.base_test_case import create_shared_drivers, MultipleSharedDeviceTestCase +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="one_1") +@marks.nightly +class TestDeepLinksOneDevice(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.driver = self.drivers[0] + self.sign_in = SignInView(self.driver) + + self.home = self.sign_in.create_user() + self.username = self.home.get_username() + self.home.communities_tab.click_until_presence_of_element(self.home.plus_community_button) + self.open_community_name = "open community" + self.channel_name = "general" + self.community = self.home.create_community(community_type="open") + self.profile_view = self.home.get_profile_view() + self.browser_view = self.home.get_dapp_view() + self.home.get_chat(self.open_community_name, community=True).click() + self.community_view = self.home.get_community_view() + self.open_community_url = self.community_view.copy_community_link() + self.channel = self.community_view.get_channel(self.channel_name).click() + + @marks.testrail_id(704613) + def test_links_open_universal_links_from_chat(self): + profile_urls = { + "https://status.app/u/G10A4B0JdgwyRww90WXtnP1oNH1ZLQNM0yX0Ja9YyAMjrqSZIYINOHCbFhrnKRAcPGStPxCMJDSZlGCKzmZrJcimHY8BbcXlORrElv_BbQEegnMDPx1g9C5VVNl0fE4y#zQ3shwQPhRuDJSjVGVBnTjCdgXy5i9WQaeVPdGJD6yTarJQSj": "zQ3...arJQSj", + "https://status.app/u#zQ3shVVxZMwLVEQvuu1KF6h4D2mzVyCC4F4mHLZm5dz5XU1aa": "zQ3...5XU1aa", + "https://status.app/u/CweACg0KC1Rlc3RVc2VyRTJFAw==#zQ3shcFXYnGXxJZnsMThziUNMwyA5uGLp58bLGmfb3qaWD1F6": "TestUserE2E"} + + for url, text in profile_urls.items(): + self.channel.just_fyi("Opening profile '%s' by the url %s" % (text, url)) + self.channel.chat_message_input.clear() + self.channel.send_message(url) + self.channel.chat_element_by_text(url).click_on_link_inside_message_body() + if self.channel.profile_send_contact_request_button.is_element_displayed(10): + username_text = self.profile_view.contact_name_text.text + if not (username_text.endswith(url[-6:]) or username_text == text): + self.errors.append(self.channel, "Incorrect username is shown for profile url %s" % url) + else: + self.errors.append(self.channel, "Profile was not opened by the profile url %s" % url) + self.profile_view.close_button.click() + + self.errors.verify_no_errors() + + @marks.testrail_id(702775) + def test_links_deep_links_profile(self): + self.home.navigate_back_to_home_view() + self.home.browser_tab.click() + + profile_links = { + "status-app://u/G10A4B0JdgwyRww90WXtnP1oNH1ZLQNM0yX0Ja9YyAMjrqSZIYINOHCbFhrnKRAcPGStPxCMJDSZlGCKzmZrJcimHY8BbcXlORrElv_BbQEegnMDPx1g9C5VVNl0fE4y#zQ3shwQPhRuDJSjVGVBnTjCdgXy5i9WQaeVPdGJD6yTarJQSj": None, + "status-app://u#zQ3shVVxZMwLVEQvuu1KF6h4D2mzVyCC4F4mHLZm5dz5XU1aa": None, + "status-app://u/Ow==#zQ3shsKnV5HJMWJR61c6dssWzHszdbLfBoMF1gcLtSQAYdw2d": "Restored desktop", + "status-app://u/CweACg0KC1Rlc3RVc2VyRTJFAw==#zQ3shcFXYnGXxJZnsMThziUNMwyA5uGLp58bLGmfb3qaWD1F6": "TestUserE2E" + } + for link, text in profile_links.items(): + self.channel.just_fyi("Opening profile link %s" % link) + self.browser_view.open_url(link) + shown_name_text = self.profile_view.contact_name_text.text + if text: + name_is_shown = shown_name_text == text or shown_name_text.endswith(link[-6:]) + else: + name_is_shown = shown_name_text.endswith(link[-6:]) + if not self.channel.profile_send_contact_request_button.is_element_displayed(10) or not name_is_shown: + self.errors.append(self.channel, "Profile was not opened by the profile deep link %s" % link) + self.browser_view.click_system_back_button() + + self.errors.verify_no_errors() + + @marks.testrail_id(739307) + def test_deep_links_communities(self): + closed_community_name, snt_community_name = "closed community", "SNT community" + self.sign_in.reopen_app(sign_in=True, user_name=self.username) + if self.home.communities_tab.is_element_displayed(): + self.home.communities_tab.click() + else: + self.home.navigate_to_communities_view() + self.home.create_community(community_type="closed") + if not self.community_view.community_options_button.is_element_displayed(): + self.home.get_chat(closed_community_name, community=True).click() + closed_community_url = self.community_view.copy_community_link() + self.home.navigate_back_to_home_view() + self.home.create_community(community_type="token-gated") + if not self.community_view.community_options_button.is_element_displayed(): + self.home.get_chat(snt_community_name, community=True).click() + snt_community_url = self.community_view.copy_community_link() + self.home.reopen_app(sign_in=False) + self.sign_in.create_user(first_user=False) + self.home.browser_tab.click() + + old, new = "https://status.app/", "status-app://" + community_links = { + snt_community_name: snt_community_url.replace(old, new), + self.open_community_name: self.open_community_url.replace(old, new), + closed_community_name: closed_community_url.replace(old, new) + } + for text, link in community_links.items(): + self.channel.just_fyi("Opening community '%s' by the link %s" % (text, link)) + self.browser_view.open_url(link) + if text == snt_community_name: + if self.community_view.community_title.text != text: + self.errors.append(self.community_view, + "Community '%s' was not requested to join by the deep link %s" % (text, link)) + else: + if not self.community_view.join_button.is_element_displayed( + 10) or self.community_view.community_title.text != text: + self.errors.append(self.community_view, + "Community '%s' was not requested to join by the deep link %s" % (text, link)) + if text != closed_community_name: # the last one + self.home.click_system_back_button() + self.errors.verify_no_errors() + + @marks.testrail_id(704614) + @marks.skip # ToDo: the feature is not ready yet + def test_links_open_universal_links_from_other_apps(self): + app_package = self.driver.current_package + self.home.just_fyi("Opening a profile URL from google search bar when user is still logged in") + profile_url = "https://status.app/u#zQ3shVVxZMwLVEQvuu1KF6h4D2mzVyCC4F4mHLZm5dz5XU1aa" + self.home.click_system_home_button() + self.home.open_link_from_google_search_app(profile_url, app_package) + if not self.channel.profile_add_to_contacts_button.is_element_displayed( + 10) or not self.profile_view.default_username_text.text.endswith(profile_url[-6:]): + self.errors.append(self.profile_view, + "Profile was not opened by the url %s when user is logged in" % profile_url) + + self.home.just_fyi("Opening a community URL from google search bar when user is logged out") + self.driver.terminate_app(app_package) + community_url = "https://status.app/c/Ow==#zQ3shbmfT3hvh4mKa1v6uAjjyztQEroh8Mfn6Ckegjd7LT3XK" + self.home.open_link_from_google_search_app(community_url, app_package) + self.sign_in.sign_in(user_name=self.username) + if not self.community_view.join_button.is_element_displayed(10): + self.errors.append(self.community_view, + "Closed community was not requested to join by the url %s" % community_url) + + # ToDo: enable when https://github.com/status-im/status-mobile/issues/18074 is fixed + # self.home.just_fyi("Opening a community channel URL from google search bar with no account created") + # self.driver.reset() + # self.home.click_system_home_button() + # channel_url = "https://status.app/cc/Ow==#zQ3shbmfT3hvh4mKa1v6uAjjyztQEroh8Mfn6Ckegjd7LT3XK" + # self.home.open_link_from_google_search_app(channel_url, app_package) + # self.sign_in.create_user() + # if not self.home.element_by_translation_id( + # "community-admins-will-review-your-request").is_element_displayed(10): + # self.errors.append("Created user was not redirected to a community channel by the url %s" % channel_url) + + self.errors.verify_no_errors() diff --git a/test/appium/tests/different_os/test_different_android_versions.py b/test/appium/tests/different_os/test_different_android_versions.py new file mode 100644 index 00000000000..cc6631b5ad2 --- /dev/null +++ b/test/appium/tests/different_os/test_different_android_versions.py @@ -0,0 +1,35 @@ +import pytest + +from base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from tests import marks +from views.sign_in_view import SignInView + + +def _check_account_creation(driver): + sign_in_view = SignInView(driver) + home_view = sign_in_view.create_user() + home_view.profile_button.wait_for_visibility_of_element() + + +@pytest.mark.xdist_group(name="two_1") +@marks.nightly +class TestAndroid12(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(quantity=1, platform_version=12, device_name="Pixel 5") + + @marks.testrail_id(741806) + def test_create_account_android_12(self): + _check_account_creation(self.drivers[0]) + + +@pytest.mark.xdist_group(name="three_1") +@marks.nightly +class TestAndroid13(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(quantity=1, platform_version=13) + + @marks.testrail_id(741807) + def test_create_account_android_13(self): + _check_account_creation(self.drivers[0]) diff --git a/test/appium/tests/marks.py b/test/appium/tests/marks.py new file mode 100644 index 00000000000..eaa885eadb2 --- /dev/null +++ b/test/appium/tests/marks.py @@ -0,0 +1,9 @@ +import pytest + +testrail_id = pytest.mark.testrail_id +nightly = pytest.mark.nightly +smoke = pytest.mark.smoke + +flaky = pytest.mark.flaky +skip = pytest.mark.skip +xfail = pytest.mark.xfail diff --git a/test/appium/tests/private_chats/test_group_chat.py b/test/appium/tests/private_chats/test_group_chat.py new file mode 100644 index 00000000000..0be1e38a01c --- /dev/null +++ b/test/appium/tests/private_chats/test_group_chat.py @@ -0,0 +1,538 @@ +import datetime + +import pytest +from _pytest.outcomes import Failed +from appium.webdriver.connectiontype import ConnectionType +from selenium.common.exceptions import NoSuchElementException, TimeoutException + +from tests import marks, run_in_parallel, transl +from tests.base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from views.chat_view import ChatView +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="one_3") +@marks.nightly +class TestGroupChatMultipleDeviceMergedNewUI(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(3) + self.message_before_adding = 'message before adding new user' + self.message_to_admin = 'Hey, admin!' + self.public_keys, self.usernames, self.chats = {}, {}, {} + self.sign_in_views = [SignInView(self.drivers[key]) for key in self.drivers] + self.loop.run_until_complete( + run_in_parallel( + ( + (self.sign_in_views[0].create_user, {'enable_notifications': True}), + (self.sign_in_views[1].create_user, {'enable_notifications': True}), + (self.sign_in_views[2].create_user, {'enable_notifications': True}) + ) + ) + ) + self.homes = [sign_in.get_home_view() for sign_in in self.sign_in_views] + self.usernames = self.loop.run_until_complete( + run_in_parallel( + ( + (self.homes[0].get_username,), + (self.homes[1].get_username,), + (self.homes[2].get_username,) + ) + ) + ) + self.public_keys = self.loop.run_until_complete( + run_in_parallel( + ( + (self.homes[1].get_public_key,), + (self.homes[2].get_public_key,) + ) + ) + ) + + self.homes[0].just_fyi('Admin adds future members to contacts') + self.homes[0].navigate_to_chats_view() + for i in range(2): + self.homes[0].add_contact(self.public_keys[i]) + + self.homes[0].just_fyi('Members add admin to contacts to see PNs and put app in background') + for i in range(1, 3): + self.homes[i].navigate_to_chats_view() + self.loop.run_until_complete( + run_in_parallel( + ( + (self.homes[1].handle_contact_request, {'username': self.usernames[0]}), + (self.homes[2].handle_contact_request, {'username': self.usernames[0]}) + ) + ) + ) + for i in range(1, 3): + self.homes[i].navigate_back_to_home_view() + + self.homes[0].just_fyi('Admin creates group chat') + self.chat_name = self.homes[0].get_random_chat_name() + self.homes[0].chats_tab.click() + self.chats[0] = self.homes[0].create_group_chat(user_names_to_add=[self.usernames[1], self.usernames[2]], + group_chat_name=self.chat_name) + for i in range(1, 3): + self.chats[i] = ChatView(self.drivers[i]) + + self.chats[0].send_message(self.message_before_adding) + + @marks.smoke + @marks.testrail_id(702807) + def test_group_chat_join_send_text_messages_push(self): + message_to_admin = self.message_to_admin + [self.homes[i].navigate_back_to_home_view() for i in range(3)] + self.homes[1].get_chat(self.chat_name).click() + self.chats[0].open_notification_bar() + + self.chats[1].send_message(message_to_admin) + + self.chats[0].just_fyi('Check that PN is received and after tap you are redirected to group chat') + pn = self.homes[0].get_pn(message_to_admin) + if pn: + pn.click() + else: + self.errors.append(self.homes[0], "No PN was received on new message for message in group chat") + self.homes[0].click_system_back_button() + self.homes[0].get_chat(self.chat_name).click() + + self.chats[1].just_fyi('Check message status and message delivery') + self.chats[1].chat_element_by_text(message_to_admin).wait_for_status_to_be('Delivered', timeout=120) + if not self.chats[0].chat_element_by_text(message_to_admin).is_element_displayed(30): + self.errors.append(self.chats[0], 'Message %s was not received by admin' % message_to_admin) + self.errors.verify_no_errors() + + @marks.testrail_id(703202) + def test_group_chat_reactions(self): + [self.homes[i].navigate_back_to_home_view() for i in range(3)] + [self.homes[i].get_chat(self.chat_name).click() for i in range(3)] + message = "This is a test message to check some reactions." + self.chats[0].just_fyi("Admin sends a message") + self.chats[0].send_message(message) + + self.chats[1].just_fyi("Member_1 sets 2 reactions on the message: 'thumbs-up' and 'love'") + self.chats[1].set_reaction(message=message, emoji="thumbs-up") + self.chats[1].set_reaction(message=message, emoji="love") + + self.chats[2].just_fyi("Member_2 sets 2 reactions on the message: 'thumbs-up' and 'laugh'") + self.chats[2].add_remove_same_reaction(emoji="thumbs-up") + self.chats[2].set_reaction(message=message, emoji="laugh") + + def _check_reactions_count(chat_view_index): + self.chats[chat_view_index].just_fyi("Checking reactions count for each group member and admin") + chat_element = self.chats[chat_view_index].chat_element_by_text(message) + chat_element.emojis_below_message(emoji="thumbs-up").wait_for_element_text(text=2, wait_time=60) + chat_element.emojis_below_message(emoji="love").wait_for_element_text(text=1, wait_time=60) + chat_element.emojis_below_message(emoji="laugh").wait_for_element_text(text=1, wait_time=60) + + self.loop.run_until_complete(run_in_parallel(( + (_check_reactions_count, {'chat_view_index': 0}), + (_check_reactions_count, {'chat_view_index': 1}), + (_check_reactions_count, {'chat_view_index': 2}) + ))) + + self.chats[0].just_fyi("Admin checks info about voted users") + self.chats[0].chat_element_by_text(message).emojis_below_message(emoji="thumbs-up").long_press_without_release() + if not self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or not self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'thumbs-up' reaction.") + + self.chats[0].authors_for_reaction(emoji="love").double_click() + if not self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'love' reaction.") + + self.chats[0].authors_for_reaction(emoji="laugh").click() + if self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or not self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'laugh' reaction.") + + self.chats[0].just_fyi("Admin opens member_2 profile") + self.chats[0].user_list_element_by_name(self.usernames[2]).click() + try: + username_shown = self.chats[0].get_profile_view().contact_name_text.text + if username_shown != self.usernames[2]: + self.errors.append( + self.chats[0], + "Incorrect profile is opened from the list of reactions, username is %s but expected to be %s" % ( + username_shown, self.usernames[2]) + ) + except NoSuchElementException: + self.errors.append(self.chats[0], "User profile was not opened from the list of reactions") + self.chats[0].navigate_back_to_chat_view() + + self.chats[1].just_fyi("Member_1 removes 'thumbs-up' reaction and adds 'sad' one") + self.chats[1].add_remove_same_reaction(emoji="thumbs-up") + self.chats[1].set_reaction(message=message, emoji="sad") + + self.chats[2].just_fyi("Member_2 removes 'laugh' reaction and adds 'sad' one") + self.chats[2].add_remove_same_reaction(emoji="laugh") + self.chats[2].add_remove_same_reaction(emoji="sad") + + def _check_reactions_count_after_change(chat_view_index): + self.chats[chat_view_index].just_fyi( + "Checking reactions count for each group member and admin after they were changed") + chat_element = self.chats[chat_view_index].chat_element_by_text(message) + try: + chat_element.emojis_below_message(emoji="thumbs-up").wait_for_element_text(text=1, wait_time=60) + chat_element.emojis_below_message(emoji="love").wait_for_element_text(text=1, wait_time=60) + chat_element.emojis_below_message(emoji="sad").wait_for_element_text(text=2, wait_time=60) + except (Failed, NoSuchElementException): + self.errors.append(self.chats[chat_view_index], + "Incorrect reactions count for %s after changing the reactions" % self.usernames[ + chat_view_index]) + + self.loop.run_until_complete(run_in_parallel(( + (_check_reactions_count_after_change, {'chat_view_index': 0}), + (_check_reactions_count_after_change, {'chat_view_index': 1}), + (_check_reactions_count_after_change, {'chat_view_index': 2}) + ))) + + self.chats[0].just_fyi("Admin relogins") + self.chats[0].reopen_app(user_name=self.usernames[0]) + if not self.chats[0].chat_message_input.is_element_displayed(15): + self.homes[0].get_chat(self.chat_name).click() + + self.chats[0].just_fyi("Admin checks reactions count after relogin") + message_element = self.chats[0].chat_element_by_text(message) + try: + message_element.emojis_below_message(emoji="thumbs-up").wait_for_element_text(text=1, wait_time=60) + message_element.emojis_below_message(emoji="love").wait_for_element_text(text=1, wait_time=60) + message_element.emojis_below_message(emoji="sad").wait_for_element_text(text=2, wait_time=60) + except (Failed, NoSuchElementException): + self.errors.append(self.chats[0], "Incorrect reactions count after relogin") + + for chat in self.chats[1], self.chats[2]: + chat.just_fyi("Just making the session not to quit") + chat.navigate_back_to_home_view() + + self.chats[0].just_fyi("Admin checks info about voted users after relogin") + message_element.emojis_below_message(emoji="thumbs-up").long_press_without_release() + if self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or not self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'thumbs-up' reaction after relogin.") + + self.chats[0].authors_for_reaction(emoji="love").double_click() + if not self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'love' reaction after relogin.") + + self.chats[0].authors_for_reaction(emoji="sad").click() + if not self.chats[0].user_list_element_by_name( + self.usernames[1]).is_element_displayed() or not self.chats[0].user_list_element_by_name( + self.usernames[2]).is_element_displayed(): + self.errors.append(self.chats[0], "Incorrect users are shown for 'laugh' reaction after relogin.") + + self.errors.verify_no_errors() + + @marks.testrail_id(703297) + def test_group_chat_send_image_save_and_share(self): + [self.homes[i].navigate_back_to_home_view() for i in range(3)] + for i in range(3): + self.homes[i].get_chat(self.chat_name).click() + + self.chats[1].just_fyi("Member_1 sends an image") + image_description = "test image" + self.chats[1].send_images_with_description(description=image_description, indexes=[1]) + + self.chats[0].just_fyi("Admin checks image message") + chat_element = self.chats[0].chat_element_by_text(image_description) + chat_element.wait_for_visibility_of_element(60) + if not chat_element.image_in_message.is_element_image_similar_to_template('image_2_chat_view.png'): + self.errors.append(self.chats[0], "Not expected image is shown to the admin.") + + self.chats[2].just_fyi("Member_2 checks image message") + chat_element = self.chats[2].chat_element_by_text(image_description) + chat_element.wait_for_visibility_of_element(60) + if not chat_element.image_in_message.is_element_image_similar_to_template('image_2_chat_view.png'): + self.errors.append(self.chats[2], "Not expected image is shown to the member_2.") + + self.chats[0].just_fyi("Admin opens the image and shares it") + self.chats[0].chat_element_by_text(image_description).image_in_message.click() + self.chats[0].share_image_icon_button.click() + self.chats[0].element_starts_with_text("Drive").click() + try: + self.chats[0].wait_for_current_package_to_be('com.google.android.apps.docs') + except TimeoutException: + self.errors.append(self.chats[0], "Admin can't share an image via Gmail.") + self.chats[0].navigate_back_to_chat_view() + + self.chats[1].navigate_back_to_home_view() + app_package = self.drivers[2].current_package + + self.chats[2].just_fyi("Member_2 opens the image and saves it") + self.chats[2].chat_element_by_text(image_description).image_in_message.click() + self.chats[2].view_image_options_button.click() + self.chats[2].save_image_icon_button.click() + toast_element = self.chats[2].toast_content_element + try: + toast_element_text = toast_element.wait_for_visibility_of_element().text + if toast_element_text != self.chats[2].get_translation_by_key("photo-saved"): + self.errors.append( + self.chats[2], + "Shown message '%s' doesn't match expected '%s' after saving an image for member_2." % ( + toast_element_text, self.chats[2].get_translation_by_key("photo-saved"))) + except TimeoutException: + self.errors.append(self.chats[2], "Message about saving a photo is not shown for member_2.") + self.chats[2].navigate_back_to_chat_view() + + # workaround for app closed after navigating back from gallery + if not self.chats[2].chat_message_input.is_element_displayed(): + self.drivers[2].activate_app(app_package) + SignInView(self.drivers[2]).sign_in(user_name=self.usernames[2]) + self.homes[2].chats_tab.click() + self.homes[2].get_chat(self.chat_name).click() + + self.chats[2].just_fyi("Member_2 checks that image was saved in gallery") + self.chats[2].show_images_button.click() + self.chats[2].allow_all_button.click_if_shown() + if not self.chats[2].get_image_by_index(0).is_element_image_similar_to_template("image_2_gallery_view.png"): + self.errors.append(self.chats[2], "Image is not saved to gallery for member_2.") + self.chats[2].navigate_back_to_home_view() + + # workaround for app closed after navigating back from gallery + if not self.chats[2].chats_tab.is_element_displayed(): + self.drivers[2].activate_app(app_package) + SignInView(self.drivers[2]).sign_in(user_name=self.usernames[2]) + self.homes[2].chats_tab.click() + + self.errors.verify_no_errors() + + @marks.testrail_id(702808) + def test_group_chat_offline_pn(self): + def _proceed_to_chat(index): + self.homes[index].navigate_to_chats_view() + self.homes[index].groups_tab.click() + self.homes[index].get_chat(self.chat_name).click() + + self.loop.run_until_complete(run_in_parallel(( + (_proceed_to_chat, {'index': 1}), + (_proceed_to_chat, {'index': 2}) + ))) + + message_1, message_2 = 'message from old member', 'message from new member' + + self.homes[0].just_fyi("Put admin device to offline and send messages from members") + self.homes[0].navigate_back_to_home_view() + app_package = self.drivers[0].current_package + self.homes[0].driver.set_network_connection(ConnectionType.AIRPLANE_MODE) + self.chats[1].send_message(message_1) + self.chats[2].send_message(message_2) + + self.homes[0].just_fyi("Put admin device to online and check that messages and PNs will be fetched") + self.homes[0].driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) + self.homes[0].connection_offline_icon.wait_for_invisibility_of_element(60) + self.homes[0].open_notification_bar() + for message in (message_1, message_2): + if self.homes[0].element_by_text(message).is_element_displayed(30): + break + else: + self.errors.append(self.homes[0], 'Messages PN was not fetched from offline') + self.homes[0].click_system_back_button() + # workaround for app closed after opening notifications + if not self.homes[0].chats_tab.is_element_displayed(): + self.drivers[0].activate_app(app_package) + SignInView(self.drivers[0]).sign_in(user_name=self.usernames[0]) + self.homes[0].chats_tab.click() + self.homes[0].get_chat(self.chat_name).click() + + def _check_messages(index): + self.chats[index].just_fyi("Check that messages are shown for user %s" % self.usernames[index]) + for message_text in (message_1, message_2): + if not self.chats[index].chat_element_by_text(message_text).is_element_displayed(60): + self.errors.append(self.chats[index], '%s if not shown for device %s' % (message_text, index)) + + self.loop.run_until_complete(run_in_parallel(( + (_check_messages, {'index': 0}), + (_check_messages, {'index': 1}), + (_check_messages, {'index': 2}) + ))) + + self.errors.verify_no_errors() + + @marks.testrail_id(702732) + def test_group_chat_pin_messages(self): + [self.homes[i].navigate_back_to_home_view() for i in range(3)] + [self.homes[i].get_chat(self.chat_name).click() for i in range(3)] + + self.message_1, self.message_2, self.message_3, self.message_4 = \ + "Message 1", "Message 2", "Message 3", "Message 4" + self.chats[0].just_fyi("Enter group chat and pin message there. It's pinned for both members.") + + self.chats[0].send_message(self.message_1) + self.chats[0].pin_message(self.message_1, "pin-to-chat") + for chat in self.chats[0], self.chats[1]: + chat.chat_element_by_text(self.message_1).wait_for_visibility_of_element(60) + if not chat.chat_element_by_text(self.message_1).pinned_by_label.is_element_displayed(30): + self.errors.append(chat, "Message 1 is not pinned in group chat!") + + self.chats[0].just_fyi("Check that non admin user can not unpin messages") + self.chats[1].chat_element_by_text(self.message_1).long_press_without_release() + if self.chats[1].element_by_translation_id("unpin-from-chat").is_element_displayed(): + self.errors.append(self.chats[1], "Unpin option is available for non-admin user") + self.chats[1].tap_by_coordinates(500, 100) + self.chats[1].tap_by_coordinates(500, 100) + + # not implemented yet : + + # self.home_1.just_fyi("Grant another user with admin rights and check he can unpin message now") + # self.group_chat_1.chat_options.click() + # group_info = self.group_chat_1.group_info.click() + # options = group_info.get_username_options(self.default_username_2).click() + # options.make_admin_button.click() + # self.group_chat_2.click_system_back_button() + # self.group_chat_2.pin_message(self.message_1, action="unpin") + # if (self.group_chat_1.chat_element_by_text(self.message_1).pinned_by_label.is_element_displayed() and + # self.group_chat_2.chat_element_by_text(self.message_1).pinned_by_label.is_element_displayed()): + # self.errors.append("Message failed to be unpinned by user who granted admin permissions!") + + self.chats[0].just_fyi("Send, pin messages and check they are pinned") + for message in self.message_2, self.message_3: + # here group_chat_1 should be changed to group_chat_2 after enabling the previous block + self.chats[0].send_message(message) + self.chats[0].pin_message(message, 'pin-to-chat') + for chat in self.chats[0], self.chats[1]: + chat.chat_element_by_text(message).wait_for_visibility_of_element(60) + if not chat.chat_element_by_text(message).pinned_by_label.is_element_displayed(30): + self.errors.append(chat, "%s is not pinned in group chat!" % message) + + self.chats[0].just_fyi("Check that a user can not pin more than 3 messages") + self.chats[0].send_message(self.message_4) + self.chats[0].pin_message(self.message_4, 'pin-to-chat') + self.chats[0].view_pinned_messages_button.click_until_presence_of_element(self.chats[0].pinned_messages_list) + if self.chats[0].pinned_messages_list.message_element_by_text(self.message_4).is_element_displayed(): + self.errors.append(self.chats[0], "Can pin more than 3 messages") + self.chats[0].pinned_messages_list.message_element_by_text(self.message_2).long_press_without_release() + self.chats[0].element_by_translation_id('unpin-from-chat').click() + self.chats[0].pin_message(self.message_4, 'pin-to-chat') + for chat in self.chats[0], self.chats[1]: + if not chat.chat_element_by_text(self.message_4).pinned_by_label.is_element_displayed(30): + self.errors.append(chat, "Message 4 is not pinned in group chat after unpinning previous one") + + def _check_pinned_messages(index): + self.chats[index].just_fyi("Check pinned messages count and content for user %s" % self.usernames[index]) + count = self.chats[index].pinned_messages_count.text + if count != '3': + self.errors.append(self.chats[index], + "Pinned messages count %s doesn't match expected 3 for user %s" % ( + count, self.usernames[index])) + self.chats[index].pinned_messages_count.click() + for message_text in self.message_1, self.message_3, self.message_4: + pinned_by = self.chats[index].pinned_messages_list.get_message_pinned_by_text(message_text) + if pinned_by.is_element_displayed(): + text = pinned_by.text.strip() + expected_text = "You" if index == 0 else self.usernames[0] + if text != expected_text: + self.errors.append(self.chats[index], + "Pinned by '%s' doesn't match expected '%s' for user %s" % ( + text, expected_text, self.usernames[index]) + ) + else: + self.errors.append(self.chats[index], + "Message '%s' is missed on Pinned messages list for user %s" % ( + message_text, self.usernames[index]) + ) + + self.loop.run_until_complete(run_in_parallel(( + (_check_pinned_messages, {'index': 0}), + (_check_pinned_messages, {'index': 1}) + ))) + + self.errors.verify_no_errors() + + @marks.testrail_id(703495) + def test_group_chat_mute_chat(self): + [self.homes[i].navigate_back_to_home_view() for i in range(3)] + + self.homes[1].just_fyi("Member 1 mutes the chat for 8 hours") + self.homes[1].mute_chat_long_press(self.chat_name, "mute-for-8-hours") + device_time = self.homes[1].driver.device_time + current_time = datetime.datetime.strptime(device_time, "%Y-%m-%dT%H:%M:%S%z") + expected_times = [current_time + datetime.timedelta(minutes=i) for i in range(479, 482)] + expected_texts = [ + "Muted until %s %s" % (exp_time.strftime('%H:%M'), "today" if current_time.hour < 16 else "tomorrow") for + exp_time in expected_times] + chat = self.homes[1].get_chat(self.chat_name) + chat.long_press_without_release() + if self.homes[1].mute_chat_button.text != transl["unmute-chat"]: + pytest.fail("Chat is not muted") + current_text = self.homes[1].mute_chat_button.unmute_caption_text + if current_text not in expected_texts: + self.errors.append(self.homes[1], "Text '%s' is not shown for muted chat" % expected_texts[1]) + self.homes[1].click_system_back_button() + try: + initial_counter = int(self.homes[1].chats_tab.counter.text) + except NoSuchElementException: + initial_counter = 0 + + self.homes[0].just_fyi("Admin sends a message") + muted_message = "Text message in the muted chat" + self.homes[0].get_chat(self.chat_name).click() + self.chats[0].send_message(muted_message) + + self.homes[1].just_fyi("Member 1 checks that chat is muted and message is received") + if chat.new_messages_grey_dot.is_element_displayed(30): + self.errors.append(self.homes[1], "New messages grey dot near chat name is shown after mute") + try: + after_mute_counter = int(self.homes[1].chats_tab.counter.text) + except NoSuchElementException: + after_mute_counter = 0 + if after_mute_counter > initial_counter: + self.errors.append(self.homes[1], + "New messages counter near chats tab button is %s after mute, but should be %s" % ( + after_mute_counter, initial_counter)) + if not chat.chat_preview.text.startswith("%s: %s" % (self.usernames[0], muted_message[:25])): + self.errors.append(self.homes[1], + "Message text '%s' is not shown in chat preview after mute" % muted_message) + chat.click() + if not self.chats[1].chat_element_by_text(muted_message).is_element_displayed(30): + self.errors.append(self.chats[1], + "Message '%s' is not shown in chat for %s (Member 1) after mute" % ( + muted_message, self.usernames[1])) + self.chats[1].navigate_back_to_home_view() + + self.chats[1].just_fyi("Member 1 unmutes the chat") + chat.long_press_without_release() + self.homes[1].mute_chat_button.double_click() + chat.long_press_without_release() + if self.homes[1].element_starts_with_text("Muted until").is_element_displayed(): + self.errors.append(self.homes[1], "Chat is still muted after being unmuted") + self.errors.verify_no_errors() + if self.homes[1].mute_chat_button.is_element_displayed(): + self.homes[1].click_system_back_button() + + unmuted_message = "Chat is unmuted now" + self.homes[2].just_fyi("Member 2 sends a message") + self.homes[2].get_chat(self.chat_name).click() + try: + initial_counter = int(self.homes[1].chats_tab.counter.text) + except NoSuchElementException: + initial_counter = 0 + self.chats[2].send_message(unmuted_message) + self.homes[1].just_fyi("Member 1 checks that chat is unmuted and message is received") + if not chat.new_messages_grey_dot.is_element_displayed(30): + self.errors.append(self.homes[1], "New messages counter near chat name is not shown after unmute") + try: + after_mute_counter = int(self.homes[1].chats_tab.counter.text) + except NoSuchElementException: + after_mute_counter = 0 + if after_mute_counter != initial_counter: + self.errors.append(self.homes[1], + "New messages counter near chats tab button is %s after unmute, but should be %s" % ( + after_mute_counter, initial_counter + 1)) + if not chat.chat_preview.text.startswith("%s: %s" % (self.usernames[2], unmuted_message)): + self.errors.append(self.homes[1], + "Message text '%s' is not shown in chat preview after unmute" % unmuted_message) + chat.click() + if not self.chats[1].chat_element_by_text(unmuted_message).is_element_displayed(30): + self.errors.append(self.chats[1], + "Message '%s' is not shown in chat for %s (Member 1) after unmute" % ( + unmuted_message, self.usernames[1])) + + self.errors.verify_no_errors() diff --git a/test/appium/tests/private_chats/test_one_to_one_chat.py b/test/appium/tests/private_chats/test_one_to_one_chat.py new file mode 100644 index 00000000000..a345b9ea81f --- /dev/null +++ b/test/appium/tests/private_chats/test_one_to_one_chat.py @@ -0,0 +1,708 @@ +import random + +import emoji +import pytest +from _pytest.outcomes import Failed +from appium.webdriver.connectiontype import ConnectionType +from selenium.common.exceptions import TimeoutException, NoSuchElementException + +from tests import marks, run_in_parallel, transl +from tests.base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from views.base_element import Button +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="three_2") +@marks.nightly +class TestOneToOneChatMultipleSharedDevicesNewUi(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True}), + (self.device_2.create_user, {'enable_notifications': True})))) + self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.homes = (self.home_1, self.home_2) + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.profile_1, self.profile_2 = (home.get_profile_view() for home in self.homes) + self.public_key_2 = self.home_2.get_public_key() + + self.profile_1.just_fyi("Sending contact request via Profile > Contacts") + self.username_1 = "user_1" + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(public_key=self.public_key_2, username=self.username_1) + + self.home_2.just_fyi("Accepting contact request from activity centre") + + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + + self.profile_1.just_fyi("Sending message to contact via Messages > Recent") + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message('hey') + self.home_2.navigate_back_to_home_view() + self.chat_2 = self.home_2.get_chat(self.username_1).click() + self.message_1, self.message_2, self.message_3, self.message_4 = \ + "Message 1", "Message 2", "Message 3", "Message 4" + + @marks.smoke + @marks.xfail(reason="Might fail from time to time as reaction are set too slowly") # TODO: needs investigation + @marks.testrail_id(702730) + def test_1_1_chat_message_reaction(self): + message_from_sender = "Message sender" + self.device_1.just_fyi("Sender start 1-1 chat, set 'thumbs-up' emoji and check counter") + self.chat_1.send_message(message_from_sender) + self.chat_1.chat_element_by_text(message_from_sender).wait_for_sent_state(120) + self.chat_1.set_reaction(message_from_sender) + + message_sender = self.chat_1.chat_element_by_text(message_from_sender) + message_sender.emojis_below_message().wait_for_element_text(1) + + self.device_2.just_fyi( + "Receiver also sets 'thumbs-up' emoji and verifies counter on received message in 1-1 chat") + message_receiver = self.chat_2.chat_element_by_text(message_from_sender) + message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1, 90) + self.chat_2.add_remove_same_reaction() + message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(2) + message_sender.emojis_below_message(emoji="thumbs-up").wait_for_element_text(2, 90) + + self.device_2.just_fyi( + "Receiver removes 'thumbs-up' emoji and verify that counter will decrease for both users") + self.chat_2.add_remove_same_reaction() + message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1) + message_sender.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1, 90) + + self.device_2.just_fyi("Receiver sets another reaction ('love'). Check it's shown for both sender and receiver") + self.chat_2.set_reaction(message_from_sender, emoji="love") + message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1) + message_sender.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1, 90) + message_receiver.emojis_below_message(emoji="love").wait_for_element_text(1) + message_sender.emojis_below_message(emoji="love").wait_for_element_text(1, 90) + + self.device_1.just_fyi("Sender votes for 'love' reaction. Check reactions counters") + self.chat_1.add_remove_same_reaction(emoji="love") + message_receiver.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1) + message_sender.emojis_below_message(emoji="thumbs-up").wait_for_element_text(1) + message_receiver.emojis_below_message(emoji="love").wait_for_element_text(2, 90) + message_sender.emojis_below_message(emoji="love").wait_for_element_text(2) + + self.device_1.just_fyi("Check emojis info") + message_sender.emojis_below_message(emoji="love").long_press_without_release() + if not self.chat_1.user_list_element_by_name( + self.username_1).is_element_displayed() or not self.chat_1.user_list_element_by_name( + self.username_2).is_element_displayed(): + self.errors.append(self.chat_1, "Incorrect users are shown for 'love' reaction.") + + self.chat_1.authors_for_reaction(emoji="thumbs-up").double_click() + if not self.chat_1.user_list_element_by_name( + self.username_1).is_element_displayed() or self.chat_1.user_list_element_by_name( + self.username_2).is_element_displayed(): + self.errors.append(self.chat_1, "Incorrect users are shown for 'thumbs-up' reaction.") + self.chat_1.driver.press_keycode(4) + + self.errors.verify_no_errors() + + @marks.testrail_id(702782) + # TODO: too complex, should be splitted + def test_1_1_chat_emoji_send_reply_and_open_link(self): + self.chat_1.navigate_back_to_chat_view() + self.chat_2.navigate_back_to_chat_view() + self.home_1.just_fyi("Check that can send emoji in 1-1 chat") + emoji_name = random.choice(list(emoji.EMOJI_UNICODE)) + emoji_unicode = emoji.EMOJI_UNICODE[emoji_name] + self.chat_1.send_message(emoji.emojize(emoji_name)) + for chat in self.chat_1, self.chat_2: + if not chat.chat_element_by_text(emoji_unicode).is_element_displayed(): + self.errors.append(chat, 'Message with emoji was not sent or received in 1-1 chat') + self.chat_1.quote_message(emoji_unicode) + actual_text = self.chat_1.quote_username_in_message_input.text + if actual_text != "You": + self.errors.append( + self.chat_1, + "'You' is not displayed in reply quote snippet replying to own message, '%s' instead" % actual_text) + + self.chat_1.just_fyi("Clear quote and check there is not snippet anymore") + self.chat_1.cancel_reply_button.click() + if self.chat_1.cancel_reply_button.is_element_displayed(): + self.errors.append(self.chat_1, "Message quote kept in public chat input after it was cancelled") + + self.chat_1.just_fyi("Send reply") + self.chat_1.quote_message(emoji_unicode) + reply_to_message_from_sender = "hey, reply" + self.chat_1.send_message(reply_to_message_from_sender) + + self.chat_1.just_fyi("Receiver verifies received reply...") + if self.chat_2.chat_element_by_text(reply_to_message_from_sender).replied_message_text != emoji_unicode: + self.errors.append(self.chat_2, "No reply received in 1-1 chat") + else: + self.chat_2.just_fyi("Device 2 sets a reaction on the message reply. Device 1 checks the reaction") + self.chat_1.set_reaction(reply_to_message_from_sender) + try: + self.chat_1.chat_element_by_text( + reply_to_message_from_sender).emojis_below_message().wait_for_element_text(1) + except Failed: + self.errors.append(self.chat_1, "Reply message reaction is not shown for the sender") + + self.home_1.just_fyi("Check that link can be opened and replied from 1-1 chat") + reply = 'reply to link' + url_message = 'Test with link: https://status.im/ here should be nothing unusual.' + self.chat_1.send_message(url_message) + self.chat_2.chat_element_by_text(url_message).wait_for_element(60) + self.chat_2.quote_message(url_message) + self.chat_2.send_message(reply) + replied_message = self.chat_1.chat_element_by_text(reply) + if replied_message.replied_message_text != url_message: + self.errors.append(self.chat_1, + "Reply for '%s' not present in message received in public chat" % url_message) + + self.chat_2.just_fyi("Device 2 sets a reaction on the message with a link. Device 1 checks the reaction") + self.chat_2.set_reaction(url_message) + try: + self.chat_1.chat_element_by_text(url_message).emojis_below_message().wait_for_element_text(1) + except (Failed, NoSuchElementException): + self.errors.append(self.chat_1, "Link message reaction is not shown for the sender") + + self.home_2.just_fyi("Check 'Open in Status' option") + # url_to_open = 'http://status.app' + url_to_open = 'https://github.com/status-im/status-mobile' + self.chat_1.send_message(url_to_open) + chat_element = self.chat_2.chat_element_by_text(url_to_open) + if chat_element.is_element_displayed(120): + chat_element.click_on_link_inside_message_body() + self.chat_2.open_in_android_button.click() + try: + self.chat_2.wait_for_current_package_to_be('com.android.chrome') + except TimeoutException: + self.errors.append(self.chat_2, 'URL was not opened from 1-1 chat') + else: + self.chat_2.element_by_text("No thanks").click_if_shown() + text_element = self.chat_2.element_by_text("a free (libre) open source, mobile OS for Ethereum") + sign_in_button = Button(self.chat_2.driver, xpath="//android.view.View[@content-desc='Sign in']") + if not text_element.is_element_displayed() or not sign_in_button.is_element_displayed(): + self.errors.append(self.chat_2, 'URL was not opened from 1-1 chat') + else: + self.errors.append(self.chat_2, "Message with URL was not received") + + self.errors.verify_no_errors() + + @marks.smoke + @marks.testrail_id(702731) + def test_1_1_chat_pin_messages(self): + self.home_1.just_fyi("Check that Device1 can pin own message in 1-1 chat") + self.chat_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + self.chat_1.send_message(self.message_1) + self.chat_1.send_message(self.message_2) + self.chat_1.chat_element_by_text(self.message_1).wait_for_status_to_be(expected_status="Delivered", timeout=60) + self.chat_1.pin_message(self.message_1, action='pin-to-chat') + if not self.chat_1.chat_element_by_text(self.message_1).pinned_by_label.is_element_displayed(): + self.drivers[0].fail("Message is not pinned!") + + self.home_1.just_fyi("Check that Device2 can pin Device1 message in 1-1 chat and two pinned " + "messages are in Device1 profile") + self.chat_2.pin_message(self.message_2, action='pin-to-chat') + for chat_number, chat in enumerate([self.chat_1, self.chat_2]): + chat.pinned_messages_count.wait_for_element_text(text="2", + wait_time=60, + message="Pinned messages count is not 2 as expected!") + + chat.just_fyi("Check pinned messages are visible in Pinned panel for user %s" % (chat_number + 1)) + chat.pinned_messages_count.click() + for message in self.message_1, self.message_2: + pinned_by = chat.pinned_messages_list.get_message_pinned_by_text(message) + if pinned_by.is_element_displayed(): + text = pinned_by.text.strip() + if chat_number == 0: + expected_text = "You" if message == self.message_1 else self.username_2 + else: + expected_text = "You" if message == self.message_2 else self.username_1 + if text != expected_text: + self.errors.append(chat, + "Pinned by '%s' doesn't match expected '%s' for user %s" % ( + text, expected_text, chat_number + 1) + ) + else: + self.errors.append(chat, + "Message '%s' is missed on Pinned messages list for user %s" % ( + message, chat_number + 1) + ) + chat.click_system_back_button() + + self.home_1.just_fyi("Check that Device1 can not pin more than 3 messages and 'Unpin' dialog appears") + for message in (self.message_3, self.message_4): + self.chat_1.send_message(message) + self.chat_1.chat_element_by_text(message).wait_for_status_to_be(expected_status="Delivered", timeout=60) + self.chat_1.pin_message(message, action='pin-to-chat') + # if not self.chat_1.pin_limit_popover.is_element_displayed(): + # self.errors.append("Pin limit popover is not displayed when pinning more than 3 messages") + self.chat_1.view_pinned_messages_button.click_until_presence_of_element(self.chat_1.pinned_messages_list) + if self.chat_1.pinned_messages_list.get_pinned_messages_number() > 3 \ + or self.chat_1.pinned_messages_list.message_element_by_text(self.message_4).is_element_displayed(): + self.errors.append(self.chat_1, "Can pin more than 3 messages in chat") + else: + self.chat_1.pinned_messages_list.message_element_by_text(self.message_2).long_press_without_release() + self.home_1.just_fyi("Unpin one message so that another could be pinned") + self.chat_1.element_by_translation_id('unpin-from-chat').click() + self.chat_1.pin_message(self.message_4, 'pin-to-chat') + for chat in self.chat_1, self.chat_2: + if not chat.chat_element_by_text(self.message_4).pinned_by_label.is_element_displayed(30): + self.errors.append(chat, "Message 4 is not pinned in chat after unpinning previous one") + + for chat_number, chat in enumerate([self.chat_1, self.chat_2]): + chat.just_fyi("Check pinned messages are visible in Pinned panel for user %s" % (chat_number + 1)) + count = chat.pinned_messages_count.text + if count != '3': + self.errors.append(chat, + "Pinned messages count is %s but should be 3 for user %s" % (count, chat_number + 1)) + + self.home_1.just_fyi("Unpin one message and check it's unpinned for another user") + self.chat_1.tap_by_coordinates(500, 100) + self.chat_1.view_pinned_messages_button.click_until_presence_of_element(self.chat_1.pinned_messages_list) + pinned_message = self.chat_1.pinned_messages_list.message_element_by_text(self.message_4) + pinned_message.long_press_without_release() + self.chat_1.element_by_translation_id("unpin-from-chat").click() + try: + self.chat_2.chat_element_by_text(self.message_4).pinned_by_label.wait_for_invisibility_of_element(60) + except TimeoutException: + self.errors.append(self.chat_2, "'%s' is not unpinned!" % self.message_4) + + for chat_number, chat in enumerate([self.chat_1, self.chat_2]): + try: + chat.pinned_messages_count.wait_for_element_text(text='2', wait_time=60) + except Failed: + self.errors.append( + chat, "Pinned messages count is not 2 after unpinning the last pinned message for user %s" % ( + chat_number + 1) + ) + self.errors.verify_no_errors() + + @marks.testrail_id(702745) + def test_1_1_chat_non_latin_messages_stack_update_profile_photo(self): + self.home_1.navigate_back_to_home_view() + self.home_1.profile_button.click() + self.profile_1.edit_profile_picture(image_index=0) + + self.chat_2.just_fyi("Send messages with non-latin symbols") + self.home_1.click_system_back_button() + self.home_1.chats_tab.click() + self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message("just a text") # Sending a message here so the next ones will be in a separate line + + self.home_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + messages = ['hello', '¿Cómo estás tu año?', 'ё, доброго вечерочка', '® æ ç ♥'] + for message in messages: + self.chat_2.send_message(message) + if not self.chat_1.chat_element_by_text(message).is_element_displayed(30): + self.errors.append(self.chat_1, "Message with text '%s' was not received" % message) + + self.chat_2.just_fyi("Checking updated member photo, timestamp and username on message") + self.chat_2.hide_keyboard_if_shown() + try: + timestamp = self.chat_2.chat_element_by_text(messages[0]).timestamp + sent_time_variants = self.chat_2.convert_device_time_to_chat_timestamp() + if timestamp not in sent_time_variants: + self.errors.append(self.chat_2, + 'Timestamp on message %s does not correspond expected %s' % ( + timestamp, sent_time_variants)) + except NoSuchElementException: + self.errors.append(self.chat_2, "No timestamp on message %s" % messages[0]) + for message in [messages[1], messages[2]]: + if self.chat_2.chat_element_by_text(message).member_photo.is_element_displayed(): + self.errors.append(self.chat_2, + '%s is not stack to 1st(they are sent in less than 5 minutes)!' % message) + + self.chat_1.just_fyi("Sending message") + message = 'profile_photo' + self.chat_1.send_message(message) + self.chat_2.chat_element_by_text(message).wait_for_visibility_of_element(30) + + self.chat_1.just_fyi("Go back to chat view and checking that profile photo is updated") + if not self.chat_2.chat_message_input.is_element_displayed(): + self.home_2.get_chat(self.username_1).click() + if self.chat_2.chat_element_by_text(message).member_photo.is_element_differs_from_template( + "profile_image_in_1_1_chat.png", diff=7): + self.errors.append(self.chat_2, "Image of user in 1-1 chat is too different from template!") + self.errors.verify_no_errors() + + @marks.testrail_id(702813) + def test_1_1_chat_push_emoji(self): + message_no_pn, message = 'No PN', 'Text push notification' + + self.home_1.navigate_back_to_home_view() + self.home_2.navigate_to_chats_view() + self.home_2.profile_button.click() + + self.device_2.just_fyi("Device 2 puts app on background being on Profile view to receive PN with text") + app_package = self.device_2.driver.current_package + self.device_2.put_app_to_background() + self.device_2.open_notification_bar() + if not self.chat_1.chat_message_input.is_element_displayed(): + self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message(message) + + self.device_1.just_fyi("Device 1 puts app on background to receive emoji push notification") + self.device_1.navigate_back_to_home_view() + self.device_1.profile_button.click() + + self.device_2.just_fyi("Check text push notification and tap it") + if not self.home_2.get_pn(message): + self.device_2.click_system_back_button() + self.device_2.driver.activate_app(app_package) + self.device_2.driver.fail("Push notification with text was not received") + chat_2 = self.device_2.click_upon_push_notification_by_text(message) + + self.device_2.just_fyi("Send emoji message to Device 1 while it's on background") + self.device_1.put_app_to_background() + self.device_1.open_notification_bar() + emoji_message = random.choice(list(emoji.EMOJI_UNICODE)) + emoji_unicode = emoji.EMOJI_UNICODE[emoji_message] + chat_2.send_message(emoji.emojize(emoji_message)) + + self.device_1.just_fyi("Device 1 checks PN with emoji") + if not self.device_1.element_by_text_part(emoji_unicode).is_element_displayed(120): + self.device_1.click_system_back_button() + self.device_1.driver.activate_app(app_package) + self.device_1.driver.fail("Push notification with emoji was not received") + chat_1 = self.device_1.click_upon_push_notification_by_text(emoji_unicode) + + self.device_1.just_fyi("Check Device 1 is actually on chat") + if not (chat_1.element_by_text_part(message).is_element_displayed(15) + and chat_1.element_by_text_part(emoji_unicode).is_element_displayed()): + self.device_1.driver.fail("Failed to open chat view after tap on PN") + + self.device_1.just_fyi("Checks there are no PN after message was seen") + [home.open_notification_bar() for home in self.homes] + if self.device_2.element_by_text_part(message).is_element_displayed(): + self.errors.append(self.chat_2, "PN are keep staying after message '%s' was seen by user" % message) + if self.device_1.element_by_text_part(emoji_unicode).is_element_displayed(): + self.errors.append(self.chat_1, "PN are keep staying after message '%s' was seen by user" % emoji_unicode) + self.errors.verify_no_errors() + + @marks.testrail_id(702855) + def test_1_1_chat_edit_message(self): + for home in self.homes: + home.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + self.home_1.get_chat(self.username_2).click() + + self.device_2.just_fyi( + "Device 2 sends text message and edits it in 1-1 chat. Device 2 checks edited message is shown") + message_before_edit_1_1, message_after_edit_1_1 = "Message before edit 1-1", "AFTER" + self.chat_2.send_message(message_before_edit_1_1) + self.chat_2.chat_element_by_text(message_before_edit_1_1).wait_for_status_to_be("Delivered") + self.chat_2.edit_message_in_chat(message_before_edit_1_1, message_after_edit_1_1) + message_text_after_edit = message_after_edit_1_1 + ' (Edited)' + chat_element = self.chat_1.chat_element_by_text(message_text_after_edit) + if not chat_element.is_element_displayed(30): + self.errors.append(self.chat_1, 'No edited message in 1-1 chat displayed') + else: + self.device_1.just_fyi("Device 1 sets a reaction on the edited message. Device 2 checks the reaction") + self.chat_1.set_reaction(message_text_after_edit) + try: + self.chat_1.chat_element_by_text( + message_text_after_edit).emojis_below_message().wait_for_element_text(1) + except Failed: + self.errors.append(self.chat_1, "Message reaction is not shown for the sender") + self.errors.verify_no_errors() + + @marks.smoke + @marks.testrail_id(703391) + def test_1_1_chat_send_image_save_and_share(self): + if not self.chat_2.chat_message_input.is_element_displayed(): + self.chat_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + if not self.chat_1.chat_message_input.is_element_displayed(): + self.chat_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + + self.chat_1.just_fyi("Device 1 sends an image") + image_description = "test image" + self.chat_1.send_images_with_description(description=image_description, indexes=[0]) + + self.chat_2.just_fyi("Device 2 checks image message") + if not self.chat_2.chat_element_by_text(image_description).is_element_displayed(30): + self.chat_2.hide_keyboard_if_shown() + self.chat_2.chat_element_by_text(image_description).wait_for_visibility_of_element(30) + if not self.chat_2.chat_element_by_text( + image_description).image_in_message.is_element_image_similar_to_template('image_1_chat_view.png'): + self.errors.append(self.chat_2, "Not expected image is shown to the receiver.") + + for chat in self.chat_1, self.chat_2: + chat.just_fyi("Open the image and share it") + if not chat.chat_element_by_text(image_description).image_in_message.is_element_displayed(): + chat.hide_keyboard_if_shown() + chat.chat_element_by_text(image_description).image_in_message.click() + chat.share_image_icon_button.click() + chat.element_starts_with_text("Drive").click() + try: + chat.wait_for_current_package_to_be('com.google.android.apps.docs') + except TimeoutException: + self.errors.append(chat, + "%s can't share an image via Gmail." % ( + "Sender" if chat is self.chat_1 else "Receiver")) + chat.navigate_back_to_chat_view() + + for chat in self.chat_1, self.chat_2: + chat.just_fyi("Open the image and save it") + device_name = "sender" if chat is self.chat_1 else "receiver" + chat.chat_element_by_text(image_description).image_in_message.click() + chat.view_image_options_button.click() + chat.save_image_icon_button.click() + toast_element = chat.toast_content_element + if toast_element.is_element_displayed(): + toast_element_text = toast_element.text + if toast_element_text != chat.get_translation_by_key("photo-saved"): + self.errors.append( + chat, "Shown message '%s' doesn't match expected '%s' after saving an image for %s." % ( + toast_element_text, chat.get_translation_by_key("photo-saved"), device_name)) + else: + self.errors.append(chat, "Message about saving a photo is not shown for %s." % device_name) + chat.navigate_back_to_chat_view() + + for chat in self.chat_1, self.chat_2: + chat.just_fyi("Check that image is saved in gallery") + chat.show_images_button.click() + chat.allow_all_button.click_if_shown() + if not chat.get_image_by_index(0).is_element_image_similar_to_template("image_1_gallery_view.png"): + self.errors.append(chat, + "Image is not saved to gallery for %s." % ( + "sender" if chat is self.chat_1 else "receiver")) + chat.click_system_back_button() + + self.errors.verify_no_errors() + + @marks.testrail_id(702733) + def test_1_1_chat_text_message_delete_push_disappear(self): + if not self.chat_2.chat_message_input.is_element_displayed(): + self.chat_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + if not self.chat_1.chat_message_input.is_element_displayed(): + self.chat_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + app_package = self.chat_1.driver.current_package + + self.device_2.just_fyi("Verify Device1 can not edit and delete received message from Device2") + message_after_edit_1_1 = 'smth I should edit' + message_to_delete_for_me = 'message to delete for me' + self.chat_2.send_message(message_after_edit_1_1) + self.chat_2.chat_element_by_text(message_after_edit_1_1).wait_for_status_to_be("Delivered") + chat_1_element = self.chat_1.chat_element_by_text(message_after_edit_1_1) + chat_1_element.long_press_without_release() + for action in ("edit", "delete-for-everyone"): + if self.chat_1.element_by_translation_id(action).is_element_displayed(): + self.errors.append(self.chat_1, 'Option to %s someone else message available!' % action) + self.home_1.tap_by_coordinates(500, 100) + + self.device_2.just_fyi("Delete message for me and check it is only deleted for the author") + self.chat_2.send_message(message_to_delete_for_me) + try: + timeout = 60 + self.chat_2.chat_element_by_text(message_to_delete_for_me).wait_for_status_to_be("Delivered", timeout) + self.chat_2.delete_message_in_chat(message_to_delete_for_me, everyone=False) + except TimeoutException: + self.errors.append(self.chat_2, "Message status was not changed to 'Delivered' after %s s" % timeout) + else: + if not self.chat_2.chat_element_by_text(message_to_delete_for_me).is_element_disappeared(20): + self.errors.append(self.chat_2, "Deleted for me message is shown in chat for the author of message") + if not self.chat_2.element_by_translation_id('message-deleted-for-you').is_element_displayed(20): + self.errors.append(self.chat_2, "System message about deletion for you is not displayed") + if not self.chat_1.chat_element_by_text(message_to_delete_for_me).is_element_displayed(20): + self.errors.append(self.chat_1, "Deleted for me message is deleted for both users") + + self.device_2.just_fyi("Delete message for everyone and check it is not shown in chat preview on home") + self.chat_2.delete_message_in_chat(message_after_edit_1_1) + for chat in (self.chat_2, self.chat_1): + if chat.chat_element_by_text(message_after_edit_1_1).is_element_displayed(30): + self.errors.append(chat, "Deleted message is shown in chat view for 1-1 chat") + self.chat_1.navigate_back_to_home_view() + if self.home_1.element_by_text(message_after_edit_1_1).is_element_displayed(30): + self.errors.append(self.home_1, "Deleted message is shown on chat element on home screen") + + self.device_2.just_fyi("Send one more message and check that PN will be deleted with message deletion") + message_to_delete = 'DELETE ME' + self.home_1.put_app_to_background() + self.home_1.open_notification_bar() + self.chat_2.send_message(message_to_delete) + self.chat_2.chat_element_by_text(message_to_delete).wait_for_sent_state() + if not self.home_1.get_pn(message_to_delete): + self.home_1.click_system_back_button() + self.device_2.driver.activate_app(app_package) + self.errors.append(self.home_1, "Push notification doesn't appear") + self.chat_2.delete_message_in_chat(message_to_delete) + pn_to_disappear = self.home_1.get_pn(message_to_delete) + if pn_to_disappear: + if not pn_to_disappear.is_element_disappeared(90): + self.errors.append(self.home_1, "Push notification was not removed after initial message deletion") + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="four_2") +@marks.nightly +class TestOneToOneChatMultipleSharedDevicesNewUiTwo(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user, {'enable_notifications': True}), + (self.device_2.create_user, {'enable_notifications': True})))) + self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.homes = (self.home_1, self.home_2) + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.profile_1, self.profile_2 = (home.get_profile_view() for home in self.homes) + self.public_key_2 = self.home_2.get_public_key() + + self.profile_1.just_fyi("Sending contact request via Profile > Contacts") + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + + self.home_2.just_fyi("Accepting contact request from activity centre") + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + + self.profile_1.just_fyi("Sending message to contact via Messages > Recent") + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.chat_1.send_message('hey') + self.home_2.navigate_back_to_home_view() + self.chat_2 = self.home_2.get_chat(self.username_1).click() + self.message_1, self.message_2, self.message_3, self.message_4 = \ + "Message 1", "Message 2", "Message 3", "Message 4" + + @marks.skip # ToDo: can't be implemented with current SauceLabs emulators screen resolution + def test_1_1_chat_send_image_with_camera(self): + self.chat_1.just_fyi("Device 1 sends a camera image") + image_description = "camera test" + self.chat_1.send_image_with_camera(description=image_description) + for chat in self.chat_1, self.chat_2: + chat_name = "sender" if chat.driver.number == 0 else "receiver" + chat.just_fyi("%s checks image message" % chat_name.capitalize()) + chat_element = chat.chat_element_by_text(image_description) + if chat_element.is_element_displayed(30): + if not chat_element.image_in_message.is_element_image_similar_to_template('saucelabs_camera_image.png'): + self.errors.append(chat, "Not expected image is shown to the %s." % chat_name) + else: + self.errors.append(chat, "Message with camera image is not shown in chat for %s" % chat_name) + self.errors.verify_no_errors() + + @marks.testrail_id(702783) + def test_1_1_chat_is_shown_message_sent_delivered_from_offline(self): + self.home_1.just_fyi('Turn on airplane mode and check that offline status is shown on home view') + for home in self.homes: + home.driver.set_network_connection(ConnectionType.AIRPLANE_MODE) + + # Not implemented yet + # self.home_1.connection_offline_icon.wait_and_click(20) + # for element in self.home_1.not_connected_to_node_text, self.home_1.not_connected_to_peers_text: + # if not element.is_element_displayed(): + # self.errors.append( + # 'Element "%s" is not shown in Connection status screen if device is offline' % element.locator) + # self.home_1.click_system_back_button() + + message_1 = 'test message' + + self.home_2.just_fyi('Device2 checks "Sending" status when sending message from offline') + if not self.chat_2.chat_message_input.is_element_displayed(): + self.home_2.chats_tab.click() + self.home_2.get_chat(self.username_1).click() + self.chat_2.send_message(message_1) + status = self.chat_2.chat_element_by_text(message_1).status + if not (status == 'Sending' or status == 'Sent'): + self.errors.append(self.chat_2, 'Message status is not "Sending", it is "%s"!' % status) + + self.home_2.just_fyi('Device2 goes back online and checks that status of the message is changed to "delivered"') + for home in self.homes: + home.driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) + + self.home_1.just_fyi('Device1 goes back online and checks that 1-1 chat will be fetched') + if not self.chat_1.chat_element_by_text(message_1).is_element_displayed(120): + self.errors.append(self.chat_1, "Message was not delivered after resending from offline") + + self.home_2.just_fyi('Device1 goes back online and checks that 1-1 chat will be fetched') + try: + self.chat_2.chat_element_by_text(message_1).wait_for_status_to_be(expected_status='Delivered', timeout=120) + except TimeoutException as e: + self.errors.append(self.chat_2, '%s after back up online!' % e.msg) + self.errors.verify_no_errors() + + @marks.testrail_id(703496) + def test_1_1_chat_mute_chat(self): + self.home_1.navigate_to_chats_view() + self.home_1.just_fyi("Mute chat") + self.home_1.mute_chat_long_press(self.username_2) + + muted_message = "should be muted" + self.chat_2.send_message(muted_message) + chat = self.home_1.get_chat(self.username_2) + if chat.new_messages_counter.is_element_displayed(30) or self.home_1.chats_tab.counter.is_element_displayed(10): + self.errors.append(self.home_1, "New messages counter is shown after mute") + if not chat.chat_preview.text.startswith(muted_message): + self.errors.append(self.home_1, "Message text '%s' is not shown in chat preview after mute" % muted_message) + chat.click() + if not self.chat_1.chat_element_by_text(muted_message).is_element_displayed(30): + self.errors.append(self.chat_1, "Message '%s' is not shown in chat for receiver after mute" % muted_message) + + self.chat_1.just_fyi("Unmute chat") + self.chat_1.navigate_back_to_home_view() + chat.long_press_without_release() + if self.home_1.mute_chat_button.text != transl["unmute-chat"]: + self.errors.append(self.home_1, "Chat is not muted") + expected_text = "Muted until you turn it back on" + if not self.home_1.element_by_text(expected_text).is_element_displayed(): + self.errors.append(self.home_1, "Text '%s' is not shown for muted chat" % expected_text) + self.home_1.mute_chat_button.double_click() + + unmuted_message = "after unmute" + self.chat_2.send_message(unmuted_message) + if not chat.new_messages_counter.is_element_displayed( + 30) or not self.home_1.chats_tab.counter.is_element_displayed(10): + self.errors.append(self.home_1, "New messages counter is not shown after unmute") + if not chat.chat_preview.text.startswith(unmuted_message): + self.errors.append(self.home_1, + "Message text '%s' is not shown in chat preview after unmute" % unmuted_message) + chat.click() + if not self.chat_1.chat_element_by_text(unmuted_message).is_element_displayed(30): + self.errors.append(self.chat_1, + "Message '%s' is not shown in chat for receiver after unmute" % unmuted_message) + + self.errors.verify_no_errors() + + @marks.testrail_id(702784) + def test_1_1_chat_delete_via_long_press_relogin(self): + self.home_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + self.chat_2.chat_message_input.wait_for_visibility_of_element() + self.home_2.just_fyi("Getting chat history") + chat_history = list() + for element in self.chat_2.chat_element_by_text(text='').message_text_content.find_elements(): + chat_history.append(element.text) + if not chat_history: + self.errors.append(self.chat_2, "No chat history was loaded") + + self.home_2.just_fyi("Deleting chat via delete button and check it will not reappear after relaunching app") + self.home_2.navigate_to_chats_view() + self.home_2.delete_chat_long_press(username=self.username_1) + chat = self.home_2.get_chat_from_home_view(self.username_1) + if chat.is_element_displayed(): + self.errors.append(self.chat_2, + "Deleted '%s' chat is shown, but the chat has been deleted" % self.username_1) + self.home_2.reopen_app(user_name=self.username_2) + if chat.is_element_displayed(15): + self.errors.append( + self.chat_2, + "Deleted chat '%s' is shown after re-login, but the chat has been deleted" % self.username_1) + chat.click() + else: + self.home_2.contacts_tab.click() + chat.find_element().click() + self.chat_2.profile_send_message_button.click() + + lost_messages = list() + for message_text in chat_history: + if not self.chat_2.chat_element_by_text(message_text).is_element_displayed(): + lost_messages.append(message_text) + if lost_messages: + self.errors.append(self.chat_2, + "Message(s) missed in 1-1 chat after deleting the chat and relogin: %s" % lost_messages) + self.errors.verify_no_errors() diff --git a/test/appium/tests/profile/test_fallback.py b/test/appium/tests/profile/test_fallback.py new file mode 100644 index 00000000000..57a1d3784cc --- /dev/null +++ b/test/appium/tests/profile/test_fallback.py @@ -0,0 +1,383 @@ +import pytest +from selenium.common import TimeoutException + +from base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from support.helpers import generate_wallet_address +from tests import marks, run_in_parallel, transl +from users import transaction_senders +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="one_3") +@marks.nightly +class TestFallbackMultipleDevice(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(3) + self.sign_in_1, self.sign_in_2, self.sign_in_3 = SignInView(self.drivers[0]), SignInView( + self.drivers[1]), SignInView(self.drivers[2]) + self.home_1, self.home_2, self.home_3 = self.sign_in_1.get_home_view(), self.sign_in_2.get_home_view(), \ + self.sign_in_3.get_home_view() + self.sign_in_1.just_fyi("Device 1: create a new user") + self.sign_in_3.just_fyi("Device 3: create a new user") + self.loop.run_until_complete( + run_in_parallel(((self.sign_in_1.create_user,), + (self.sign_in_3.create_user,)))) + self.user_name_1, self.user_name_3 = self.home_1.get_username(), self.home_3.get_username() + self.profile_1 = self.home_1.profile_button.click() + self.profile_2 = self.home_2.get_profile_view() + self.sign_in_3.just_fyi("Device 3: get public key") + self.recovery_phrase, self.public_key_3 = self.loop.run_until_complete( + run_in_parallel(((self.profile_1.backup_recovery_phrase, {}), + (self.home_3.get_public_key, {})))) + self.home_2.driver.get_clipboard_text() # just pinging 2nd device to save the connection + self.profile_1.navigate_to_chats_view() + self.home_1.just_fyi("Device 1: add the 3rd user as a contact") + self.home_1.add_contact(self.public_key_3) + self.home_3.just_fyi("Device 3: accepting contact request from the 1st user") + self.home_3.handle_contact_request(self.user_name_1) + self.profile_1.just_fyi("Device 1: get sync code") + self.home_1.profile_button.click() + self.sync_code = self.profile_1.get_sync_code() + + @marks.testrail_id(740220) + def test_fallback_sync_with_error(self): + self.sign_in_2.just_fyi("Device 2: try syncing profile") + self.sign_in_2.sync_profile(sync_code=self.sync_code) + self.sign_in_2.progress_screen_title.wait_for_element() + assert self.sign_in_2.progress_screen_title.text == "Oops, something’s wrong!" + self.home_3.chats_tab.is_element_displayed() # just pinging 3rd device to save the connection + + @marks.testrail_id(740221) + def test_fallback_with_correct_seed_phrase(self): + self.sign_in_2.just_fyi("Device 2: recover a profile with backed up seed phrase") + self.sign_in_2.try_seed_phrase_button.click() + self.sign_in_2.recover_access(passphrase=self.recovery_phrase, after_sync_code=True) + self.profile_1.click_system_back_button() + + self.home_2.just_fyi("Getting device 2 name") + self.home_2.profile_button.click() + self.profile_2.syncing_button.scroll_and_click() + self.profile_2.paired_devices_button.click() + device_2_name = self.profile_2.get_current_device_name() + self.profile_2.navigate_back_to_home_view() + + self.home_3.chats_tab.is_element_displayed() # just pinging 3rd device to save the connection + + self.profile_1.just_fyi("Check device 2 is shown in not paired devices list in profile 1") + device_1_name = self.profile_1.get_current_device_name() + device_element = self.profile_1.get_paired_device_by_name(device_2_name) + if device_element.is_element_displayed(): + if not device_element.get_pair_button.is_element_displayed(): + self.errors.append( + self.profile_1, + "Pair button is absent for the device 2 inside Paired devices list of profile 1 before pairing") + else: + self.errors.append(self.profile_1, + "Device 2 is not shown in Paired devices list for device 1 before pairing") + self.profile_1.navigate_back_to_home_view() + + for home in self.home_1, self.home_2: + home.notifications_unread_badge.wait_for_visibility_of_element(30) + home.open_activity_center_button.click_until_presence_of_element(home.close_activity_centre) + + self.home_1.just_fyi("Checking pairing request on device 1") + a_c_element = self.home_1.get_activity_center_element_by_text(transl['review-pairing-request']) + if a_c_element.title.text != transl['new-device-detected']: + self.errors.append(self.home_1, + "Notification with title '%s' is not shown in the activity center for the device 1" % + transl[ + 'new-device-detected']) + a_c_element.review_pairing_request_button.click() + device_id_1 = self.home_1.get_new_device_installation_id() + + self.home_3.chats_tab.is_element_displayed() # just pinging 3rd device to save the connection + + self.home_2.just_fyi("Checking sync profile on device 2") + a_c_element = self.home_2.get_activity_center_element_by_text(transl['more-details']) + if a_c_element.title.text != transl['sync-your-profile']: + self.errors.append(self.home_2, + "Notification with title '%s' is not shown in the activity center for the device 2" % + transl[ + 'sync-your-profile']) + a_c_element.more_details_button.click() + device_id_2 = self.home_2.get_new_device_installation_id() + + if device_id_1 != device_id_2: + self.errors.append(self.home_2, "Device ids don't match on the activity center notifications") + + self.home_1.just_fyi("Confirm pairing request on device 1") + self.home_1.element_by_translation_id('pair-and-sync').click() + self.home_2.element_by_translation_id('close').click() + + self.home_1.close_activity_centre.click() + self.home_2.close_activity_centre.click() + + self.home_3.chats_tab.is_element_displayed() # just pinging 3rd device to save the connection + + self.home_1.just_fyi("Device 1: Check that the device 2 is shown in paired devices list") + self.home_1.profile_button.click() + self.profile_1.syncing_button.scroll_and_click() + self.profile_1.paired_devices_button.click() + device_element = self.profile_1.get_paired_device_by_name(device_2_name) + if device_element.is_element_displayed(): + if not device_element.get_unpair_button.is_element_displayed(): + self.errors.append( + self.profile_1, + "Unpair button is absent for the device 2 inside Paired devices list of profile 1 after pairing") + else: + self.errors.append(self.profile_1, + "Device 2 is not shown in Paired devices list for device 1 after pairing") + + self.home_2.just_fyi("Device 2: Check that the device 1 is shown paired devices list") + self.home_2.profile_button.click() + self.profile_2.syncing_button.scroll_and_click() + self.profile_2.paired_devices_button.click() + device_element = self.profile_2.get_paired_device_by_name(device_1_name) + if device_element.is_element_displayed(): + if not device_element.get_unpair_button.is_element_displayed(): + self.errors.append( + self.profile_2, + "Unpair button is absent for the device 1 inside Paired devices list of profile 2 after pairing") + else: + self.errors.append(self.profile_2, + "Device 1 is not shown in Paired devices list for device 2 after pairing") + + self.home_3.just_fyi("Device 3: send a message to user 1") + self.home_3.chats_tab.click() + chat_3 = self.home_3.get_chat(self.user_name_1).click() + message = "Test message" + chat_3.send_message(message) + + def _check_message(home_view, index): + home_view.just_fyi("Device %s: check the message from the user 3 is received" % index) + home_view.navigate_to_chats_view() + try: + chat_element = home_view.get_chat(self.user_name_3) + chat_element.wait_for_visibility_of_element(60) + chat_view = chat_element.click() + chat_view.chat_element_by_text(message).wait_for_visibility_of_element(60) + except TimeoutException: + self.errors.append(home_view, "Message is not received by the user %s" % index) + + self.loop.run_until_complete( + run_in_parallel(((_check_message, {'home_view': self.home_1, 'index': 1}), + (_check_message, {'home_view': self.home_2, 'index': 2})))) + + self.errors.verify_no_errors() + + @marks.testrail_id(741054) + def test_fallback_add_key_pair(self): + expected_addresses = generate_wallet_address(passphrase=self.recovery_phrase, number=4) + account_to_add = transaction_senders['ETH_1'] + self.home_1.navigate_back_to_home_view() + self.home_2.navigate_back_to_home_view() + wallet_1 = self.home_1.wallet_tab.click() + wallet_2 = self.home_2.wallet_tab.click() + + wallet_1.just_fyi("Device 1: add a new regular account") + regular_account_name = "New regular account" + regular_derivation_path = wallet_1.add_regular_account(account_name=regular_account_name) + regular_account_address = wallet_1.get_account_address().split(':')[-1] + account_element = wallet_1.get_account_element(account_name=regular_account_name) + wallet_1.close_account_button.click_until_presence_of_element(account_element) + + if regular_account_address != expected_addresses[1]: + self.errors.append(wallet_1, "Newly added regular account address %s doesn't match expected %s" % ( + regular_account_address, expected_addresses[1])) + if regular_account_address not in expected_addresses: + self.errors.append(wallet_1, + "Newly added regular account address %s is not in the list of expected addresses %s" % ( + regular_account_address, expected_addresses)) + + wallet_1.just_fyi("Device 1: add a new key pair account by importing recovery phrase") + account_element.swipe_left_on_element() + imported_key_pair_account_name = "Imported account" + imported_key_pair_name = "Imported key pair" + imported_key_pair_account_address = '0x' + account_to_add['address'].lower() + imported_key_pair_derivation_path = wallet_1.import_key_pair_using_recovery_phrase( + account_name=imported_key_pair_account_name, + passphrase=account_to_add['passphrase'], + key_pair_name=imported_key_pair_name) + + wallet_1.close_account_button.click_until_presence_of_element(account_element) + + wallet_1.just_fyi("Device 1: verify default and added key pairs details") + account_element.swipe_left_on_element() + wallet_1.get_account_element(account_name=imported_key_pair_account_name).swipe_left_on_element() + if not wallet_1.add_account_button.is_element_displayed(): + wallet_1.get_account_element(account_name=imported_key_pair_account_name).swipe_left_on_element() + wallet_1.add_account_button.click() + wallet_1.create_account_button.click() + wallet_1.edit_key_pair_button.click() + expected_texts_regular = [ + regular_account_name, + "%s...%s" % (regular_account_address[:5], regular_account_address[-3:]) + ] + for text in expected_texts_regular: + if not wallet_1.default_key_pair_container.get_child_element_by_text_part(text).is_element_displayed(): + self.errors.append(wallet_1, "Newly added regular account is not shown in default key pair list") + break + expected_texts_key_pair = [ + imported_key_pair_account_name, imported_key_pair_name, + "%s...%s" % (imported_key_pair_account_address[:5], imported_key_pair_account_address[-3:]) + ] + for text in expected_texts_key_pair: + if not wallet_1.added_key_pair_container.get_child_element_by_text_part(text).is_element_displayed(): + self.errors.append(wallet_1, "Newly added regular account is not shown in default key pair list") + break + + wallet_1.just_fyi("Device 1: add a new key pair account by generating a new key pair") + generated_key_pair_account_name = "Generated account" + generated_key_pair_name = "Generated key pair" + generated_key_pair_derivation_path, generated_passphrase = wallet_1.generate_new_key_pair( + account_name=generated_key_pair_account_name, + key_pair_name=generated_key_pair_name) + generated_key_pair_account_address = wallet_1.get_account_address().split(':')[-1] + wallet_1.close_account_button.click_until_presence_of_element(account_element) + + expected_addresses = generate_wallet_address(passphrase=generated_passphrase, number=4) + if generated_key_pair_account_address != expected_addresses[0]: + self.errors.append(wallet_1, "Generated key pair account address %s doesn't match expected %s" % ( + generated_key_pair_account_address, expected_addresses[0])) + if generated_key_pair_account_address not in expected_addresses: + self.errors.append(wallet_1, + "Generated key pair account address %s is not in the list of expected addresses %s" % ( + generated_key_pair_account_address, expected_addresses)) + + self.home_2.just_fyi("Device 2: check imported accounts are shown before importing key pair") + self.home_2.profile_button.click() + self.profile_2.profile_wallet_button.click() + self.profile_2.key_pairs_and_accounts_button.click() + if not self.profile_2.get_missing_key_pair_by_name(key_pair_name=imported_key_pair_name).is_element_displayed(): + self.errors.append(self.profile_2, + "New imported key pair is not shown in profile as missing before importing") + if not self.profile_2.get_missing_key_pair_by_name( + key_pair_name=generated_key_pair_name).is_element_displayed(): + self.errors.append(self.profile_2, "Generated key pair is not shown in profile as missing before importing") + if not self.profile_2.get_key_pair_account_by_name(account_name=regular_account_name).is_element_displayed(): + self.errors.append( + self.profile_2, + "Newly added regular account is not shown in profile as on device before importing key pair") + self.profile_2.get_missing_key_pair_by_name(key_pair_name=generated_key_pair_name).options_button.click() + if not self.profile_2.import_by_entering_recovery_phrase_button.is_element_displayed(): + self.errors.append(self.profile_2, "Can not import key pair account from profile") + self.profile_2.navigate_back_to_home_view() + self.home_2.wallet_tab.click() + + wallet_2.just_fyi("Device 2: import key pair") + wallet_2.get_account_element(account_name=regular_account_name).swipe_left_on_element() + wallet_2.get_account_element(account_name=imported_key_pair_account_name).click() + wallet_2.element_by_translation_id("import-key-pair").click() + self.sign_in_2.passphrase_edit_box.send_keys(account_to_add['passphrase']) + wallet_2.slide_and_confirm_with_password() + + self.home_2.just_fyi("Device 2: check imported accounts are shown in profile as added after importing key pair") + self.home_2.profile_button.click() + self.profile_2.profile_wallet_button.click() + self.profile_2.key_pairs_and_accounts_button.click() + if self.profile_2.get_key_pair_account_by_name(account_name=regular_account_name).is_element_displayed(): + address_text = self.profile_2.get_key_pair_account_by_name(account_name=regular_account_name).address.text + if address_text != '...'.join((regular_account_address[:5], regular_account_address[-3:])): + self.errors.append( + self.profile_2, + "Incorrect wallet address if shown for regular account after importing: " + address_text) + else: + self.errors.append(self.profile_2, + "Newly added regular account is not shown in profile after importing key pair") + + account_element = self.profile_2.get_key_pair_account_by_name( + account_name=imported_key_pair_account_name) + if account_element.is_element_displayed(): + address_text = account_element.address.text + if address_text != '...'.join( + (imported_key_pair_account_address[:5], imported_key_pair_account_address[-3:])): + self.errors.append( + self.profile_2, + "Incorrect wallet address if shown for imported key pair account after importing: " + address_text) + else: + self.errors.append( + self.profile_2, + "Imported key pair account is not shown in profile as on device after importing key pair") + + if not self.profile_2.get_missing_key_pair_by_name( + key_pair_name=generated_key_pair_name).is_element_displayed(): + self.errors.append( + self.profile_2, + "Generated key pair account is not shown in profile as missing after importing the first key pair") + self.profile_2.navigate_back_to_home_view() + self.home_2.wallet_tab.click() + + # ToDo: Arbiscan API is down, looking for analogue + # wallet_2.just_fyi("Device 2: check wallet balance") + # wallet_2.set_network_in_wallet(network_name='Arbitrum') + # expected_balance = self.network_api.get_balance(key_pair_account_address) + # shown_balance = wallet_2.get_asset(asset_name='Ether').get_amount() + # if shown_balance != round(expected_balance, 5): + # self.errors.append("Device 2: ETH balance %s doesn't match expected %s" % (shown_balance, expected_balance)) + + wallet_2.just_fyi("Device 2: check derivation paths of the regular and key pair accounts") + account_element = wallet_2.get_account_element(account_name=regular_account_name) + account_element.click() + wallet_2.about_tab.click() + der_path = wallet_2.account_about_derivation_path_text.text + if der_path != regular_derivation_path: + self.errors.append(wallet_2, "Incorrect derivation path %s is shown for the regular account" % der_path) + wallet_2.close_account_button.click_until_presence_of_element(account_element) + account_element.swipe_left_on_element() + wallet_2.get_account_element(account_name=imported_key_pair_account_name).click() + wallet_2.about_tab.click() + der_path = wallet_2.account_about_derivation_path_text.text + if der_path != imported_key_pair_derivation_path: + self.errors.append(wallet_2, + "Incorrect derivation path %s is shown for the imported key pair account" % der_path) + wallet_2.close_account_button.click_until_presence_of_element(account_element) + account_element.swipe_left_on_element() + wallet_2.get_account_element(account_name=generated_key_pair_account_name).click() + wallet_2.element_by_translation_id("import-key-pair").click() + self.sign_in_2.passphrase_edit_box.send_keys(generated_passphrase) + wallet_2.slide_and_confirm_with_password() + wallet_2.get_account_element(account_name=generated_key_pair_account_name).click() + wallet_2.about_tab.click() + der_path = wallet_2.account_about_derivation_path_text.text + if der_path != generated_key_pair_derivation_path: + self.errors.append(wallet_2, + "Incorrect derivation path %s is shown for the generated key pair account" % der_path) + if not wallet_2.element_by_text_part(generated_key_pair_account_address).is_element_displayed(): + self.errors.append( + "Generated key pair address %s is absent in About tab" % generated_key_pair_account_address) + self.errors.verify_no_errors() + + @marks.testrail_id(740222) + def test_fallback_validate_seed_phrase(self): + self.sign_in_2.reopen_app(sign_in=False) + + self.sign_in_2.just_fyi("Device 2: try syncing profile") + self.sign_in_2.explore_new_status_button.click_if_shown() + self.sign_in_2.sync_profile(sync_code=self.sync_code, first_user=False) + self.sign_in_2.progress_screen_title.wait_for_element() + assert self.sign_in_2.progress_screen_title.text == "Oops, something’s wrong!" + + self.sign_in_2.just_fyi("Device 2: try invalid passphrase") + self.sign_in_2.try_seed_phrase_button.click() + self.sign_in_2.passphrase_edit_box.send_keys(' '.join(['asset'] * 12)) + self.sign_in_2.continue_button.click() + if not self.sign_in_2.element_by_translation_id('seed-phrase-invalid').is_element_displayed(): + self.errors.append(self.sign_in_2, "Error message is not displayed for invalid recovery phrase") + + self.sign_in_2.just_fyi("Device 2: try creating an account with another valid passphrase") + self.sign_in_2.passphrase_edit_box.clear() + self.sign_in_2.passphrase_edit_box.send_keys(transaction_senders['A']['passphrase']) + self.sign_in_2.continue_button.click() + if not self.sign_in_2.password_input.is_element_displayed(): + self.errors.append(self.sign_in_2, "Can't recover an access with a valid passphrase") + self.sign_in_2.click_system_back_button(times=2) + + self.sign_in_2.just_fyi("Device 2: try recovering an account which is already synced") + self.sign_in_2.passphrase_edit_box.clear() + self.sign_in_2.passphrase_edit_box.send_keys(self.recovery_phrase) + self.sign_in_2.continue_button.click() + if not self.sign_in_2.element_by_translation_id('account-already-exist-error').is_element_displayed(): + self.errors.append(self.sign_in_2, "Error is not shown for already synced account") + + self.errors.verify_no_errors() diff --git a/test/appium/tests/profile/test_profile.py b/test/appium/tests/profile/test_profile.py new file mode 100644 index 00000000000..da429a462e2 --- /dev/null +++ b/test/appium/tests/profile/test_profile.py @@ -0,0 +1,371 @@ +import math +from random import choice +from string import printable + +import pytest +from currency_converter import CurrencyConverter +from selenium.common import NoSuchElementException, TimeoutException + +from tests import marks, run_in_parallel +from tests.base_test_case import create_shared_drivers, MultipleSharedDeviceTestCase +from users import transaction_senders +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="one_1") # ToDo: find group +@marks.nightly +class TestProfileOneDevice(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in = SignInView(self.drivers[0]) + self.home = self.sign_in.create_user() + self.profile = self.home.profile_button.click() + self.username = self.profile.default_username_text.text + + @marks.testrail_id(741966) + def test_profile_back_up_seed_phrase_validation(self): + self.profile.backup_recovery_phrase_button.click() + for checkbox in self.profile.checkbox_button.find_elements(): + checkbox.click() + self.profile.button_one.click() + recovery_phrase = self.profile.get_recovery_phrase() + self.profile.button_one.click() + word_number = self.profile.recovery_phrase_word_number.number + self.profile.get_incorrect_word_button(recovery_phrase[word_number]).click() + if not self.profile.element_by_translation_id('oops-wrong-word').is_element_displayed(): + self.errors.append(self.profile, + "Error message 'Oops! Wrong word' is not shown on the first seed phrase validation step") + self.profile.get_incorrect_word_button(recovery_phrase[word_number]).click() + if not self.profile.element_by_translation_id( + 'do-not-cheat').is_element_displayed() or not self.profile.element_by_translation_id( + 'do-not-cheat-description').is_element_displayed(): + self.errors.append( + self.profile, + "Expected messages are not shown for the second attempt with incorrect recovery phrase word") + self.profile.button_one.click() + if not self.profile.recovery_phrase_table.is_element_displayed(): + self.errors.append(self.profile, "Recovery phrase is not shown after failed attempts to check it") + self.errors.verify_no_errors() # the test fails if the recovery phrase is not shown on this step + + self.profile.button_one.click() + self.profile.fill_recovery_phrase_checking_words(recovery_phrase) + if not self.profile.element_by_translation_id('written-seed-ready').is_element_displayed(): + self.errors.append(self.profile, "Can't complete backup") + + self.profile.navigate_back_to_main_profile_view() + if not self.profile.backup_recovery_phrase_button.is_element_displayed(): + self.errors.append(self.profile, "Backup recovery phrase button is not shown after failed validation") + self.profile.reopen_app(sign_in=True, user_name=self.username) + self.home.profile_button.click() + if not self.profile.backup_recovery_phrase_button.is_element_displayed(): + self.errors.append(self.profile, "Backup recovery phrase button is not shown after relogin") + self.errors.verify_no_errors() + + @marks.testrail_id(741967) + def test_profile_change_currency(self): + self.sign_in.reopen_app(sign_in=False) + self.sign_in.recover_access(passphrase=transaction_senders['ETH_2']['passphrase'], second_user=True) + wallet = self.sign_in.wallet_tab.click() + amount_text = float(wallet.total_balance_text.text[1:]) + expected_amount = CurrencyConverter().convert(amount_text, 'USD', 'EUR') + wallet.profile_button.click() + self.profile.change_currency('EUR') + self.profile.click_system_back_button() + balance_text = wallet.total_balance_text.text + new_currency, new_amount = balance_text[0], float(balance_text[1:]) + if new_currency != '€': + self.errors.append(wallet, "Currency in wallet is %s but should be €" % new_currency) + if not math.isclose(new_amount, expected_amount, rel_tol=0.1): + self.errors.append(wallet, "Amount in wallet is %s but expected to be %s" % (new_amount, expected_amount)) + self.errors.verify_no_errors() + + +@pytest.mark.xdist_group(name="five_2") +@marks.nightly +class TestProfileMultipleDevices(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(2) + self.device_1, self.device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1]) + self.loop.run_until_complete(run_in_parallel(((self.device_1.create_user,), (self.device_2.create_user,)))) + self.homes = self.home_1, self.home_2 = self.device_1.get_home_view(), self.device_2.get_home_view() + self.username_1, self.username_2 = self.home_1.get_username(), self.home_2.get_username() + self.public_key_2 = self.home_2.get_public_key() + self.profile_1 = self.home_1.get_profile_view() + self.profile_2 = self.home_2.get_profile_view() + self.home_1.navigate_to_chats_view() + self.home_1.add_contact(self.public_key_2) + self.home_2.navigate_to_chats_view() + self.home_2.handle_contact_request(self.username_1) + + self.home_1.get_chat(self.username_2).wait_for_visibility_of_element() + self.chat_2 = self.home_2.get_chat(self.username_1).click() + + self.home_1.just_fyi("Open community to message") + self.home_1.communities_tab.click() + self.community_name = "open community" + self.channel_name = 'general' + self.home_1.create_community(community_type="open") + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + + self.community_1, self.community_2 = self.home_1.get_community_view(), self.home_2.get_community_view() + self.community_1.invite_to_community(self.community_name, self.username_2) + self.channel_1 = self.home_1.get_to_community_channel_from_home(self.community_name) + self.community_2.join_community() + self.community_2.get_channel(self.channel_name).click() + self.message_community_2 = "message community from User 2" + self.chat_2.send_message(self.message_community_2) + self.message_community_1 = 'message in community from User 1' + self.channel_1.send_message(self.message_community_1) + self.channel_1.navigate_to_chats_view() + self.chat_1 = self.home_1.get_chat(self.username_2).click() + self.message_1_1_from_1 = "message 1-1 chat from user 1" + self.message_1_1_from_2 = "message 1-1 chat from user 2" + self.chat_2.navigate_to_chats_view() + self.home_2.get_chat(self.username_1).click() + self.chat_1.send_message(self.message_1_1_from_1) + self.chat_2.send_message(self.message_1_1_from_2) + self.new_username_1 = 'user 1' + + @marks.smoke + @marks.testrail_id(741968) + def test_profile_change_username(self): + self.home_1.navigate_back_to_home_view() + self.home_1.just_fyi("User 1 updates username in the profile") + self.home_1.profile_button.click() + self.profile_1.edit_username(self.new_username_1) + self.profile_1.navigate_back_to_main_profile_view() + if self.profile_1.default_username_text.text != self.new_username_1: + pytest.fail("Device 1: Username is not updated") + + self.home_1.just_fyi("User 1 sends a new message in 1-1 chat") + self.home_1.navigate_to_chats_view() + self.home_1.get_chat(self.username_2).click() + new_message = 'new message' + self.chat_1.send_message(new_message) + self.chat_1.chat_element_by_text(new_message).wait_for_sent_state() + + self.home_2.just_fyi("User 2 checks updated username in the contacts list") + self.chat_2.navigate_to_chats_view() + self.home_2.contacts_tab.click() + if not self.home_2.get_chat_from_home_view(self.new_username_1).is_element_displayed(30): + self.errors.append(self.home_2, "Updated username is absent in the contacts list") + + self.home_2.just_fyi("User 2 checks updated username in the 1-1 chat and user's profile") + self.home_2.recent_tab.click() + if self.home_2.get_chat_from_home_view(self.new_username_1).is_element_displayed(): + self.home_2.get_chat(self.new_username_1).click() + message_element = self.chat_2.chat_element_by_text(new_message) + message_element.wait_for_element(30) + if message_element.username.text != self.new_username_1: + self.errors.append(self.chat_2, + "Updated username '%s' is not shown in the 1-1 chat" % self.new_username_1) + message_element.member_photo.click() + if self.chat_2.get_profile_view().contact_name_text.text != self.new_username_1: + self.errors.append(self.chat_2, "Updated username is not shown in the user's profile") + else: + self.errors.append(self.home_2, "Can't find chat with updated username") + + self.home_2.just_fyi("User 2 checks updated username in the community channel and mentions list") + self.home_2.navigate_to_communities_view() + self.home_2.get_to_community_channel_from_home(self.community_name) + self.chat_2.chat_element_by_text(self.message_community_1).wait_for_element(30) + if self.chat_2.chat_element_by_text(self.message_community_1).username.text != self.new_username_1: + self.errors.append(self.chat_2, + "Updated username '%s' is not shown in the community channel" % self.new_username_1) + self.chat_2.chat_message_input.send_keys("@") + self.chat_2.mentions_list.wait_for_element() + if not self.chat_2.user_list_element_by_name(self.new_username_1).is_element_displayed(): + self.errors.append(self.chat_2, "Updated username is not shown in the mentions list") + + self.home_1.just_fyi("User 1 checks that updated username is shown in the login screen") + try: + self.home_1.reopen_app(sign_in=True, user_name=self.new_username_1) + except NoSuchElementException: + self.errors.append(self.home_1, "Updated username is absent on the login screen") + + self.errors.verify_no_errors() + + @marks.smoke + @marks.testrail_id(741969) + def test_profile_change_profile_photo(self): + self.home_2.navigate_back_to_home_view() + self.home_2.just_fyi("User 2 updates profile image") + self.home_2.profile_button.click() + self.profile_2.edit_profile_picture(image_index=0) + if self.profile_2.user_avatar.is_element_differs_from_template("profile_image.png", diff=7): + self.errors.append(self.profile_2, "Updated profile image is not shown for the profile owner") + + self.home_1.just_fyi("User 1 checks updated profile photo in the community channel") + self.home_1.click_system_back_button_until_absence_of_element(self.profile_1.default_username_text) + self.home_1.navigate_to_communities_view() + self.home_1.get_to_community_channel_from_home(self.community_name) + self.chat_1.chat_element_by_text(self.message_community_2).wait_for_element(30) + if self.chat_1.chat_element_by_text(self.message_community_2).member_photo.is_element_differs_from_template( + "profile_image_in_1_1_chat.png", diff=7): + self.errors.append(self.chat_1, "Updated image is not shown in the community channel") + self.chat_1.navigate_to_chats_view() + + self.home_1.just_fyi("User 1 checks updated profile photo in the contacts list") + self.home_1.contacts_tab.click() + chat_element = self.home_1.get_chat(self.username_2) + if chat_element.is_element_displayed(): + if chat_element.chat_image.is_element_differs_from_template("profile_image_in_1_1_chat.png", diff=7): + self.errors.append(self.home_1, + "Chat image of user 2 doesn't match expected in the contacts list of user 1") + else: + self.errors.append(self.home_1, "User 2 is absent in the contacts list of user 1") + + self.home_1.just_fyi("User 1 checks updated profile image in the 1-1 chat and user's profile") + self.home_1.recent_tab.click() + if chat_element.is_element_displayed(): + chat_element.click() + message_element = self.chat_1.chat_element_by_text(self.message_1_1_from_2) + message_element.wait_for_element(30) + if message_element.member_photo.is_element_differs_from_template("profile_image_in_1_1_chat.png", diff=7): + self.errors.append(self.chat_1, "Updated profile image is not shown in the 1-1 chat") + message_element.member_photo.click() + if self.chat_1.get_profile_view().profile_picture.is_element_differs_from_template( + "profile_image_contacts_profile.png"): + self.errors.append(self.chat_1, "Updated profile image is not shown in the user's profile") + self.chat_1.click_system_back_button() + else: + self.errors.append(self.home_2, "Can't find chat with user 2") + + self.home_2.just_fyi("User 2 checks that updated profile image is shown in the login screen") + self.home_2.reopen_app(sign_in=False) + if self.device_2.get_user_profile_by_name(self.username_2).profile_image.is_element_differs_from_template( + "profile_image_sign_in_view.png", diff=7): + self.errors.append(self.device_2, "Updated profile image is not shown on the sign in view") + self.device_2.sign_in(self.username_2) + self.errors.verify_no_errors() + + @marks.testrail_id(741970) + def test_profile_set_bio(self): + self.home_2.just_fyi("Device 2 edits bio in profile") + self.home_2.navigate_back_to_home_view() + self.home_2.profile_button.click() + self.profile_2.edit_profile_button.click() + self.profile_2.edit_bio_button.click() + new_bio = ''.join(choice(printable) for _ in range(240)) + self.profile_2.edit_profile_input.send_keys(new_bio + '1') + if not self.profile_2.element_by_translation_id('bio-is-too-long').is_element_displayed(): + self.errors.append(self.profile_2, "Error message is not shown for 241 chars in the edit bio input field") + self.profile_2.driver.press_keycode(67) # deleting the last character + self.profile_2.save_bio_button.click() + self.profile_2.navigate_back_to_main_profile_view() + if self.profile_2.bio_text.text != new_bio: + self.errors.append(self.profile_2, "Updated bio is not displayed in the user's profile") + self.profile_2.click_system_back_button() + + self.home_1.just_fyi("User 1 checks updated bio in the user's 2 profile") + self.home_1.click_system_back_button_until_absence_of_element(self.profile_1.default_username_text) + self.home_1.navigate_to_chats_view() + self.home_1.contacts_tab.click() + self.home_1.get_chat(self.username_2).find_element().click() + if self.chat_1.contact_bio_text.text != new_bio: + self.errors.append(self.profile_1, "Updated bio is not displayed in the contact's profile") + self.errors.verify_no_errors() + + @marks.testrail_id(741971) + def test_profile_change_accent_color(self): + self.home_1.navigate_back_to_home_view() + self.home_1.just_fyi("User 1 changes accent colour") + self.home_1.profile_button.click() + self.profile_1.change_accent_colour(colour_name='magenta') + self.profile_1.click_system_back_button() + red, green, blue = self.profile_1.user_avatar.get_element_rgb() + if red < 70 or blue < 30: + self.errors.append( + self.profile_1, + "Accent color is not properly applied in own profile, (red {}%, green {}%, blue {}%)".format(red, + green, + blue)) + self.home_2.just_fyi("User 2 checks updated accent color of user 1 in 1-1 chat and his profile") + self.home_2.click_system_back_button_until_absence_of_element(self.profile_2.default_username_text) + self.home_2.navigate_to_chats_view() + if self.home_2.get_chat(self.username_1).is_element_displayed(): + chat_element = self.home_2.get_chat(self.username_1) + else: + chat_element = self.home_2.get_chat(self.new_username_1) + red, green, blue = chat_element.chat_image.get_element_rgb() + if red < 90 or blue < 40: + self.errors.append( + self.profile_2, + "Accent color is not applied for the chat preview image, (red {}%, green {}%, blue {}%)".format( + red, + green, + blue)) + chat_element.click() + self.chat_2.chat_message_input.send_keys('test') + red, green, blue = self.chat_2.send_message_button.get_element_rgb() + if red < 90 or blue < 40: + self.errors.append( + self.profile_2, + "Accent color is not applied for the send message button in chat, (red {}%, green {}%, blue {}%)".format( + red, + green, + blue)) + self.chat_2.options_button.click() + self.chat_2.view_profile_button.click() + red, green, blue = self.profile_2.profile_picture.get_element_rgb() + if red < 90 or blue < 40: + self.errors.append( + self.profile_2, + "Accent color is not applied for the profile picture, (red {}%, green {}%, blue {}%)".format( + red, + green, + blue)) + red, green, blue = self.chat_2.profile_send_message_button.get_element_rgb() + if red < 90 or blue < 40: + self.errors.append( + self.profile_2, + "Accent color is not applied for the send message button in profile, (red {}%, green {}%, blue {}%)".format( + red, + green, + blue)) + self.errors.verify_no_errors() + + @marks.testrail_id(741972) + def test_profile_allow_new_contact_requests_toggle(self): + self.device_1.just_fyi("Device 1 creates anew profile") + self.device_1.reopen_app(sign_in=False) + self.device_1.create_user(first_user=False) + public_key = self.home_1.get_public_key() + self.home_1.just_fyi("Device 1 disables new contact requests toggle in profile") + self.home_1.profile_button.click() + self.profile_1.turn_new_contact_requests_toggle('off') + self.profile_1.click_system_back_button() + + self.home_2.just_fyi("Device 2 adds newly created user as a contact") + self.home_2.navigate_to_chats_view() + self.home_2.add_contact(public_key=public_key, close_profile=False) + + self.home_1.just_fyi("Device 1 checks that no contact request is received") + try: + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(30) + self.errors.append(self.home_1, "Contact request received with turned off 'Allow contact requests' toggle") + except TimeoutException: + pass + + self.home_1.just_fyi("Device 1 enables new contact requests toggle in profile") + self.home_1.profile_button.click() + self.profile_1.turn_new_contact_requests_toggle('on') + self.profile_1.click_system_back_button() + + self.home_2.just_fyi("Device 2 resends a contact request") + self.chat_2.block_contact() + self.chat_2.profile_unblock_button.click() + self.chat_2.profile_send_contact_request_button.click() + self.chat_2.contact_request_message_input.send_keys("hi") + self.chat_2.confirm_send_contact_request_button.click() + + self.home_1.just_fyi("Device 1 checks that contact request is received") + try: + self.home_1.notifications_unread_badge.wait_for_visibility_of_element(60) + except TimeoutException: + self.errors.append(self.home_1, + "Contact request was not received with turned on 'Allow contact requests' toggle") + + self.errors.verify_no_errors() diff --git a/test/appium/tests/wallet/test_collectibles.py b/test/appium/tests/wallet/test_collectibles.py new file mode 100644 index 00000000000..0d632e3b62c --- /dev/null +++ b/test/appium/tests/wallet/test_collectibles.py @@ -0,0 +1,206 @@ +import re +import time + +import pytest +from selenium.common import TimeoutException + +from base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from tests import marks +from users import transaction_senders +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="six_2") +@marks.nightly +@marks.smoke +class TestWalletCollectibles(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.sender, self.receiver = transaction_senders['ETH_1'], transaction_senders['ETH_2'] + self.sender['wallet_address'] = '0x' + self.sender['address'] + self.receiver['wallet_address'] = '0x' + self.receiver['address'] + self.sign_in_view.recover_access(passphrase=self.sender['passphrase']) + + self.home_view = self.sign_in_view.get_home_view() + self.sender_username = self.home_view.get_username() + self.profile_view = self.home_view.profile_button.click() + self.profile_view.switch_network() + self.home_view.navigate_back_to_home_view() + self.home_view.wallet_tab.click() + self.wallet_view = self.home_view.get_wallet_view() + self.account_name = 'Account 1' + self.sender_short_address = self.sender['wallet_address'].replace(self.sender['wallet_address'][6:-3], + '…').lower() + self.receiver_short_address = self.receiver['wallet_address'].replace(self.receiver['wallet_address'][6:-3], + '…').lower() + self.network_name = 'Base' + + @marks.testrail_id(741839) + def test_wallet_collectibles_balance(self): + self.wallet_view.collectibles_tab.click() + for _ in range(4): + self.wallet_view.pull_to_refresh() + if not self.wallet_view.element_by_text('No collectibles').is_element_displayed(): + return + time.sleep(5) + + self.wallet_view.set_network_in_wallet(self.network_name) + collectibles = { + "BVL": {"quantity": 2, + "info": {"Account": "Account 1", + "Network": "Base", + "category": "Football Player", + "rank": "Star", + "type": "Modric"}}, + "Glitch Punks": {"quantity": 1, + "info": {"Account": "Account 1", + "Network": "Base", + "Race": "Skull Blue", + "Mouth": "Lipstick Green", + "Eyes": "Femme Shade Eyes Variant 3", + "Face": "Pipe", + "Ear Accessory": "Silver Stud Cross Combo", + "Nose": "Bot Nose 3", + "Eye Accessory": "Nouns", + "Head": "Double Spike"}} + } + for collectible_name, data in collectibles.items(): + self.wallet_view.just_fyi("Check %s collectible info and image" % collectible_name) + try: + element = self.wallet_view.get_collectible_element(collectible_name) + element.wait_for_element() + except TimeoutException: + self.errors.append(self.wallet_view, "Collectible '%s' is not displayed" % collectible_name) + continue + if element.image_element.is_element_differs_from_template( + '%s_collectible_image_template.png' % collectible_name): + self.errors.append(self.wallet_view, "%s image doesn't match expected template" % collectible_name) + if element.quantity != data['quantity']: + self.errors.append(self.wallet_view, "%s quantity %s doesn't match expected %s" % ( + collectible_name, element.quantity, data['quantity'])) + self.wallet_view.just_fyi("Check %s collectible expanded info" % collectible_name) + element.click() + if self.wallet_view.expanded_collectible_image.is_element_differs_from_template( + '%s_expanded_collectible_image_template.png' % collectible_name): + self.errors.append(self.wallet_view, + "%s expanded image doesn't match expected template" % collectible_name) + self.wallet_view.driver.swipe(500, 2000, 500, 300) + for item, expected_text in data['info'].items(): + try: + text = self.wallet_view.get_data_item_element_text(item) + if text != expected_text: + self.errors.append(self.wallet_view, "%s: shown %s text '%s' doesn't match expected '%s'" % ( + collectible_name, item, text, expected_text)) + except TimeoutException: + self.errors.append(self.wallet_view, "%s: %s data item is not shown" % (collectible_name, item)) + self.wallet_view.click_system_back_button() + self.errors.verify_no_errors() + + @marks.testrail_id(741840) + def test_wallet_send_collectible(self): + self.wallet_view.get_account_element().click() + self.wallet_view.send_button.click() + self.wallet_view.address_text_input.send_keys(self.receiver['wallet_address']) + self.wallet_view.continue_button.click() + self.wallet_view.collectibles_tab_on_select_token_view.click() + self.wallet_view.get_collectible_element('BVL').wait_and_click(20) + self.wallet_view.button_one.click() + data_to_find_on_review = { + self.account_name: ("From", self.wallet_view.from_data_container), + self.sender_short_address: ("From", self.wallet_view.from_data_container), + self.network_name: ("On", self.wallet_view.on_data_container), + self.receiver_short_address: ("To", self.wallet_view.to_data_container) + } + + for text, (label, container) in data_to_find_on_review.items(): + if not container.get_child_element_by_text(text).is_element_displayed(): + self.errors.append( + self.wallet_view, + "Text %s is not shown inside '%s' container on the Review Send page" % (text, label) + ) + data_to_check = { + 'Est. time': r'~\d+ sec', + 'Max fees': r" 60: + self.errors.append( + self.wallet_view, + "Unexpected value '%s' is shown for est. time on the Review Send page" % text) + else: + if text != expected_value: + self.errors.append( + self.wallet_view, + "%s text %s doesn't match expected %s on the Review Send page" % ( + key, text, expected_value)) + except TimeoutException: + self.errors.append(self.wallet_view, "%s is not shown on the Review Send page" % key) + + self.wallet_view.slide_button_track.slide() + if not self.wallet_view.password_input.is_element_displayed(): + self.errors.append(self.wallet_view, "Can't confirm transaction") + + self.wallet_view.click_system_back_button(times=6) + self.errors.verify_no_errors() + + @marks.testrail_id(741841) + def test_wallet_collectible_send_from_expanded_info_view(self): + self.wallet_view.collectibles_tab.click() + self.wallet_view.get_collectible_element('Glitch Punks').scroll_and_click() + self.wallet_view.send_from_collectible_info_button.click() + self.wallet_view.address_text_input.send_keys(self.receiver['wallet_address']) + self.wallet_view.continue_button.click() + data_to_find_on_review = { + self.account_name: ("From", self.wallet_view.from_data_container), + self.sender_short_address: ("From", self.wallet_view.from_data_container), + self.network_name: ("On", self.wallet_view.on_data_container), + self.receiver_short_address: ("To", self.wallet_view.to_data_container) + } + + for text, (label, container) in data_to_find_on_review.items(): + if not container.get_child_element_by_text(text).is_element_displayed(): + self.errors.append( + self.wallet_view, + "Text %s is not shown inside '%s' container on the Review Send page" % (text, label) + ) + data_to_check = { + 'Est. time': r'~\d+ sec', + 'Max fees': r" 60: + self.errors.append( + self.wallet_view, + "Unexpected value '%s' is shown for est. time on the Review Send page" % text) + else: + if text != expected_value: + self.errors.append( + self.wallet_view, + "'%s' text '%s' doesn't match expected '%s' on the Review Send page" % ( + key, text, expected_value)) + except TimeoutException: + self.errors.append(self.wallet_view, "%s is not shown on the Review Send page" % key) + + self.wallet_view.slide_button_track.slide() + if not self.wallet_view.password_input.is_element_displayed(): + self.errors.append(self.wallet_view, "Can't confirm transaction") + + self.errors.verify_no_errors() diff --git a/test/appium/tests/wallet/test_wallet_connect.py b/test/appium/tests/wallet/test_wallet_connect.py new file mode 100644 index 00000000000..9bc973dd417 --- /dev/null +++ b/test/appium/tests/wallet/test_wallet_connect.py @@ -0,0 +1,348 @@ +import re + +import pytest +from selenium.common import TimeoutException + +import marks +from base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from users import transaction_senders +from views.sign_in_view import SignInView +from views.web_views.external_browser_view import BridgeStatusNetworkView, UniswapView + +status_dapp_url = 'https://bridge.status.network' +status_dapp_name = 'Status Network Bridge' + + +@marks.nightly +@pytest.mark.xdist_group(name="two_1") +class TestWalletConnectBaseChecks(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.sign_in_view.create_user() + self.home_view = self.sign_in_view.get_home_view() + self.username = self.home_view.get_username() + self.wallet_view = self.sign_in_view.wallet_tab.click() + self.browser_view = BridgeStatusNetworkView(self.drivers[0]) + self.account_1_name = 'Account 1' + + @marks.testrail_id(742897) + def test_wallet_connect_disconnect(self): + self.wallet_view.just_fyi( + "Open %s in an external browser and try connecting to Status" % status_dapp_url) + self.browser_view.connect_status_wallet() + for text in status_dapp_name, status_dapp_url: + if not self.wallet_view.element_by_text(text).is_element_displayed(): + self.errors.append(self.wallet_view, + "Text '%s' is not displayed when connecting to Status wallet" % text) + expected_data = {'Account': 'Account 1', 'Networks': 'Mainnet, Status'} + for key, value in expected_data.items(): + try: + data = self.wallet_view.get_data_item_element_text(data_item_name=key) + if data != value: + self.errors.append( + self.wallet_view, + "%s value '%s' doesn't match expected '%s' when connecting to Status" % (key, data, value)) + except TimeoutException: + self.errors.append(self.wallet_view, "%s data is not shown when connecting to Status" % key) + self.wallet_view.wallet_connect_button.click() + self.wallet_view.just_fyi("Check that %s is added to connected dApps") + self.wallet_view.get_account_element().click() + self.wallet_view.connected_dapps_button.click() + dapp_element = self.wallet_view.get_connected_dapp_element_by_name(dapp_name=status_dapp_name) + if dapp_element.is_element_displayed(): + if dapp_element.url_text.text != status_dapp_url: + self.errors.append(self.wallet_view, + "DApp url %s is not shown for the connected dApp" % status_dapp_url) + else: + self.errors.append(self.wallet_view, "%s is not shown in connected dApps" % status_dapp_name) + + self.wallet_view.just_fyi("Check that dApp is connected in the browser") + status_app_package = self.drivers[0].current_package + self.browser_view.open_browser() + if self.browser_view.connect_wallet_button.is_element_displayed(): + self.errors.append(self.wallet_view, "DApp is not connected in the browser") + + self.wallet_view.just_fyi("Check that dApp can be disconnected") + self.drivers[0].activate_app(status_app_package) + if dapp_element.is_element_displayed(): + dapp_element.disconnect() + if not self.wallet_view.element_by_translation_id('no-dapps').is_element_displayed(): + self.errors.append(self.wallet_view, "DApp was not disconnected") + self.errors.verify_no_errors() + + @marks.testrail_id(742898) + def test_wallet_connect_decline_and_select_account(self): + self.wallet_view.navigate_to_wallet_view() + self.wallet_view.just_fyi("Add new wallet account") + new_account_name = "New Account" + self.wallet_view.add_regular_account(account_name=new_account_name) + + self.wallet_view.just_fyi("Decline connection to Status dApp") + self.browser_view.open_browser() + if self.browser_view.connect_wallet_button.is_element_displayed(): + refresh = False + else: + refresh = True + self.browser_view.connect_status_wallet(refresh=refresh) + self.wallet_view.wallet_decline_button.click() + self.browser_view.open_browser() + self.browser_view.element_by_text('Connection declined').wait_for_element() + self.browser_view.element_by_text('Try again').click() + + self.wallet_view.just_fyi("Connect Status dApp with selecting newly created account") + self.wallet_view.select_account_to_connect_dapp(account_name=new_account_name) + self.wallet_view.wallet_connect_button.click() + self.wallet_view.navigate_to_wallet_view() + self.wallet_view.get_account_element(account_name=new_account_name).click() + self.wallet_view.connected_dapps_button.click() + dapp_element = self.wallet_view.get_connected_dapp_element_by_name(dapp_name=status_dapp_name) + if dapp_element.is_element_displayed(): + if dapp_element.url_text.text != status_dapp_url: + self.errors.append(self.wallet_view, + "DApp url %s is not shown for the connected dApp" % status_dapp_url) + else: + self.errors.append(self.wallet_view, "%s is not shown in connected dApps" % status_dapp_name) + self.errors.verify_no_errors() + + +@marks.nightly +@pytest.mark.xdist_group(name="two_1") +class TestWalletConnectDifferentNetworks(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.sign_in_view.create_user() + self.home_view = self.sign_in_view.get_home_view() + self.username = self.home_view.get_username() + self.wallet_view = self.sign_in_view.wallet_tab.click() + self.browser_view = BridgeStatusNetworkView(self.drivers[0]) + self.account_1_name = 'Account 1' + self.profile_view = self.home_view.get_profile_view() + self.status_app_package = self.drivers[0].current_package + + @marks.testrail_id(742899) + def test_wallet_connect_testnet_dapp(self): + self.home_view.navigate_back_to_home_view() + if self.home_view.testnet_mode_enabled: + self.home_view.just_fyi("Switch to mainnet") + self.home_view.profile_button.click() + self.profile_view.switch_network() + self.home_view.navigate_back_to_home_view() + self.home_view.just_fyi("Try connecting testnet dApp when being on mainnet") + self.browser_view.connect_status_wallet() + self.browser_view.open_browser() + self.browser_view.element_by_text('Connection declined').wait_for_element() + self.browser_view.connect_wallet_button.click() + + self.drivers[0].activate_app(self.status_app_package) + self.home_view.just_fyi("Switch to testnet") + self.home_view.profile_button.click() + self.profile_view.switch_network() + self.home_view.navigate_back_to_home_view() + + self.wallet_view.just_fyi("Connect to dApp on testnet") + self.browser_view.connect_status_wallet(refresh=False) + self.wallet_view.wallet_connect_button.click() + + self.wallet_view.just_fyi("Switch to mainnet and check that testnet dApp is not shown") + self.wallet_view.profile_button.click() + self.profile_view.switch_network() + self.wallet_view.navigate_to_wallet_view() + self.wallet_view.get_account_element(account_name=self.account_1_name).click() + self.wallet_view.connected_dapps_button.click() + if not self.wallet_view.element_by_translation_id('no-dapps').is_element_displayed(): + pytest.fail("%s dApp is shown on mainnet" % status_dapp_name) + + @marks.testrail_id(742900) + def test_wallet_connect_mainnet_dapp(self): + self.home_view.navigate_back_to_home_view() + if self.home_view.testnet_mode_enabled: + self.home_view.just_fyi("Switch to mainnet") + self.home_view.profile_button.click() + self.profile_view.switch_network() + self.home_view.navigate_back_to_home_view() + self.wallet_view.just_fyi("Connect dApp on mainnet") + UniswapView(self.drivers[0]).connect_status_wallet() + self.wallet_view.wallet_connect_button.click() + self.wallet_view.get_account_element(account_name=self.account_1_name).click() + self.wallet_view.connected_dapps_button.click_until_presence_of_element(self.wallet_view.add_dapp_button) + dapp_name = 'Uniswap' + dapp_url = 'https://app.uniswap.org' + dapp_element = self.wallet_view.get_connected_dapp_element_by_name(dapp_name=dapp_name) + if dapp_element.is_element_displayed(): + if dapp_element.url_text.text != dapp_url: + self.errors.append(self.wallet_view, + "DApp url %s is not shown for the connected dApp on mainnet" % dapp_url) + else: + self.errors.append(self.wallet_view, "%s is not shown in connected dApps on mainnet" % dapp_name) + + self.wallet_view.just_fyi("Switch to testnet and check that mainnet dApp is not shown") + self.wallet_view.navigate_back_to_home_view() + profile_view = self.wallet_view.profile_button.click() + profile_view.switch_network() + self.wallet_view.navigate_to_wallet_view() + self.wallet_view.get_account_element(account_name=self.account_1_name).click() + self.wallet_view.connected_dapps_button.click() + if dapp_element.is_element_displayed(): + self.errors.append(self.wallet_view, "%s dApp is shown on testnet" % dapp_name) + self.errors.verify_no_errors() + + +@marks.nightly +@pytest.mark.xdist_group(name="two_1") +class TestWalletConnectSignTransactions(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.user = transaction_senders['ETH_2'] + self.user['wallet_address'] = '0x' + self.user['address'] + self.sign_in_view.recover_access(passphrase=self.user['passphrase']) + self.profile_1_username = self.sign_in_view.get_home_view().get_username() + self.wallet_view = self.sign_in_view.wallet_tab.click() + self.app_package = self.wallet_view.driver.current_package + self.browser_view = BridgeStatusNetworkView(self.drivers[0]) + self.wallet_view.just_fyi("Connect %s dApp" % status_dapp_url) + self.browser_view.connect_status_wallet() + self.wallet_view.wallet_connect_button.click() + + @marks.testrail_id(742901) + def test_wallet_connect_sign_transaction(self): + self.wallet_view.just_fyi("Make bridge transaction from the connected dApp") + self.browser_view.open_browser() + self.browser_view.amount_input.send_keys('0.000001') + self.browser_view.bridge_button.scroll_and_click() + data_to_check = { + 'Network': 'Sepolia', + 'Max fees': r"\d+ sec' + } + for key, expected_value in data_to_check.items(): + try: + text = self.wallet_view.get_data_item_element_text(data_item_name=key) + if key == 'Max fees': + if not re.findall(expected_value, text): + self.errors.append(self.wallet_view, + "Max fee is not a number - %s on the Review Transaction page" % text) + elif key == 'Est. time': + if not re.findall(expected_value, text) or int(re.findall(r'\d+', text)[0]) > 60: + self.errors.append( + self.wallet_view, "Unexpected Est. time value - %s on the Review Transaction page" % text) + else: + if text != expected_value: + self.errors.append( + self.wallet_view, + "%s text %s doesn't match expected %s on the Review Transaction page" % ( + key, text, expected_value)) + except TimeoutException: + self.errors.append(self.wallet_view, "%s is not shown on the Review Transaction page" % key) + self.wallet_view.slide_and_confirm_with_password() + self.browser_view.open_browser() + if self.browser_view.element_by_text('Transaction confirmed!').is_element_displayed(60): + self.browser_view.element_by_text('START A NEW TRANSACTION').click() + else: + self.errors.append(self.wallet_view, "Transaction was not confirmed") + self.errors.verify_no_errors() + + @marks.testrail_id(742943) + def test_wallet_connect_reject_sign_in_request(self): + self.wallet_view.just_fyi("Make signing request and reject it") + self.browser_view.open_browser() + self.browser_view.amount_input.send_keys('0.000001') + self.browser_view.bridge_button.scroll_and_click() + self.wallet_view.close_sign_message_button.wait_and_click(5) + error_message = '%s sign request rejected' % status_dapp_name + try: + self.wallet_view.element_by_text(error_message).wait_for_element() + except TimeoutException: + self.errors.append(self.wallet_view, "Error message '%s' is not shown when rejecting sign request") + + self.wallet_view.just_fyi('Check that new sign in request can be confirmed') + self.browser_view.open_browser() + self.browser_view.amount_input.send_keys('0.000001') + self.browser_view.bridge_button.scroll_and_click() + self.wallet_view.slide_and_confirm_with_password() + self.browser_view.open_browser() + if self.browser_view.element_by_text('Transaction confirmed!').is_element_displayed(60): + self.browser_view.element_by_text('START A NEW TRANSACTION').click() + else: + self.errors.append(self.wallet_view, "Transaction was not confirmed after rejecting previous request") + + self.errors.verify_no_errors() + + @marks.testrail_id(742942) + def test_wallet_connect_multiple_profiles(self): + self.wallet_view.just_fyi("Reopen app and create a new profile") + self.wallet_view.driver.activate_app(self.app_package) + self.wallet_view.reopen_app(sign_in=False) + self.sign_in_view.create_user(first_user=False) + self.wallet_view.wallet_tab.click() + self.wallet_view.just_fyi("Check that dApp connected to another profile is not displayed") + self.wallet_view.get_account_element().click() + self.wallet_view.connected_dapps_button.click() + dapp_element = self.wallet_view.get_connected_dapp_element_by_name(dapp_name=status_dapp_name) + if dapp_element.is_element_displayed(): + self.errors.append(self.wallet_view, "DApp, which is connected to another profile, is shown") + self.browser_view.open_browser() + self.browser_view.amount_input.send_keys('0.000001') + self.browser_view.bridge_button.scroll_and_click() + error_message = 'Bridge.status.network requires an unsupported network' + try: + self.wallet_view.element_starts_with_text(error_message).wait_for_element() + except TimeoutException: + self.errors.append( + self.wallet_view, + "Error message '%s' doesn't appear when signing bridge transaction with a wrong profile" % error_message) + if self.wallet_view.slide_button_track.is_element_displayed(): + self.errors.append(self.wallet_view, "Can sign transaction with wrong profile") + self.errors.verify_no_errors() + + @marks.testrail_id(742944) + @marks.xfail( + reason="Sign modal doesn't appear when logged out, https://github.com/status-im/status-mobile/issues/22586") + def test_wallet_connect_sign_request_when_logged_out(self): + self.wallet_view.just_fyi("Close app to log out") + app_package = self.wallet_view.driver.current_package + self.wallet_view.terminate_app(app_package) + self.wallet_view.just_fyi("Make signing request while logged out") + self.browser_view.open_browser() + self.browser_view.amount_input.send_keys('0.000001') + self.browser_view.bridge_button.scroll_and_click() + self.wallet_view.wait_for_application_to_be_running(app_package) + self.sign_in_view.sign_in(user_name=self.profile_1_username) + if not self.wallet_view.slide_button_track.is_element_displayed(): + pytest.fail( + "Transaction request modal is not shown when making a sign request with fully closed Status app") + + +@marks.nightly +@pytest.mark.xdist_group(name="two_1") +class TestWalletConnectLoggedOut(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.sign_in_view.create_user() + self.home_view = self.sign_in_view.get_home_view() + self.username = self.home_view.get_username() + self.wallet_view = self.sign_in_view.wallet_tab.click() + self.browser_view = BridgeStatusNetworkView(self.drivers[0]) + self.account_1_name = 'Account 1' + + @marks.testrail_id(742945) + def test_wallet_connect_logged_out(self): + self.home_view.just_fyi("Close app to log out") + self.home_view.reopen_app(sign_in=False) + + self.home_view.just_fyi("Try connecting Status dApp when logged out") + self.browser_view.connect_status_wallet() + self.sign_in_view.sign_in(user_name=self.username) + self.wallet_view.wallet_connect_button.wait_and_click() + + self.wallet_view.just_fyi("Check that connection is successful in browser") + self.browser_view.open_browser() + if self.browser_view.connect_wallet_button.is_element_displayed(): + pytest.fail("DApp is not connected in the browser") diff --git a/test/appium/tests/wallet/test_wallet_mainnet_no_send.py b/test/appium/tests/wallet/test_wallet_mainnet_no_send.py new file mode 100644 index 00000000000..912e18168f9 --- /dev/null +++ b/test/appium/tests/wallet/test_wallet_mainnet_no_send.py @@ -0,0 +1,450 @@ +import re + +import pytest +from _pytest.outcomes import Failed +from selenium.common import NoSuchElementException, TimeoutException + +from base_test_case import MultipleSharedDeviceTestCase, create_shared_drivers +from tests import marks +from users import transaction_senders +from views.sign_in_view import SignInView + + +@pytest.mark.xdist_group(name="three_1") +@marks.nightly +@marks.smoke +class TestWalletOneDevice(MultipleSharedDeviceTestCase): + + def prepare_devices(self): + self.drivers, self.loop = create_shared_drivers(1) + self.sign_in_view = SignInView(self.drivers[0]) + self.sender, self.receiver = transaction_senders['ETH_1'], transaction_senders['ETH_2'] + self.total_balance = {'Ether': 0.0362, 'Status': 15.0, 'Uniswap': 0.7, 'Dai Stablecoin': 0.0} + self.mainnet_balance = {'Ether': 0.015, 'Status': 10.0, 'Uniswap': 0.2, + 'Dai Stablecoin': 0.0} + self.optimism_balance = {'Ether': 0.0011, 'Status': 5.0, 'Uniswap': 0, 'Dai Stablecoin': 0.0} + self.arb_balance = {'Ether': 0.0051, 'Status': 0.0, 'Uniswap': 0.5, 'Dai Stablecoin': 0.0} + self.base_balance = {'Ether': 0.015, 'Status': 0.0, 'Uniswap': 0.0, 'Dai Stablecoin': 0.0} + self.sender['wallet_address'] = '0x' + self.sender['address'] + self.receiver['wallet_address'] = '0x' + self.receiver['address'] + self.sign_in_view.recover_access(passphrase=self.sender['passphrase']) + + self.home_view = self.sign_in_view.get_home_view() + self.sender_username = self.home_view.get_username() + self.profile_view = self.home_view.profile_button.click() + self.profile_view.switch_network() + self.home_view.navigate_back_to_home_view() + self.wallet_view = self.home_view.wallet_tab.click() + self.account_name = 'Account 1' + + @marks.testrail_id(740490) # TODO: add USDc check back when token collision USDc and USDCN is resolved + def test_wallet_balance_mainnet(self): + self.wallet_view.just_fyi("Checking total balance") + real_balance = {} + for asset in self.total_balance: + real_balance[asset] = self.wallet_view.get_asset(asset).get_amount() + + for asset in self.total_balance: + if real_balance[asset] != self.total_balance[asset]: + self.errors.append(self.wallet_view, "For the %s the wrong value %s is shown, expected %s in total" % + (asset, real_balance[asset], self.total_balance[asset])) + expected_balances = { + 'Ethereum': self.mainnet_balance, + 'Arbitrum': self.arb_balance, + 'Optimism': self.optimism_balance, + 'Base': self.base_balance + } + + for network in expected_balances: + self.wallet_view.just_fyi("Checking total balance on %s network" % network) + self.wallet_view.set_network_in_wallet(network) + real_balance = {} + for asset in expected_balances[network]: + real_balance[asset] = self.wallet_view.get_asset(asset).get_amount() + for asset in expected_balances[network]: + if real_balance[asset] != expected_balances[network][asset]: + self.errors.append(self.wallet_view, "For the %s the wrong value %s is shown, expected %s on %s" % + (asset, real_balance[asset], expected_balances[network][asset], network)) + self.wallet_view.network_drop_down.click() + + self.errors.verify_no_errors() + + @marks.testrail_id(741554) + def test_wallet_send_flow_mainnet(self): + self.wallet_view.get_account_element().click() + self.wallet_view.send_button.click() + self.wallet_view.address_text_input.send_keys(self.receiver['wallet_address']) + self.wallet_view.continue_button.click() + + asset_data = { + 'Ether': {'networks': ['Ethereum', 'Arbitrum'], 'amount': '0.00001'}, + 'Status': {'networks': ['Ethereum', 'Optimism'], 'amount': '1'} + } + for asset, data in asset_data.items(): + for network in data['networks']: + self.wallet_view.just_fyi("Checking the send flow for %s on %s" % (asset, network)) + self.wallet_view.select_asset(asset) + self.wallet_view.select_network(network) + self.wallet_view.set_amount(data['amount']) + try: + max_fees_text = self.wallet_view.get_data_item_element_text(data_item_name='Max fees') + if not re.findall(r" 60: + self.errors.append( + self.wallet_view, + "%s on %s: unexpected Est. time value - %s on the Review Send page" % ( + asset, network, text)) + else: + if text != expected_value: + self.errors.append( + self.wallet_view, + "%s on %s: %s text %s doesn't match expected %s on the Review Send page" % ( + asset, network, key, text, expected_value)) + except TimeoutException: + self.errors.append(self.wallet_view, + "%s on %s: %s is not shown on the Review Send page" % (asset, network, key)) + + self.wallet_view.slide_button_track.slide() + if not self.wallet_view.password_input.is_element_displayed(): + self.errors.append(self.wallet_view, "%s on %s: can't confirm transaction" % (asset, network)) + self.wallet_view.click_system_back_button_until_presence_of_element( + element=self.wallet_view.element_by_text('Select token'), attempts=4) + self.errors.verify_no_errors() + + @marks.testrail_id(741555) + def test_wallet_swap_flow_mainnet(self): + self.sign_in_view.reopen_app(user_name=self.sender_username) + self.home_view.wallet_tab.click() + self.wallet_view.get_account_element().wait_for_rendering_ended_and_click() + self.wallet_view.swap_button.wait_for_rendering_ended_and_click() + for network in ['Ethereum', 'Optimism']: + self.wallet_view.just_fyi("Checking the Swap flow for SNT on %s" % network) + self.wallet_view.select_asset('Status') + self.wallet_view.select_network(network) + self.wallet_view.set_amount('1') + data_to_check = { + 'Max fees': r" diff: + result = True + return result + + def is_element_image_similar_to_template(self, template_path: str = ''): + image_template = os.sep.join(__file__.split(os.sep)[:-1]) + '/elements_templates/%s' % template_path + template = imagehash.average_hash(Image.open(image_template)) + element_image = imagehash.average_hash(self.image) + return not bool(template - element_image) + + def get_element_rgb(self, colors: int = 2): + palette = self.image.quantize(colors=colors).getpalette() + percentage = webcolors.rgb_to_rgb_percent((palette[:3])) + return (float(percentage.red.strip('%')), + float(percentage.green.strip('%')), + float(percentage.blue.strip('%'))) + + def get_element_coordinates(self): + element = self.find_element() + location = element.location + size = element.size + return location, size + + def swipe_left_on_element(self): + self.driver.info("Swiping left on element %s" % self.name) + location, size = self.get_element_coordinates() + x, y = location['x'], location['y'] + width, height = size['width'], size['height'] + self.driver.swipe(start_x=x + width * 0.75, start_y=y + height / 2, end_x=x, end_y=y + height / 2) + + def swipe_right_on_element(self, width_percentage=0.9, start_x=0): + self.driver.info("Swiping right on element %s" % self.name) + location, size = self.get_element_coordinates() + x, y = location['x'], location['y'] + width, height = size['width'], size['height'] + self.driver.swipe(start_x=x + start_x, start_y=y + height / 2, end_x=x + width * width_percentage, + end_y=y + height / 2) + + def swipe_to_web_element(self, depth=700): + element = self.find_element() + location = element.location + x, y = location['x'], location['y'] + self.driver.swipe(start_x=x, start_y=y, end_x=x, end_y=depth) + + def long_press_element(self, element_to_release_on=None): + element = self.find_element() + self.driver.info("Long press on `%s`" % self.name) + action = ActionChains(self.driver) + action.click_and_hold(element).perform() + time.sleep(2) + if element_to_release_on: + action.release(element_to_release_on.find_element()) + action.perform() + else: + action.release(element) + action.perform() + + def long_press_without_release(self): + action = ActionChains(self.driver) + action.click_and_hold(self.find_element()).perform() + + def long_press_until_element_is_shown(self, expected_element): + element = self.find_element() + self.driver.info("Long press on `%s` until expected element is shown" % self.name) + action = ActionChains(self.driver) + for _ in range(3): + action.click_and_hold(element).perform() + time.sleep(2) + action.release(element).perform() + if expected_element.is_element_displayed(): + return + + def long_press_element_by_coordinate(self, rel_x=0.8, rel_y=0.8): + element = self.find_element() + location = element.location + size = element.size + x = int(location['x'] + size['width'] * rel_x) + y = int(location['y'] + size['height'] * rel_y) + action = ActionChains(self.driver) + action.move_to_element_with_offset(to_element=element, xoffset=x, yoffset=y).click_and_hold().perform() + action.release(element).perform() + + def click_inside_element_by_coordinate(self, rel_x=0.8, rel_y=0.8, times_to_click=1): + location, size = self.get_element_coordinates() + x = int(location['x'] + size['width'] * rel_x) + y = int(location['y'] + size['height'] * rel_y) + [self.driver.tap([(x, y)], 150) for _ in range(times_to_click)] + + @staticmethod + def get_translation_by_key(key): + return transl[key] + + @staticmethod + def exclude_emoji(value): + return 'emoji' if value in emoji.UNICODE_EMOJI else value + + def get_child_element_by_text(self, text: str): + return BaseElement(self.driver, prefix=self.locator, xpath="//*[@text='%s']" % text) + + def get_child_element_by_text_part(self, text: str): + return BaseElement(self.driver, prefix=self.locator, xpath="//*[contains(@text,'%s')]" % text) + + +class EditBox(BaseElement): + + def __init__(self, driver, **kwargs): + super(EditBox, self).__init__(driver, **kwargs) + + def send_keys(self, value): + self.find_element().send_keys(value) + self.driver.info("Type `%s` to `%s`" % (self.exclude_emoji(value), self.name)) + + def clear(self): + self.find_element().clear() + self.driver.info("Clear text in `%s`" % self.name) + + def delete_last_symbols(self, number_of_symbols_to_delete: int): + self.driver.info("Delete last `%s` symbols from `%s`" % (number_of_symbols_to_delete, self.name)) + self.click() + for _ in range(number_of_symbols_to_delete): + time.sleep(1) + self.driver.press_keycode(67) + + def paste_text_from_clipboard(self): + self.driver.info("Paste text from clipboard into `%s`" % self.name) + self.long_press_element() + time.sleep(2) + action = ActionChains(self.driver) + element = self.find_element() + location = element.location + x, y = location['x'], location['y'] + action.move_by_offset(xoffset=x + 25, yoffset=y - 50).click().perform() + action.release(element).perform() + + def cut_text(self): + self.driver.info("Cut text in `%s`" % self.name) + element = self.find_element() + location = element.location + x, y = location['x'], location['y'] + action = ActionChains(self.driver) + action.move_by_offset(xoffset=x, yoffset=y).click_and_hold().perform() + action.release(element).perform() + time.sleep(2) + action.move_by_offset(xoffset=x + 50, yoffset=y - 50).click().perform() + action.release(element).perform() + + +class Text(BaseElement): + def __init__(self, driver, **kwargs): + super(Text, self).__init__(driver, **kwargs) + + @property + def text(self): + text = self.find_element().text + self.driver.info("`%s` is `%s`" % (self.name, text)) + return text + + +class Button(BaseElement): + + def __init__(self, driver, **kwargs): + super(Button, self).__init__(driver, **kwargs) + + def click_until_absense_of_element(self, desired_element, attempts=3, timeout=1): + counter = 0 + self.driver.info("Click until `%s` by `%s`: `%s` is NOT presented" % ( + desired_element.name, desired_element.by, desired_element.locator)) + while desired_element.is_element_displayed(timeout) and counter <= attempts: + try: + self.find_element().click() + counter += 1 + except (NoSuchElementException, TimeoutException, StaleElementReferenceException): + return self.navigate() + + +class SilentButton(Button): + def find_element(self): + for _ in range(3): + try: + return self.driver.find_element(self.by, self.locator) + except NoSuchElementException: + raise NoSuchElementException( + "Device %s: `%s` by `%s`:`%s` not found on the screen" % ( + self.driver.number, self.name, self.by, self.locator)) from None + except Exception as exception: + if 'Internal Server Error' in str(exception): + continue + + def click(self): + self.find_element().click() + return self.navigate() + + @property + def text(self): + text = self.find_element().text + return text + + +class CheckBox(Button): + def __init__(self, driver, **kwargs): + super(Button, self).__init__(driver, **kwargs) + + def __define_desired_element(self, elem_accessibility): + desired_element_accessibility_id = elem_accessibility + if self.accessibility_id is not None and ':' in self.accessibility_id: + desired_element_accessibility_id = ':%s' % elem_accessibility + return desired_element_accessibility_id + + def enable(self): + self.click_until_presence_of_element(Button(self.driver, + accessibility_id=self.__define_desired_element("checkbox-on"))) + return self.navigate() + + def disable(self): + self.click_until_presence_of_element(Button(self.driver, + accessibility_id=self.__define_desired_element("checkbox-off"))) + return self.navigate() diff --git a/test/appium/views/base_view.py b/test/appium/views/base_view.py new file mode 100644 index 00000000000..a5bc0888a33 --- /dev/null +++ b/test/appium/views/base_view.py @@ -0,0 +1,444 @@ +import random +import string +import time + +from appium.webdriver import WebElement +from appium.webdriver.applicationstate import ApplicationState +from selenium.common.exceptions import NoSuchElementException, TimeoutException, StaleElementReferenceException +from selenium.webdriver.support import expected_conditions +from selenium.webdriver.support.wait import WebDriverWait + +from tests import common_password, transl +from views.base_element import Button, BaseElement, EditBox, Text, CheckBox + + +class BackButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="back-button") + + def click(self, times_to_click: int = 1): + for _ in range(times_to_click): + self.find_element().click() + return self.navigate() + + +class AllowButton(Button): + def __init__(self, driver): + super().__init__(driver, translation_id="allow", uppercase=True) + + def click(self, times_to_click=3): + try: + for _ in range(times_to_click): + self.find_element().click() + except NoSuchElementException: + pass + + +class UnreadMessagesCountText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, + xpath="%s//*[@resource-id='counter-component']/android.widget.TextView" % parent_locator) + + +class TabButton(Button): + @property + def counter(self): + return UnreadMessagesCountText(self.driver, parent_locator='//*[@content-desc="%s"]' % self.accessibility_id) + + +class CommunitiesTab(TabButton): + def __init__(self, driver): + super().__init__(driver, accessibility_id="communities-stack-tab") + + +class ChatsTab(TabButton): + def __init__(self, driver): + super().__init__(driver, accessibility_id="chats-stack-tab") + + def navigate(self): + from views.home_view import HomeView + return HomeView(self.driver) + + +class WalletTab(TabButton): + def __init__(self, driver): + super().__init__(driver, accessibility_id="wallet-stack-tab") + + def navigate(self): + from views.wallet_view import WalletView + return WalletView(self.driver) + + +class BrowserTab(TabButton): + def __init__(self, driver): + super().__init__(driver, accessibility_id="browser-stack-tab") + + def navigate(self): + from views.dapps_view import DappsView + return DappsView(self.driver) + + +class ProfileButton(TabButton): + def __init__(self, driver): + super().__init__(driver, accessibility_id="open-profile") + + def navigate(self): + from views.profile_view import ProfileView + return ProfileView(self.driver) + + def click(self, desired_element_text='privacy'): + if not self.is_element_displayed(): + ChatsTab(self.driver).click() + from views.profile_view import ProfileView + self.click_until_presence_of_element(ProfileView(self.driver).profile_password_button) + return self.navigate() + + +class SendMessageButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="send-message-button") + + +class SlideButton(Button): + def __init__(self, driver): + super().__init__(driver, xpath="//*[@resource-id='slide-button-track']") + + def slide(self): + self.swipe_right_on_element(width_percentage=1.3, start_x=100) + + +class BaseView(object): + def __init__(self, driver): + self.driver = driver + self.send_message_button = SendMessageButton(self.driver) + self.password_input = EditBox(self.driver, accessibility_id="password-input") + from views.sign_in_view import LogInButton + self.login_button = LogInButton(self.driver) + self.continue_button = Button(self.driver, accessibility_id='continue-button') + self.view_id_tracker = Text(self.driver, xpath="//*[@content-desc='view-id-tracker']/android.widget.TextView") + self.testnet_mode_enabled_element = BaseElement(self.driver, accessibility_id='Testnet mode enabled') + + # Tabs + self.communities_tab = CommunitiesTab(self.driver) + self.profile_button = ProfileButton(self.driver) + self.chats_tab = ChatsTab(self.driver) + self.wallet_tab = WalletTab(self.driver) + self.browser_tab = BrowserTab(self.driver) + + # Floating screens (introduced by https://github.com/status-im/status-mobile/pull/16438) + self.chat_floating_screen = BaseElement(self.driver, accessibility_id=":chat-floating-screen") + self.community_floating_screen = BaseElement(self.driver, + accessibility_id=":community-overview-floating-screen") + self.discover_communities_floating_screen = BaseElement(self.driver, + accessibility_id=":discover-communities-floating-screen") + + self.jump_to_button = Button(self.driver, accessibility_id="jump-to") + self.yes_button = Button(self.driver, xpath="//*[@text='YES' or @text='GOT IT']") + self.no_button = Button(self.driver, translation_id="no") + self.back_button = BackButton(self.driver) + self.allow_button = AllowButton(self.driver) + self.allow_all_button = Button(self.driver, xpath="//*[@text='Allow all']") + self.allow_all_the_time = Button(self.driver, xpath="//*[@text='Allow all the time']") + self.deny_button = Button(self.driver, translation_id="deny", uppercase=True) + self.continue_button = Button(self.driver, translation_id="continue", uppercase=True) + self.ok_button = Button(self.driver, xpath="//*[@text='OK' or @text='Ok']") + self.add_button = Button(self.driver, translation_id="add") + self.save_button = Button(self.driver, translation_id="save") + self.done_button = Button(self.driver, accessibility_id="Done") + self.delete_button = Button(self.driver, translation_id="delete", uppercase=True) + self.ok_continue_button = Button(self.driver, accessibility_id="Okay, continue") + self.confirm_button = Button(self.driver, accessibility_id='Confirm') + self.options_button = Button(self.driver, accessibility_id="options-button") + + self.native_close_button = Button(self.driver, id="android:id/aerr_close") + self.close_button = Button(self.driver, accessibility_id="back-button") + self.navigate_up_button = Button(self.driver, accessibility_id="Navigate Up") + self.ok_got_it_button = Button(self.driver, accessibility_id="Okay, got it") + self.status_in_background_button = Button(self.driver, xpath="//*[contains(@content-desc,'Status')]") + self.cancel_button = Button(self.driver, translation_id="cancel", uppercase=True) + self.search_input = EditBox(self.driver, accessibility_id="search-input") + self.toast_content_element = BaseElement(self.driver, accessibility_id="toast-content") + self.next_button = Button(self.driver, accessibility_id="next-button") + self.native_alert_title = Text(self.driver, xpath="//*[@resource-id='android:id/alertTitle']") + + # share contact screen + self.show_qr_code_button = Button(self.driver, accessibility_id="show-qr-button") + + self.link_to_profile_button = Button(self.driver, accessibility_id="share-qr-code-info-text") + self.sharing_text_native = Text(self.driver, xpath="//*[@resource-id='android:id/content_preview_text']") + + # checkboxes and toggles + self.checkbox_button = CheckBox( + self.driver, xpath="//*[@content-desc='checkbox-off'][@resource-id='checkbox-component']") + self.slide_button_track = SlideButton(self.driver) + + self.button_one = Button(self.driver, accessibility_id='button-one') + + # external browser + self.open_in_android_button = Button(self.driver, translation_id="browsing-open-in-android-web-browser") + + self.element_types = { + 'base': BaseElement, + 'button': Button, + 'edit_box': EditBox, + 'text': Text + } + + @staticmethod + def get_translation_by_key(translation_id): + return transl[translation_id] + + def confirm(self): + self.driver.info("Tap 'Confirm' on native keyboard") + self.driver.press_keycode(66) + + def just_fyi(self, some_str): + self.driver.info('# STEP: %s' % some_str, device=False) + self.driver.log_event("appium", "STEP: %s" % some_str) + + def hide_keyboard_if_shown(self): + if self.driver.is_keyboard_shown(): + self.click_system_back_button() + + def click_system_back_button(self, times=1): + self.driver.info('Click system back button') + for _ in range(times): + self.driver.press_keycode(4) + + def click_system_back_button_until_presence_of_element(self, element, attempts=3): + counter = 0 + while not element.is_element_displayed(1) and counter <= attempts: + self.driver.press_keycode(4) + try: + element.wait_for_element(2) + return self + except (NoSuchElementException, TimeoutException): + counter += 1 + else: + self.driver.info("Could not reach %s by pressing system back button" % element.name) + + def click_system_back_button_until_absence_of_element(self, element, attempts=3): + for _ in range(attempts): + try: + element.wait_for_invisibility_of_element(3) + return + except TimeoutException: + self.driver.press_keycode(4) + + def navigate_back_to_home_view(self): + home_views_texts = ['wallet-stack', 'chats-stack', 'communities-stack'] + for _ in range(4): + try: + if self.view_id_tracker.text in home_views_texts: + return + else: + self.click_system_back_button() + except NoSuchElementException: + self.click_system_back_button() + except StaleElementReferenceException: + continue + + def navigate_to_chats_view(self): + self.navigate_back_to_home_view() + self.chats_tab.click() + + def navigate_to_communities_view(self): + self.navigate_back_to_home_view() + self.communities_tab.click() + + def navigate_to_wallet_view(self): + self.navigate_back_to_home_view() + self.wallet_tab.click() + + def navigate_back_to_chat_view(self): + self.click_system_back_button_until_presence_of_element(self.get_chat_view().chat_message_input) + + def navigate_back_to_wallet_view(self, attempts=3): + element = self.get_wallet_view().network_drop_down + self.click_system_back_button_until_presence_of_element(element) + + def click_system_home_button(self): + self.driver.info('Press system Home button') + self.driver.press_keycode(3) + + def put_app_to_background(self): + self.driver.info('App to background') + self.driver.press_keycode(187) + + def send_as_keyevent(self, keyevent): + self.driver.info("Sending as keyevent `%s`" % keyevent) + keys = {'0': 7, '1': 8, '2': 9, '3': 10, '4': 11, '5': 12, '6': 13, '7': 14, '8': 15, '9': 16, + + ',': 55, '-': 69, '+': 81, '.': 56, '/': 76, '\\': 73, ';': 74, ' ': 62, + '[': 71, ']': 72, '=': 70, '\n': 66, '_': [69, 5], ':': [74, 5], + + 'a': 29, 'b': 30, 'c': 31, 'd': 32, 'e': 33, 'f': 34, 'g': 35, 'h': 36, 'i': 37, 'j': 38, + 'k': 39, 'l': 40, 'm': 41, 'n': 42, 'o': 43, 'p': 44, 'q': 45, 'r': 46, 's': 47, 't': 48, + 'u': 49, 'v': 50, 'w': 51, 'x': 52, 'y': 53, 'z': 54} + time.sleep(3) + for i in keyevent: + if i.isalpha() and i.isupper(): + keycode, metastate = keys[i.lower()], 64 # META_SHIFT_LEFT_ON Constant Value: 64. Example: i='n' -> 'N' + elif type(keys[i]) is list: + keycode, metastate = keys[i][0], keys[i][1] + else: + keycode, metastate = keys[i], None + self.driver.press_keycode(keycode=keycode, metastate=metastate) + + def element_by_text(self, text, element_type='button'): + element = self.element_types[element_type](self.driver) + element.locator = '//*[@text="%s"]' % text + return element + + def element_by_text_part(self, text, element_type='button'): + element = self.element_types[element_type](self.driver) + element.locator = '//*[contains(@text, "' + text + '")]' + return element + + def element_starts_with_text(self, text, element_type='button'): + element = self.element_types[element_type](self.driver, xpath="//*[starts-with(@text,'%s')]" % text) + return element + + def element_by_translation_id(self, translation_id, element_type='button', uppercase=False): + element = self.element_types[element_type](self.driver, translation_id=translation_id, uppercase=uppercase) + return element + + def get_dapp_view(self): + from views.dapps_view import DappsView + return DappsView(self.driver) + + def get_home_view(self): + from views.home_view import HomeView + return HomeView(self.driver) + + def get_chat_view(self): + from views.chat_view import ChatView + return ChatView(self.driver) + + def get_community_view(self): + from views.chat_view import CommunityView + return CommunityView(self.driver) + + def get_sign_in_view(self): + from views.sign_in_view import SignInView + return SignInView(self.driver) + + def get_base_web_view(self): + from views.web_views.base_web_view import BaseWebView + return BaseWebView(self.driver) + + def get_profile_view(self): + from views.profile_view import ProfileView + return ProfileView(self.driver) + + def get_wallet_view(self): + from views.wallet_view import WalletView + return WalletView(self.driver) + + @staticmethod + def get_random_chat_name(): + return ''.join(random.choice(string.ascii_lowercase) for _ in range(7)) + + def click_on_floating_jump_to(self): + self.hide_keyboard_if_shown() + if self.chat_floating_screen.is_element_displayed(1): + Button(self.driver, xpath='//*[@content-desc="%s"]//*[@content-desc="%s"]' % + (self.chat_floating_screen.accessibility_id, + self.jump_to_button.accessibility_id)).click() + elif self.community_floating_screen.is_element_displayed(1): + Button(self.driver, xpath='//*[@content-desc="%s"]//*[@content-desc="%s"]' % + (self.community_floating_screen.accessibility_id, + self.jump_to_button.accessibility_id)).click() + else: + self.jump_to_button.click() + + def wait_for_application_to_be_running(self, app_package: str, wait_time: int = 3): + for _ in range(wait_time): + if self.driver.query_app_state(app_package) == ApplicationState.RUNNING_IN_FOREGROUND: + return + time.sleep(1) + raise TimeoutException(msg="Status app is not running in foreground after %s sec" % wait_time) + + def wait_for_application_to_not_run(self, app_package: str, wait_time: int = 3): + for _ in range(wait_time): + if self.driver.query_app_state(app_package) == ApplicationState.NOT_RUNNING: + return + time.sleep(1) + raise TimeoutException(msg="Status app is not terminated after %s sec" % wait_time) + + def terminate_app(self, app_package): + self.driver.terminate_app(app_package) + self.wait_for_application_to_not_run(app_package=app_package) + + def reopen_app(self, password=common_password, sign_in=True, user_name=None): + app_package = self.driver.current_package + self.terminate_app(app_package) + self.driver.activate_app(app_package) + self.wait_for_application_to_be_running(app_package) + if sign_in: + sign_in_view = self.get_sign_in_view() + sign_in_view.sign_in(user_name, password) + + def click_upon_push_notification_by_text(self, text): + element = self.element_by_text_part(text) + self.driver.info("Click on PN with text: '%s'" % element.exclude_emoji(text)) + element.click() + return self.get_chat_view() + + def open_notification_bar(self): + self.driver.open_notifications() + + def tap_by_coordinates(self, x, y): + self.driver.tap(positions=[(x, y)]) + + def wait_for_current_package_to_be(self, expected_package_name: str, timeout: int = 10): + start_time = time.time() + while time.time() - start_time <= timeout: + package = self.driver.current_package + if package == expected_package_name: + return + time.sleep(1) + raise TimeoutException("Driver current package is '%s' after %s seconds" % (package, timeout)) + + def wait_for_staleness_of_element(self, element_instance: WebElement, seconds=10): + try: + return WebDriverWait(self.driver, seconds).until(expected_conditions.staleness_of(element_instance)) + except TimeoutException: + raise TimeoutException( + "Device %s: expected element is not stale after %s seconds" % (self.driver.number, seconds)) from None + + def open_link_from_google_search_app(self, link_text: str, app_package: str): + Button(self.driver, accessibility_id="Search").click() + EditBox(self.driver, xpath="//android.widget.EditText").send_keys(link_text) + self.driver.press_keycode(66) + text_to_click = "Status PR" if app_package.endswith(".pr") else "Status" + Button(self.driver, + xpath="//*[@resource-id='android:id/resolver_list']//*[@text='%s']" % text_to_click).click_if_shown() + Button(self.driver, xpath="//*[@resource-id='android:id/button_once']").click() + + def turn_wi_fi_off(self): + self.driver.swipe(900, 0, 900, 1000) + self.element_by_text('Internet').click() + Button(self.driver, accessibility_id='Wi‑Fi').click() + self.element_by_text('Done').click() + self.click_system_back_button_until_presence_of_element(self.chats_tab) + + def pull_to_refresh(self): + self.driver.info("Pull to refresh page to get updated data") + screen_size = self.driver.get_window_size() + width = screen_size["width"] // 2 + start_y = int(screen_size["height"] * 0.3) + end_y = int(screen_size["height"] * 0.7) + + self.driver.execute_script("mobile: swipeGesture", { + "left": width, + "top": start_y, + "width": 10, + "height": end_y - start_y, + "direction": "down", + "percent": 0.75 + }) + + @property + def testnet_mode_enabled(self) -> bool: + return self.testnet_mode_enabled_element.is_element_displayed() diff --git a/test/appium/views/chat_view.py b/test/appium/views/chat_view.py new file mode 100644 index 00000000000..41b6bc0857b --- /dev/null +++ b/test/appium/views/chat_view.py @@ -0,0 +1,775 @@ +import re +import time +from datetime import datetime, timedelta + +import dateutil.parser +import pytest +from appium.webdriver.common.appiumby import AppiumBy +from selenium.common.exceptions import NoSuchElementException, TimeoutException, StaleElementReferenceException, \ + InvalidElementStateException +from selenium.webdriver import ActionChains + +from tests import emojis, common_password +from views.base_element import Button, EditBox, Text, BaseElement, SilentButton +from views.base_view import BaseView +from views.home_view import HomeView + + +class OpenInStatusButton(Button): + def __init__(self, driver): + super().__init__(driver, translation_id="browsing-open-in-status") + + def navigate(self): + from views.web_views.base_web_view import BaseWebView + return BaseWebView(self.driver) + + +class ViewProfileButton(Button): + def __init__(self, driver): + super().__init__(driver, translation_id="view-profile") + + def navigate(self): + return ChatView(self.driver) + + +class ChatOptionsButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="chat-menu-button") + + def click(self): + self.click_until_presence_of_element(HomeView(self.driver).mark_all_messages_as_read_button) + + def navigate(self): + return ChatView(self.driver) + + +class ProfileSendMessageButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="icon, Send message") + + def navigate(self): + return ChatView(self.driver) + + +class ChatElementByText(Text): + def __init__(self, driver, text): + self.message_text = text + self.chat_item_locator = "android.view.ViewGroup[@content-desc='chat-item']" + if text in ["image", "sticker", "audio"]: + self.message_locator = "//android.view.ViewGroup[@content-desc='%s-message']" % text + else: + self.message_locator = "//*[starts-with(@text,'%s')]" % text + super().__init__(driver, prefix=self.message_locator, xpath="/ancestor::%s" % self.chat_item_locator) + + def find_element(self): + for _ in range(2): + try: + return super(ChatElementByText, self).find_element() + except NoSuchElementException: + self.wait_for_visibility_of_element(20) + + @property + def image_in_reply(self): + class ImageInReply(BaseElement): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//android.widget.ImageView") + + try: + return ImageInReply(self.driver, self.locator) + except NoSuchElementException: + return '' + + @property + def timestamp_command_message(self): + class TimeStampText(Button): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, xpath="(%s//android.widget.TextView)[last()]" % parent_locator) + + return TimeStampText(self.driver, self.locator) + + @property + def timestamp(self): + class TimeStampText(Button): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, xpath="%s//*[@content-desc='message-timestamp']" % parent_locator) + + return TimeStampText(self.driver, self.locator).text + + @property + def member_photo(self): + class MemberPhoto(Button): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//*[@content-desc='user-avatar']") + + return MemberPhoto(self.driver, self.locator) + + @property + def username(self): + class Username(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, + xpath="/android.view.ViewGroup/android.widget.TextView[1]") + + return Username(self.driver, self.locator) + + @property + def message_body(self): + return Text( + self.driver, + xpath="//%s//android.widget.TextView[contains(@text,'%s')]" % (self.chat_item_locator, self.message_text) + ) + + @property + def message_body_with_mention(self): + return Text(self.driver, + xpath=self.message_body.locator + "/../following-sibling::android.widget.TextView") + + def click_on_link_inside_message_body(self): + self.message_body.wait_for_visibility_of_element(30) + self.message_body.click_inside_element_by_coordinate(rel_x=0.1, rel_y=0.9) + + def wait_for_sent_state(self, wait_time=30): + return BaseElement(self.driver, prefix=self.locator, + xpath="//*[@content-desc='message-sent']").is_element_displayed(wait_time) + + @property + def uncollapse(self) -> bool: + class Collapse(Button): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, + xpath="/../../..//android.widget.ImageView[@content-desc='icon']") + + return Collapse(self.driver, self.locator).is_element_displayed() + + @property + def status(self) -> str: + Text(self.driver, xpath=self.locator).click() + status_element = Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='message-status']/android.widget.TextView") + status = '' + i = 1 + + while i < 5: + i += 1 + if Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='message-sending']").is_element_displayed(2): + status = "Sending" + break + else: + Text(self.driver, xpath=self.locator).click() + try: + if status_element.is_element_displayed(2): + status = status_element.text + break + except StaleElementReferenceException: + pass + time.sleep(2) + return status + + def wait_for_status_to_be(self, expected_status: str, timeout: int = 30): + self.driver.info("Waiting for message to be sent for %s sec" % timeout) + start_time = time.time() + current_status = 'not set' + while time.time() - start_time <= timeout: + current_status = self.status + if current_status == expected_status: + return + time.sleep(1) + raise TimeoutException("Message status was not changed to %s, it's %s" % (expected_status, current_status)) + + @property + def sent_status_checkmark(self) -> object: + return Text(self.driver, prefix=self.locator, xpath="//*[@content-desc='sent']") + + @property + def replied_message_text(self): + class RepliedMessageText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, + # prefix=parent_locator, + # xpath="/preceding::android.widget.TextView[@content-desc='quoted-message']" + accessibility_id='quoted-message') + + try: + # return RepliedMessageText(self.driver, self.message_locator).text + return self.find_element().find_element(by=AppiumBy.ACCESSIBILITY_ID, value='quoted-message').text + except NoSuchElementException: + return '' + + @property + def replied_to_username_text(self): + class RepliedToUsernameText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, + xpath="/preceding-sibling::*[1]/android.widget.TextView[1]") + + try: + return RepliedToUsernameText(self.driver, self.message_locator).text + except NoSuchElementException: + return '' + + def emojis_below_message(self, emoji: str = 'thumbs-up'): + class EmojisNumber(Text): + def __init__(self, driver, parent_locator: str): + self.emoji = emoji + self.emojis_id = 'emoji-reaction-%s' % str(emojis[self.emoji]) + super().__init__(driver, prefix=parent_locator, + xpath="/../..//*[@content-desc='%s']/android.widget.TextView[2]" % self.emojis_id) + + @property + def text(self): + try: + text = self.find_element().text + self.driver.info("%s is '%s' for '%s'" % (self.name, text, self.emoji)) + return int(text.strip()) + except NoSuchElementException: + return 0 + + return EmojisNumber(self.driver, self.locator) + + @property + def image_in_message(self): + try: + self.driver.info("Trying to access image inside message with text '%s'" % self.message_text) + ChatElementByText(self.driver, self.message_text).wait_for_sent_state(60) + return Button(self.driver, + xpath="%s//android.widget.ImageView[@content-desc='image-message']" % self.locator) + except NoSuchElementException: + self.driver.fail("No image is found in message!") + + class ImageContainer(Button): + def __init__(self, driver, parent_locator): + super().__init__(driver, xpath='%s//*[@content-desc="image-container"]' % parent_locator) + + def image_by_index(self, index: int): + return BaseElement(self.driver, xpath="(%s//android.widget.ImageView)[%s]" % (self.locator, index)) + + @property + def image_container_in_message(self): + try: + self.driver.info( + "Trying to access images (image container) inside message with text '%s'" % self.message_text) + ChatElementByText(self.driver, self.message_text).wait_for_sent_state(60) + return self.ImageContainer(self.driver, self.locator) + except NoSuchElementException: + self.driver.fail("No image container is found in message!") + + @property + def pinned_by_label(self): + class PinnedByLabelText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, + xpath="/..//android.view.ViewGroup[@content-desc='pinned-by']") + + return PinnedByLabelText(self.driver, self.locator) + + @property + def message_text_content(self): + return Text( + self.driver, + xpath="//%s//*[@content-desc='message-text-content']/android.widget.TextView" % self.chat_item_locator + ) + + +class UsernameOptions(Button): + def __init__(self, driver, username): + super().__init__(driver, xpath="//*[@text='%s']/..//*[@content-desc='menu-option']" % username) + + def navigate(self): + return ChatView(self.driver) + + def click(self): + self.scroll_to_element() + self.wait_for_element().click() + return self.navigate() + + +class UsernameCheckbox(Button): + def __init__(self, driver, username, state_on): + self.username = username + super().__init__(driver, xpath="//*[@text='%s']/..//*[@content-desc='checkbox-%s']" % ( + username, 'on' if state_on else 'off')) + + def click(self): + try: + self.scroll_to_element(20).click() + except NoSuchElementException: + self.scroll_to_element(direction='up', depth=20).click() + + +class CommunityView(HomeView): + def __init__(self, driver): + super().__init__(driver) + + # Community info page + self.community_options_button = Button(self.driver, accessibility_id="community-options-for-community") + self.community_membership_request_value = Text( + self.driver, translation_id="members-label", + suffix='/following-sibling::android.view.ViewGroup/android.widget.TextView') + self.members_button = Button(self.driver, translation_id="members-label") + self.leave_community_button = Button(self.driver, translation_id="leave-community") + self.share_community_button = Button(self.driver, accessibility_id="share-community") + self.invite_people_from_contacts_button = Button(self.driver, accessibility_id="invite-people-from-contacts") + + # Members + self.membership_requests_button = Button(self.driver, translation_id="membership-requests") + + # Requesting access to community / joining community + self.request_access_button = Button(self.driver, translation_id="request-access") + self.membership_request_pending_text = Text(self.driver, translation_id="membership-request-pending") + self.join_button = Button(self.driver, accessibility_id="show-request-to-join-screen-button") + self.slide_to_request_to_join_button = Button( + self.driver, xpath="(//*[@resource-id='slide-button-track']//*[@content-desc='icon'])[1]") + + # Communities initial page + self.close_community_view_button = Button(self.driver, accessibility_id="back-button") + self.community_title = Text(self.driver, accessibility_id="community-title") + self.community_logo = BaseElement( + self.driver, + xpath="//*[*[*[@content-desc='community-title']]]/following-sibling::*/android.widget.ImageView") + self.community_description_text = Text(self.driver, accessibility_id="community-description-text") + self.community_status_joined = Text(self.driver, accessibility_id="status-tag-positive") + self.community_status_pending = Text(self.driver, accessibility_id="status-tag-pending") + + def join_community(self, password=common_password, open_community=True): + self.driver.info("Joining community") + chat_element = ChatView(self.driver).chat_element_by_text("https://status.app/c/") + chat_element.wait_for_visibility_of_element(60) + chat_element.click_on_link_inside_message_body() + self.join_button.wait_and_click(120) + self.slide_to_request_to_join_button.swipe_right_on_element(width_percentage=16) + self.password_input.send_keys(password) + self.login_button.click() + if open_community: + self.community_status_joined.wait_for_visibility_of_element(60) + + def get_channel(self, channel_name: str): + self.driver.info("Getting %s channel element in community" % channel_name) + chat_element = self.get_chat(username=channel_name, community_channel=True, wait_time=30) + return chat_element + + def leave_community(self, community_name: str): + self.driver.info("Leaving %s" % community_name) + home = self.get_home_view() + home.communities_tab.click() + community_element = home.get_chat(community_name, community=True) + community_element.long_press_until_element_is_shown(self.leave_community_button) + self.leave_community_button.click() + self.leave_community_button.click() + + def get_channel_avatar(self, channel_name='general'): + return Button(self.driver, xpath='//*[@text="# %s"]/../*[@content-desc="channel-avatar"]' % channel_name) + + def copy_community_link(self): + self.driver.info("Copy community link") + self.community_options_button.click() + self.share_community_button.click() + text = self.sharing_text_native.text + self.click_system_back_button(times=2) + return text + + def handle_membership_request(self, username: str, approve=True): + self.driver.info("Handling membership request of user '%s', approve='%s'" % (username, str(approve))) + self.members_button.click() + self.membership_requests_button.click() + approve_suffix, decline_suffix = '/following-sibling::android.view.ViewGroup[1]', '/following-sibling::android.view.ViewGroup[2]' + if approve: + Button(self.driver, xpath="//*[starts-with(@text,'%s')]%s" % (username, approve_suffix)).click() + else: + Button(self.driver, xpath="//*[starts-with(@text,'%s')]%s" % (username, decline_suffix)).click() + self.close_button.click() + + def invite_to_community(self, community_name, user_names_to_invite): + if isinstance(user_names_to_invite, str): + user_names_to_invite = [user_names_to_invite] + self.driver.info("Share to %s community" % ', '.join(map(str, user_names_to_invite))) + self.navigate_back_to_home_view() + home = self.get_home_view() + home.communities_tab.click() + community_element = home.get_chat(community_name, community=True) + community_element.long_press_until_element_is_shown(self.share_community_button) + self.invite_people_from_contacts_button.click() + for user_name in user_names_to_invite: + xpath = "//*[@content-desc='user-avatar']/following-sibling::android.widget.TextView[@text='%s']" % user_name + Button(self.driver, xpath=xpath).click() + self.next_button.click() + + +class PreviewMessage(ChatElementByText): + def __init__(self, driver, text: str): + super().__init__(driver, text=text) + + @staticmethod + def return_element_or_empty(obj): + try: + return obj.scroll_to_element() + except NoSuchElementException: + return '' + + @property + def preview_image(self): + class PreviewImage(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//*[@content-desc='thumbnail']") + + return PreviewMessage.return_element_or_empty(PreviewImage(self.driver, self.locator)) + + @property + def preview_title(self): + class PreviewTitle(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//*[@content-desc='title']") + + return PreviewMessage.return_element_or_empty(PreviewTitle(self.driver, self.locator)) + + @property + def preview_subtitle(self): + class PreviewSubTitle(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//*[@content-desc='description']") + + return PreviewMessage.return_element_or_empty(PreviewSubTitle(self.driver, self.locator)) + + @property + def preview_link(self): + class PreviewLink(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="//*[@content-desc='link']") + + return PreviewMessage.return_element_or_empty(PreviewLink(self.driver, self.locator)) + + +class CommunityLinkPreviewMessage(ChatElementByText): + def __init__(self, driver, text: str): + super().__init__(driver, text=text) + self.locator += "//*[@text='%s']" % self.get_translation_by_key('community') + + @property + def community_name(self) -> str: + class CommunityName(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="/following-sibling::android.widget.TextView[1]") + + return CommunityName(self.driver, self.locator).text + + @property + def community_description(self) -> str: + class CommunityDescription(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="/following-sibling::android.widget.TextView[2]") + + return CommunityDescription(self.driver, self.locator).text + + @property + def community_members_amount(self) -> int: + class CommunityMembers(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, xpath="/following-sibling::android.widget.TextView[3]") + + members_string = CommunityMembers(self.driver, self.locator).text + + return int(re.search(r'\d+', members_string).group()) + + def view(self) -> object: + class CommunityViewButton(SilentButton): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, prefix=parent_locator, + xpath="/..//*[@text='%s']" % self.get_translation_by_key("view")) + + CommunityViewButton(self.driver, self.locator).click() + CommunityView(self.driver).request_access_button.wait_for_element(20) + return CommunityView(self.driver) + + +class PinnedMessagesList(BaseElement): + def __init__(self, driver): + super().__init__(driver, xpath="//*[@content-desc='pinned-messages-menu']") + + def get_pinned_messages_number(self): + self.driver.info("Getting number of pinned messages inside pinned messages list element") + element = BaseElement(self.driver, prefix=self.locator, xpath="//*[@content-desc='message-sent']") + return len(element.find_elements()) + + def message_element_by_text(self, text): + message_element = Button(self.driver, prefix=self.locator, xpath="//*[starts-with(@text,'%s')]" % text) + self.driver.info("Looking for a pinned message by text: %s" % message_element.exclude_emoji(text)) + return message_element + + def get_message_pinned_by_text(self, text): + xpath = "//*[starts-with(@text,'%s')]/../../*[@content-desc='pinned-by']/android.widget.TextView" % text + pinned_by_element = Text(self.driver, prefix=self.locator, xpath=xpath) + self.driver.info("Looking for a pinned by message with text: %s" % text) + return pinned_by_element + + +class ChatMessageInput(EditBox): + def __init__(self, driver): + super().__init__(driver, accessibility_id="chat-message-input") + + def paste_text_from_clipboard(self): + action = ActionChains(self.driver) + element = self.find_element() + location = element.location + x, y = location['x'], location['y'] + action.move_by_offset(xoffset=x + 250, yoffset=y).click_and_hold().perform() # long press + action.release(element).perform() + action.move_by_offset(xoffset=x + 50, yoffset=y - 50).click().perform() # tap Paste + action.release(element).perform() + + def click_inside(self): + action = ActionChains(self.driver) + element = self.find_element() + location = element.location + x, y = location['x'] + 250, location['y'] + action.move_to_element_with_offset(to_element=element, xoffset=x, yoffset=y).click().perform() + action.release(element).perform() + + +class ChatView(BaseView): + def __init__(self, driver): + super().__init__(driver) + + # Start new chat + self.public_key_edit_box = EditBox(self.driver, accessibility_id="enter-contact-code-input") + self.view_profile_new_contact_button = Button(self.driver, accessibility_id="new-contact-button") + + ## Options + self.chat_options = ChatOptionsButton(self.driver) + self.delete_chat_button = Button(self.driver, translation_id="close-chat") + self.clear_history_button = Button(self.driver, translation_id="clear-history") + self.reply_message_button = Button(self.driver, translation_id="message-reply") + self.share_chat_button = Button(self.driver, accessibility_id="share-chat-button") + self.clear_button = Button(self.driver, translation_id="clear-history") + self.view_profile_button = ViewProfileButton(self.driver) + self.view_profile_by_avatar_button = Button(self.driver, accessibility_id="member-photo") + self.user_options = Button(self.driver, accessibility_id="options") + self.open_in_status_button = OpenInStatusButton(self.driver) + + # Chat input + self.chat_message_input = ChatMessageInput(self.driver) + self.cancel_reply_button = Button(self.driver, accessibility_id="reply-cancel-button") + self.url_preview_composer = Button(self.driver, accessibility_id="url-preview") + self.url_preview_composer_text = Text(self.driver, + xpath='//*[@content-desc="url-preview"]//*[@content-desc="title"]') + self.quote_username_in_message_input = EditBox( + self.driver, + xpath="//*[@content-desc='reply-cancel-button']/preceding::android.widget.TextView[3]") + + # General chat view + self.history_start_icon = Button(self.driver, accessibility_id="history-chat") + self.contact_request_button = Button(self.driver, accessibility_id="contact-request--button") + + # Communities + self.mentions_list = BaseElement(self.driver, accessibility_id="mentions-list") + + # New UI + self.pinned_messages_count = Button(self.driver, + xpath="//*[@content-desc='pins-count']//android.widget.TextView") + self.pinned_messages_list = PinnedMessagesList(self.driver) + self.pin_limit_popover = BaseElement(self.driver, translation_id="pin-limit-reached") + self.view_pinned_messages_button = Button(self.driver, accessibility_id="pinned-banner") + + # Images + self.show_images_button = Button(self.driver, accessibility_id="open-images-button") + self.take_photo_button = Button(self.driver, accessibility_id="camera-button") + self.snap_button = Button(self.driver, accessibility_id="snap") + self.images_confirm_selection_button = Button(self.driver, accessibility_id="confirm-selection") + self.share_image_icon_button = Button(self.driver, accessibility_id="share-image") + self.view_image_options_button = Button(self.driver, accessibility_id="image-options") + self.save_image_icon_button = Button(self.driver, accessibility_id="save-image") + + # Group chats + self.leave_chat_button = Button(self.driver, accessibility_id="leave-chat-button") + self.leave_button = Button(self.driver, translation_id="leave", uppercase=True) + self.remove_user_button = Button(self.driver, accessibility_id="remove-from-chat") + self.make_admin_button = Button(self.driver, accessibility_id="make-admin") + self.edit_group_chat_name_button = Button(self.driver, accessibility_id="edit-button") + self.edit_group_chat_name_edit_box = EditBox(self.driver, accessibility_id="new-chat-name") + self.done_button = Button(self.driver, accessibility_id="done") + self.create_group_chat_button = Button(self.driver, accessibility_id="Create group chat") + + # Contact's profile + self.contact_bio_text = Text( + self.driver, xpath="//*[@content-desc='username-status-icon']/following-sibling::*/android.widget.TextView") + self.profile_send_message_button = ProfileSendMessageButton(self.driver) + self.profile_options_button = Button(self.driver, accessibility_id="contact-actions") + self.profile_block_contact_button = Button(self.driver, accessibility_id="block-user") + self.confirm_block_contact_button = Button(self.driver, accessibility_id="block-contact") + self.profile_unblock_button = Button(self.driver, accessibility_id="icon, Unblock") + self.profile_send_contact_request_button = Button(self.driver, accessibility_id="icon, Send contact request") + self.contact_request_message_input = EditBox(self.driver, accessibility_id="contact-request-message") + self.confirm_send_contact_request_button = EditBox(self.driver, accessibility_id="send-contact-request") + self.profile_add_to_contacts_button = Button(self.driver, accessibility_id="Add to contacts-item-button") + self.profile_remove_from_contacts = Button(self.driver, accessibility_id="Remove from contacts-item-button") + self.profile_nickname_button = Button(self.driver, accessibility_id="profile-nickname-item") + self.nickname_input_field = EditBox(self.driver, accessibility_id="nickname-input") + self.remove_from_contacts = Button(self.driver, accessibility_id="Remove from contacts-item-button") + + def get_preview_message_by_text(self, text=None) -> object: + self.driver.info('Getting preview message for link: %s' % text) + return PreviewMessage(self.driver, text) + + def get_username_checkbox(self, username: str, state_on=False): + self.driver.info("Getting %s checkbox" % username) + return UsernameCheckbox(self.driver, username, state_on) + + def chat_element_by_text(self, text): + chat_element = ChatElementByText(self.driver, text) + self.driver.info("Looking for a message by text: %s" % chat_element.exclude_emoji(text)) + return chat_element + + def verify_message_is_under_today_text(self, text, errors, timeout=10): + self.driver.info("Verifying that '%s' is under today" % text) + message_element = self.chat_element_by_text(text) + message_element.wait_for_visibility_of_element(timeout) + message_location = message_element.find_element().location['y'] + today_text_element = self.element_by_text('Today').find_element() + today_location = today_text_element.location['y'] + today_height = today_text_element.size['height'] + if message_location < today_location + today_height: + errors.append("Message '%s' is not under 'Today' text" % text) + + def send_message(self, message: str = 'test message', wait_chat_input_sec=5): + self.driver.info("Sending message '%s'" % BaseElement(self.driver).exclude_emoji(message)) + self.chat_message_input.wait_for_element(wait_chat_input_sec) + for _ in range(3): + try: + self.chat_message_input.send_keys(message) + break + except (StaleElementReferenceException, InvalidElementStateException): + time.sleep(1) + except Exception as e: + raise e + else: + raise StaleElementReferenceException(msg="Can't send keys to chat message input, loading") + try: + self.send_message_button.click() + except NoSuchElementException: + self.chat_message_input.clear() + self.chat_message_input.send_keys(message) + self.send_message_button.click() + + def pin_message(self, message, action="pin"): + self.driver.info("Looking for message '%s' pin" % message) + element = self.element_by_translation_id(action) + self.chat_element_by_text(message).long_press_until_element_is_shown(element) + if not element.is_element_displayed(): + self.driver.fail( + "Device %s: Action '%s' is not displayed for the message '%s'" % (self.driver.number, action, message)) + element.click_until_absense_of_element(element) + + def edit_message_in_chat(self, message_to_edit, message_to_update): + self.driver.info("Looking for message '%s' to edit it" % message_to_edit) + self.chat_element_by_text(message_to_edit).message_body.long_press_without_release() + self.element_by_translation_id("edit-message").double_click() + self.chat_message_input.clear() + self.chat_message_input.send_keys(message_to_update) + self.send_message_button.click() + + def delete_message_in_chat(self, message, everyone=True): + self.driver.info("Looking for message '%s' to delete it" % message) + if everyone: + delete_button = self.element_by_translation_id("delete-for-everyone") + else: + delete_button = self.element_by_translation_id("delete-for-me") + self.chat_element_by_text(message).message_body.long_press_without_release() + delete_button.double_click() + + def copy_message_text(self, message_text): + self.driver.info("Copying '%s' message via long press" % message_text) + self.chat_element_by_text(message_text).wait_for_visibility_of_element() + self.chat_element_by_text(message_text).long_press_without_release() + self.element_by_translation_id("copy-text").double_click() + + def quote_message(self, message: str): + self.driver.info("Quoting '%s' message" % message) + element = self.chat_element_by_text(message) + element.wait_for_sent_state() + element.long_press_without_release() + self.reply_message_button.double_click() + + def set_reaction(self, message: str, emoji: str = 'thumbs-up', emoji_message: bool = False, + times_to_long_press: int = 1): + self.driver.info("Setting '%s' reaction" % emoji) + element = Button(self.driver, accessibility_id='reaction-%s' % emoji) + if emoji_message: + self.element_by_text_part(message).long_press_without_release() + else: + for _ in range(times_to_long_press): + self.chat_element_by_text(message).long_press_without_release() + element.wait_for_element() + element.double_click() + element.wait_for_invisibility_of_element() + + def add_remove_same_reaction(self, emoji: str = 'thumbs-up'): + self.driver.info("Adding one more '%s' reaction or removing an added one" % emoji) + key = emojis[emoji] + element = Button(self.driver, accessibility_id='emoji-reaction-%s' % key) + element.wait_and_click() + + def block_contact(self): + self.driver.info("Block contact from other user profile") + self.profile_options_button.click() + self.profile_block_contact_button.click() + self.confirm_block_contact_button.click() + + def set_nickname(self, nickname, close_profile=True): + self.driver.info("Setting nickname:%s" % nickname) + self.profile_nickname_button.click() + self.nickname_input_field.send_keys(nickname) + self.element_by_text('Done').click() + if close_profile: + self.close_button.click() + + def convert_device_time_to_chat_timestamp(self) -> list: + sent_time_object = dateutil.parser.parse(self.driver.device_time) + timestamp = datetime.strptime("%s:%s" % (sent_time_object.hour, sent_time_object.minute), '%H:%M').strftime( + "%I:%M %p") + timestamp_obj = datetime.strptime(timestamp, '%I:%M %p') + possible_timestamps_obj = [timestamp_obj + timedelta(0, 0, 0, 0, 1), timestamp_obj, + timestamp_obj - timedelta(0, 0, 0, 0, 1), timestamp_obj - timedelta(0, 0, 0, 0, 2)] + timestamps = list(map(lambda x: x.strftime("%I:%M %p"), possible_timestamps_obj)) + final_timestamps = [t[1:] if t[0] == '0' else t for t in timestamps] + return final_timestamps + + def user_list_element_by_name(self, user_name: str): + return BaseElement(self.driver, xpath="//*[@content-desc='user-list']//*[@text='%s']" % user_name) + + def mention_user(self, user_name: str): + self.driver.info("Mention user %s in the chat" % user_name) + self.chat_message_input.send_keys("@") + try: + self.mentions_list.wait_for_element() + self.user_list_element_by_name(user_name).wait_for_rendering_ended_and_click() + except TimeoutException: + self.driver.fail("Mentions list is not shown") + + def get_image_by_index(self, index=0): + return Button(self.driver, accessibility_id="image-%s" % index) + + def send_images_with_description(self, description, indexes=None): + if indexes is None: + indexes = [0] + self.show_images_button.click() + self.allow_button.click_if_shown() + self.allow_all_button.click_if_shown() + try: + [self.get_image_by_index(i).click() for i in indexes] + except NoSuchElementException: + self.click_system_back_button() + pytest.fail("Can't send image(s) with index(es) %s" % indexes) + self.images_confirm_selection_button.click() + self.chat_message_input.send_keys(description) + self.send_message_button.click() + + def send_image_with_camera(self, description=None): + self.take_photo_button.click() + self.allow_button.click_if_shown() + self.snap_button.click() + self.element_by_translation_id("use-photo").click() + if description: + self.chat_message_input.send_keys(description) + self.send_message_button.click() + + def authors_for_reaction(self, emoji: str): + return Button(self.driver, accessibility_id='authors-for-reaction-%s' % emojis[emoji]) diff --git a/test/appium/views/dapps_view.py b/test/appium/views/dapps_view.py new file mode 100644 index 00000000000..c73982b8fa3 --- /dev/null +++ b/test/appium/views/dapps_view.py @@ -0,0 +1,27 @@ +from views.base_element import EditBox, BaseElement +from views.base_view import BaseView + + +class DappsView(BaseView): + def __init__(self, driver): + super(DappsView, self).__init__(driver) + + self.enter_url_editbox = EditBox(self.driver, accessibility_id="dapp-url-input") + self.web_page = BaseElement(self.driver, xpath="(//android.webkit.WebView)[1]") + + def open_url(self, url): + self.driver.info("Open url '%s'" % url) + from views.web_views.base_web_view import BaseWebView + web_view = BaseWebView(self.driver) + if not self.enter_url_editbox.is_element_displayed(): + web_view.open_tabs_button.click_if_shown() + web_view.open_new_tab_plus_button.click_if_shown() + self.enter_url_editbox.wait_for_visibility_of_element(20) + self.enter_url_editbox.click() + self.enter_url_editbox.clear() + self.enter_url_editbox.send_keys(url) + self.confirm() + from views.web_views.base_web_view import BaseWebView + BaseWebView(self.driver).wait_for_d_aap_to_load() + return self.get_base_web_view() + diff --git a/test/appium/views/dbs/waku_backup/user.py b/test/appium/views/dbs/waku_backup/user.py new file mode 100644 index 00000000000..5c6d8bc09fd --- /dev/null +++ b/test/appium/views/dbs/waku_backup/user.py @@ -0,0 +1,14 @@ +seed = 'staff actress trash route grab crime leaf uniform dizzy reform issue keep' +display_name = 'End to end' +communities = { + 'admin_open': 'open community', + 'member_open': 'e2e_open', + 'admin_closed': 'closed community', + 'member_closed': 'test_comm_enc', + 'member_pending': 'RC1 testing community' +} + +# contacts = ['Test_contact', 'MyCustomNickname'] # enable back when https://github.com/status-im/status-mobile/issues/15500 is fixed + +contacts = ['zQ3...dWXh5', 'zQ3...Vacac'] +blocked_user = 'Clear Flat Milkweedbug' diff --git a/test/appium/views/elements_templates/BVL_collectible_image_template.png b/test/appium/views/elements_templates/BVL_collectible_image_template.png new file mode 100644 index 00000000000..1c95f0c856e Binary files /dev/null and b/test/appium/views/elements_templates/BVL_collectible_image_template.png differ diff --git a/test/appium/views/elements_templates/BVL_expanded_collectible_image_template.png b/test/appium/views/elements_templates/BVL_expanded_collectible_image_template.png new file mode 100644 index 00000000000..ac619931304 Binary files /dev/null and b/test/appium/views/elements_templates/BVL_expanded_collectible_image_template.png differ diff --git a/test/appium/views/elements_templates/Glitch Punks_collectible_image_template.png b/test/appium/views/elements_templates/Glitch Punks_collectible_image_template.png new file mode 100644 index 00000000000..232f8b92305 Binary files /dev/null and b/test/appium/views/elements_templates/Glitch Punks_collectible_image_template.png differ diff --git a/test/appium/views/elements_templates/Glitch Punks_expanded_collectible_image_template.png b/test/appium/views/elements_templates/Glitch Punks_expanded_collectible_image_template.png new file mode 100644 index 00000000000..44abc97310c Binary files /dev/null and b/test/appium/views/elements_templates/Glitch Punks_expanded_collectible_image_template.png differ diff --git a/test/appium/views/elements_templates/image_1_chat_view.png b/test/appium/views/elements_templates/image_1_chat_view.png new file mode 100644 index 00000000000..86dfc905da1 Binary files /dev/null and b/test/appium/views/elements_templates/image_1_chat_view.png differ diff --git a/test/appium/views/elements_templates/image_1_gallery_view.png b/test/appium/views/elements_templates/image_1_gallery_view.png new file mode 100644 index 00000000000..63f5d0988c8 Binary files /dev/null and b/test/appium/views/elements_templates/image_1_gallery_view.png differ diff --git a/test/appium/views/elements_templates/image_2_chat_view.png b/test/appium/views/elements_templates/image_2_chat_view.png new file mode 100644 index 00000000000..5ff415b098b Binary files /dev/null and b/test/appium/views/elements_templates/image_2_chat_view.png differ diff --git a/test/appium/views/elements_templates/image_2_gallery_view.png b/test/appium/views/elements_templates/image_2_gallery_view.png new file mode 100644 index 00000000000..cca25c931ff Binary files /dev/null and b/test/appium/views/elements_templates/image_2_gallery_view.png differ diff --git a/test/appium/views/elements_templates/images_gallery.png b/test/appium/views/elements_templates/images_gallery.png new file mode 100644 index 00000000000..014f16119ec Binary files /dev/null and b/test/appium/views/elements_templates/images_gallery.png differ diff --git a/test/appium/views/elements_templates/images_gallery_inverted.png b/test/appium/views/elements_templates/images_gallery_inverted.png new file mode 100644 index 00000000000..ab0e2bb94e6 Binary files /dev/null and b/test/appium/views/elements_templates/images_gallery_inverted.png differ diff --git a/test/appium/views/elements_templates/profile_image.png b/test/appium/views/elements_templates/profile_image.png new file mode 100644 index 00000000000..27adbbf28d1 Binary files /dev/null and b/test/appium/views/elements_templates/profile_image.png differ diff --git a/test/appium/views/elements_templates/profile_image_contacts_profile.png b/test/appium/views/elements_templates/profile_image_contacts_profile.png new file mode 100644 index 00000000000..b694703e73c Binary files /dev/null and b/test/appium/views/elements_templates/profile_image_contacts_profile.png differ diff --git a/test/appium/views/elements_templates/profile_image_in_1_1_chat.png b/test/appium/views/elements_templates/profile_image_in_1_1_chat.png new file mode 100644 index 00000000000..b82024e56a7 Binary files /dev/null and b/test/appium/views/elements_templates/profile_image_in_1_1_chat.png differ diff --git a/test/appium/views/elements_templates/profile_image_sign_in_view.png b/test/appium/views/elements_templates/profile_image_sign_in_view.png new file mode 100644 index 00000000000..eb17b5e9990 Binary files /dev/null and b/test/appium/views/elements_templates/profile_image_sign_in_view.png differ diff --git a/test/appium/views/elements_templates/status_community_join_button.png b/test/appium/views/elements_templates/status_community_join_button.png new file mode 100644 index 00000000000..c1ea4ee1a60 Binary files /dev/null and b/test/appium/views/elements_templates/status_community_join_button.png differ diff --git a/test/appium/views/elements_templates/status_community_logo.png b/test/appium/views/elements_templates/status_community_logo.png new file mode 100644 index 00000000000..d4a6320edf4 Binary files /dev/null and b/test/appium/views/elements_templates/status_community_logo.png differ diff --git a/test/appium/views/home_view.py b/test/appium/views/home_view.py new file mode 100644 index 00000000000..0cb24326db1 --- /dev/null +++ b/test/appium/views/home_view.py @@ -0,0 +1,540 @@ +from appium.webdriver.common.mobileby import MobileBy +from selenium.common.exceptions import TimeoutException, NoSuchElementException +from typing_extensions import Literal + +from views.base_element import Button, Text, BaseElement, SilentButton +from views.base_view import BaseView, UnreadMessagesCountText + + +class ChatButton(Button): + def __init__(self, driver, **kwargs): + super().__init__(driver, **kwargs) + + def navigate(self): + from views.chat_view import ChatView + return ChatView(self.driver) + + +class ActivityTabButton(Button): + def __init__(self, driver, **kwargs): + super().__init__(driver, **kwargs) + + @property + def counter(self): + return BaseElement(self.driver, + xpath='//*[@content-desc="%s"]//*[@content-desc="notification-dot"]' % self.accessibility_id) + + +class ChatElement(SilentButton): + def __init__(self, driver, username_part, community=False, community_channel=False): + self.username = username_part + self.community = community + self.community_channel = community_channel + if self.community_channel: + super().__init__( + driver, + xpath="//*[@content-desc='channel-list-item']//*[starts-with(@text,'# %s')]/.." % username_part) + elif community: + super().__init__( + driver, + xpath="//*[@content-desc='chat-name-text'][starts-with(@text,'%s')]/.." % username_part) + else: + super().__init__( + driver, + xpath="//*[@content-desc='author-primary-name'][starts-with(@text,'%s')]/.." % username_part) + + def navigate(self): + if self.community: + from views.chat_view import CommunityView + return CommunityView(self.driver) + else: + from views.chat_view import ChatView + return ChatView(self.driver) + + def click(self): + if self.community: + from views.chat_view import CommunityView + desired_element = CommunityView(self.driver).community_title + else: + from views.chat_view import ChatView + desired_element = ChatView(self.driver).chat_message_input + self.click_until_presence_of_element(desired_element=desired_element) + + return self.navigate() + + def find_element(self): + for i in range(2): + try: + return super(ChatElement, self).find_element() + except NoSuchElementException as e: + if i == 0: + self.wait_for_visibility_of_element(20) + else: + e.msg = 'Device %s: Unable to find chat with name %s' % (self.driver.number, self.username) + raise e + + @property + def new_messages_counter(self): + if self.community: + return UnreadMessagesCountText(self.driver, self.locator) + + class NewMessageCounterText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__( + driver, + xpath="%s//*[@content-desc='new-message-counter']/android.widget.TextView" % parent_locator) + + return NewMessageCounterText(self.driver, self.locator) + + @property + def chat_preview(self): + class PreveiewMessageText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, xpath="%s//*[@content-desc='chat-message-text']" % parent_locator) + + return PreveiewMessageText(self.driver, self.locator) + + @property + def no_message_preview(self): + class NoMessageText(Text): + def __init__(self, driver, parent_locator: str): + super().__init__(driver, xpath="%s//*[@content-desc='no-messages-text']" % parent_locator) + + return NoMessageText(self.driver, self.locator) + + @property + def new_messages_grey_dot(self): + class UnreadMessagesPublicChat(BaseElement): + def __init__(self, driver, parent_locator): + super().__init__(driver, xpath="%s/*[@content-desc='unviewed-messages-public']" % parent_locator) + + return UnreadMessagesPublicChat(self.driver, self.locator) + + @property + def chat_image(self): + return BaseElement(self.driver, xpath=self.locator + "//*[@content-desc='profile-picture']") + + @property + def profile_unblock_button(self): + return Button(self.driver, xpath=self.locator + "/*[@content-desc='Unblock']") + + +class ActivityCenterElement(SilentButton): + def __init__(self, driver, username): + self.chat_name = username + super().__init__(driver, + xpath="//*[contains(@text, '%s')]/ancestor::*[@content-desc='activity']" % username) + + @property + def title(self): + return Text(self.driver, xpath=self.locator + '//*[@content-desc="activity-title"]') + + @property + def unread_indicator(self): + return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-unread-indicator"]') + + @property + def message_body(self): + return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-message-body"]') + + @property + def context_tag_text(self): + return Text(self.driver, xpath=self.locator + '//*[@content-desc="context-tag"]/android.widget.TextView').text + + @property + def pending_status_tag(self): + return Text(self.driver, xpath=self.locator + '//*[@content-desc="status-tag-pending"]') + + @property + def review_pairing_request_button(self): + return Button(self.driver, accessibility_id='Review pairing request') + + @property + def more_details_button(self): + return Button(self.driver, accessibility_id='More details') + + def handle_cr(self, element_accessibility: str): + Button( + self.driver, + xpath=self.locator + '/*[@content-desc="%s"]' % element_accessibility + ).wait_for_rendering_ended_and_click() + + def accept_contact_request(self): + self.handle_cr("accept-contact-request") + + def decline_contact_request(self): + self.handle_cr("decline-contact-request") + + def cancel_contact_request(self): + self.handle_cr("cancel-contact-request") + + +class PushNotificationElement(SilentButton): + def __init__(self, driver, pn_text): + self.pn_text = pn_text + super().__init__(driver, xpath="//*[@text='%s']" % pn_text) + + @property + def icon(self): + class PnIconElement(BaseElement): + def __init__(self, driver, parent_locator): + super().__init__(driver, + xpath="%s/../../../../*/*[@resource-id='android:id/message_icon']" % parent_locator) + + return PnIconElement(self.driver, self.locator) + + @property + def username(self): + class PnUsername(BaseElement): + def __init__(self, driver, parent_locator): + super().__init__(driver, + xpath="%s/../../*[@resource-id='android:id/message_name']" % parent_locator) + + return PnUsername(self.driver, self.locator).text + + @property + def group_chat_icon(self): + class GroupChatIconElement(BaseElement): + def __init__(self, driver, parent_locator): + super().__init__(driver, + xpath="%s/../../../../*[@resource-id='android:id/right_icon_container']" % parent_locator) + + return GroupChatIconElement(self.driver, self.locator) + + +class ContactDetailsRow(BaseElement): + def __init__(self, driver, username=None, index=None): + main_locator = "//*[@content-desc='user-list']" + if username: + xpath_locator = "%s[*[contains(@text,'%s')]]" % (main_locator, username) + elif index: + xpath_locator = "%s[%s]" % (main_locator, index) + else: + xpath_locator = main_locator + super().__init__(driver, xpath=xpath_locator) + + self.options_button = Button(self.driver, xpath="(%s//android.widget.ImageView)[2]" % xpath_locator) + self.username_text = Text(self.driver, xpath="(%s//android.widget.TextView)[2]" % xpath_locator) + + +class MuteButton(Button): + def __init__(self, driver, accessibility_id): + super().__init__(driver=driver, accessibility_id=accessibility_id) + + @property + def text(self): + return self.find_element().find_element(by=MobileBy.CLASS_NAME, value="android.widget.TextView").text + + @property + def unmute_caption_text(self): + return self.find_element().find_element(by=MobileBy.XPATH, value="//android.widget.TextView[2]").text + + +class ShareQRCodeInfoText(Text): + def __init__(self, driver): + super().__init__(driver, accessibility_id="share-qr-code-info-text") + + @property + def text(self): + return self.find_element().find_element(by=MobileBy.XPATH, value="/android.widget.TextView").text + + +class HomeView(BaseView): + def __init__(self, driver): + super().__init__(driver) + + self.skip_editing_profile_button = Button(self.driver, xpath="//*[@content-desc='button-two']//*[@text='Skip']") + self.edit_profile_button = Button(self.driver, xpath="//*[@content-desc='button-one']//*[@text='Edit Profile']") + self.submit_create_profile_button = Button(self.driver, accessibility_id="submit-create-profile-button") + self.plus_community_button = Button(self.driver, accessibility_id="new-communities-button") + self.chat_name_text = Text(self.driver, accessibility_id="chat-name-text") + self.start_new_chat_button = ChatButton(self.driver, accessibility_id="start-1-1-chat-button") + self.new_group_chat_button = ChatButton(self.driver, accessibility_id="start-group-chat-button") + self.join_public_chat_button = ChatButton(self.driver, accessibility_id="join-public-chat-button") + self.universal_qr_scanner_button = Button(self.driver, accessibility_id="universal-qr-scanner") + self.invite_friends_button = Button(self.driver, accessibility_id="invite-friends-button") + self.stop_status_service_button = Button(self.driver, accessibility_id="STOP") + self.my_profile_on_start_new_chat_button = Button(self.driver, + xpath="//*[@content-desc='current-account-photo']") + self.communities_button = ChatButton(self.driver, accessibility_id="create-community") + self.create_closed_community_button = ChatButton(self.driver, accessibility_id="create-closed-community") + self.create_open_community_button = ChatButton(self.driver, accessibility_id="create-open-community") + self.create_token_gated_community_button = ChatButton(self.driver, + accessibility_id="create-token-gated-community") + self.ens_banner_close_button = Button(self.driver, accessibility_id=":ens-banner-close-button") + self.user_name_text = Text( + self.driver, xpath="//*[@text='User found']/following-sibling::*/android.widget.TextView[1]") + + # Notification centre + self.notifications_button = Button(self.driver, accessibility_id="notifications-button") + self.notifications_unread_badge = BaseElement( + self.driver, xpath="//*[@content-desc='activity-center-unread-count']/android.widget.TextView") + self.open_activity_center_button = Button(self.driver, accessibility_id="open-activity-center-button") + self.close_activity_centre = Button(self.driver, accessibility_id="close-activity-center") + + self.notifications_select_button = Button(self.driver, translation_id="select") + self.notifications_reject_and_delete_button = Button(self.driver, accessibility_id="reject-and-delete" + "-activity-center") + self.notifications_accept_and_add_button = Button(self.driver, + accessibility_id="accept-and-add-activity-center") + self.notifications_select_all = Button(self.driver, xpath="(//android.widget.CheckBox[" + "@content-desc='checkbox-off'])[1]") + + # Tabs and elements on messages home view + self.recent_tab = Button(self.driver, accessibility_id="tab-recent") + self.groups_tab = Button(self.driver, accessibility_id="tab-groups") + self.contacts_tab = Button(self.driver, accessibility_id="tab-contacts") + self.contact_new_badge = Button(self.driver, accessibility_id="notification-dot") + self.pending_contact_request_button = Button(self.driver, + accessibility_id="open-activity-center-contact-requests") + self.pending_contact_request_text = Text( + self.driver, + xpath='//*[@content-desc="pending-contact-requests-count"]/android.widget.TextView') + + # Tabs and elements on community home view + self.pending_communities_tab = Button(self.driver, accessibility_id="pending-tab") + self.joined_communities_tab = Button(self.driver, accessibility_id="joined-tab") + self.opened_communities_tab = Button(self.driver, accessibility_id="opened-tab") + + # Options on long tap + self.chats_menu_invite_friends_button = Button(self.driver, accessibility_id="chats-menu-invite-friends-button") + self.close_chat_button = Button(self.driver, accessibility_id="close-chat") + self.confirm_closing_chat_button = Button(self.driver, accessibility_id="Confirm") + self.clear_history_button = Button(self.driver, accessibility_id="clear-history") + self.mute_chat_button = MuteButton(self.driver, accessibility_id="mute-chat") + self.mute_community_button = MuteButton(self.driver, accessibility_id="mute-community") + self.unmute_community_button = MuteButton(self.driver, accessibility_id="unmute-community") + self.mute_channel_button = MuteButton(self.driver, accessibility_id="chat-toggle-muted") + self.mark_all_messages_as_read_button = Button(self.driver, accessibility_id="mark-as-read") + + # Connection icons + self.connection_offline_icon = Button(self.driver, accessibility_id="conn-button-offline") + self.new_chat_button = Button(self.driver, accessibility_id="new-chat-button") + self.discover_communities_button = Button(self.driver, accessibility_id="communities-home-discover-card") + + # Bottom sheet + self.start_a_new_chat_bottom_sheet_button = Button(self.driver, accessibility_id="start-a-new-chat") + self.add_a_contact_chat_bottom_sheet_button = Button(self.driver, accessibility_id="add-a-contact") + + # Activity centre + self.all_activity_tab_button = ActivityTabButton(self.driver, translation_id="all") + self.mention_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-mention") + self.reply_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-reply") + self.activity_notification_swipe_button = Button(self.driver, accessibility_id="notification-swipe") + self.activity_unread_filter_button = Button(self.driver, accessibility_id="selector-filter") + self.more_options_activity_button = Button(self.driver, accessibility_id="activity-center-open-more") + self.mark_all_read_activity_button = Button(self.driver, translation_id="mark-all-notifications-as-read") + + # Share tab + self.share_qr_code_info_text = ShareQRCodeInfoText(self.driver) + self.link_to_profile_button = Button(self.driver, accessibility_id="link-to-profile") + self.link_to_profile_text = Text(self.driver, accessibility_id="share-qr-code-info-text") + self.close_share_tab_button = Button(self.driver, accessibility_id="close-shell-share-tab") + self.qr_code_image_element = BaseElement(self.driver, accessibility_id='share-qr-code') + self.share_profile_tab_button = Button(self.driver, accessibility_id="Profile") + self.share_wallet_tab_button = Button(self.driver, accessibility_id="Wallet") + self.account_avatar = BaseElement(self.driver, accessibility_id="account-avatar") + self.account_name_text = Text( + self.driver, xpath="//*[@content-desc='link-to-profile']/preceding-sibling::android.widget.TextView") + self.share_link_to_profile_button = Button(self.driver, accessibility_id='link-to-profile') + # Discover communities + self.community_card_item = BaseElement(self.driver, accessibility_id="community-card-item") + + def get_activity_center_element_by_text(self, text_part): + return ActivityCenterElement(self.driver, text_part) + + def get_chat(self, username, community=False, community_channel=False, wait_time=10): + if community: + self.driver.info("Looking for community: '%s'" % username) + else: + self.driver.info("Looking for chat: '%s'" % username) + chat_element = ChatElement(self.driver, username[:25], community=community, community_channel=community_channel) + if not chat_element.is_element_displayed(wait_time) and community is False and community_channel is False: + if self.notifications_unread_badge.is_element_displayed(30): + chat_in_ac = self.get_activity_center_element_by_text(username[:25]) + self.open_activity_center_button.click_until_presence_of_element(chat_in_ac) + chat_in_ac.wait_for_element(20) + chat_in_ac.click() + return chat_element + + def get_to_community_channel_from_home(self, community_name, channel_name='general'): + community_view = self.get_community_view() + self.get_chat(community_name, community=True).click() + return community_view.get_channel(channel_name).click() + + def get_chat_from_home_view(self, username): + self.driver.info("Looking for chat: '%s'" % username) + chat_element = ChatElement(self.driver, username[:25]) + return chat_element + + def get_element_from_activity_center_view(self, message_body): + self.driver.info("Looking for activity center element: '%s'" % message_body) + chat_element = self.get_activity_center_element_by_text(message_body) + return chat_element + + def handle_contact_request(self, username: str, action: str = 'accept', notifications_count: int = 1): + if self.toast_content_element.is_element_displayed(10): + self.toast_content_element.wait_for_invisibility_of_element() + try: + self.notifications_unread_badge.wait_for_visibility_of_element(seconds=120) + except TimeoutException: + pass + if notifications_count > 1: + try: + self.notifications_unread_badge.wait_for_element_text(text=str(notifications_count), wait_time=120) + except TimeoutException: + pass + self.open_activity_center_button.click_until_presence_of_element(self.close_activity_centre) + chat_element = self.get_activity_center_element_by_text(username[:25]) + try: + if action == 'accept': + self.driver.info("Accepting incoming CR for %s" % username) + chat_element.accept_contact_request() + elif action == 'decline': + self.driver.info("Rejecting incoming CR for %s" % username) + chat_element.decline_contact_request() + elif action == 'cancel': + self.driver.info("Canceling outgoing CR for %s" % username) + chat_element.cancel_contact_request() + else: + self.driver.fail("Illegal option for CR!") + except (NoSuchElementException, TimeoutException): + self.driver.fail("No contact request received from %s" % username) + finally: + self.close_activity_centre.wait_for_rendering_ended_and_click() + self.chats_tab.wait_for_visibility_of_element() + + def add_contact(self, public_key, username='', nickname='', close_profile=True): + self.driver.info("Adding user to Contacts via chats > add new contact") + self.new_chat_button.click() + if username: + self.edit_profile_button.click() + self.get_sign_in_view().profile_title_input.send_keys(username) + self.submit_create_profile_button.click() + else: + self.skip_editing_profile_button.click_if_shown() + self.add_a_contact_chat_bottom_sheet_button.click() + + chat = self.get_chat_view() + chat.public_key_edit_box.click() + chat.public_key_edit_box.send_keys(public_key) + chat.element_by_translation_id("user-found").wait_for_visibility_of_element() + if not chat.view_profile_new_contact_button.is_element_displayed(): + chat.click_system_back_button() + chat.view_profile_new_contact_button.click_until_presence_of_element(chat.profile_send_contact_request_button) + chat.profile_send_contact_request_button.click() + chat.contact_request_message_input.send_keys("hi") + chat.confirm_send_contact_request_button.click() + if nickname: + chat.set_nickname(nickname) + if close_profile: + chat.close_button.click_until_absense_of_element(chat.close_button) + + def create_group_chat(self, user_names_to_add: list, group_chat_name: str = 'new_group_chat'): + self.driver.info("## Creating group chat '%s'" % group_chat_name, device=False) + self.new_chat_button.click() + chat = self.get_chat_view() + self.start_a_new_chat_bottom_sheet_button.click() + for user_name in user_names_to_add: + check_box = chat.get_username_checkbox(user_name) + if not check_box.is_element_displayed(): + raise NoSuchElementException( + "User with the name '%s' is not in contacts list so can't create a group chat" % user_name) + check_box.click_until_presence_of_element(chat.get_username_checkbox(user_name, state_on=True)) + self.next_button.click() + self.get_sign_in_view().profile_title_input.send_keys(group_chat_name) + chat.create_group_chat_button.click() + self.driver.info("## Group chat %s is created successfully!" % group_chat_name, device=False) + return chat + + def create_community(self, community_type: Literal["open", "closed", "token-gated"]): + self.driver.info("## Creating %s community" % community_type) + self.plus_community_button.click() + if community_type == "open": + self.create_open_community_button.click() + elif community_type == "closed": + self.create_closed_community_button.click() + elif community_type == "token-gated": + self.create_token_gated_community_button.click() + else: + raise ValueError("Incorrect community type is set") + + def delete_chat_long_press(self, username): + self.driver.info("Deleting chat '%s' by long press" % username) + self.get_chat(username).long_press_without_release() + self.close_chat_button.double_click() + self.confirm_closing_chat_button.click() + + def clear_chat_long_press(self, username): + self.driver.info("Clearing history in chat '%s' by long press" % username) + self.get_chat(username).long_press_element() + self.clear_history_button.click() + from views.chat_view import ChatView + ChatView(self.driver).clear_button.click() + + def mute_chat_long_press(self, chat_name, mute_period="mute-till-unmute", community=False, community_channel=False): + self.driver.info("Muting chat with %s" % chat_name) + self.get_chat(username=chat_name, community=community, + community_channel=community_channel).long_press_without_release() + if community: + element = self.mute_community_button + elif community_channel: + element = self.mute_channel_button + else: + element = self.mute_chat_button + element.double_click() + self.element_by_translation_id(mute_period).click() + + def get_pn(self, pn_text: str, wait_time: int = 60): + self.driver.info("Getting PN by '%s'" % pn_text) + expected_element = PushNotificationElement(self.driver, pn_text) + return expected_element if expected_element.is_element_displayed(wait_time) else False + + def contact_details_row(self, username=None, index=None): + return ContactDetailsRow(self.driver, username=username, index=index) + + def get_contact_rows_count(self): + return len(ContactDetailsRow(self.driver).find_elements()) + + def get_link_to_profile(self): + self.driver.info('Getting profile link via share profile QR') + self.show_qr_code_button.click() + self.share_profile_tab_button.click() + self.link_to_profile_text.click() + link_to_profile = self.driver.get_clipboard_text() + if not link_to_profile: + raise NoSuchElementException("Can't get link to profile") + return link_to_profile + + def get_public_key(self): + self.driver.info("Getting public key via Share tab") + link_to_profile = self.get_link_to_profile() + self.click_system_back_button() + return link_to_profile.split("#")[-1] + + def copy_wallet_address(self): + self.share_link_to_profile_button.click() + address = self.sharing_text_native.text + self.click_system_back_button() + return address + + def get_discover_community_card_by_name(self, community_name: str): + return BaseElement( + self.driver, + xpath="//*[@content-desc='%s'][descendant::*[@content-desc='chat-name-text'][@text='%s']]" % ( + self.community_card_item.accessibility_id, community_name) + ) + + def get_new_device_installation_id(self): + element = Text(self.driver, accessibility_id='new-device-installation-id') + element.wait_for_visibility_of_element() + return element.text + + def get_username(self): + self.toast_content_element.wait_for_invisibility_of_element() + profile_view = self.get_profile_view() + self.profile_button.click_until_presence_of_element(profile_view.default_username_text) + profile_view.default_username_text.wait_for_element(3) + username = profile_view.default_username_text.text + profile_view.click_system_back_button() + return username diff --git a/test/appium/views/profile_view.py b/test/appium/views/profile_view.py new file mode 100644 index 00000000000..b5b3d5e8365 --- /dev/null +++ b/test/appium/views/profile_view.py @@ -0,0 +1,389 @@ +import time + +import pytest +from selenium.common import NoSuchElementException, StaleElementReferenceException + +from tests import common_password +from tests.base_test_case import AbstractTestCase +from views.base_element import Text, Button, EditBox, SilentButton, BaseElement +from views.base_view import BaseView + + +class OptionsButton(Button): + def __init__(self, driver): + super().__init__(driver, xpath="(//android.view.ViewGroup[@content-desc='icon'])[2]") + + +class LogoutButton(SilentButton): + def __init__(self, driver): + super().__init__(driver, translation_id="logout") + + def click(self): + self.scroll_to_element().click() + return self.navigate() + + +class LogoutDialog(BaseView): + def __init__(self, driver): + super().__init__(driver) + self.logout_button = LogoutDialog.LogoutButton(driver) + + class LogoutButton(SilentButton): + def __init__(self, driver): + super().__init__(driver, translation_id="logout", uppercase=True) + + def navigate(self): + from views.sign_in_view import SignInView + return SignInView(self.driver) + + +class AdvancedButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="icon, Advanced, label-component, icon") + + def click(self): + self.scroll_to_element().click() + return self.navigate() + + +class RecoveryPhraseTable(Text): + def __init__(self, driver): + super().__init__(driver, translation_id="backup-recovery-phrase", + suffix="/following-sibling::android.view.ViewGroup[2]//android.widget.TextView") + + +class RecoveryPhraseWordNumberText(Text): + def __init__(self, driver): + super().__init__(driver, xpath="//*[@content-desc='number-container']/android.widget.TextView") + + @property + def number(self): + time.sleep(1) + return int(self.find_element().text) + + +class HelpButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="help-button") + + def click(self): + self.scroll_to_element().click() + + +class SyncSettingsButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="sync-settings-button") + + def click(self): + self.scroll_to_element().click() + + +class ProfileView(BaseView): + + def __init__(self, driver): + super().__init__(driver) + self.options_button = OptionsButton(self.driver) + + # Header + self.default_username_text = Text(self.driver, accessibility_id="username") + self.bio_text = Text(self.driver, + xpath="//*[@content-desc='username']/following-sibling::*/android.widget.TextView") + self.contact_name_text = Text(self.driver, accessibility_id="contact-name") + self.profile_picture = BaseElement(self.driver, accessibility_id="profile-picture") + self.user_avatar = BaseElement( + self.driver, xpath="//*[@content-desc='dropdown']/preceding-sibling::*/*[@content-desc='user-avatar']") + self.online_indicator = Button(self.driver, accessibility_id="online-profile-photo-dot") + self.crop_photo_button = Button(self.driver, accessibility_id="Crop") + self.shutter_button = Button(self.driver, accessibility_id="Shutter") + self.accept_photo_button = Button(self.driver, accessibility_id="Done") + + # Contacts + self.contacts_button = Button(self.driver, accessibility_id="contacts-button") + + # Privacy and security + self.privacy_and_security_button = Button(self.driver, accessibility_id="privacy-and-security-settings-button") + self.reset_password_button = Button(self.driver, accessibility_id="reset-password") + self.current_password_edit_box = EditBox(self.driver, accessibility_id="current-password") + self.new_password_edit_box = EditBox(self.driver, accessibility_id="new-password") + self.confirm_new_password_edit_box = EditBox(self.driver, accessibility_id="confirm-new-password") + self.current_password_wrong_text = Text(self.driver, accessibility_id="current-password-error") + + # Appearance + self.appearance_button = Button(self.driver, accessibility_id="appearance-settings-button") + + ## Backup recovery phrase + self.backup_recovery_phrase_button = Button( + self.driver, accessibility_id="icon, Backup recovery phrase, label-component, icon") + + self.recovery_phrase_table = RecoveryPhraseTable(self.driver) + self.recovery_phrase_word_number = RecoveryPhraseWordNumberText(self.driver) + + # Notifications + self.profile_notifications_button = Button(self.driver, + accessibility_id="icon, Notifications, label-component, icon") + self.profile_notifications_toggle_button = Button(self.driver, + accessibility_id="Show notifications, label-component") + self.push_notification_toggle = Button( + self.driver, xpath="//*[@content-desc='notifications-button']//*[@content-desc='switch']") + self.wallet_push_notifications = Button(self.driver, accessibility_id="notifications-button") + + # Sync settings + self.sync_settings_button = SyncSettingsButton(self.driver) + self.backup_settings_button = Button(self.driver, accessibility_id="backup-settings-button") + self.perform_backup_button = Button(self.driver, translation_id="perform-backup") + + ## Device syncing + self.syncing_button = Button(self.driver, accessibility_id="icon, Syncing, label-component, icon") + self.paired_devices_button = Button( + self.driver, xpath="//android.view.ViewGroup[contains(@content-desc,'icon, Paired devices,')]") + self.sync_plus_button = Button( + self.driver, + xpath="//*[@text='Paired devices']/following-sibling::android.view.ViewGroup[@content-desc='icon']") + self.sync_and_backup_button = Button(self.driver, xpath="//*[@text='Sync and backup']") + self.wi_fi_only_button = Button(self.driver, accessibility_id='wifi-only-action') + + # Advanced + self.advanced_button = AdvancedButton(self.driver) + self.log_level_setting_button = Button(self.driver, accessibility_id="log-level-settings-button") + self.fleet_setting_button = Button(self.driver, accessibility_id="fleet-settings-button") + + # Need help + self.submit_bug_button = Button(self.driver, accessibility_id="submit-bug-button") + self.bug_description_edit_box = EditBox(self.driver, accessibility_id="bug-report-description") + self.bug_steps_edit_box = EditBox(self.driver, accessibility_id="bug-report-steps") + self.bug_submit_button = Button(self.driver, accessibility_id="bug-report-submit") + self.request_a_feature_button = Button(self.driver, accessibility_id="request-a-feature-button") + + # About + self.app_version_text = Text(self.driver, xpath="//*[@content-desc='app-version']//android.widget.TextView[2]") + self.node_version_text = Text(self.driver, + xpath="//*[@content-desc='node-version']//android.widget.TextView[2]") + + # Logout + self.logout_button = LogoutButton(self.driver) + self.logout_dialog = LogoutDialog(self.driver) + self.confirm_logout_button = Button(self.driver, translation_id="logout", uppercase=True) + + # New profile + self.edit_profile_button = Button(self.driver, accessibility_id="icon, Edit Profile, label-component, icon") + self.change_profile_photo_button = Button( + self.driver, + xpath="//*[@content-desc='user-avatar']/following-sibling::android.view.ViewGroup[@content-desc='icon']") + self.take_photo_button = Button(self.driver, accessibility_id="take-photo-button") + self.select_from_gallery_button = Button(self.driver, accessibility_id="select-from-gallery-button") + self.profile_password_button = Button(self.driver, accessibility_id="icon, Password, label-component, icon") + self.profile_messages_button = Button(self.driver, accessibility_id="icon, Messages, label-component, icon") + self.profile_blocked_users_button = Button(self.driver, accessibility_id="Blocked users, label-component, icon") + self.profile_wallet_button = Button(self.driver, accessibility_id="icon, Wallet, label-component, icon") + self.profile_networks_button = Button(self.driver, accessibility_id='icon, Networks, label-component, icon') + self.network_settings_button = Button(self.driver, accessibility_id="Network settings, label-component, icon") + self.testnet_mode_toggle = Button(self.driver, accessibility_id="icon, Testnet mode, label-component") + self.confirm_testnet_mode_change_button = Button(self.driver, accessibility_id="confirm-testnet-mode-change") + self.key_pairs_and_accounts_button = Button(self.driver, + accessibility_id="Key pairs and accounts, label-component, icon") + self.import_by_entering_recovery_phrase_button = Button(self.driver, accessibility_id="import-seed-phrase") + + # Edit profile + self.edit_profile_name_button = Button(self.driver, accessibility_id='Name, label-component, icon') + self.edit_profile_input = EditBox(self.driver, accessibility_id='input') + self.save_name_button = Button(self.driver, accessibility_id='Save name') + self.edit_bio_button = Button(self.driver, accessibility_id='Bio, label-component, icon') + self.save_bio_button = Button(self.driver, accessibility_id='Save bio') + self.edit_accent_colour = Button(self.driver, accessibility_id='Accent colour, label-component, icon') + self.save_colour_button = Button(self.driver, accessibility_id='Save colour') + + # Language and currency + self.language_and_currency_button = Button( + self.driver, accessibility_id='icon, Language and currency, label-component, icon') + self.change_currency_button = Button( + self.driver, + xpath="//*[@text='Currency']/following-sibling::*/*[contains(@content-desc,'label-component, icon')]") + + def navigate_back_to_main_profile_view(self, attempts=3): + for _ in range(attempts): + try: + if self.view_id_tracker.text == 'settings': + return + except NoSuchElementException: + self.click_system_back_button() + except StaleElementReferenceException: + continue + + def switch_network(self): + self.driver.info("Toggling test mode") + self.profile_networks_button.scroll_and_click() + self.testnet_mode_toggle.click() + self.confirm_testnet_mode_change_button.click() + + def switch_push_notifications(self): + self.driver.info("Enabling push notifications via Profile") + self.profile_notifications_button.scroll_and_click() + self.profile_notifications_toggle_button.click() + self.allow_button.click_if_shown() + + def get_recovery_phrase(self): + text = [i.text for i in self.recovery_phrase_table.find_elements()] + return dict(zip(map(int, text[::2]), text[1::2])) + + def get_correct_word_button(self, word: str): + return Button(self.driver, accessibility_id=word) + + def get_incorrect_word_button(self, word: str): + try: + button = Button(self.driver, + xpath="//*[@content-desc='%s']/following-sibling::android.view.ViewGroup" % word) + button.find_element() + except NoSuchElementException: + button = Button(self.driver, + xpath="//*[@content-desc='%s']/preceding-sibling::*/*/android.widget.TextView" % word) + return button + + def fill_recovery_phrase_checking_words(self, recovery_phrase: dict): + for _ in range(4): + word_number = self.recovery_phrase_word_number.number + self.get_correct_word_button(recovery_phrase[word_number]).click() + + def backup_recovery_phrase(self): + self.just_fyi("Back up recovery phrase") + self.backup_recovery_phrase_button.click() + for checkbox in self.checkbox_button.find_elements(): + checkbox.click() + self.button_one.click() + recovery_phrase = self.get_recovery_phrase() + self.button_one.click() + self.fill_recovery_phrase_checking_words(recovery_phrase) + self.checkbox_button.click() + self.button_one.click() + return ' '.join(recovery_phrase.values()) + + def edit_profile_picture(self, image_index: int, update_by="Gallery"): + self.driver.info("## Setting custom profile image", device=False) + if AbstractTestCase().environment != 'lt': + raise NotImplementedError('Test case is implemented to run on LambdaTest only') + self.edit_profile_button.click() + self.change_profile_photo_button.click() + if update_by == "Gallery": + self.select_from_gallery_button.click() + self.select_photo_from_gallery_by_index(image_index) + else: + ## take by Photo + self.take_photo() + self.click_system_back_button() + self.profile_picture.click() + self.take_photo() + self.accept_photo_button.click() + self.crop_photo_button.click() + self.driver.info("## Custom profile image has been set", device=False) + self.click_system_back_button() + + def edit_username(self, new_username: str): + self.edit_profile_button.click() + self.edit_profile_name_button.click() + self.edit_profile_input.clear() + self.edit_profile_input.send_keys(new_username) + self.save_name_button.click() + + def take_photo(self): + self.take_photo_button.click() + if self.allow_button.is_element_displayed(sec=5): + self.allow_button.click() + if self.allow_all_the_time.is_element_displayed(sec=5): + self.allow_all_the_time.click() + if self.element_by_text("NEXT").is_element_displayed(sec=5): + self.element_by_text("NEXT").click() + self.shutter_button.click() + + def select_photo_from_gallery_by_index(self, image_index: int): + self.allow_button.click_if_shown() + self.allow_all_button.click_if_shown() + image_element = Button(self.driver, class_name="androidx.cardview.widget.CardView") + try: + image_element.find_elements()[image_index].click() + except IndexError: + self.click_system_back_button(times=2) + raise NoSuchElementException("Image with index %s was not found" % image_index) from None + + def change_accent_colour(self, colour_name: str): + self.edit_profile_button.click() + self.edit_accent_colour.click() + Button(self.driver, accessibility_id=colour_name).click() + self.save_colour_button.click() + + def logout(self): + self.driver.info("Logging out") + self.logout_button.click() + self.logout_dialog.logout_button.click() + self.logout_button.wait_for_invisibility_of_element(30) + + def get_sync_code(self): + self.syncing_button.scroll_and_click() + self.paired_devices_button.click() + self.sync_plus_button.click() + for checkbox in Button( + self.driver, + xpath="//*[@content-desc='checkbox-off'][@resource-id='checkbox-component']").find_elements(): + checkbox.click() + self.continue_button.click() + self.slide_button_track.swipe_right_on_element(width_percentage=1.3) + password_input = self.password_input.find_element() + password_input.send_keys(common_password) + self.login_button.click() + self.wait_for_staleness_of_element(password_input) + return self.password_input.text + + def get_current_device_name(self): + element = BaseElement( + self.driver, + xpath="//android.view.ViewGroup/android.view.ViewGroup[@content-desc='status-tag-positive']/..") + return element.attribute_value('content-desc').split(',')[1].strip() + + def get_paired_device_by_name(self, device_name: str): + + class PairedDeviceElement(BaseElement): + def __init__(self, driver, device_name): + super().__init__(driver, xpath="//*[@content-desc='icon, %s, label-component']" % device_name) + + @property + def get_pair_button(self): + return Button(self.driver, xpath=self.locator + "//*[@content-desc='Pair']") + + @property + def get_unpair_button(self): + return Button(self.driver, xpath=self.locator + "//*[@content-desc='Unpair']") + + return PairedDeviceElement(self.driver, device_name) + + def get_key_pair_account_by_name(self, account_name: str): + class KeyPairAccountElement(BaseElement): + def __init__(self, driver, account_name): + locator = "//*[@content-desc='account-avatar']/following-sibling::*[@text='%s']" % account_name + super().__init__(driver, xpath=locator) + self.address = Text(driver, xpath=locator + "/following-sibling::android.widget.TextView") + + return KeyPairAccountElement(self.driver, account_name) + + def get_missing_key_pair_by_name(self, key_pair_name: str): + class MissingKeyPairElement(BaseElement): + def __init__(self, driver, key_pair_name): + locator = "//*[@content-desc='missing-keypair-item']//*[@text='%s']" % key_pair_name + super().__init__(driver, xpath=locator) + self.options_button = Button(driver, xpath=locator + "/../..//*[@content-desc='options-button']") + + return MissingKeyPairElement(self.driver, key_pair_name) + + def turn_new_contact_requests_toggle(self, state: str = 'on'): + self.profile_messages_button.click() + element = Button( + self.driver, + xpath="//*[@content-desc='Allow new contact requests, label-component']//*[@resource-id='toggle-component']") + element.click() + if element.attribute_value('content-desc') != 'toggle-%s' % state: + pytest.fail("Allow new contact requests toggle was not turned %s" % state) + self.click_system_back_button() + + def change_currency(self, new_currency: str): + self.language_and_currency_button.scroll_and_click() + self.change_currency_button.click() + self.element_by_text_part(new_currency).click() + time.sleep(1) + self.navigate_back_to_main_profile_view(2) diff --git a/test/appium/views/sign_in_view.py b/test/appium/views/sign_in_view.py new file mode 100644 index 00000000000..0df32ddcbd5 --- /dev/null +++ b/test/appium/views/sign_in_view.py @@ -0,0 +1,153 @@ +from selenium.common.exceptions import NoSuchElementException + +from tests import common_password +from views.base_element import Button, EditBox, Text, BaseElement +from views.base_view import BaseView + + +class LogInButton(Button): + def __init__(self, driver): + super().__init__(driver, accessibility_id="login-button") + + def navigate(self): + from views.home_view import HomeView + return HomeView(self.driver) + + +class UserProfileElement(Button): + def __init__(self, driver, username: str = None, index: int = None): + self.username = username + self.index = index + if username: + self.locator = "//*[@text='%s']//ancestor::android.view.ViewGroup[@content-desc='profile-card']" % self.username + elif index: + self.locator = "(//*[@content-desc='profile-card'])[%s]" % self.index + else: + raise AttributeError("Either username or profile index should be defined") + super().__init__(driver, xpath=self.locator) + + def open_user_options(self): + Button(self.driver, xpath='%s//*[@content-desc="profile-card-options"]' % self.locator).click() + + @property + def profile_image(self): + return BaseElement(self.driver, xpath=self.locator + "//*[@content-desc='profile-picture']") + + +class SignInView(BaseView): + + def __init__(self, driver): + super().__init__(driver) + self.driver = driver + + # intro screen + self.explore_new_status_button = Button(self.driver, accessibility_id="explore-new-status") + self.create_profile_button = Button(self.driver, accessibility_id='new-to-status-button') + self.log_in_button = Button(self.driver, accessibility_id='log-in') + self.maybe_later_button = Button(self.driver, accessibility_id="maybe-later-button") + self.log_in_by_syncing_button = Button(self.driver, accessibility_id="log-in-by-syncing-icon-card") + self.enter_sync_code_button = Button(self.driver, accessibility_id="Enter sync code") + self.enter_sync_code_input = EditBox(self.driver, accessibility_id="enter-sync-code-input") + self.progress_screen_title = Text(self.driver, accessibility_id="progress-screen-title") + self.try_seed_phrase_button = Button(self.driver, accessibility_id="try-seed-phrase-button") + + # migrate multiaccount + self.options_button = Button(self.driver, xpath="//androidx.appcompat.widget.LinearLayoutCompat") + + # New onboarding + self.start_fresh_lets_go_button = Button(self.driver, accessibility_id="start-fresh-main-card") + self.profile_title_input = EditBox(self.driver, accessibility_id="profile-title-input") + self.profile_confirm_password_button = Button(self.driver, accessibility_id="Confirm password") + self.use_recovery_phrase_button = Button(self.driver, accessibility_id="use-a-recovery-phrase-icon-card") + self.passphrase_edit_box = EditBox(self.driver, accessibility_id="passphrase-input") + self.show_profiles_button = Button(self.driver, accessibility_id="show-profiles") + self.plus_profiles_button = Button(self.driver, accessibility_id="show-new-account-options") + self.create_new_profile_button = Button(self.driver, accessibility_id="create-new-profile") + self.sync_or_recover_new_profile_button = Button(self.driver, accessibility_id="multi-profile") + self.remove_profile_button = Button(self.driver, accessibility_id="remove-profile") + + def set_password(self, password: str): + input_elements = self.password_input.wait_for_elements() + input_elements[0].send_keys(password) + input_elements[1].click() + input_elements[1].send_keys(password) + self.profile_confirm_password_button.click() + + def create_user(self, password=common_password, first_user=True, enable_notifications=False): + self.driver.info("## Creating new multiaccount with password:'%s'" % password, device=False) + if first_user: + self.create_profile_button.click() + self.maybe_later_button.wait_and_click() + else: + if self.show_profiles_button.is_element_displayed(20): + self.show_profiles_button.click() + self.plus_profiles_button.click() + self.create_new_profile_button.click() + self.start_fresh_lets_go_button.click() + self.set_password(password) + self.chats_tab.wait_for_visibility_of_element(30) + self.driver.info("## New multiaccount is created successfully!", device=False) + home_view = self.get_home_view() + if enable_notifications: + profile_view = home_view.profile_button.click() + profile_view.switch_push_notifications() + profile_view.click_system_back_button(times=2) + return home_view + + def recover_access(self, passphrase: str, password: str = common_password, enable_notifications=False, + second_user=False, after_sync_code=False): + self.driver.info("## Recover access (password:%s)" % password, device=False) + + if not after_sync_code: + if not second_user: + self.create_profile_button.click() + self.maybe_later_button.wait_and_click() + else: + self.show_profiles_button.click_if_shown() + self.plus_profiles_button.click() + self.create_new_profile_button.click() + self.use_recovery_phrase_button.click() + self.passphrase_edit_box.send_keys(passphrase) + self.continue_button.click() + self.set_password(password) + self.chats_tab.wait_for_visibility_of_element(30) + self.driver.info("## Multiaccount is recovered successfully!", device=False) + home_view = self.get_home_view() + if enable_notifications: + profile_view = home_view.profile_button.click() + profile_view.switch_push_notifications() + return home_view + + def sync_profile(self, sync_code: str, first_user: bool = True): + if first_user: + self.log_in_button.click() + self.maybe_later_button.click() + else: + self.show_profiles_button.click_if_shown() + self.plus_profiles_button.click() + self.sync_or_recover_new_profile_button.click() + self.log_in_by_syncing_button.click() + for checkbox in self.checkbox_button.find_elements(): + checkbox.click() + self.continue_button.click() + self.enter_sync_code_button.click() + self.enter_sync_code_input.send_keys(sync_code) + self.confirm_button.click() + + def sign_in(self, user_name, password=common_password): + self.driver.info("## Sign in (password: %s)" % password, device=False) + self.show_profiles_button.click_if_shown() + self.get_user_profile_by_name(user_name).click() + self.password_input.wait_for_visibility_of_element(10) + self.password_input.send_keys(password) + self.login_button.click() + self.driver.info("## Signed in successfully!", device=False) + return self.get_home_view() + + def get_user_profile_by_name(self, username: str): + self.driver.info("Getting username card by '%s'" % username) + expected_element = UserProfileElement(self.driver, username=username) + if expected_element.is_element_displayed(10): + return expected_element + else: + raise NoSuchElementException(msg="User %s is not found!" % username) diff --git a/test/appium/views/wallet_view.py b/test/appium/views/wallet_view.py new file mode 100644 index 00000000000..79fce225e9d --- /dev/null +++ b/test/appium/views/wallet_view.py @@ -0,0 +1,611 @@ +import datetime +import time +from typing import Literal + + +import pytest +from selenium.common import NoSuchElementException + +from tests import common_password +from views.base_element import Button, EditBox, Text, BaseElement +from views.base_view import BaseView +from views.chat_view import ChatView +from views.home_view import HomeView +from views.sign_in_view import SignInView + + +class AssetElement(Button): + def __init__(self, driver, asset_name): + self.asset_name = asset_name + self.locator = ( + "//android.view.ViewGroup[@content-desc='container']/android.widget.TextView[@text='%s']" + % self.asset_name + ) + super().__init__(driver=driver, xpath=self.locator) + + def _parse_amount(self, element) -> float: + """ + Helper method to parse and return the numeric amount from a given element. + Handles cases where the amount starts with a currency symbol or '<'. + """ + try: + # Extract the first part of the text + amount = element.text.split()[0] + + # Handle cases where the amount starts with '<' + if '<' in amount: + return 0.01 if '0.01' in amount else 0.0 # Covers cases like '<$0.01' + + # Strip any leading non-numeric characters (e.g., currency symbols) + numeric_part = ''.join(c for c in amount if c.isdigit() or c == '.') + + # Convert the remaining string to float + return float(numeric_part) + except (ValueError, IndexError): + # Fail the test if parsing fails + pytest.fail(f"Cannot parse amount for {self.asset_name}") + return 0.0 # Optional fallback + + def get_amount(self): + """ + Get the crypto amount for the asset. + """ + element = Text(self.driver, xpath=self.locator + "/../android.widget.TextView[3]") + element.scroll_to_element() + return self._parse_amount(element) + + def get_fiat_balance(self): + """ + Get the fiat balance for the asset. + """ + element = Text(self.driver, xpath=self.locator + "/../android.widget.TextView[2]") + element.scroll_to_element() + amount = element.text.split()[1:] + return self._parse_amount(element) + + +class CollectibleItemElement(Button): + + def __init__(self, driver, collectible_name): + self.collectible_name = collectible_name + self.locator = "//*[@content-desc='collectible-list-item']//*[contains(@text,'%s')]/../.." % collectible_name + super().__init__(driver=driver, xpath=self.locator) + self.image_element = BaseElement(self.driver, xpath=self.locator + "//android.widget.ImageView") + + @property + def quantity(self): + counter_element = BaseElement( + self.driver, xpath=self.locator + "//*[@content-desc='collectible-counter']/android.widget.TextView") + try: + return int(counter_element.text.strip('x')) + except NoSuchElementException: + return 1 + + +class ActivityElement(BaseElement): + def __init__(self, driver, index: int): + self.locator = "(//*[@content-desc='wallet-activity'])[%s]" % index + super().__init__(driver=driver, xpath=self.locator) + + @property + def header(self): + return Text(self.driver, prefix=self.locator, xpath="//*[@content-desc='transaction-header']").text + + @property + def timestamp(self): + return Text(self.driver, prefix=self.locator, xpath="//*[@content-desc='transaction-timestamp']").text + + @property + def options(self): + return Button(self.driver, prefix=self.locator, xpath="//*[@content-desc='transaction-timestamp']/following::*[@content-desc='icon'][1]") + + @property + def amount(self): + return Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='context-tag'][1]/android.widget.TextView").text + + @property + def send_account_from_text(self): + return Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='context-tag'][2]/android.widget.TextView").text + + @property + def swap_amount_to_text(self): + return Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='context-tag'][2]/android.widget.TextView").text + + @property + def account_to_text(self): + return Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='context-tag'][3]/android.widget.TextView").text + + @property + def on_network(self): + return Text(self.driver, prefix=self.locator, + xpath="//*[@content-desc='context-tag'][4]/android.widget.TextView").text + + +class ConfirmationViewInfoContainer(BaseElement): + + def __init__(self, driver, label_name: str): + self.locator = "//*[@text='%s']/following-sibling::android.view.ViewGroup[1]" % label_name + super().__init__(driver, xpath=self.locator) + + @property + def amount_text(self): + return Text(self.driver, xpath=self.locator + "/*[@content-desc='networks']/android.widget.TextView").text + + +class WalletView(BaseView): + def __init__(self, driver): + super().__init__(driver) + # Wallet view + self.total_balance_text = Text( + self.driver, xpath="//*[@content-desc='network-dropdown']/preceding-sibling::android.widget.TextView") + self.network_drop_down = Button(self.driver, accessibility_id='network-dropdown') + self.connected_dapps_button = Button( + self.driver, xpath="//*[@content-desc='network-dropdown']/../following-sibling::*[@content-desc='icon']") + self.collectibles_tab = Button(self.driver, accessibility_id='collectibles-tab') + self.add_account_button = Button(self.driver, accessibility_id='add-account') + + # Account adding + # ToDo: add unique accessibility ids for the next 2 elements: + self.create_account_button = HomeView(self.driver).start_a_new_chat_bottom_sheet_button + self.add_account_to_watch = HomeView(self.driver).add_a_contact_chat_bottom_sheet_button + self.address_to_watch_input = EditBox(self.driver, accessibility_id='add-address-to-watch') + self.account_has_activity_label = Text(self.driver, accessibility_id='account-has-activity') + self.add_account_continue_button = Button(self.driver, accessibility_id='Continue') + self.add_watched_address_button = Button(self.driver, accessibility_id='confirm-button-label') + self.add_account_derivation_path_text = Text( + self.driver, xpath="//*[contains(@content-desc,'icon, Derivation path')]/android.widget.TextView[2]") + + # Account view + self.close_account_button = Button(self.driver, accessibility_id='top-bar') + self.account_name_text = Text( + self.driver, xpath="//*[@content-desc='account-avatar']/../following-sibling::android.widget.TextView[1]") + self.account_emoji_button = Button(self.driver, accessibility_id='account-emoji') + self.send_button = Button(self.driver, accessibility_id='send') + self.swap_button = Button(self.driver, accessibility_id='swap') + self.bridge_button = Button(self.driver, accessibility_id='bridge') + self.send_from_drawer_button = Button( + self.driver, xpath="//*[@content-desc='send']/*[@content-desc='left-icon-for-action']") + self.swap_asset_from_drawer_button = Button(self.driver, + xpath="//*[@content-desc='swap']/*[@content-desc='left-icon-for-action']") + self.copy_address_button = Button(self.driver, accessibility_id='copy-address') + self.share_address_button = Button(self.driver, accessibility_id='share-account') + self.remove_account_button = Button(self.driver, accessibility_id='remove-account') + self.derivation_path_note_checkbox = Button(self.driver, accessibility_id='checkbox-off') + self.account_about_derivation_path_text = Text( + self.driver, xpath="//*[@content-desc='derivation-path-icon']/following-sibling::*[2]") + + self.activity_tab = Button(self.driver, accessibility_id='activity-tab') + self.about_tab = Button(self.driver, accessibility_id='about') + + # Sending transaction + self.address_text_input = EditBox(self.driver, accessibility_id='address-text-input') + self.collectibles_tab_on_select_token_view = Button(self.driver, accessibility_id='Collectibles') + self.amount_input = EditBox(self.driver, xpath="//android.widget.EditText") + self.from_network_text = Text( + self.driver, xpath="(//*[@content-desc='loading']/following-sibling::android.widget.TextView)[1]") + self.done_button = Button(self.driver, accessibility_id='done') + self.amount_input_increase_button = Button(self.driver, accessibility_id='amount-input-inc-button') + + # Review Send and Review Bridge screens + self.from_data_container = ConfirmationViewInfoContainer(self.driver, label_name='From') + self.to_data_container = ConfirmationViewInfoContainer(self.driver, label_name='To') + self.on_data_container = ConfirmationViewInfoContainer(self.driver, label_name='On') + + # Advanced tx settings + self.advanced_tx_button = Button(self.driver, accessibility_id='advanced-button') + self.custom_tx_params_button = Button(self.driver, translation_id='custom') + self.custom_max_base_fee_button = Button(self.driver, translation_id='max-base-fee') + self.custom_max_prio_fee_button = Button(self.driver, translation_id='priority-fee') + self.custom_nonce_button = Button(self.driver, translation_id='nonce') + self.custom_max_gas_amount_button = Button(self.driver, translation_id='max-gas-amount') + + # Swap flow + self.approve_swap_button = Button(self.driver, accessibility_id='Approve') + self.spending_cap_approval_info_container = BaseElement( + self.driver, + xpath="//*[@content-desc='spending-cap-label']/following-sibling::*[@content-desc='approval-info'][1]") + self.account_approval_info_container = BaseElement( + self.driver, + xpath="//*[@content-desc='account-label']/following-sibling::*[@content-desc='approval-info'][1]") + self.token_approval_info_container = BaseElement( + self.driver, + xpath="//*[@content-desc='token-label']/following-sibling::*[@content-desc='approval-info'][1]") + self.spender_contract_approval_info_container = BaseElement( + self.driver, + xpath="//*[@content-desc='spender-contract-label']/following-sibling::*[@content-desc='approval-info'][1]") + + self.max_fees_text = Text(self.driver, + xpath="//*[@text='Max fees']/following-sibling::android.widget.TextView[1]") + self.max_slippage_text = Text(self.driver, xpath="//*[@text='Max slippage']/following-sibling::*[1]") + self.est_time_text = Text(self.driver, xpath="//*[@text='Est. time']/following-sibling::*[1]") + self.swap_receive_amount_summary_text = Text(self.driver, + xpath="//android.widget.TextView[@content-desc='summary-section-receive']/following-sibling::android.view.ViewGroup[1]/android.widget.TextView[1]") + + # Edit key pairs + self.edit_key_pair_button = Button(self.driver, accessibility_id="Edit") + self.key_pairs_plus_button = Button(self.driver, accessibility_id="standard-title-action") + self.default_key_pair_container = BaseElement(self.driver, + xpath="//*[@content-desc='user-avatar, title, details']") + self.added_key_pair_container = BaseElement(self.driver, + xpath="//*[@content-desc='icon, title, details']") + self.generate_new_keypair_button = Button(self.driver, accessibility_id="generate-new-keypair") + self.import_using_recovery_phrase_button = Button(self.driver, accessibility_id="import-using-phrase") + self.key_pair_continue_button = Button(self.driver, accessibility_id="Continue") + self.key_pair_name_input = EditBox( + self.driver, xpath="//*[@text='Key pair name']/..//following-sibling::*/*[@content-desc='input']") + self.passphrase_text_element = Text( + self.driver, xpath="//*[@resource-id='counter-component']/following-sibling::android.widget.TextView") + self.passphrase_word_number_container = Text( + self.driver, xpath="//*[@content-desc='number-container']/android.widget.TextView") + + # Collectible view + self.expanded_collectible_image = BaseElement( + self.driver, xpath="//*[@content-desc='expanded-collectible']//android.widget.ImageView") + self.send_from_collectible_info_button = Button(self.driver, accessibility_id="icon, Send") + + + # Tx activity + self.copy_tx_hash_button = Button(self.driver, accessibility_id="copy-transaction-hash") + + # dApp adding + self.add_dapp_button = Button(self.driver, accessibility_id='connected-dapps-add') + self.wallet_connect_button = Button(self.driver, accessibility_id='wc-connect') + self.wallet_decline_button = Button(self.driver, accessibility_id='wc-deny-connection') + self.select_account_to_connect_dapp_button = Button(self.driver, accessibility_id='icon-right') + self.close_connected_dapps_button = Button(self.driver, accessibility_id='connected-dapps-close') + self.close_sign_message_button = Button(self.driver, accessibility_id='wallet-connect-sign-message-close') + + def set_network_in_wallet(self, network_name: str): + class NetworksCheckboxElement(Button): + def __init__(self, driver, index=0): + locator = "//*[@content-desc='network-item']" + if index: + locator += '[%s]' % index + super().__init__(driver=driver, xpath=locator) + + @property + def name(self) -> str: + return Text(self.driver, xpath=self.locator + "/android.widget.TextView[1]").text + + @property + def is_selected(self) -> bool: + attr = Button(self.driver, + xpath=self.locator + "//*[@resource-id='checkbox-component']").attribute_value( + 'content-desc') + return True if attr.endswith('on') else False + + self.network_drop_down.click() + for i in range(len(NetworksCheckboxElement(self.driver).find_elements())): + network_element = NetworksCheckboxElement(self.driver, index=i + 1) + if network_element.name == network_name: + if not network_element.is_selected: + network_element.click() + else: + if network_element.is_selected: + network_element.click() + + self.network_drop_down.click() + + def get_account_element(self, account_name: str = 'Account 1'): + return Button(self.driver, xpath="//android.view.ViewGroup[contains(@content-desc,'%s')]" % account_name) + + def get_asset(self, asset_name: str): + element = AssetElement(driver=self.driver, asset_name=asset_name) + element.scroll_to_element(down_start_y=0.89, down_end_y=0.8) + return element + + def get_collectible_element(self, collectible_name: str): + return CollectibleItemElement(driver=self.driver, collectible_name=collectible_name) + + def select_asset(self, asset_name: str): + Button(driver=self.driver, + xpath="//*[@content-desc='token-network']/android.widget.TextView[@text='%s']" % asset_name).click() + + def select_network(self, network_name: str): + Button(driver=self.driver, + xpath="//*[@content-desc='network-list']/*[@text='%s']" % network_name).click() + + def slide_and_confirm_with_password(self): + self.slide_button_track.slide() + self.password_input.send_keys(common_password) + self.login_button.click() + + def confirm_transaction(self): + self.button_one.click() + for _ in range(3): + if self.slide_button_track.is_element_displayed(): + break + time.sleep(5) + self.button_one.click() + self.slide_and_confirm_with_password() + + def set_amount(self, amount: str): + for i in amount: + Button(self.driver, accessibility_id='keyboard-key-%s' % i).click() + + def clear_value_and_set_with_custom_keyboard(self, value: str): + self.clear_amount() + self.set_amount(value) + self.button_one.click() + + def clear_nonce_field(self): + Button(self.driver, xpath='//com.horcrux.svg.SvgView[@content-desc="icon"]').click() + + def clear_amount(self): + """ + Tap on the clear button until the amount input field is empty. + """ + clear_button = Button(self.driver, accessibility_id="icon-label") + edit_box = EditBox(self.driver, xpath="//android.widget.EditText") + while edit_box.text != "" and edit_box.text != "0": + clear_button.click() + + def set_amount_and_address(self, address: str, asset_name: str, amount, network_name=""): + self.send_button.click_until_presence_of_element(self.address_text_input) + self.address_text_input.send_keys(address) + self.continue_button.click() + self.select_asset(asset_name) + if network_name: + self.select_network(network_name) + self.set_amount(str(amount)) + + def send_asset(self, address: str, asset_name: str, amount, network_name: str, account='Account 1'): + self.set_amount_and_address(address, asset_name, amount, network_name) + self.confirm_transaction() + + def send_asset_from_drawer(self, address: str, asset_name: str, amount, network_name: str): + asset_element = self.get_asset(asset_name) + asset_element.long_press_without_release() + self.send_from_drawer_button.double_click() + self.select_network(network_name) + self.address_text_input.send_keys(address) + self.continue_button.click() + self.set_amount(str(amount)) + self.confirm_transaction() + + def swap_asset_from_drawer(self, asset_name: str, amount, network_name: str, decimals_to: int = 4, + asset_to: str = 'SNT'): + asset_element = self.get_asset(asset_name) + asset_element.long_press_without_release() + self.swap_asset_from_drawer_button.double_click() + self.select_network(network_name) + self.set_amount(str(amount)) + self.max_fees_text.wait_for_visibility_of_element(30) + self.button_one.click_until_presence_of_element(self.swap_receive_amount_summary_text) + expected_amount = self.get_receive_swap_amount(decimals_to) + est_time, slippage, fees = self.est_time_text.text, self.max_slippage_text.text, self.max_fees_text.text + self.slide_and_confirm_with_password() + return {'receive_amount': expected_amount, + 'est_time': est_time, + 'est_slippage': slippage, + 'max_fees': fees} + + def copy_tx_hash(self): + self.get_activity_element().options.click_until_presence_of_element(self.copy_tx_hash_button) + self.copy_tx_hash_button.click() + return self.driver.get_clipboard_text() + + def add_regular_account(self, account_name: str): + if not self.add_account_button.is_element_displayed(): + self.get_account_element().swipe_left_on_element() + self.add_account_button.click() + self.create_account_button.click() + derivation_path = self.add_account_derivation_path_text.text + SignInView(self.driver).profile_title_input.send_keys(account_name) + self.slide_and_confirm_with_password() + return derivation_path.replace(' ', '') + + def add_watch_only_account(self, address: str, account_name: str): + self.add_account_button.click() + self.add_account_to_watch.click() + self.address_to_watch_input.send_keys(address) + self.add_account_continue_button.click() + SignInView(self.driver).profile_title_input.send_keys(account_name) + self.add_watched_address_button.click() + + def remove_account(self, account_name: str, watch_only: bool = False): + self.get_account_element(account_name=account_name).click() + self.account_emoji_button.click() + self.remove_account_button.click() + if not watch_only: + self.derivation_path_note_checkbox.click() + self.button_one.click() + + def get_activity_element(self, index=1): + return ActivityElement(self.driver, index=index) + + def generate_new_key_pair(self, account_name: str, key_pair_name: str): + self.key_pairs_plus_button.click() + self.generate_new_keypair_button.click() + for checkbox in self.checkbox_button.find_elements(): + checkbox.click() + self.element_by_translation_id("reveal-phrase").click() + passphrase = [i.text for i in self.passphrase_text_element.find_elements()] + self.element_by_translation_id("i-have-written").click() + for _ in range(4): + element = self.passphrase_word_number_container.find_element() + number = int(element.text) + Button(self.driver, accessibility_id=passphrase[number - 1]).click() + self.wait_for_staleness_of_element(element) + self.checkbox_button.click() + self.element_by_translation_id("done").click() + self.key_pair_name_input.send_keys(key_pair_name) + self.key_pair_continue_button.click() + derivation_path = self.add_account_derivation_path_text.text + SignInView(self.driver).profile_title_input.send_keys(account_name) + self.slide_and_confirm_with_password() + return derivation_path.replace(' ', ''), ' '.join(passphrase) + + def import_key_pair_using_recovery_phrase(self, account_name: str, passphrase: str, key_pair_name: str): + self.add_account_button.click() + self.create_account_button.click() + signin_view = SignInView(self.driver) + signin_view.profile_title_input.send_keys(account_name) + self.edit_key_pair_button.click() + self.key_pairs_plus_button.click() + self.import_using_recovery_phrase_button.click() + signin_view.passphrase_edit_box.send_keys(passphrase) + self.key_pair_continue_button.click() + self.key_pair_name_input.send_keys(key_pair_name) + self.key_pair_continue_button.click() + derivation_path = self.add_account_derivation_path_text.text + self.slide_and_confirm_with_password() + return derivation_path.replace(' ', '') + + def get_account_address(self): + self.account_emoji_button.click_until_presence_of_element(self.copy_address_button) + self.share_address_button.click() + wallet_address = self.sharing_text_native.text + self.click_system_back_button() + return wallet_address + + def get_data_item_element_text(self, data_item_name: str): + element = Text(self.driver, xpath="//*[@text='%s']/following-sibling::android.widget.TextView" % data_item_name) + element.wait_for_element(15) + return element.text + + def wait_for_swap_input_to_be_shown(self): + locator = "//*[@content-desc='swap-input'][2]//*[@content-desc='token-avatar']" \ + "/following-sibling::*//*[starts-with(@text,'0.000')]" + BaseElement(self.driver, xpath=locator).wait_for_visibility_of_element() + + def get_route_element(self, route_name: str): + class RouteElement(BaseElement): + def __init__(self, driver, route_name): + self.locator = "//*[@text='%s']/following-sibling::*[@content-desc='container'][%s]" % ( + route_name.capitalize(), 1 if route_name == 'from' else 2) + super().__init__(driver, xpath=self.locator) + + @property + def amount_text(self): + return Text(self.driver, xpath="(%s//android.widget.TextView)[1]" % self.locator).text + + @property + def network_text(self): + return Text(self.driver, xpath="(%s//android.widget.TextView)[2]" % self.locator).text + + return RouteElement(self.driver, route_name) + + @staticmethod + def round_amount_float(amount, decimals=4): + return round(float(amount), decimals) + + def wait_for_wallet_balance_to_update(self, expected_amount, asset='Ether', decimals=4, fiat=False): + self.just_fyi(f"Checking {asset} balance, expected value: {expected_amount}, fiat: {fiat}") + + start_time = time.time() + + while time.time() - start_time < 120: + self.pull_to_refresh() + if fiat is False: + new_balance = self.round_amount_float(self.get_asset(asset_name=asset).get_amount(), decimals) + else: + new_balance = self.get_asset(asset_name=asset).get_fiat_balance() + + # Exit early if the balance is updated + if new_balance == expected_amount: + return + + time.sleep(10) # Wait before retrying + + # If the balance is not updated within the timeout, log an error and raise an exception + error_message = f"{asset} balance is {new_balance} but expected {expected_amount}, fiat: {fiat}" + raise TimeoutError(error_message) + + def check_last_transaction_in_activity(self, device_time, amount, + tx_type: Literal['Send', 'Receive', 'Swap'] = 'Send', + asset='ETH', + from_account_name='Account 1', + send_to_account='', + swap_asset_to='SNT', + swap_amount_to='0.000000000000000000', + network='Status Network', + navigate_to_main_screen=True): + errors = list() + current_time = datetime.datetime.strptime(device_time, "%Y-%m-%dT%H:%M:%S%z") + expected_time = "Today %s" % current_time.strftime('%-I:%M %p') + possible_times = [expected_time, + "Today %s" % (current_time + datetime.timedelta(minutes=1)).strftime('%-I:%M %p')] + receiver_variants = [send_to_account.replace(send_to_account[5:-3], '...').lower(), 'receiver eth2'] + self.just_fyi("Checking the last transaction in the activity tab") + + try: + activity_element = self.get_activity_element() + common_checks = { + "header": (activity_element.header, tx_type), + "timestamp": (activity_element.timestamp, possible_times), + "amount": (activity_element.amount, f"{amount} {asset}"), + "on_network": (activity_element.on_network, network), + } + if tx_type == 'Send': + additional_checks = { + "from_text": (activity_element.send_account_from_text, from_account_name), + "to_text": (activity_element.account_to_text, receiver_variants), + } + elif tx_type == 'Swap': + additional_checks = { + "amount_to": (activity_element.swap_amount_to_text, f"{swap_amount_to} {swap_asset_to}"), + "in_account": (activity_element.account_to_text, from_account_name), + } + else: + additional_checks = {} + + checks = {**common_checks, **additional_checks} + + for name, (left, right) in checks.items(): + if isinstance(right, list): + if left not in right: + errors.append( + f"Verification of last transaction failed." + f"The failed check: {name} (Expected: {right} to contain: {left})") + else: + if left != right: + errors.append( + f"Verification of last transaction failed." + f"The failed check: {name} (Expected: {right}, Found: {left})") + + + + except NoSuchElementException: + errors.append("Can't find the last transaction") + finally: + if navigate_to_main_screen: + self.close_account_button.click_until_presence_of_element(self.show_qr_code_button) + return errors + + def get_balance(self, asset='Ether', fiat=False): + self.just_fyi("Getting %s amount of the wallet of the sender before transaction" % asset) + return self.get_asset(asset_name=asset).get_amount() if fiat is False else self.get_asset( + asset_name=asset).get_fiat_balance() + + def get_receive_swap_amount(self, decimals=18): + self.just_fyi("Getting swap Receive amount for on review page") + return self.round_amount_float(self.swap_receive_amount_summary_text.text.split()[0], decimals) + + def get_custom_tx_element(self, text): + return Text(self.driver, xpath="//*[@content-desc[contains(., '%s')]]" % text) + + + def get_connected_dapp_element_by_name(self, dapp_name: str): + class ConnectedDAppElement(BaseElement): + def __init__(self, driver, dapp_name): + self.locator = "//*[contains(@content-desc,'dapp-')][*[@text='%s']]" % dapp_name + super().__init__(driver, xpath=self.locator) + self.url_text = Text(self.driver, xpath=self.locator + "//*[starts-with(@text,'http')]") + self.disconnect_button = Button(self.driver, xpath=self.locator + "//*[@content-desc='icon']") + + def disconnect(self): + self.disconnect_button.click() + ChatView(self.driver).confirm_block_contact_button.click() + + return ConnectedDAppElement(self.driver, dapp_name) + + def select_account_to_connect_dapp(self, account_name: str): + self.select_account_to_connect_dapp_button.click() + Button(self.driver, xpath="//*[@content-desc='container']/*[@text='%s']" % account_name).click() + + \ No newline at end of file diff --git a/test/appium/views/web_views/base_web_view.py b/test/appium/views/web_views/base_web_view.py new file mode 100644 index 00000000000..5a5afdf71e0 --- /dev/null +++ b/test/appium/views/web_views/base_web_view.py @@ -0,0 +1,27 @@ +import time + +from views.base_element import Button +from views.base_view import BaseView + + +class BaseWebView(BaseView): + + def __init__(self, driver): + super().__init__(driver) + + self.progress_bar_icon = Button(self.driver, xpath="//android.widget.ProgressBar") + self.options_button = Button(self.driver, accessibility_id="browser-options") + self.open_tabs_button = Button(self.driver, accessibility_id="browser-open-tabs") + self.open_new_tab_plus_button = Button(self.driver, accessibility_id="plus-button") + + + def wait_for_d_aap_to_load(self, wait_time=35): + self.driver.info("Waiting %ss for dapp to load" % wait_time) + counter = 0 + while self.progress_bar_icon.is_element_displayed(5): + time.sleep(1) + counter += 1 + if counter > wait_time: + self.driver.fail("Page is not loaded during %s seconds" % wait_time) + + diff --git a/test/appium/views/web_views/external_browser_view.py b/test/appium/views/web_views/external_browser_view.py new file mode 100644 index 00000000000..4d7a877c266 --- /dev/null +++ b/test/appium/views/web_views/external_browser_view.py @@ -0,0 +1,83 @@ +import time + +from appium.webdriver.applicationstate import ApplicationState +from selenium.common import TimeoutException + +from base_test_case import Driver +from views.base_element import Button, EditBox +from views.base_view import BaseView + +browser_app_package = 'com.android.chrome' + + +class BaseBrowserView(BaseView): + def __init__(self, driver: Driver): + super().__init__(driver) + self.search_box_element = EditBox(self.driver, id='com.android.chrome:id/search_box_text') + self.url_input = EditBox(self.driver, id='com.android.chrome:id/url_bar') + self.no_thanks_button = Button(self.driver, id='com.android.chrome:id/negative_button') + self.search_wallet_input = EditBox( + self.driver, xpath="//*[@text='All Wallets']/../../../following-sibling::*//android.widget.EditText") + self.status_app_button = Button(self.driver, xpath="//*[starts-with(@text,'Status Status')]") + + def wait_for_app_to_run(self, app_package: str, wait_time: int = 3): + for _ in range(wait_time): + if self.driver.query_app_state(app_package) == ApplicationState.RUNNING_IN_FOREGROUND: + return + time.sleep(1) + raise TimeoutException( + msg="Application %s is not running in foreground after %s sec" % (app_package, wait_time)) + + def open_browser(self): + self.driver.activate_app(browser_app_package) + self.wait_for_app_to_run(browser_app_package) + self.no_thanks_button.click_if_shown(2) + + def open_url(self, url: str): + if self.url_input.is_element_displayed(): + self.url_input.click() + self.url_input.clear() + self.url_input.send_keys(url) + else: + self.search_box_element.send_keys(url) + self.driver.press_keycode(66) + + +class BridgeStatusNetworkView(BaseBrowserView): + def __init__(self, driver): + super().__init__(driver) + self.connect_wallet_button = Button(self.driver, xpath="//*[@resource-id='wallet-connect-btn']") + self.all_wallets_button = Button(self.driver, xpath="//*[starts-with(@text,'All Wallets')]") + self.amount_input = EditBox(self.driver, xpath="//*[@resource-id='amount-input']") + self.bridge_button = Button(self.driver, xpath="//*[@text='BRIDGE']") + + def connect_status_wallet(self, refresh=True): + status_app_package = self.driver.current_package + self.open_browser() + if refresh: + self.open_url('https://bridge.status.network/') + self.element_by_text('GOT IT').click_if_shown(2) + self.connect_wallet_button.click() + if self.status_app_button.is_element_displayed(): + self.status_app_button.click() + else: + self.all_wallets_button.click() + self.search_wallet_input.wait_for_visibility_of_element(3) + self.search_wallet_input.send_keys('Status') + self.status_app_button.wait_and_click() + self.wait_for_app_to_run(status_app_package) + + +class UniswapView(BaseBrowserView): + + def connect_status_wallet(self): + status_app_package = self.driver.current_package + self.open_browser() + self.open_url('https://app.uniswap.org/swap') + self.element_by_text('Connect wallet').wait_and_click() + self.element_by_text('Other wallets').wait_and_click() + self.element_by_text('WalletConnect').click() + self.search_wallet_input.wait_for_visibility_of_element(3) + self.search_wallet_input.send_keys('Status') + self.status_app_button.wait_and_click() + self.wait_for_app_to_run(status_app_package) diff --git a/test/clj/status_im/test/appium.clj b/test/clj/status_im/test/appium.clj deleted file mode 100644 index f05bfc78326..00000000000 --- a/test/clj/status_im/test/appium.clj +++ /dev/null @@ -1,103 +0,0 @@ -(ns status-im.test.appium - (:require [clojure.java.io :as io] - [clojure.test :refer :all]) - (:import (org.openqa.selenium.remote DesiredCapabilities) - (org.openqa.selenium By) - (io.appium.java_client.android AndroidDriver) - (java.net URL) - (java.util.concurrent TimeUnit))) - - -(defn init [] - (let [dir (io/file (str (System/getProperty "user.dir") - "/android/app/build/outputs/apk")) - app (io/file dir "app-debug.apk") - capabilities (doto (DesiredCapabilities.) - (.setCapability "deviceName" "device") - (.setCapability "app" (.getAbsolutePath app)) - (.setCapability "appPackage" "im.status.ethereum") - (.setCapability "appActivity" ".MainActivity")) - driver (AndroidDriver. (URL. "http://127.0.0.1:4723/wd/hub") capabilities)] - (-> driver - .manage - .timeouts - (.implicitlyWait 25 TimeUnit/SECONDS)) - driver)) - -(defn by-xpath [driver xpath] - (.findElement driver (By/xpath xpath))) - -(defn elements-by-xpath [driver xpath] - (.findElements driver (By/xpath xpath))) - -(defn by-id [driver id] - (.findElementByAccessibilityId driver (name id))) - -(defn get-element [driver id] - (if (keyword? id) - (by-id driver id) - (by-xpath driver id))) - -(defn click [driver id] - (.click (get-element driver id))) - -(defn write [driver input-xpath text] - (.sendKeys (get-element driver input-xpath) (into-array [text]))) - -(defn get-text [driver xpath] - (.getText (by-xpath driver xpath))) - -(defn xpath-by-text [text] - (str ".//*[@text=\"" text "\"]")) - -(defn click-by-text [driver text] - (let [elements (->> (xpath-by-text text) - (elements-by-xpath driver))] - (when (pos? (.size elements)) - (let [element (.get elements 0)] - (.click element))))) - -(defn contains-text [driver text] - (is (pos? (->> (xpath-by-text text) - (elements-by-xpath driver) - (.size))) - (format "Text \"%s\" was not found on screen." text))) - -(defn quit [driver] - (.quit driver)) - -(defmacro appium-test - "Defines test which will create new appium session and will pass that - session as first argument to each command inside it's body. After execution - of all commands, the session will be closed. - Also, at the start of every test, the 'Continue' button from the 'Your phone - appears to be ROOTED' message will be pressed. - - For instance, - - (appium-test my-test - (click :button) - (write :input \"oops\")) - - will be expanded to - - (deftest my-test - (let [session (init)] - (click session :button) - (write session :input \"oops\") - (quit session)))" - [name & body] - (let [sym (gensym)] - `(deftest ~name - (let [~sym (init)] - (click-by-text ~sym "Continue") - ~@(for [[f & rest] body] - `(~f ~sym ~@rest)) - (quit ~sym))))) - -(defmacro defaction - [name parameters & body] - (let [session (gensym)] - `(defn ~name [~@(concat [session] parameters)] - ~@(for [[f & rest] body] - `(~f ~session ~@rest))))) diff --git a/test/clj/status_im/test/console.clj b/test/clj/status_im/test/console.clj deleted file mode 100644 index 2efa37efd14..00000000000 --- a/test/clj/status_im/test/console.clj +++ /dev/null @@ -1,49 +0,0 @@ -(ns status-im.test.console - (:require [clojure.test :refer :all] - [status-im.accessibility-ids :as id] - [status-im.test.appium :refer :all])) - -(defaction send-command [] - (click id/chat-send-button)) - -(defaction respond-to-request [request value] - (click (id/chat-request-message-button request)) - (write id/chat-message-input value) - (send-command)) - -(defaction confirm-password [value] - (write id/chat-message-input value) - (send-command)) - -(appium-test sign-up-successfully - (respond-to-request :password "password") - (confirm-password "password") - (respond-to-request :phone "2015550123") - (respond-to-request :confirmation-code "1234") - (contains-text "Done!") - (click id/toolbar-back-button) - (contains-text "Chats")) - -(appium-test wrong-password - (respond-to-request :password "abc") - (contains-text "Password should be not less then 6 symbols.") - (click id/chat-cancel-response-button) - (respond-to-request :password "password") - (confirm-password "abc") - (contains-text "Password confirmation doesn't match password.")) - -(appium-test wrong-phone-number - (respond-to-request :password "password") - (confirm-password "password") - (respond-to-request :phone "1234") - (contains-text "Invalid phone number")) - -(appium-test wrong-confirmation-code - (respond-to-request :password "password") - (confirm-password "password") - (respond-to-request :phone "2015550123") - (respond-to-request :confirmation-code "432") - (contains-text "Wrong format") - (click id/chat-cancel-response-button) - (respond-to-request :confirmation-code "4321") - (contains-text "Wrong code!")) diff --git a/test/cljs/status_im/test/commands/handlers.cljs b/test/cljs/status_im/test/commands/handlers.cljs deleted file mode 100644 index cf356be4e2a..00000000000 --- a/test/cljs/status_im/test/commands/handlers.cljs +++ /dev/null @@ -1,20 +0,0 @@ -(ns status-im.test.commands.handlers - (:require [cljs.test :refer-macros [deftest is]] - [status-im.commands.handlers.loading :as h])) - -(deftest test-validate-hash - (let [file "some-js" - db (-> {} - (assoc-in [:chats :user :dapp-hash] -731917028) - (assoc-in [:chats :user2 :dapp-hash] 123))] - (is (::h/valid-hash (h/validate-hash db [:user file]))) - (is (not (::h/valid-hash (h/validate-hash db [:user2 file])))) - (is (not (::h/valid-hash (h/validate-hash db [:user3 file])))))) - -(deftest test-add-commands - (let [obj {:commands {:test {:name "name" - :description "desc"}} - :responses {:test-r {:name "r" - :description "desc-r"}}} - db (h/add-commands {} [:user nil obj])] - (is (= obj (select-keys (get-in db [:chats :user]) [:commands :responses]))))) diff --git a/test/cljs/status_im/test/handlers.cljs b/test/cljs/status_im/test/handlers.cljs deleted file mode 100644 index 70f4ae44c68..00000000000 --- a/test/cljs/status_im/test/handlers.cljs +++ /dev/null @@ -1,6 +0,0 @@ -(ns status-im.test.handlers - (:require [cljs.test :refer-macros [deftest is]] - [status-im.handlers :as h])) - -(deftest test-set-val - (is (= {:key :val} (h/set-el {} [nil :key :val])))) diff --git a/test/cljs/status_im/test/handlers_stubs.cljs b/test/cljs/status_im/test/handlers_stubs.cljs deleted file mode 100644 index 051d823e4f3..00000000000 --- a/test/cljs/status_im/test/handlers_stubs.cljs +++ /dev/null @@ -1,25 +0,0 @@ -(ns status-im.test.handlers-stubs - (:require [re-frame.core :refer [subscribe dispatch after]] - [status-im.utils.handlers :refer [register-handler]] - [status-im.utils.handlers :as u] - [status-im.chat.sign-up :as sign-up-service] - status-im.handlers)) - -(defn init-stubs [] - (register-handler :sign-up - (u/side-effect! - (fn [] - ;; todo save phone number to db - (sign-up-service/on-sign-up-response)))) - - (register-handler :sign-up-confirm - (u/side-effect! - (fn [_ [_ confirmation-code]] - (sign-up-service/on-send-code-response - (if (= "1234" confirmation-code) - {:message "Done!" - :status :confirmed - :confirmed true} - {:message "Wrong code!" - :status :failed - :confirmed false})))))) diff --git a/test/cljs/status_im/test/runner.cljs b/test/cljs/status_im/test/runner.cljs deleted file mode 100644 index 2f503a9e21d..00000000000 --- a/test/cljs/status_im/test/runner.cljs +++ /dev/null @@ -1,7 +0,0 @@ -(ns status-im.test.runner - (:require #_[doo.runner :refer-macros [doo-tests]] - [status-im.test.handlers] - [status-im.test.commands.handlers])) - -#_(doo-tests 'status-im.test.handlers - 'status-im.test.commands.handlers) diff --git a/test/docker/README.md b/test/docker/README.md new file mode 100644 index 00000000000..6c2079d13df --- /dev/null +++ b/test/docker/README.md @@ -0,0 +1,15 @@ +Status Mobile protocol tests +===================== + +## Run the tests + +To run the tests with `docker-compose`, execute: +``` +docker-compose run tests +``` + +> It may be required to make your node a swarm manager first. If you see an appropriate error, follow the instructions. + +This command will start a bootnode and build a Whisper node running the latest `status-go`. + +For more information about bootnodes see https://github.com/ethereum/go-ethereum/wiki/Setting-up-private-network-or-local-cluster diff --git a/test/docker/bootnode/static/bootnode.key b/test/docker/bootnode/static/bootnode.key new file mode 100644 index 00000000000..e369fe902e4 --- /dev/null +++ b/test/docker/bootnode/static/bootnode.key @@ -0,0 +1 @@ +5f84f2ab5bc629b1cf83b5b9a100b00c4cf2b8970a317cc7f6b6b4dce5462352 diff --git a/test/docker/clojure/Dockerfile b/test/docker/clojure/Dockerfile new file mode 100644 index 00000000000..c1143177058 --- /dev/null +++ b/test/docker/clojure/Dockerfile @@ -0,0 +1,6 @@ +FROM clojure + +RUN apt-get update +RUN apt-get install make curl -y +RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - +RUN apt-get install -y nodejs diff --git a/test/docker/docker-compose.yml b/test/docker/docker-compose.yml new file mode 100644 index 00000000000..0581d8d8d80 --- /dev/null +++ b/test/docker/docker-compose.yml @@ -0,0 +1,54 @@ +version: "3" +services: + tests: + build: ./clojure + volumes: + - "../../:/srv" + command: lein test-protocol + working_dir: "/srv" + environment: + WNODE_ADDRESS: "http://172.16.238.11:8545" + links: + - wnode + networks: + cluster: + ipv4_address: 172.16.238.12 + bootnode: + image: ethereum/client-go:alltools-latest + entrypoint: bootnode + command: -addr=:30303 -nodekey /static/keys/bootnode.key + volumes: + - ./bootnode/static:/static/keys + ports: + - 30303 + networks: + cluster: + ipv4_address: 172.16.238.10 + wnode: + build: ./status-go + command: + - "-shh" + - "-listenaddr=:30303" + - "-discovery=true" + - "-standalone=false" + - "-bootnodes=enode://3f04db09bedc8d85a198de94c84da73aa7782fafc61b28c525ec5cca5a6cc16be7ebbb5cd001780f71d8408d35a2f6326faa1e524d9d8875294172ebec988743@172.16.238.10:30303" + - "-http" + - "-httpport=8545" + - "-httphost=0.0.0.0" + - "-log=DEBUG" + ports: + - 8080 + - 8545 + - 30303 + depends_on: + - bootnode + networks: + cluster: + ipv4_address: 172.16.238.11 +networks: + cluster: + driver: overlay + ipam: + driver: default + config: + - subnet: 172.16.238.0/24 diff --git a/test/docker/status-go/Dockerfile b/test/docker/status-go/Dockerfile new file mode 100644 index 00000000000..62df127447c --- /dev/null +++ b/test/docker/status-go/Dockerfile @@ -0,0 +1,28 @@ +# Build status-go in a Go builder container +FROM golang:1.9-alpine as builder + +RUN apk add git --update + +ARG build_tags + +RUN apk add --no-cache make gcc musl-dev linux-headers + +RUN mkdir -p /go/src/github.com/status-im/status-go +RUN git clone http://github.com/status-im/status-go /go/src/github.com/status-im/status-go + +RUN cd /go/src/github.com/status-im/status-go && make statusgo BUILD_TAGS="$build_tags" + +# Copy the binary to the second image +FROM alpine:latest + +RUN apk add --no-cache ca-certificates bash + +COPY --from=builder /go/src/github.com/status-im/status-go/build/bin/* /usr/local/bin/ + +RUN mkdir -p /static/keys +COPY --from=builder /go/src/github.com/status-im/status-go/static/keys/* /static/keys/ + +# 30304 is used for Discovery v5 +EXPOSE 8080 8545 30303 30303/udp 30304/udp + +ENTRYPOINT ["/usr/local/bin/statusd"] diff --git a/test/env/dev/env/test/runner.cljs b/test/env/dev/env/test/runner.cljs new file mode 100644 index 00000000000..04d7c991037 --- /dev/null +++ b/test/env/dev/env/test/runner.cljs @@ -0,0 +1,13 @@ +(ns env.test.runner + (:require [doo.runner :refer-macros [doo-tests]] + [env.test.utils])) + +(enable-console-print!) + +;; Or doo will exit with an error, see: +;; https://github.com/bensu/doo/issues/83#issuecomment-165498172 +(set! (.-error js/console) (fn [x] (.log js/console x))) + +(set! goog.DEBUG false) + +(doo-tests 'env.test.utils) diff --git a/test/env/dev/env/test/utils.cljs b/test/env/dev/env/test/utils.cljs new file mode 100644 index 00000000000..7e86a39f140 --- /dev/null +++ b/test/env/dev/env/test/utils.cljs @@ -0,0 +1,13 @@ +(ns env.test.utils + (:require [cljs.test :refer-macros [deftest is]] + [env.utils :as utils])) + +(deftest get-host-test + (is (= (utils/get-host "http://localhost:8000") "localhost")) + (is (= (utils/get-host "http://0.0.0.0:8000") "0.0.0.0")) + (is (= (utils/get-host "invalid") ""))) + +(deftest re-frisk-url-test + (is (= (utils/re-frisk-url "ws://localhost:3449/figwheel-ws") "localhost:4567")) + (is (= (utils/re-frisk-url "ws://10.0.2.2:3449/figwheel-ws") "10.0.2.2:4567")) + (is (thrown? js/Error (utils/re-frisk-url "invalid")))) diff --git a/test/jest/jest.config.js b/test/jest/jest.config.js new file mode 100644 index 00000000000..ff8533b28b4 --- /dev/null +++ b/test/jest/jest.config.js @@ -0,0 +1,70 @@ +const transformIgnorePatterns = () => { + const libs = [ + '@react-native', + '@react-native-community', + '@react-native-community/blur', + 'react-native', + 'react-native-config', + 'react-native-background-timer', + 'react-native-gifted-charts', + 'react-native-hole-view', + 'react-native-image-crop-picker', + 'react-native-linear-gradient', + 'react-native-permissions', + 'react-native-reanimated', + 'react-native-redash', + 'react-native-redash', + 'react-native-shadow-2', + 'react-native-shake', + 'react-native-safe-area-context', + ].join('|'); + + return [`/node_modules/(?!(${libs})/).*/`]; +}; + +const shouldUseSilentReporter = () => { + return process.env.JEST_USE_SILENT_REPORTER === 'true'; +}; + +const reporters = () => { + let reporters = []; + if (shouldUseSilentReporter()) { + reporters.push(['jest-silent-reporter', { useDots: true }]); + } else { + reporters.push('default'); + } + return reporters; +}; + +module.exports = { + preset: 'react-native', + setupFilesAfterEnv: [ + '@testing-library/jest-native/extend-expect', + '../component-spec/status_im.setup.schema_preload.js', + '../component-spec/test_helpers.component_tests_preload.js', + '../test/jest/jestSetup.js', + ], + reporters: reporters(), + setupFiles: [], + testPathIgnorePatterns: [], + moduleNameMapper: { + '^[@./a-zA-Z0-9$_-]+\\.(png|jpg|jpeg|gif)$': + '/../node_modules/react-native/Libraries/Image/RelativeImageStub', + }, + testTimeout: 60000, + transformIgnorePatterns: transformIgnorePatterns(), + // This is a workaround after upgrading to Jest 29.7.0, otherwise we get: + // + // SyntaxError: node_modules/@react-native/js-polyfills/error-guard.js: + // Missing semicolon. (14:4) + // + transform: { + '^.+\\.(js|jsx|ts|tsx)$': ['babel-jest', { configFile: './babel.config.js' }], + }, + globals: { + __TEST__: true, + }, + testEnvironment: 'node', + rootDir: '../../component-spec', + testMatch: ['**/*__tests__*', '**/*.component_spec.js'], +}; diff --git a/test/jest/jestSetup.js b/test/jest/jestSetup.js new file mode 100644 index 00000000000..233d52caa13 --- /dev/null +++ b/test/jest/jestSetup.js @@ -0,0 +1,131 @@ +const WebSocket = require('ws'); +const { NativeModules } = require('react-native'); + +mockAsyncStorage = require('@react-native-async-storage/async-storage/jest/async-storage-mock'); +require('react-native-gesture-handler/jestSetup'); +require('react-native-reanimated/src/reanimated2/jestUtils').setUpTests(); + +jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage); + +jest.mock('react-native-fs', () => ({ + default: {}, +})); + +jest.mock('react-native-share', () => ({ + default: {}, +})); + +jest.mock('react-native-navigation', () => ({ + getNavigationConstants: () => ({ constants: [] }), + Navigation: { + constants: async () => ({ + statusBarHeight: 10, + topBarHeight: 10, + bottomTabsHeight: 10, + }), + }, +})); + +jest.mock('react-native-background-timer', () => ({})); + +jest.mock('react-native-safe-area-context', () => ({ + initialWindowMetrics: + { + insets: + { + top: 0, + bottom: 0 + } + }, + SafeAreaProvider:{} +})); + +jest.mock('react-native-permissions', () => require('react-native-permissions/mock')); + +jest.mock('@react-native-clipboard/clipboard', () => ({ + getString: jest.fn().mockResolvedValue('mockString'), + getImagePNG: jest.fn(), + getImageJPG: jest.fn(), + setImage: jest.fn(), + setString: jest.fn(), + hasString: jest.fn().mockResolvedValue(true), + hasImage: jest.fn().mockResolvedValue(true), + hasURL: jest.fn().mockResolvedValue(true), + addListener: jest.fn(), + removeAllListeners: jest.fn(), + getEnforcing: jest.fn(), + useClipboard: jest.fn(() => ['mockString', jest.fn()]), +})); + +jest.mock('@react-native-community/audio-toolkit', () => ({ + Recorder: jest.fn().mockImplementation(() => ({ + prepare: jest.fn(), + record: jest.fn(), + toggleRecord: jest.fn(), + pause: jest.fn(), + stop: jest.fn(), + on: jest.fn(), + })), + Player: jest.fn().mockImplementation(() => ({ + prepare: jest.fn(), + playPause: jest.fn(), + play: jest.fn(), + pause: jest.fn(), + stop: jest.fn(), + seek: jest.fn(), + on: jest.fn(), + })), + MediaStates: { + DESTROYED: -2, + ERROR: -1, + IDLE: 0, + PREPARING: 1, + PREPARED: 2, + SEEKING: 3, + PLAYING: 4, + RECORDING: 4, + PAUSED: 5, + }, + PlaybackCategories: { + Playback: 1, + Ambient: 2, + SoloAmbient: 3, + }, +})); + +jest.mock('i18n-js', () => ({ + ...jest.requireActual('i18n-js'), + t: (label) => `tx:${label}`, +})); + +jest.mock('react-native-blob-util', () => ({ + default: { + config: jest.fn().mockReturnValue({ + fetch: jest.fn(), + }), + }, +})); + +jest.mock('react-native-reanimated', () => require('react-native-reanimated/mock')); + +jest.mock('react-native-safe-area-context', () => ({ + initialWindowMetrics: + { + insets: + { + top: 0, + bottom: 0 + } + }, + SafeAreaProvider:{} +})); + +NativeModules.ReactLocalization = { + language: 'en', + locale: 'en', +}; +global.navigator = { + userAgent: 'node', +}; + +global.WebSocket = WebSocket; diff --git a/translations/af.json b/translations/af.json new file mode 100644 index 00000000000..eff9f9a5c19 --- /dev/null +++ b/translations/af.json @@ -0,0 +1,127 @@ +{ + "confirm": "Bevestig", + "amount": "Bedrag", + "members-active": { + "one": "1 lid, 1 aktief", + "other": "{{count}} lede, {{count}} aktief", + "zero": "geen lede" + }, + "chat-name": "Bynaam", + "phew-here-is-your-passphrase": "*Sjoe* dit was moeilik, hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin.", + "public-group-topic": "Onderwerp", + "chat-settings": "Geselsie-stellings", + "offline": "Aflyn", + "invited": "uitgenooi", + "address": "Adres", + "new-public-group-chat": "Sluit aan by openbare klets", + "datetime-hour": { + "one": "uur", + "other": "ure" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Verwyder", + "add-members": "Voeg lede by", + "done": "Gedoen", + "close-chat": "Skrap klets", + "new-group-chat": "Nuwe groepgeselsie", + "sign-in": "Teken aan", + "datetime-yesterday": "gister", + "create-new-account": "Skep nuwe rekening", + "datetime-ago": "gelede", + "contacts": "Kontakte", + "got-it": "Het dit", + "active-online": "Aanlyn", + "password": "Wagwoord", + "browsing-title": "Blaai", + "discover": "Ontdekking", + "browsing-cancel": "Kanselleer", + "intro-status": "Gesels met my om jou rekening op te stel en jou stellings te verander!", + "name": "Naam", + "show-qr": "Wys QR", + "connect": "Konnekteer", + "edit": "Wysig", + "account-generation-message": "Net 'n oomblik, ek moet mal somme doen om jou rekening te skep!", + "no-messages": "Geen boodskappe", + "passphrase": "Tydelike wagwoord", + "recipient": "Ontvanger", + "members-title": "lede", + "new-group": "Nuwe groep", + "phone-e164": "Internasionaal 1", + "settings": "Stellings", + "chats": "Geselsies", + "transaction": "Transaksie", + "public-group-status": "Openbaar", + "image-source-make-photo": "Opname", + "start-conversation": "Begin gesprek", + "save": "Stoor", + "sharing-copy-to-clipboard": "Kopieer na knipbord", + "sync-in-progress": "Besig om te sinchroniseer...", + "send-transaction": "Stuur transaksie", + "incorrect-code": [ + "str", + "Jammer, die kode was nie korrek nie, voer asseblief weer in" + ], + "image-source-gallery": "Kies uit galery", + "sync-synced": "gesinchroniseer", + "status-pending": "Hangende", + "datetime-day": { + "one": "dag", + "other": "dae" + }, + "scan-qr": "Skandeer QR", + "contact-s": { + "one": "kontak", + "other": "kontakte" + }, + "next": "Volgende", + "recent": "Onlangs", + "status": "Status", + "from": "Van", + "wrong-password": "Verkeerde wagwoord", + "in-contacts": "In kontakte", + "sharing-share": "Deel...", + "type-a-message": "Tik ‘n boodskap...", + "clear-history": "Maak geskiedenis skoon", + "no-contacts": "Nog geen kontakte nie", + "datetime-today": "vandag", + "web-view-error": "oepsie, fout", + "error": "Fout", + "more": "meer", + "cancel": "Kanselleer", + "can-not-add-yourself": "Jy kan nie jouself byvoeg nie", + "add-to-contacts": "Voeg by kontakte", + "available": "Beskikbaar", + "You": "Jou", + "main-wallet": "Hoofbeursie", + "members": { + "one": "1 lid", + "other": "{{count}} lede", + "zero": "geen lede" + }, + "intro-message1": "Welkom by Status\nTik tik hierdie boodskap om jou wagwoord te stel & laat ons begin!", + "new-contact": "Nuwe kontak", + "datetime-second": { + "one": "sekonde", + "other": "sekondes" + }, + "recover": "Herstel", + "datetime-minute": { + "one": "minuut", + "other": "minute" + }, + "browsing-open-in-android-web-browser": "Maak oop in webblaaier", + "browsing-open-in-ios-web-browser": "Maak oop in webblaaier", + "edit-profile": "Redigeer profiel", + "active-unknown": "Onbekend", + "public-key": "Openbare sleutel", + "profile": "Profiel", + "none": "Geen", + "removed": "verwyder", + "message": "Boodskap", + "here-is-your-passphrase": "Hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin.", + "image-source-title": "Profielbeeld", + "left": "uitgegaan", + "to": "Aan", + "status-sent": "Gestuur", + "data": "Data" +} diff --git a/translations/ar.json b/translations/ar.json new file mode 100644 index 00000000000..8a51f216767 --- /dev/null +++ b/translations/ar.json @@ -0,0 +1,1796 @@ +{ + "You": "أنت", + "about-app": "حول", + "about-key-storage-content": "لن تصل الحالة مطلقًا إلى مفتاحك الخاص. تأكد من النسخ الاحتياطي عبارة البذور الخاصة بك. إذا فقدت هاتفك ، فهذه هي الطريقة الوحيدة للوصول إلى مفاتيحك.", + "about-key-storage-title": "حول التخزين الرئيسي", + "about-names-content": "هويتك آمنة وخاصة من خلال التصميم. تحصل على مفتاح تشفير تم إنشاؤه محليًا. الاسم والصورة هي نسخة قابلة للقراءة من هذا. إنها فريدة من نوعها. لا أحد يستطيع أن يدعي أنه أنت. لا أحد يرى اسمك الحقيقي إلا إذا قدمته أنت.", + "about-names-title": "لا يمكن تغيير الأسماء", + "about-sharing-data": "حول مشاركة البيانات", + "accept": "قبول", + "accept-and-add": "قبول وإضافة", + "accept-and-continue": "قبول ومتابعة", + "accept-and-share-address": "قبول العنوان ومشاركته", + "accept-new-chats-from": "قبول الدردشات الجديدة من", + "accept-status-tos-prefix": "أنا أقبل Status", + "access-existing-keys": "الوصول إلى المفاتيح الحالية", + "access-key": "مفتاح الوصول", + "account-added": "تمت أضافه الحساب", + "account-color": "لون الحساب", + "account-content": "يمكنك مقارنة الحسابات في الحالة إلى الحسابات المصرفية. مثل الحساب المصرفي ، عادة ما يكون للحساب عنوان ورصيد ؛ يمكنك استخدام هذا الحساب لإجراء المعاملات على الإيتييوم. يمكن أن يكون لديك حسابات متعددة في محفظتك. يمكن الوصول إليها جميعًا عن طريق فتح الحالة.", + "account-exists-title": "الحساب موجود بالفعل", + "account-is-used": "يتم استخدام الحساب مع التطبيقات اللامركزية في المتصفح.", + "account-name": "اسم الحساب", + "account-settings": "إعدادات الحساب", + "account-title": "الحساب", + "accounts": "حسابات", + "actions": "أجراءات", + "active-online": "متصل", + "active-unknown": "غير معروف", + "activity": "نشاط", + "add": "إضافة", + "add-a-watch-account": "أضافه عنوان للمشاهدة فقط", + "add-account": "إضافة حساب", + "add-account-description": "يمكنك استيراد أي نوع من حسابات Ethereum لإضافته إلى محفظة Status الخاصة بك", + "add-account-incorrect-password": "يبدو أن كلمة المرور غير صحيحة. أدخل كلمة المرور التي تستخدمها لإلغاء قفل التطبيق.", + "add-an-account": "حساب جديد", + "add-bootnode": "إضافة bootnode", + "add-contact": "إضافة جهة اتصال", + "add-custom-token": "إضافة عملة رمزية مخصص", + "add-favourite": "إضافة المفضلة", + "add-mailserver": "إضافة عقدة Status", + "add-members": "إضافة أعضاء", + "add-network": "اضافة شبكة", + "add-new-contact": "إضافة جهة اتصال جديدة", + "add-nickname": "إضافة لقب (اختياري)", + "add-node": "أضف العقدة", + "add-private-key-account": "إضافة حساب من مفتاح خاص", + "add-seed-account": "أضف حسابًا بعبارة أولية", + "add-to-contacts": "أضف إلى جهات الاتصال", + "add-to-contacts-text": "بإضافة مستخدم إلى قائمة جهات الاتصال الخاصة بك ، يمكنك مشاركة عنوان محفظتك", + "add-to-favourites": "إضافة إلى المفضلة", + "add-watch-account": "أضف حسابًا للمراقبة فقط", + "address": "عنوان", + "address-or-ens-name": "العنوان أو اسم ENS", + "address-received": "العنوان المستلم", + "address-request-accepted": "قبول طلب العنوان", + "address-requested": "العنوان المطلوب", + "advanced": "المتقدمة", + "advanced-settings": "إعدادات متقدمة", + "advertiser-description": "لقد اكتشفت Status بفضل شريك. هل تمانع إذا كانت الحالة تتحقق من عنوان IP الخاص بك مرة واحدة حتى يتم مكافأتها؟ لن يتم استخدام هذه المعلومات لأي شيء آخر وستتم إزالتها تمامًا بعد 7 أيام.", + "advertiser-starter-pack-accept": "قبول", + "advertiser-starter-pack-decline": "رفض الدعوة", + "advertiser-starter-pack-description": "إليك بعض من العملة الرقمية لتبدأ! استخدمه للحصول على ملصقات ، واسم ENS و تجربت dapps", + "advertiser-starter-pack-title": "حزمة المبتدئين", + "advertiser-title": "الخصوصية بشكل افتراضي", + "agree-by-continuing": "بالمتابعة أنت توافق \n الينا", + "all": "الكل", + "allow": "السماح", + "allow-and-send": "السماح والإرسال", + "allow-mention-notifications": "إظهار @ الإشارات", + "allowing-authorizes-this-dapp": "يسمح لـ DApp باسترداد عنوان محفظتك وتمكين Web3", + "already-have-asset": "لديك بالفعل هذا الأصل", + "amount": "المبلغ", + "anyone": "اي شخص", + "app-commit": "فرض التطبيق", + "appearance": "مظهر خارجي", + "apply": "سجل", + "approve": "موافقة", + "approve-limit": "حد الموافقة", + "approve-token": "الموافقة على عملة رمزية", + "approve-token-contract-desc": "تسمح الموافقة على عملة رمزية مع عقد بإنفاق رصيدك المميز. إذا كنت تشعر أن المشروع غير جدير بالثقة، فلا توافق على عملة رمزية معهم، أو توافق فقط على المبلغ الذي ستستخدمه معهم.", + "are-you-sure": "هل أنت متأكد؟", + "are-you-sure-description": "لن تكون قادرًا على رؤية جملة البذور الكاملة مرة أخرى", + "are-you-sure-to-cancel": "هل أنت متأكد أنك تريد إلغاء؟", + "are-you-sure?": "هل أنت متأكد؟", + "ask-in-status": "طرح سؤال أو الإبلاغ عن خطأ", + "at": "في", + "attribution-received": "{{attrib}} من المكافآت {{max}} المتلقاة", + "audio": "صوت", + "audio-recorder": "مسجل", + "audio-recorder-error": "خطأ مسجل", + "audio-recorder-max-ms-reached": "تم بلوغ أقصى وقت تسجيل", + "audio-recorder-permissions-error": "يجب عليك إعطاء الإذن لإرسال رسائل صوتية", + "authorize": "يأذن", + "available": "متاح", + "available-participants": { + "zero": "مشارك", + "one": "مشارك", + "two": "مشارك", + "few": "مشاركين", + "many": "مشاركين", + "other": "مشاركين" + }, + "back": "الى الخلف", + "back-up": "دعم", + "back-up-seed-phrase": "النسخ الاحتياطي لعبارة \"Seed \"", + "back-up-your-seed-phrase": "النسخ الاحتياطي للعبارة الأولية الخاصة بك", + "backing-up": "النسخة الإحتياطية...", + "backup-disabled": "معطل", + "backup-enabled": "تمكين", + "backup-recovery-phrase": "النسخ الاحتياطي للعبارة الأولية", + "backup-settings": "إعدادات النسخ الاحتياطي", + "backup-through-waku": "النسخ الاحتياطي من خلال واكو", + "bad-fees-description": "رسوم الأولوية الخاصة بك أقل من المعايير المقترحة لدينا.", + "balance": "توازن", + "begin-set-up": "ابدأ الإعداد", + "below-base-fee": "الحد الأقصى للرسوم أقل من الرسوم الأساسية", + "biometric-auth-android-sensor-desc": "استشعار تعمل باللمس", + "biometric-auth-android-sensor-error-desc": "فشل", + "biometric-auth-android-title": "مطلوب مصادقه", + "biometric-auth-confirm-logout": "إعادة تسجيل الدخول", + "biometric-auth-confirm-message": "مطلوب المصادقة البيومترية للمتابعة ، إن لم يكن ذلك ممكنا يرجى إعادة تسجيل الدخول باستخدام كلمة مرور حساب متعددة", + "biometric-auth-confirm-title": "يجب عليك المصادقة!", + "biometric-auth-confirm-try-again": "حاول مرة أخري", + "biometric-auth-error": "غير قادر على إجراء المصادقة البيومترية ( {{code}} )", + "biometric-auth-login-error-title": "خطا في المصادقة البيومتريه", + "biometric-auth-login-ios-fallback-label": "أدخل كلمة المرور", + "biometric-auth-reason-login": "تسجيل الدخول في الحالة", + "biometric-auth-reason-verify": "تحقق من المصادقة", + "biometric-disable-bioauth": "تمكين {{bio-type-label}}", + "biometric-disable-password-description": "إذا قمت بتعطيل هذا ، أنت سوف أيضا ", + "biometric-disable-password-title": "تعطيل حفظ كلمه المرور", + "biometric-enable": "إذا كنت لا ترغب في إدخال كلمة مرورك في كل مرة للوصول إلى التطبيق، فقم بتمكين {{bio-type-label}} تسجيل الدخول", + "biometric-enable-button": "تمكين {{bio-type-label}}", + "biometric-enable-keycard": "إذا كنت لا تريد استخدام بطاقة مفتاح في كل مرة للوصول إلى التطبيق ، فقم بتمكين {{bio-type-label}} تسجيل الدخول", + "biometric-faceid": "استشعار بالوجه", + "biometric-fingerprint": "بصمة الاصبع", + "biometric-secure-with": "آمن باستخدام {{bio-type-label}}", + "biometric-touchid": "استشعار باللمس", + "bip39-password-placeholder": "كلمة مرور BIP39", + "blank-keycard-text": "يمكنك المتابعة باستخدام بطاقة مفتاح الخاصة بك بمجرد إنشاء المفاتيح واسمك", + "blank-keycard-title": "يبدو انك قمت باستغلال \nبطاقة مفتاح فارغه", + "block": "حظر", + "block-contact": "حظر هذا المستخدم", + "block-contact-details": "سيؤدي الحظر إلى حذف الرسائل السابقة لهذا المستخدم ومنع الرسائل الجديدة من الوصول إليك", + "blocked-users": "المستخدمون المحظورون", + "bootnode-address": "عنوان Bootnode", + "bootnode-details": "تفاصيل bootnode", + "bootnode-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "تمكين bootnodes", + "bootnodes-settings": "إعدادات Bootnodes", + "browsed-websites": "سوف يظهر سجل المتصفح هنا", + "browser": "المتصفح", + "browser-not-secure": "الاتصال غير آمن! لا توقع المعاملات ولا ترسل بيانات شخصية على هذا الموقع.", + "browser-secure": "اتصال آمن. تأكد من أنك تثق بهذا الموقع بالفعل قبل توقيع المعاملات أو إدخال البيانات الشخصية.", + "browsers": "المتصفحات", + "browsing-cancel": "إلغاء", + "browsing-open-in-android-web-browser": "افتح في Android", + "browsing-open-in-ios-web-browser": "الفتح في iOS", + "browsing-open-in-status": "فتح في Status ", + "browsing-site-blocked-description1": "لقد اكتشفنا نشاطًا ضارًا محتملاً من هذا العنوان. لحمايتك ومحفظتك ، نمنع المزيد من التنقل. \n\n إذا كنت تعتقد أن هذا خطأ ، فأخبرنا بذلك", + "browsing-site-blocked-description2": "دردشة عامة.", + "browsing-site-blocked-go-back": "الرجوع للخلف", + "browsing-site-blocked-title": "هذا الموقع محظور", + "browsing-title": "تصفح", + "bug-report": "الإبلاغ عن خطأ", + "bug-report-description": "* وصف", + "bug-report-description-placeholder": "مطلوب ، لا يمكن أن يكون فارغًا", + "bug-report-steps": "خطوات لإعادة الإنتاج", + "bug-report-steps-placeholder": "- افتح التطبيق\n - قم بعمل ما\n - وبعد ذلك شيء آخر ...", + "bug-report-submit-email": "إرسال عن طريق البريد الإلكتروني مع سجلات الأرشيف", + "bug-report-submit-gh-issue": "إرسال مشكلة GitHub بدون سجلات", + "bug-report-too-short-description": "الوصف قصير جدًا", + "build-yourself": "لاستخدام التطبيق بدون شروط الاستخدام هذه ، يمكنك إنشاء الإصدار الخاص بك", + "buy-crypto": "شراء العملات المشفرة", + "buy-crypto-choose-a-service": "اختر الخدمة التي ترغب في استخدامها لشراء العملات المشفرة", + "buy-crypto-description": "ابحث عن تطبيق لامركزي لشراء العملات المشفرة الآن", + "buy-crypto-leaving": "أنت تغادر Status وتدخل إلى موقع ويب تابع لجهة خارجية لإكمال عملية الشراء", + "buy-crypto-title": "يبدو أن محفظتك فارغة", + "camera-access-error": "لمنح إذن الكاميرا المطلوب ، يرجى الانتقال إلى إعدادات النظام والتأكد من تحديد Status > الكاميرا.", + "can-not-add-yourself": "هذا أنت ، لبدء دردشة اختر شخصًا آخر", + "can-send-messages": "يمكنك إرسال واستقبال الرسائل الجديدة", + "cancel": "إلغاء", + "cancel-keycard-setup": "إلغاء اعداد بطاقة المفتاح", + "cancelling": "الإلغاء", + "cannot-read-card": "لا يمكن قراءة البطاقة. \n يرجى الاحتفاظ بها في الجزء الخلفي من هاتفك", + "cannot-use-default-pin": "رمز المرور 000000 غير مسموح به. \n يرجى استخدام رقم آخر", + "cant-open-public-chat": "لا يمكن فتح دردشة عامة", + "cant-report-bug": "لا يمكن الإبلاغ عن خطأ", + "card-is-blank": "هذه البطاقة فارغة", + "card-reseted": "تم إعادة تعيين البطاقة", + "card-unpaired": "تم إلغاء البطاقة من الجهاز الحاليPaired", + "category": "فئة", + "category-title": "عنوان الفئة", + "change-fleet": "تغيير الأسطول إلى {{fleet}}", + "change-logging-enabled": "هل أنت متأكد من رغبتك في {{enable}} التسجيل؟", + "change-pairing": "تغيير رمز الاقتران", + "change-pairing-description": "لا يؤثر تغيير رمز الاقتران على عمليات الاقتران الحالية. ومع ذلك ، فإن أي اقتران جديد سيتطلب رمزًا جديدًا.", + "change-pairing-title": "قم بإنشاء رمز إقران جديد", + "change-passcode": "تغيير رمز المرور", + "change-password": "تغيير كلمة المرور", + "change-pin": "تغيير رمز المرور المكون من ٦ أرقام", + "change-puk": "تغيير رمز PUK المكون من 12 رقمًا", + "change-tip": "تغيير إكرامية", + "changed-amount-warning": "تم تغيير المبلغ من {{old}} إلى {{new}}", + "changed-asset-warning": "تم تغيير الأصول من {{old}} إلى {{new}}", + "chaos-mode": "وضع فوضوي", + "chaos-unicorn-day": "الفوضى يونيكورن اليوم", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "دردشة", + "chat-and-transact": "الدردشة والمعاملة بشكل خاص مع أصدقائك.", + "chat-is-a-contact": "صديق", + "chat-is-not-a-contact": "غير صديق", + "chat-key": "مفتاح المحادثة", + "chat-key-content": "يتم إرسال واستقبال الرسائل على بروتوكول دردشة الحالة باستخدام مفاتيح التشفير. مفتاح الدردشة العامة هو سلسلة من الأحرف التي تشاركها مع الآخرين حتى يتمكنوا من إرسال رسائل إليك في الحالة.", + "chat-key-title": "مفتاح المحادثة", + "chat-link-previews": "معاينات ارتباط الدردشة", + "chat-name": "اسم الدردشة", + "chat-name-content": "ثلاث كلمات عشوائية، مشتقة من مفتاح الدردشة الخاص بك واستخدامها كاسم مستعار افتراضي في الدردشة. أسماء الدردشة هي فريدة من نوعها تماما. لا يمكن أن يكون أي مستخدم آخر له نفس الكلمات الثلاث.", + "chat-name-title": "اسم الدردشة", + "chat-notification-preferences": "إعدادات الإشعار", + "chat-settings": "إعدادات الدردشة", + "chats": "دردشات", + "check-on-block-explorer": "تحقق من مستكشف الكتل", + "check-on-opensea": "تحقق في opensea", + "check-your-recovery-phrase": "تحقق من العبارة الأولية الخاصة بك", + "choose-actions": "اختر الإجراءات", + "choose-authentication-method": "اختر طريقة المصادقة", + "choose-new-location-for-keystore": "اختيار موقع جديد لحفظ ملف متجر المفاتيح", + "choose-storage": "اختيار التخزين", + "clear": "واضح", + "clear-all": "مسح الكل", + "clear-history": "تاريخ واضح", + "clear-history-action": "واضح", + "clear-history-confirmation": "تصفية السجل", + "clear-history-confirmation-content": "هل تريد بالتأكيد محو سجل الدردشة هذا؟", + "clear-history-title": "تصفية السجل", + "cleared-chat-description-public": "كان الوضع هادئًا هنا. ابدأ المحادثة أو", + "close": "اغلاق", + "close-all": "إغلاق الكل", + "close-app-button": "تاكيد", + "close-app-content": "سيتوقف التطبيق ويغلق. عند إعادة فتحها ، سيتم استخدام الشبكة المحددة", + "close-app-title": "تحذير!", + "collectibles-leak-metadata": "يمكنك عرض NFTs الخاص بك هنا. إذا قمت بذلك ، فسوف تشارك محفظتك وعنوان IP الخاصين بك", + "command-button-send": "إرسال", + "communities": "مجتمعات", + "communities-alpha": "المجتمعات (ألفا)", + "communities-enabled": "المجتمعات التي تم تمكينها", + "communities-verified": "✓ تم التحقق من مجتمع Status", + "community": "مجتمع", + "community-color": "لون المجتمع", + "community-color-placeholder": "اختر لونًا", + "community-edit-title": "تعديل المجتمع", + "community-emoji-thumbnail-title": "المجتمع-الرموز التعبيرية-الصورة المصغرة-العنوان", + "community-image-pick": "اختر صورة", + "community-image-remove": "ازاله", + "community-image-take": "التقط صورة", + "community-info": "معلومات المجتمع", + "community-info-not-found": "لم يتم العثور على معلومات المجتمع", + "community-invite-title": "دعوه", + "community-key": "المفتاح الخاص بالمجتمع", + "community-key-placeholder": "اكتب المفتاح الخاص بالمجتمع", + "community-link": "رابط المجتمع", + "community-members": { + "zero": "عضو", + "one": "عضو", + "two": "أعضاء", + "few": "أعضاء", + "many": "أعضاء", + "other": "أعضاء" + }, + "community-members-title": "الأعضاء", + "community-message-preview": "دعوة للانضمام إلى {{community-name}}", + "community-private-key": "المفتاح الخاص بالمجتمع", + "community-requests-to-join-title": "طلبات العضوية", + "community-roles": "الأدوار", + "community-share-title": "مشاركه", + "community-thumbnail-image": "صورة مصغرة", + "community-thumbnail-upload": "تحميل", + "complete-hardwallet-setup": "هذه البطاقة مرتبطة الآن. أنت بحاجة إليها لتوقيع المعاملات وفتح مفاتيحك", + "completed": "اكمال", + "confirm": "تاكيد", + "confirm-new-password": "تأكيد كلمة المرور الجديدة", + "confirm-pairing-code-placeholder": "قم بتأكيد رمز الإقران ...", + "confirm-password-placeholder": "أكد رقمك السري...", + "confirmation-request": "طلب تأكيد", + "confirmations": "تأكيدات", + "confirmations-helper-text": "عندما تحتوي المعاملة على 12 تأكيدًا ، يمكنك اعتبارها قد تمت تسويتها.", + "connect": "الاتصال", + "connect-mailserver-content": "الاتصال على {{name}} ؟", + "connect-wallet": "الاتصال بالمحفظة", + "connected": "متصل", + "connected-to": "متصل بـ", + "connecting": "الاتصال...", + "connecting-requires-login": "الاتصال بشبكة أخرى يتطلب تسجيل الدخول", + "connection-request": "طلب اتصال", + "connection-status": "حالة الاتصال", + "connection-with-the-card-lost": "الاتصال مع البطاقة تم فقدانه", + "connection-with-the-card-lost-setup-text": "لاستئناف الإعداد ، امسك البطاقة \n الجزء الخلفي من هاتفك والحفاظ عليها \n بطاقة للاتصال عبر الهاتف", + "connection-with-the-card-lost-text": "للمتابعة ، امسك البطاقة في الجزء الخلفي من هاتفك", + "contact-code": "مفتاح المحادثة", + "contact-s": { + "zero": "متصل", + "one": "متصل", + "two": "متصلان", + "few": "متصلين", + "many": "متصلين", + "other": "متصلين" + }, + "contacts": "جهات الاتصال", + "contacts-descr": "ستظهر جهات الاتصال الخاصة بك هنا. ستتلقى تحديثات status من أي شخص تضيفه كجهة اتصال", + "contacts-empty": "ستظهر هنا جهات الاتصال التي تحمل أسماء ENS", + "continue": "استمر", + "continue-anyway": "استمر على أي حال", + "contract-address": "عنوان العقد", + "contract-interaction": "عقد التفاعل", + "contract-isnt-supported": "العقد غير مدعوم", + "copy-info": "نسخ المعلومات", + "copy-qr": "نسخ الكود", + "copy-to-clipboard": "نسخ", + "copy-transaction-hash": "نسخ معرف المعاملة", + "cost-fee": "التكلفة \/ رسوم", + "counter-9-plus": "9+", + "counter-99-plus": "99 +", + "create": "انشاء", + "create-a-pin": "قم بإنشاء رمز مرور مكون من ٦ أرقام", + "create-a-puk": "أنشئ رمز مرور المكون من 12 رقمًا", + "create-category": "إنشاء فئة", + "create-channel": "قم بإنشاء قناة", + "create-channel-title": "قناة جديدة", + "create-community": "أنشئ مجتمعًا", + "create-group-chat": "إنشاء دردشة جماعية", + "create-multiaccount": "إنشاء مفاتيح", + "create-new-key": "الحصول على مفاتيح جديدة", + "create-pin": "قم بإنشاء رمز مرور مكون من 6 أرقام", + "create-pin-description": "ستحتاج إلى بطاقتك + رمز المرور المكون من 6 أرقام لإلغاء تأمين Status وتأكيد المعاملات", + "created-group-chat-description": "لقد أنشأت المجموعة {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "العمله", + "currency-display-name-aed": "الدرهم الإماراتي", + "currency-display-name-afn": "أفغانستان الافغانيه", + "currency-display-name-ars": "بيزو أرجنتيني", + "currency-display-name-aud": "الدولار الأسترالي", + "currency-display-name-bbd": "دولار بربادوس", + "currency-display-name-bdt": "تاكا بنغلاديشي", + "currency-display-name-bgn": "ليف بلغاري", + "currency-display-name-bhd": "الدينار البحريني", + "currency-display-name-bnd": "دولار بروني دار السلام", + "currency-display-name-bob": "البوليفيانو بوليفي", + "currency-display-name-brl": "ريال برازيلي", + "currency-display-name-btn": "نغولترم البوتاني", + "currency-display-name-cad": "دولار كندي", + "currency-display-name-chf": "فرنك سويسري", + "currency-display-name-clp": "بيزو شيلي", + "currency-display-name-cny": "الصين يوان رينمنبي", + "currency-display-name-cop": "بيزو كولومبي", + "currency-display-name-crc": "كولون كوستاريكا", + "currency-display-name-czk": "كورونا تشيكية", + "currency-display-name-dkk": "كرونا دنماركي", + "currency-display-name-dop": "بيزو جمهوريه الدومينيكان", + "currency-display-name-egp": "جنيه مصري", + "currency-display-name-etb": "Birr الاثيوبي", + "currency-display-name-eur": "اليورو", + "currency-display-name-gbp": "الجنيه الإسترليني", + "currency-display-name-gel": "لاري الجورجي", + "currency-display-name-ghs": "غانا سيدي", + "currency-display-name-hkd": "دولار هونج كونج", + "currency-display-name-hrk": "Kuna كرواتيا", + "currency-display-name-huf": "فورنت هنغاري", + "currency-display-name-idr": "اندونيسيا روبية", + "currency-display-name-ils": "إسرائيل شيكل", + "currency-display-name-inr": "روبيه هندية", + "currency-display-name-isk": "أيسلندا كرونا", + "currency-display-name-jmd": "دولار جامايكا", + "currency-display-name-jpy": "الين الياباني", + "currency-display-name-kes": "الشلن الكيني", + "currency-display-name-krw": "كوريا (جنوب) وون", + "currency-display-name-kwd": "الدينار الكويتي", + "currency-display-name-kzt": "تينغ كازاخستان", + "currency-display-name-lkr": "روبيه سيريلانكية", + "currency-display-name-mad": "درهم مغربى", + "currency-display-name-mdl": "Moldovan Leu\n", + "currency-display-name-mur": "روبيه موريشيوس", + "currency-display-name-mwk": "كواشا مالاوي", + "currency-display-name-mxn": "بيزو مكسيكي", + "currency-display-name-myr": "رينغيت ماليزيا", + "currency-display-name-mzn": "موزامبيق Metical", + "currency-display-name-nad": "دولار ناميبي", + "currency-display-name-ngn": "نيره نيجيرية", + "currency-display-name-nok": "كرونة نرويجية", + "currency-display-name-npr": "روبيه نيبالية", + "currency-display-name-nzd": "الدولار النيوزيلندي ", + "currency-display-name-omr": "ريال عماني", + "currency-display-name-pen": "بيرو سول", + "currency-display-name-pgk": "كينا بابوا غينيا الجديدة", + "currency-display-name-php": "بيزو الفلبين", + "currency-display-name-pkr": "روبيه باكستانية", + "currency-display-name-pln": "زلوتي البولندية", + "currency-display-name-pyg": "باراجواي جواراني", + "currency-display-name-qar": "ريال قطري", + "currency-display-name-ron": "ليو رومانيا", + "currency-display-name-rsd": "دينار صربيا", + "currency-display-name-rub": "الروبل الروسي ، ", + "currency-display-name-sar": "الريال السعودي", + "currency-display-name-sek": "كرونة سويدية", + "currency-display-name-sgd": "دولار سينغافوري", + "currency-display-name-thb": "بات تايلندي", + "currency-display-name-try": "الليرة التركية", + "currency-display-name-ttd": "دولار ترينيداد وتوباغو", + "currency-display-name-twd": "تايوان الدولار الجديد", + "currency-display-name-tzs": "الشلن التنزاني", + "currency-display-name-uah": "أوكرانيا هريفنيا", + "currency-display-name-ugx": "الشلن الأوغندي", + "currency-display-name-usd": "دولار الولايات المتحدة", + "currency-display-name-uyu": "أوروغواي بيزو", + "currency-display-name-vef": "فنزويلا بوليفار", + "currency-display-name-vnd": "فيتنام دونغ", + "currency-display-name-zar": "راند جنوب افريقيا", + "current": "حاليه", + "current-average": "المتوسط الحالي", + "current-average-tip": "متوسط للإكرامية الحالية", + "current-base": "الأساس الحالي", + "current-base-fee": "الرسوم الأساسية الحالية", + "current-minimum-tip": "الحد الأدنى للإكرامية الحالية", + "current-network": "الشبكة الحالية", + "current-password": "كلمة السر الحالية", + "current-pin": "أدخل رمز المرور المكون من ٦ أرقام", + "current-pin-description": "أدخل رمز المرور المكون من ٦ أرقام للمتابعة", + "custom": "مجال مخصص", + "custom-networks": "شبكات مخصصة", + "custom-node": "أنت تستخدم نقطة نهاية RPC مخصصة. قد يكون سجل التحويلات المحلية الخاص بك غير مكتمل.", + "custom-seed-phrase": "العبارة غير صالحة", + "custom-seed-phrase-text-1": "هذه العبارة الأولية لا تتوافق مع قاموسنا المدعوم. تحقق من وجود أخطاء إملائية.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "قبول وفتح", + "dapp-starter-pack-description": "إليك بعض من العملة الرقمية لتبدأ! استخدمها للحصول على ملصقات ، واسم ENS و تجربت dapps", + "dapp-starter-pack-title": "حزمة المبتدئين", + "dapp-would-like-to-connect-wallet": "ترغب في الاتصال", + "dapps": "ÐApps", + "dapps-permissions": "أذونات DApp", + "dark": "داكن", + "data": "البيانات", + "data-collected": "البيانات التي تم جمعها", + "data-collected-subtitle": "يوضح الجدول أدناه البيانات الدقيقة المخزنة وسيتم إرسالها. يتم التحقق من صحة البيانات وفقا للقواعد العامة لضمان عدم إرسال أي بيانات حساسة. لا تثق، تحقق.", + "data-syncing": "مزامنة البيانات", + "database-reset-content": "تم حذف الدردشات وجهات الاتصال والإعدادات. يمكنك استخدام حسابك مع بطاقة المفاتيح الخاص بك", + "database-reset-title": "إعادة تعيين قاعدة البيانات", + "database-reset-warning": "ستتم إعادة تعيين قاعدة البيانات. سيتم حذف الدردشات وجهات الاتصال والإعدادات", + "datetime-ago": "منذ", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "zero": "يوم", + "one": "يوم", + "two": "يومان", + "few": "أيام", + "many": "أيام", + "other": "أيام" + }, + "datetime-day-short": { + "zero": "0", + "one": "1", + "two": "2", + "few": "قليل", + "many": "كثير", + "other": "آخر" + }, + "datetime-hour": { + "zero": "ساعة", + "one": "ساعة", + "two": "ساعتان", + "few": "ساعات", + "many": "ساعات", + "other": "ساعات" + }, + "datetime-hour-short": { + "zero": "صفر", + "one": "واحد", + "two": "اثنان", + "few": "قليل", + "many": "كثير", + "other": "آخر" + }, + "datetime-minute": { + "zero": "دقيقة", + "one": "دقيقة", + "two": "دقائق", + "few": "دقائق", + "many": "دقائق", + "other": "دقائق" + }, + "datetime-minute-short": { + "zero": "صفر", + "one": "واحد", + "two": "اثنان", + "few": "قليل", + "many": "كثير", + "other": "آخر" + }, + "datetime-second": { + "zero": "ثانية", + "one": "ثانية", + "two": "ثواني", + "few": "ثواني", + "many": "ثواني", + "other": "ثواني" + }, + "datetime-second-short": { + "zero": "0", + "one": "1", + "two": "2", + "few": "", + "many": "", + "other": "" + }, + "datetime-today": "اليوم", + "datetime-yesterday": "أمس", + "decimals": "الكسور العشرية", + "decline": "رفض الدعوة", + "decryption-failed-content": "حدث خطأ في فك تشفير بياناتك. قد تحتاج إلى مسح بياناتك القديمة وإنشاء حساب جديد. انقر على \"تطبيق\" لمحو أو \"إلغاء\" للمحاولة مرة أخرى", + "default": "افتراضي", + "default-assets": "الافتراضي ERC20 و ERC721", + "default-sync-period": "سجل المزامنة لـ", + "delete": "حذف", + "delete-account": "حذف حسابي", + "delete-and-leave-group": "حذف وترك المجموعة", + "delete-bootnode": "حذف عقدة البوت", + "delete-bootnode-are-you-sure": "هل أنت متأكد أنك تريد حذف bootnode؟", + "delete-bootnode-title": "حذف عقدة البوت", + "delete-category-confirmation": "هل أنت متأكد أنك تريد حذف هذه الفئة؟", + "close-chat": "حذف الدردشة", + "close-chat-confirmation": "هل أنت متأكد أنك تريد حذف هذه الدردشة؟", + "delete-confirmation": "حذف؟", + "delete-keys-keycard": "حذف المفاتيح من بطاقة المفتاح", + "delete-mailserver": "حذف عقدة Status", + "delete-mailserver-are-you-sure": "هل أنت متأكد أنك تريد حذف عقدة Status هذه؟", + "delete-mailserver-title": "حذف عقدة Status", + "delete-message": "حذف الرسالة", + "delete-my-account": "حذف حسابي", + "delete-my-profile": "حذف ملفي الشخصي", + "delete-network-confirmation": "هل أنت متأكد أنك تريد حذف هذه الشبكة؟", + "delete-network-error": "يرجى الاتصال بشبكة مختلفة قبل حذف هذه الشبكة", + "delete-network-title": "حذف الشبكة؟", + "delete-node": "حذف العقدة", + "delete-node-are-you-sure": "هل أنت متأكد أنك تريد حذف هذه العقدة؟", + "delete-node-title": "حذف العقدة", + "delete-profile": "حذف الملف الشخصي", + "delete-profile-warning": "تحذير: إذا لم تكن لديك العبارة الأولية مكتوبة ، فستفقد الوصول إلى أموالك بعد حذف ملفك الشخصي", + "deny": "رفض", + "derivation-path": "مسار الاشتقاق", + "describe-channel": "وصف القناة", + "description": "وصف", + "dev-mode": "وضع التنمية", + "dev-mode-settings": "وضع التنمية", + "device-syncing": "مزامنة الجهاز", + "devices": "الأجهزة", + "disable": "تعطيل", + "disable-all": "تعطيل الكل", + "disable-later-in-settings": "يمكنك تعطيل هذا لاحقًا في الإعدادات", + "disabled": "معطل", + "disconnect": "قطع الاتصال", + "disconnected": "الدردشة غير متصلة بالأنترنت\n", + "discover": "اكتشاف", + "dismiss": "استبعاد", + "display-collectibles": "عرض المقتنيات", + "done": "فعله", + "dont-ask": "لا تسألني مرة أخرى", + "edit": "تصحيح", + "edit-categories": "تحرير الفئات", + "edit-channel-title": "تحرير القناة", + "edit-chats": "تصحيح الدردشات", + "edit-community": "تعديل المجتمع", + "edit-favourite": "تعديل المفضلة", + "edit-group": "تعديل المجموعة", + "edit-profile": "تعديل الملف الشخصي", + "edited": "تم التعديل", + "editing-message": "تعديل الرسالة", + "empty-activity-center": "إشعارات الدردشة الخاصة بك\n سيظهر هنا", + "empty-chat-description": "لا توجد رسائل \nفي هذه الدردشة حتى الآن", + "empty-chat-description-community": "لقد كان الوضع هادئًا هنا في آخر{{quiet-hours}} .", + "empty-chat-description-one-to-one": "يتم تشفير أي رسائل ترسلها هنا ولا يمكن قراءتها إلا من قبل أنت و", + "empty-chat-description-public": "لقد كانت هادئة هنا لآخر {{quiet-hours}} . ابدأ المحادثة أو", + "empty-chat-description-public-share-this": "مشاركه هذه المحادثة.", + "empty-keycard-required": "يتطلب بطاقة مفتاح فارغة", + "empty-pending-invitations-descr": "الأشخاص الذين يرغبون في الانضمام إلى المجموعة \n عبر رابط دعوة سيظهر هنا", + "empty-tab": "علامة تبويب فارغة", + "enable": "تمكين", + "enable-all": "تمكين الكل", + "enable-link-previews": "تمكين معاينات الارتباط في الدردشة؟", + "encrypt-with-password": "تشفير مع كلمة المرور", + "ens-10-SNT": "10 SNT", + "ens-add-username": "أضافه اسم مستخدم", + "ens-agree-to": "توافق على ", + "ens-chat-settings": "إعدادات الدردشة", + "ens-custom-domain": "مجال مخصص", + "ens-custom-username-hints": "اكتب اسم المستخدم بالكامل بما في ذلك المجال المخصص مثل username.domain.eth", + "ens-custom-username-taken": "اسم المستخدم لا ينتمي إليك :(", + "ens-deposit": "ايداع", + "ens-dismiss-message": "انقر هنا للرفض", + "ens-displayed-with": "يتم عرض الرسائل الخاصة بك للآخرين مع", + "ens-get-name": "الحصول علي اسم مستخدم عالمي", + "ens-got-it": "حسنا، تابع", + "ens-locked": "اسم المستخدم مقفل. لن تتمكن من إصداره حتى {{date}}", + "ens-name-content": "اسم مستعار مخصص لمفتاح الدردشة الذي يمكنك تسجيله باستخدام خدمة Ethereum Name Service. أسماء ENS هي أسماء مستخدمين لا مركزية.", + "ens-name-not-found": "لا يمكن تحليل اسم ENS", + "ens-name-title": "اسم ENS", + "ens-network-restriction": "متوفر فقط على Mainnet", + "ens-no-usernames": "ليس لديك اي اسم مستخدم متصل", + "ens-powered-by": "مدعوم من Ethereum اسم الخدمات", + "ens-primary-username": "اسم المستخدم الأساسي", + "ens-register": "تسجيل", + "ens-registration-failed": "لتسجيل اسم المستخدم ، يرجى المحاولة مرة أخرى.", + "ens-registration-failed-title": "فشلت المعاملة", + "ens-registration-failure": "فشل التسجيل", + "ens-registration-in-progress": "جاري التسجيل...", + "ens-release-username": "الإفراج عن اسم المستخدم", + "ens-remove-hints": "سيؤدي الاستمرار إلى ربط اسم المستخدم هذا بمفتاحك.", + "ens-remove-username": "إزالة اسم المستخدم", + "ens-saved": "متصل الآن بالمفتاح الخاص ويمكن استخدامه في Status.", + "ens-saved-title": "اسم المستخدم المضاف", + "ens-show-username": "عرض اسم مستخدم ENS الخاص بي في الدردشات", + "ens-terms-header": "شروط تسجيل الاسم", + "ens-terms-point-1": "تودع الأموال لمدة 1 سنة. سيتم قفل SNT الخاص بك ، ولكن لا تنفق.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS Registry).", + "ens-terms-point-2": "بعد عام واحد ، يمكنك تحرير الاسم واسترداد مقدمك ، أو عدم اتخاذ أي إجراء للحفاظ على الاسم.", + "ens-terms-point-3": "إذا تغيرت شروط العقد-علي سبيل المثال الحالة التي تجعل ترقيات العقد-يحق للمستخدم الإفراج عن اسم المستخدم بغض الزمن عن الوقت المحتفظ به.", + "ens-terms-point-4": "لا يمكن لوحده تحكم العقد الوصول إلى أموالك المودعة. يمكن نقلها فقط إلى العنوان الذي أرسلها.", + "ens-terms-point-5": "سيتم ربط عنوانك (عناوينك) علنا باسم ENS الخاص بك.", + "ens-terms-point-6": "يتم إنشاء أسماء المستخدمين على هيئة نطاقات فرعية لـ stateofus.eth وتخضع لشروط العقد الذكية لـ ENS.", + "ens-terms-point-7": "يمكنك تخويل العقد لنقل SNT نيابة عنك. يمكن ان يحدث هذا فقط عند الموافقة علي معامله لتخويل النقل.", + "ens-terms-point-8": "هذه الشروط مضمونة في منطق العقد الذكية في العناوين:", + "ens-terms-point-9": "{{address}} (اسم مستخدم Status )", + "ens-terms-registration": "شروط تسجيل الاسم.", + "ens-test-message": "مرحبا", + "ens-transaction-pending": "المعاملة جارية ...", + "ens-understand": "أدرك أن عنوان محفظتي سيكون مرتبطًا بشكل عام باسم المستخدم الخاص بي.", + "ens-username": "اسم المستخدم ENS", + "ens-username-already-added": "اسم المستخدم مرتبط بالفعل بالمفتاح الخاص بك ويمكن استخدامه في الحالة.", + "ens-username-available": "✓ اسم المستخدم متاح!", + "ens-username-connected": "اسم المستخدم هذا مملوك لك ومتصل بمفتاح الدردشة الخاص بك.", + "ens-username-connected-continue": "استمر في ضبط `إظهار اسم مستخدم ENS الخاص بي في المحادثات '.", + "ens-username-connected-with-different-key": "ستتطلب المتابعة معاملة لتوصيل اسم المستخدم بالمفتاح الحالي", + "ens-username-connection-confirmation": "سيتم ربط {{username}} بمجرد اكتمال المعاملة.", + "ens-username-hints": "ما لا يقل عن ٤ أحرف. الحروف اللاتينية والأرقام والأحرف الصغيرة فقط.", + "ens-username-invalid": "الحروف والأرقام فقط.", + "ens-username-invalid-name-warning": "انتهت عملية تسجيل أحد أسماء ens الخاصة بك في حالة غير صالحة. لا تستخدم اسم معاملات المحفظة وتواصل مع دعمنا على support@status.im", + "ens-username-owned": "✓ اسم المستخدم هو مملوك لك. ", + "ens-username-owned-continue": "سيؤدي الاستمرار إلى ربط اسم المستخدم هذا بمفتاحك الخاص.", + "ens-username-registration-confirmation": "لطيف! أنت تملك {{username}} بمجرد اكتمال المعاملة.", + "ens-username-registration-invalid": "تحذير! انتهت عملية التسجيل في حالة غير صالحة. لا تستخدم اسم معاملات المحفظة وتواصل مع دعمنا على support@status.im", + "ens-username-taken": "الاسم مستخدم من قبل :(", + "ens-username-you-can-follow-progress": "يمكنك متابعة التقدم المحرز في قسم سجل المعاملات في محفظتك.", + "ens-usernames": "أسماء المستخدمين ENS", + "ens-usernames-details": "تسجيل اسم مستخدم عالمي ليتم التعرف عليه بسهولة من قبل المستخدمين الآخرين", + "ens-want-custom-domain": "أنا أملك اسمًا في مجال آخر", + "ens-want-domain": "أريد مجال Stateofus.eth", + "ens-welcome-hints": "تقوم أسماء ENS بتحويل هذه العناوين المجنونة إلى أسماء مستخدمين فريدة.", + "ens-welcome-point-customize": "يمكن أن يحل اسم ENS محل اسمك العشوائي المكون من 3 كلمات في الدردشة. اسمك بدلاً من {{name}} .", + "ens-welcome-point-customize-title": "تخصيص اسم الدردشة الخاصة بك", + "ens-welcome-point-receive": "يمكن للآخرين إرسال الأموال إليك عبر الدردشة في خطوة واحدة بسيطة.", + "ens-welcome-point-receive-title": "استلام المعاملات في الدردشة", + "ens-welcome-point-register": "سجل مرة واحدة للحفاظ على الاسم للأبد. بعد عام واحد ، يمكنك إطلاق الاسم واستعادة SNT.", + "ens-welcome-point-register-title": "10 SNT للتسجيل", + "ens-welcome-point-simplify": "يمكنك تلقي الأموال إلى اسم ENS سهل المشاركة بدلاً من التجزئة السداسية العشرية (0x ...).", + "ens-welcome-point-simplify-title": "تبسيط عنوان ETH الخاص بك", + "ens-welcome-point-verify": "يمكنك التحقق من وإضافة أي أسماء مستخدمين تمتلكها في الخطوات التالية.", + "ens-welcome-point-verify-title": "هل تملك اسم مستخدم بالفعل ؟", + "ens-your-username": "اسم المستخدم الخاص بك", + "ens-your-usernames": "أسماء المستخدمين الخاصة بك", + "ens-your-your-name": "اسم ENS الخاص بك", + "enter-12-words": "أدخل 12 كلمة من العبارة الأولية ، مفصولة بمسافات واحدة", + "enter-a-private-key": "إدخال مفتاح خاص", + "enter-a-seed-phrase": "أدخل العبارة الأولية", + "enter-address": "أدخل العنوان", + "enter-contact-code": "ENS (dynamicik94) أو مفتاح الدردشة (0x04…)", + "enter-pair-code": "أدخل رمز الاقتران الخاص بك", + "enter-pair-code-description": "يمكن تعيين رمز الاقتران من عميل Status المقترن مسبقا", + "enter-password": "أدخل كلمة المرور", + "enter-password-migration-prompt": "أدخل كلمة المرور الخاصة بك لنقل جهات الاتصال والمحادثات والإعدادات جنبًا إلى جنب مع المفاتيح الخاصة بك", + "enter-pin": "أدخل رمز المرور المكون من ٦ أرقام", + "enter-puk-code": "أدخل رمز PUK", + "enter-puk-code-description": "تم حظر رمز المرور المكون من ٦ أرقام. الرجاء إدخال رمز PUK لإلغاء قفل رمز المرور.", + "enter-recipient-address-or-username": "أدخل عنوان أو اسم مستخدم المستلم", + "enter-seed-phrase": "أدخل العبارة الأولية", + "enter-url": "أدخل عنوان URL", + "enter-user-pk": "أدخل المفتاح العام للمستخدم", + "enter-watch-account-address": "امسح رمز الاستجابة السريعة ضوئيًا \n أو \n أدخل العنوان لمشاهدته", + "enter-word": "أدخل كلمة", + "enter-your-code": "أدخل رمز المرور المكون من 6 أرقام", + "enter-your-password": "ادخل رقمك السري", + "error": "خطأ", + "error-unable-to-get-balance": "غير قادر على الحصول على التوازن", + "error-unable-to-get-prices": "خطأ في تحويل العملة. قم بتجديد الشاشة للمحاولة مرة أخرى.", + "error-unable-to-get-token-balance": "غير قادر علي الحصول علي رصيد الرمز المميز", + "errors": "أخطاء", + "eth": "ETH", + "ethereum-account": "حساب الإيثريوم", + "ethereum-address": "عنوان الإيثريوم", + "ethereum-node-started-incorrectly-description": "تم بدء عقدة إيثيريوم بتكوين غير صحيح ، وسيتم إيقاف التطبيق للتعافي من هذا الشرط. معرف {{network-id}} = network id ، الفعلي = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "بدأت عقدة Ethereum بشكل غير صحيح", + "etherscan-lookup": "إبحث في Etherscan ", + "everyone": "الجميع", + "expand-all": "توسيع الكل", + "export-account": "حساب التصدير", + "export-key": "استخراج المفتاح الخاص", + "external-storage-denied": "تم رفض الوصول إلى وحدة التخزين الخارجية", + "failed": "فشل", + "faq": "الاسئله المتداولة", + "fast": "سريع", + "favourite": "المفضله", + "favourite-description": "ستظهر مواقع الويب المفضلة لديك هنا", + "favourites": "المفضلة", + "favourites-empty": "ستظهر العناوين التي تمت إضافتها إلى المفضلة هنا", + "fee-cap": "سقف الرسوم", + "fee-explanation": "الحد الأقصى للسعر الإجمالي للمعاملة. إذا تجاوزت رسوم الكتلة الأساسية هذا ، فسيتم تضمينها في الكتلة التالية برسوم أساسية أقل.", + "fee-options": "خيارات الرسوم المقترحة", + "fetch-community": "جلب المجتمع", + "fetch-messages": "↓ جلب الرسائل", + "fetch-timeline": "↓ جلب", + "fetching-community": "إحضار المجتمع ...", + "find": "العثور", + "finish": "إنهاء", + "finishing-card-setup": "الانتهاء من إعداد البطاقة", + "fleet": "اسطول", + "fleet-settings": "إعدادات الأسطول", + "follow": "اتبع", + "follow-your-interests": "اتبع اهتماماتك في واحده من العديد من المحادثات العامة", + "free": "↓ مجاني", + "from": "من عند", + "gas-amount-limit": "حد كمية الغاز", + "gas-limit": "حد الغاز", + "gas-price": "سعر الغاز", + "gas-used": "الغاز المستخدم", + "generate-a-key": "إنشاء مفاتيح", + "generate-a-new-account": "إنشاء حساب", + "generate-a-new-key": "إنشاء مفتاح جديد", + "generate-account": "إنشاء مفتاح خاص", + "generate-an-account": "إنشاء حساب", + "generate-new-key": "إنشاء مفتاح", + "generating-codes-for-pairing": "> تنزيل برنامج المنتج على البطاقة \n > توليد رموز القفل والاقتران", + "generating-keys": "يتم الآن إنشاء مفاتيح...", + "generating-mnemonic": "توليد عبارة ذاكرة", + "get-a-keycard": "احصل على بطاقة المفتاح", + "get-started": "البدء", + "get-status-at": "الحصول على Status في http:\/\/status.im", + "get-stickers": "الحصول على ملصقات", + "give-a-short-description": "قدم وصفًا موجزًا", + "give-a-short-description-community": "أعطها وصفا موجزا", + "give-permissions-camera": "إعطاء الإذن\nللوصول إلى الكاميرا", + "glossary": "المعجم", + "go-to-settings": "انتقل إلى الإعدادات...", + "got-it": "فهمت ذلك", + "grant-face-id-permissions": "لمنح إذن Face ID المطلوب ، يرجى الانتقال إلى إعدادات النظام والتأكد من تحديد الحالة > Face ID", + "group-chat": "دردشة جماعيه", + "group-chat-admin": "المشرف", + "group-chat-admin-added": "* {{member}} * أصبح مشرفًا مسؤولا", + "group-chat-all-contacts-invited": "جميع جهات الاتصال الخاصة بك موجودة بالفعل في المجموعة", + "group-chat-created": "* {{member}} * أنشأ هذا الشخص المجموعة * {{name}} *", + "group-chat-decline-invitation": "رفض الدعوة", + "group-chat-member-added": "* {{member}} * تمت دعوة هذا الشخص", + "group-chat-member-joined": "* {{member}} * انضم هذا الشخص إلى المجموعة", + "group-chat-member-removed": "* {{member}} * غادر المجموعة", + "group-chat-members-count": "{{selected}} \/ {{max}} أعضاء", + "group-chat-name-changed": "** {{member}} ** غير هذا الشخص اسم المجموعة إلى ** {{name}} **", + "group-chat-no-contacts": "ليس لديك أي جهات اتصال حتى الآن. \n قم بدعوة أصدقائك لبدء الدردشة", + "group-info": "معلومات المجموعة", + "group-invite": "دعوة المجموعة", + "group-invite-link": "رابط دعوة المجموعة", + "group-membership-request": "طلب عضوية المجموعة", + "gwei": "غواي", + "has-permissions": "لديه إذن بالوصول", + "hash": "رموز التجزئة\n", + "help": "مساعدة", + "help-capitalized": "مساعدة", + "help-center": "مركز المساعدة", + "help-improve-status": "المساعدة في تحسين Status", + "hide": "إخفاء", + "hide-content-when-switching-apps": "إخفاء معاينات الحالة عند تبديل التطبيق", + "hide-content-when-switching-apps-ios": "إخفاء المعاينة", + "history": "التاريخ", + "history-nodes": "عقد Status", + "hold-card": "امسك البطاقة في الخلف \n من هاتفك", + "home": "الصفحة الرئيسية", + "hooks": "السنانير", + "how-it-works": "كيف يعمل", + "http-gateway-error": "عفوًا ، فشل الطلب!", + "identifier": "معرف", + "image": "صورة", + "image-remove-current": "ازل الصوره الحاليه", + "image-source-gallery": "اختر من المعرض", + "image-source-make-photo": "التقاط", + "image-source-title": "تحرير الصورة", + "import": "استيراد", + "import-community": "استيراد مجتمع", + "import-community-title": "استيراد مجتمع", + "in-contacts": "في الاتصالات", + "include": "يشمل", + "incoming": "الوارده", + "incoming-transaction": "المعاملات الواردة", + "incorrect-code": [ + "str", + "آسف الرمز غير صحيح ، يرجى إدخاله مرة أخرى" + ], + "increase-gas": "زيادة الغاز", + "initialization": "التهيئة", + "install": "↓ تثبيت", + "insufficient-balance-to-cover-fee": "لا يوجد رصيد كافٍ لتغطية رسوم المعاملة", + "intro-message1": "مرحبًا بك في Status! \n انقر فوق هذه الرسالة لتعيين كلمة المرور الخاصة بك والبدء.", + "intro-privacy-policy-note1": "الحالة لا تجمع أو تشارك أو تبيع أي بيانات شخصية. من خلال الاستمرار أنت توافق على ذلك", + "intro-privacy-policy-note2": "سياسة الخصوصية", + "intro-text": "Status هي بوابتك إلى الويب اللامركزي", + "intro-text1": "منصة مفتوحة للدردشة بشكل آمن والتعامل مع Ethereum blockchain", + "intro-text2": "تم إعداد الحساب المتعدد الخاص بك. من فضلك لا تنسى أن نسجل نسخة احتياطية من العبارة الأولية في ملف التعريف الخاص", + "intro-text3": "تم إعداد الحساب المتعدد الخاص بك. من فضلك لا تنسى أن نسجل نسخة احتياطية من العبارة الأولية في ملف التعريف الخاص", + "intro-title1": "الاتصالات الخاصة حقا", + "intro-title2": "محفظة آمنة", + "intro-title3": "التطبيقات اللامركزية", + "intro-wizard-text1": "هويتك آمنة حسب التصميم. تحصل على مفتاح تشفير تم إنشاؤه", + "intro-wizard-text2": "هذا الاسم هو هويتك في الحالة. لا يمكن تغييره بمجرد اختياره.", + "intro-wizard-text3": "يتم تخزين المفتاح الخاص بك محليا. لا يوجد نسخة، فقط لديك حق الوصول.", + "intro-wizard-text4": "تأمين وتشفير المفتاح الخاص", + "intro-wizard-text6": "ستعلمك الحالة بالرسائل الجديدة. يمكنك تعديل تفضيلات الإشعارات الخاصة بك لاحقًا في الإعدادات", + "intro-wizard-title-alt4": "إنشاء كلمه مرور", + "intro-wizard-title-alt5": "تاكيد كلمه المرور", + "intro-wizard-title1": "احصل علي مفتاح", + "intro-wizard-title2": "اختيار اسم دردشة", + "intro-wizard-title3": "اختيار تخزين المفاتيح", + "intro-wizard-title4": "إنشاء رمز مرور مكون من 6 أرقام", + "intro-wizard-title5": "تأكيد رمز المرور", + "intro-wizard-title6": "تمكين الإشعارات", + "introduce-yourself": "قدم نفسك برسالة مختصرة", + "invalid-address-qr-code": "لا يحتوي رمز QR الممسوح ضوئيًا على عنوان صالح", + "invalid-format": "تنسيق غير صالح \n يجب أن يكون {{format}}", + "invalid-key-confirm": "تطبيق", + "invalid-key-content": "لا يمكن تشفير قاعدة البيانات لأن الملف تالف. أموالك ومفتاح الدردشة آمنان. لا يمكن استعادة البيانات الأخرى ، مثل الدردشات وجهات الاتصال الخاصة بك.\"{{erase-multiaccounts-data-button-text}} \" الزر ، سيزيل جميع البيانات الأخرى ويسمح لك بالوصول إلى أموالك وإرسال الرسائل", + "invalid-number": "رقم غير صالح", + "invalid-pairing-password": "كلمة مرور الاقتران غير صالحة", + "invalid-public-chat-topic": "موضوع دردشة عامة غير صالح", + "invalid-range": "التنسيق غير صالح ، يجب أن يكون بين {{min}} و {{max}}", + "invalid-username-or-key": "اسم المستخدم أو مفتاح الدردشة غير صالح", + "invite": "دعوه", + "invite-button": "دعوه", + "invite-chat-accept": "قبول", + "invite-chat-accept-join": "قبول والانضمام", + "invite-chat-intro": "تمت إحالتك من قبل صديق للانضمام إلى Status. إليك بعض من العملة الرقمية لتبدأ! استخدمه لتسجيل اسم ENS أو شراء حزمة ملصقات", + "invite-chat-name": "إحالة صديق", + "invite-chat-pending": "المعلقه", + "invite-chat-rule": "سيؤدي القبول أيضًا إلى مكافأة صديقك بمكافأة إحالة بالعملة الرقمية", + "invite-chat-starter-pack": "حزمة المبتدئين", + "invite-friends": "دعوه الأصدقاء", + "invite-instruction-fifth": "يمكنك اختيار استرداد مكافأة الإحالة الخاصة بك في أي وقت.", + "invite-instruction-first": "يمكنك إرسال رابط دعوة فريد إلى صديقك لتنزيل Status والانضمام إلينا", + "invite-instruction-fourth": "تتلقى مكافأة الإحالة الخاصة بك وصديقك حزمة المبتدئين", + "invite-instruction-second": "قاما صديقك بتنزيل الحالة وإنشاء حساب (على اندرويد)", + "invite-instruction-third": "يتم بدء محادثة مع صديقك، حيث يؤكدون الإحالة الخاصة بك", + "invite-people": "دعوة الأشخاص", + "invite-privacy-policy-public": "قمت بتثبيت Status من خلال رابط إحالة. من خلال الانضمام إلى هذه الدردشة ، فإنك تنسب الإحالة وتوافق على", + "invite-privacy-policy1": "بقبولك فإنك توافق على برنامج الإحالة", + "invite-privacy-policy2": "الشروط والأحكام.", + "invite-public-chat-home": "دعوة الإحالة", + "invite-public-chat-intro": "إليك بعض العملات المشفرة لتبدأ! استخدمه لتسجيل اسم ENS أو شراء حزمة ملصقات", + "invite-receive-account": "حساب لتلقي مكافأة الإحالة الخاصة بك", + "invite-reward": "اربح عملة مشفرة عن كل صديق تقوم بدعوته!", + "invite-reward-friend": "صديق:", + "invite-reward-friend-description": "سيتلقى صديقك حزمة مبتدئة تتكون من بعض {{reward}} للبدء", + "invite-reward-friend-name": "حزمة المبتدئين", + "invite-reward-you": "أنت:", + "invite-reward-you-description": "ادعُ صديقًا واحصل على {{reward}} كمكافأة إحالة. استخدمه للحصول على ملصقات واسم ENS وجرب التطبيقات اللامركزية", + "invite-reward-you-name": "مكافأة الإحالة", + "invite-select-account": "اختار حسابًا لتلقي مكافأة الإحالة الخاصة بك", + "invite-warning": "هذا العرض الترويجي صالح فقط لمستخدمي جهاز اندرويد غير المقيمين في الولايات المتحدة. يحتاج الصديق إلى تأكيد الإحالة في غضون 7 أيام", + "invited": "دعا", + "join": "انضم", + "join-a-community": "أو الانضمام إلى المجتمع", + "join-group-chat": "الانضمام إلى المجموعة", + "join-group-chat-description": "{{username}} دعوتك للانضمام إلى المجموعة {{group-name}}", + "join-me": "مرحبًا ، انضم إلي في Status: {{url}}", + "join-new-private-chat": "ابدأ محادثة خاصة جديدة", + "join-new-public-chat": "انضم إلى محادثة عامة", + "joined": "انضم", + "joined-group-chat-description": "لقد انضممت إلى {{group-name}} من دعوة {{username}}", + "key": "مفتاح", + "key-managment": "إدارة المفاتيح", + "key-on-device": "تم حفظ المفتاح الخاص على هذا الجهاز", + "keycard": "بطاقة المفتاح", + "keycard-access-reset": "تتم إعادة تعيين الوصول إلى بطاقة المفتاح", + "keycard-applet-install-instructions": "لتثبيت التطبيق الصغير ، يرجى اتباع التعليمات على https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "حاول تحريك البطاقة للعثور على قارئ NFC على جهازك", + "keycard-awaiting-title": "البحث جاري", + "keycard-backup": "قم بإنشاء بطاقة مفاتيح احتياطية", + "keycard-backup-success-body": "تم إنشاء بطاقة النسخ الاحتياطي بنجاح. يمكنك الآن استخدامه مع حسابك تمامًا مثل البطاقة الأساسية.", + "keycard-backup-success-title": "تم النسخ الاحتياطي بنجاح", + "keycard-blocked": "تم حظر بطاقة مفتاح. \n تحتاج إلى إعادة تعيين البطاقة لمتابعة استخدامها.", + "keycard-can-use-with-new-passcode": "يمكنك استخدام هذه البطاقة مع رمز المرور الجديد الخاص بك", + "keycard-cancel-setup-text": "سيؤدي هذا إلى إلغاء إعداد لوحة المفاتيح. يوصى بشدة بإنهاء الإعداد من أجل استخدام لوحة المفاتيح. هل تريد حقًا الإلغاء؟", + "keycard-cancel-setup-title": "عملية خطيرة", + "keycard-connected-description": "حاول إبقاء البطاقة ثابتة", + "keycard-connected-title": "متصل", + "keycard-desc": " سوف تحتاج إلى الحصول على بطاقة المفاتيح اندرويد فقط.", + "keycard-dont-ask-card": "لا تسأل عن بطاقة لتسجيل الدخول", + "keycard-enter-new-passcode": "أدخل رمز المرور الجديد {{step}}\/ 2 ", + "keycard-error-description": "قم بتوصيل البطاقة مرة أخرى للمتابعة", + "keycard-error-title": "انقطع الاتصال", + "keycard-factory-reset": "إرجاع البطاقة إلى إعدادات المصنع", + "keycard-factory-reset-text": "سيؤدي القيام بذلك إلى حذف أي عبارة ذاكرة مخزنة على البطاقة. تأكد من أن لديك نسخة احتياطية من عبارة ذاكري التي كنت تستخدمها مع Keycard هذه.", + "keycard-factory-reset-title": "هل أنت متأكد أنك تريد إجراء إعادة ضبط المصنع؟", + "keycard-free-pairing-slots": "يحتوي Keycard على {{n}} فتحات إقران مجانية", + "keycard-has-multiaccount-on-it": "هذه البطاقة ممتلئة. يمكن لكل بطاقة عقد زوج مفاتيح رئيسي واحد", + "keycard-init-description": "ضع البطاقة في الجزء الخلفي من هاتفك للمتابعة", + "keycard-init-title": "جارٍ البحث عن بطاقات ...", + "keycard-is-blocked-details": "لم يعد بإمكانك استخدام هذه البطاقة للوصول إلى هذا الحساب أو تسجيل الدخول إليه. هناك عدد كبير جدًا من محاولات رمز المرور ومحاولة PUK الفاشلة.", + "keycard-is-blocked-instructions": "للوصول إلى حسابك سوف تحتاج إلى مصنع إعادة تعيين بطاقتك. اضغط على الزر أدناه لبدء الإجراء، وسوف تحتاج الذاكرة الخاصة بك.", + "keycard-is-blocked-title": "تم حظر بطاقة المفتاح", + "keycard-is-frozen-details": "لحماية أصولك، يتم تجميد بطاقتك. أعد ضبط بطاقتك لإلغاء تجميدها وتمكن من إرسال المعاملات. يمكنك القيام بذلك مع PUK الخاص بك أو الذاكرة الخاصة بك.", + "keycard-is-frozen-factory-reset": "إعادة تعيين مع الذاكرة", + "keycard-is-frozen-reset": "إعادة الضبط مع PUK", + "keycard-is-frozen-title": "تم تجميد بطاقة المفتاح", + "keycard-onboarding-finishing-header": "الانتهاء من", + "keycard-onboarding-intro-header": "تخزين المفتاح الخاص علي بطاقة المفاتيح", + "keycard-onboarding-intro-text": "استعد ، قد يستغرق هذا بضع دقائق ، ولكن من المهم تأمين حسابك", + "keycard-onboarding-mnemonic-text": "ستحتاج أيضا إلى قطعة من الورق وقلم رصاص لكتابة عبارة البذور الخاصة بك.", + "keycard-onboarding-pairing-header": "يتم الآن اقران البطاقة...", + "keycard-onboarding-pin-text": "ستحتاج إلى إنشاء رمز مرور مكون من 6 أرقام والذي سيتم استخدامه لحماية الوصول إلى بطاقة Keycard الخاصة بك.", + "keycard-onboarding-preparing-header": "يتم الآن اعداد البطاقة...", + "keycard-onboarding-puk-code-header": "اكتب الرموز لأسفل \n وتخزينها بشكل آمن", + "keycard-onboarding-recovery-phrase-description": "مع هذه العبارة الأولية، يمكنك دائمًا استعادة مفتاحك. اكتب عبارة بذور أسفل. احتفظ به آمنًا، في وضع عدم الاتصال، وفصله عن هذا الجهاز.", + "keycard-onboarding-recovery-phrase-header": "النسخ الاحتياطي للعبارة الأولية", + "keycard-onboarding-recovery-phrase-text": "فقط لاجل عينيك. هذه هي العبارة السحرية المستخدمة لإنشاء مفتاحك.", + "keycard-onboarding-start-header": "امسك البطاقة في الخلف \n من هاتفك للبدء", + "keycard-onboarding-start-step1": "إنشاء رمز المرور", + "keycard-onboarding-start-step1-text": "حوالي ١ دقيقة. قم بإنشاء رمز مرور مكون من ٦ أرقام لتشفير المفاتيح", + "keycard-onboarding-start-step2": "اكتب في الاسفل PUK ورمز الاقتران", + "keycard-onboarding-start-step2-text": "حوالي دقيقه واحده. ستحتاج إلى قطعه من الورق وقلم رصاص لذلك", + "keycard-onboarding-start-step3": "نسخ احتياطي لعبارة البذور", + "keycard-onboarding-start-step3-text": "حوالي ١ دقيقة. أيضا قطعة من الورق وقلم رصاص ضرورية", + "keycard-onboarding-start-text": "والحفاظ على بطاقة للاتصال عبر الهاتف أثناء الإعداد. سيستغرق الإعداد حوالي 4 دقائق", + "keycard-processing-description": "حاول إبقاء البطاقة ثابتة", + "keycard-processing-title": "معالجة...", + "keycard-recover": "بطاقة مفقودة أو مجمدة؟", + "keycard-recover-text": "إذا كانت لديك عبارة ذاكري ، يمكنك إنشاء Keycard جديدة مرتبطة بهذا الحساب. يمكنك استخدام Keycard جديدة أو إعادة ضبط المصنع على بطاقة مجمدة.", + "keycard-recover-title": "إنشاء بطاقة جديدة لهذا الحساب؟", + "keycard-recovery-intro-button-text": "بدء الاسترداد", + "keycard-recovery-intro-header": "استعادة مفتاح مخزن على بطاقة مفتاح", + "keycard-recovery-intro-text": "إذا قمت بإنشاء مفتاح باستخدام بطاقة مفتاح من قبل وتريد الآن استخدام هذا المفتاح الخاص", + "keycard-recovery-no-key-header": "لا يوجد شيىء لاسترجاعه هنا", + "keycard-recovery-no-key-text": "لا تحتوي بطاقة مفتاح على أي مفتاح مخزّن. من أجل استخدامه، قم بإنشاء مفتاح جديد واختر بطاقة مفتاح لتخزين المفتاح", + "keycard-recovery-phrase-confirm-header": "تأكيد العبارة الأولية", + "keycard-recovery-phrase-confirmation-text": "لن تحصل على فرصة ثانية! إذا فقدت إمكانية الوصول ، على سبيل المثال عن طريق فقدان بطاقة المفاتيح الخاصة بك ، يمكنك الوصول إلى مفاتيحك فقط باستخدام العبارة الأولية. لا أحد ، ولكن لديك العبارة الأولية. اكتبه. ابقها آمنة.", + "keycard-recovery-phrase-confirmation-title": "هل كتبت عبارة seed ؟ ", + "keycard-recovery-success-header": "المفتاح الخاص تم استرجاعه بنجاح", + "keycard-redeem-title": "استرداد إلى", + "keycard-redeem-tx": "استرداد الأصول", + "keycard-redeem-tx-desc": "اضغط على بطاقة لتوقيع والحصول على الأصول", + "keycard-reset-passcode": "إعادة تعيين رمز المرور", + "keycard-success-description": "يمكنك إزالة البطاقة الآن", + "keycard-success-title": "النجاح", + "keycard-unauthorized-operation": "أنت غير مصرح له بإجراء هذه العملية. \n يرجى الضغط على بطاقة صالحة والمحاولة مرة أخرى.", + "keycard-upsell-subtitle": "تعزيز الأمن والراحة", + "language": "لغة", + "last-backup-performed": "آخر عملية نسخ احتياطي تم إجراؤها:", + "last-transaction": "آخر معاملة", + "learn-more": "أعرف أكثر", + "learn-more-about-keycard": "تعرف علي المزيد حول بطاقة المفاتيح", + "leave": "غادر", + "leave-chat": "مغادرة الدردشة", + "leave-chat-confirmation": "ستتم إزالة سجل الدردشة من جهازك. بعد الانضمام مرة أخرى ، لن تتمكن من استرداد أي من سجلك.", + "leave-community": "اترك المجتمع", + "leave-confirmation": "مغادرة{{chat-name}}", + "leave-group": "غادر المجموعة", + "left": "اليسار", + "les-ulc": "LES \/ ULC", + "lets-go": "لنذهب", + "light": "خلفية بيضاء", + "limit": "حد", + "linked-on": "مرتبط في {{date}}", + "load-messages-before": "قبل {{date}}", + "load-more-messages": "↓ جلب المزيد من الرسائل", + "load-more-timeline": "↓ جلب المزيد", + "loading": "جار التحميل...", + "local-notifications": "الإخطارات المحلية", + "local-notifications-subtitle": "تمكين خدمة الخلفية", + "lock-app-with": "قفل التطبيق مع", + "log-level": "تسجيل مستوى", + "log-level-settings": "إعدادات مستوى السجل", + "logging": "تسجيل", + "logging-enabled": "تمكين التسجيل؟", + "login-pin-description": "ادخل رمز المرور المكون من ٦ أرقام لفتح حسابك المتعدد", + "logout": "تسجيل الخروج", + "logout-app-content": "سيتم تسجيل الحساب عند إلغاء قفلها مرة أخرى ، سيتم استخدام الشبكة المحددة", + "logout-are-you-sure": "هل انت متأكد أنك تريد \n لتسجيل الخروج؟", + "logout-key-management": "تحتاج إلى تسجيل الخروج للوصول إلى إدارة المفاتيح.", + "logout-title": "تسجيل الخروج ؟", + "looking-for-cards": "جارٍ البحث عن بطاقات ...", + "lost-connection": "فقدان الاتصال", + "low-tip": "الإكرامية منخفضة للغاية", + "lower-than-average-tip": "أقل من متوسط الإكرامية", + "mail-should-be-configured": "يجب تغيير البريد", + "mailserver-address": "عنوان عقدة Status", + "mailserver-automatic": "الاختيار التلقائي", + "mailserver-automatic-switch-explanation": "اختر أسرع عقدة Status متاحة", + "mailserver-connection-error": "تعذر الاتصال بعقدة Status", + "mailserver-content": "عقدة في شبكة Status تقوم بتوجيه الرسائل وتخزينها لمدة تصل إلى 30 يومًا.", + "mailserver-details": "تفاصيل عقدة Status", + "mailserver-error-content": "تعذر الوصول إلى عقدة Status التي حددتها.", + "mailserver-error-title": "خطأ في الاتصال بعقدة Status", + "mailserver-format": "enode: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "اختر عقدة Status أخرى", + "mailserver-reconnect": "تعذر الاتصال بعقدة Status. انقر لإعادة الاتصال", + "mailserver-request-error-content": "تم إرجاع الخطأ التالي بواسطة عقدة Status: {{error}}", + "mailserver-request-error-status": "حدث خطأ أثناء جلب السجل ، تحقق من السجلات للحصول على التفاصيل", + "mailserver-request-error-title": "خطأ في طلب عقدة Status", + "mailserver-request-retry": "إعادة محاولة الطلب", + "mailserver-retry": "إعادة المحاولة", + "mailserver-title": "عقدة Status", + "main-currency": "العملة الرئيسية", + "main-networks": "الشبكات الرئيسية", + "main-wallet": "المحفظة الرئيسية", + "mainnet-network": "الشبكة الرئيسية", + "make-admin": "جعل المشرف", + "manage-connections": "إدارة الاتصالات من داخل اتصالات التطبيق", + "manage-keys-and-storage": "إدارة المفاتيح والتخزين", + "mark-all-read": "ضع علامة بأنه تم القراءة", + "master-account": "الحساب الرئيسي", + "max-fee": "الحد الأقصى للرسوم", + "max-priority-fee": "الحد الأقصى لرسوم الأولوية", + "maximum-fee": "الحد الأقصى للرسوم", + "maximum-fee-desc": "الحد الأقصى للسعر الإجمالي للمعاملة. إذا تجاوزت رسوم الكتلة الأساسية الحالية هذا، فسيتم تضمين معاملتك في الكتلة التالية برسوم أساسية أقل.", + "maybe-later": "ربما في وقت لاحق", + "member-ban": "حظر عضو", + "member-kick": "طرد عضو", + "members": { + "zero": "عضو", + "one": "عضو", + "two": "عضوان", + "few": "أعضاء", + "many": "أعضاء", + "other": "أعضاء" + }, + "members-active": { + "zero": "عضو", + "one": "عضو", + "two": "عضوان", + "few": "أعضاء", + "many": "أعضاء", + "other": "أعضاء" + }, + "members-active-none": "لا يوجد أعضاء", + "members-count": "{{count}} أعضاء", + "members-label": "الأعضاء", + "members-limit-reached": "تم الوصول إلى أقصى عدد من الأعضاء", + "members-title": "الأعضاء", + "membership-approval": "تتطلب الموافقة", + "membership-approval-description": "مجتمعك مجاني للانضمام ، ولكن يجب أن تتم الموافقة على الأعضاء الجدد من قبل منشئ المجتمع أولاً", + "membership-button": "شروط العضوية", + "membership-declined": "تم رفض طلب العضوية", + "membership-description": "تتطلب عضوية المجموعة أن يتم قبولك من قبل مسؤول المجموعة", + "membership-ens": "طلب اسم مستخدم ENS", + "membership-ens-description": "يتطلب مجتمعك اسم مستخدم ENS ليتمكن من الانضمام", + "membership-free": "لا يوجد شرط", + "membership-free-description": "مجتمعك مجاني لأي شخص للانضمام", + "membership-invite": "تتطلب دعوة من عضو آخر", + "membership-invite-description": "لا يمكن الانضمام إلى مجتمعك إلا من خلال دعوة من أعضاء المجتمع الحاليين", + "membership-none": "لا شيء", + "membership-none-placeholder": "يمكنك أن تطلب من الأعضاء الجدد تلبية معايير معينة قبل أن يتمكنوا من الانضمام. يمكن تغيير هذا في أي وقت", + "membership-request-pending": "طلب العضوية في الإنتظار", + "membership-requests": "طلبات العضوية", + "membership-title": "شروط العضوية", + "message": "رسالة", + "message-not-sent": "لم يتم إرسال الرسالة", + "message-options-cancel": "إلغاء", + "message-reply": "الرد", + "messages": "رسائل", + "messages-from-contacts-only-subtitle": "يمكن فقط للأشخاص الذين أضفتهم كجهات اتصال بدء محادثة جديدة معك أو دعوتك إلى مجموعة", + "might-break": "قد كسر بعض ÐApps", + "migration-successful": "تم الترحيل بنجاح", + "migration-successful-text": "تم ترحيل الحساب بنجاح إلى بطاقة Keycard", + "migrations-failed-content": "{{message}} \n إصدار المخطط: الأولي {{initial-version}} ، الحالي {{current-version}}الاخير ، {{last-version}} \n\nحدث خطأ في قاعدة البيانات. أموالك ومفتاح الدردشة آمنان. لا يمكن استعادة البيانات الأخرى ، مثل الدردشات وجهات الاتصال الخاصة بك. \" {{erase-multiaccounts-data-button-text}} \" سيزيل جميع البيانات الأخرى ويسمح لك بالوصول إلى أموالك وإرسال الرسائل.", + "miners-higher-fee": "من المحتمل أن يقوم عمال المناجم بتضمين معاملتك في وقت سابق إذا دفعت رسومًا أعلى.", + "minimum-received": "تلقى الحد الأدنى", + "mobile-network-ask-me": "اسالني متى علي شبكه الجوال", + "mobile-network-continue-syncing": "متابعة المزامنة", + "mobile-network-continue-syncing-details": "يمكنك تغيير هذا لاحقًا في الإعدادات", + "mobile-network-go-to-settings": "اذهب للاعدادات", + "mobile-network-settings": "بيانات الجوال", + "mobile-network-sheet-configure": "يمكنك تكوين المزامنة في أكثر \n التفاصيل في", + "mobile-network-sheet-offline": "لا توجد شبكة Wi-Fi ، تم تعطيل مزامنة الرسائل.", + "mobile-network-sheet-offline-details": "المزامنة باستخدام شبكة الجوال متوقفة", + "mobile-network-sheet-remember-choice": "تذكر خياري", + "mobile-network-sheet-settings": "الإعدادات", + "mobile-network-start-syncing": "ابدأ المزامنة", + "mobile-network-stop-syncing": "إيقاف المزامنة", + "mobile-network-stop-syncing-details": "حتى الاتصال بشبكه Wi-fi ؟", + "mobile-network-use-mobile": "استخدام بيانات المحمول", + "mobile-network-use-mobile-data": "تستخدم Status الكثير من البيانات عند مزامنة الدردشات.", + "mobile-network-use-wifi": "واي فاي فقط", + "mobile-syncing-sheet-details": "تستخدم الحالة الكثير من البيانات عند مزامنة الدردشات.", + "mobile-syncing-sheet-title": "هل تريد المزامنة باستخدام بيانات الجوال؟", + "more": "المزيد", + "move-and-reset": "نقل وإعادة تعيين", + "move-keystore-file": "نقل ملف مخزن المفاتيح", + "move-keystore-file-to-keycard": "نقل ملف مخزن المفاتيح إلى بطاقة المفتاح؟", + "multiaccount-exists-content": "مفاتيح هذا الحساب موجودة بالفعل ولا يمكن إضافتها مرة أخرى. إذا فقدت كلمة المرور أو رمز المرور أو بطاقة المفتاح ، فقم بإلغاء تثبيت التطبيق وإعادة التثبيت والوصول إلى مفاتيحك عن طريق إدخال العبارة الأولية", + "multiaccount-exists-title": "الحساب المتعدد موجود بالفعل", + "multiaccounts-recover-enter-phrase-text": "أدخل 12 أو 15 أو 18 أو 21 أو 24 كلمة. \n افصل الكلمات بمسافة واحدة.", + "multiaccounts-recover-enter-phrase-title": "أدخل العبارة الأولية", + "mute": "كتم الصوت", + "my-accounts": "حساباتي", + "my-accounts-empty": "ستظهر حساباتك المتوفرة هنا", + "my-profile": "ملفي الشخصي", + "my-status": "حالتي", + "name": "اسم", + "name-of-token": "اسم token الخاص بك", + "name-optional": "الاسم (اختياري)", + "name-your-channel": "قم بتسمية قناتك", + "name-your-channel-placeholder": "اسم القناة", + "name-your-community": "اسم مجتمعك", + "name-your-community-placeholder": "اسم جذاب", + "need-help": "تحتاج إلى مساعدة ؟ ", + "network": "شبكة الاتصال", + "network-chain": "سلسلة الشبكة", + "network-details": "تفاصيل الشبكة", + "network-fee": "رسوم الشبكة", + "network-id": "عنوان الشبكة", + "network-info": "معلومات الشبكة", + "network-invalid-network-id": "معرف الشبكة المحدد لا يتوافق مع معرف الشبكة بواسطة عنوان RPC", + "network-invalid-status-code": "رمز status غير صالح: {{code}}", + "network-invalid-url": "عنوان URL للشبكة غير صالح", + "network-settings": "اعدادات الشبكة", + "never": "أبدا", + "new": "الجديد", + "new-category": "فئة جديدة", + "new-chat": "دردشة جديدة", + "new-community-title": "مجتمع جديد", + "new-contact": "جهة اتصال جديدة", + "new-contract": "عقد جديد", + "new-favourite": "المفضلة الجديدة", + "new-group": "مجموعة جديدة", + "new-group-chat": "دردشة جماعيه جديده", + "new-network": "شبكة جديدة", + "new-password": "كلمة مرور جديدة", + "new-pin-description": "أدخل رمز مرور جديد مكون من ٦ أرقام", + "new-public-group-chat": "انضم إلى الدردشة العامة", + "new-puk-description": "أدخل رمز المرور الجديد المكون من 12 رقمًا", + "new-status": "status جديد", + "new-tab": "علامة تبويب جديدة", + "next": "التالى", + "nickname": "الاسم المستعار", + "nickname-description": "تساعدك الألقاب في التعرف على الآخرين في Status. \n أنت فقط من يمكنه رؤية الألقاب التي أضفتها", + "no": "لا", + "no-collectibles": "لا تتوفر المقتنيات", + "no-contacts": "لا اتصالات حتى الآن", + "no-keycard-applet-on-card": "لا يوجد برنامج Keycard على البطاقة", + "no-messages": "لا توجد رسائل", + "no-pairing-slots-available": "هذه البطاقة مقترنة بالفعل بـ 5 أجهزة ولا يمكن إقرانها بهذا الجهاز. يرجى استخدام أحد الأجهزة المقترنة وتسجيل الدخول باستخدام هذه البطاقة وتحرير فتحات الاقتران على البطاقة", + "no-pinned-messages": "لا توجد رسائل مثبتة", + "no-result": "لا توجد نتائج", + "no-thanks": "لا شكراً", + "no-tokens-found": "لم يتم العثور على عملة رمزية", + "node-address": "عنوان العقدة", + "node-details": "تفاصيل العقدة", + "node-info": "معلومات العقدة", + "node-version": "نسخة العقدة", + "nodes-disabled": "عُقد Status معطلة", + "non-archival-node": "لا تدعم نقطة نهاية RPC طلبات الأرشفة. قد يكون سجل التحويلات المحلية الخاص بك غير مكتمل.", + "non-contacts": "لا جهات اتصالات", + "nonce": "اعتباطي", + "none": "لا شيء", + "normal": "طبيعي", + "not-applicable": "لا ينطبق على المعاملات غير الموقعة", + "not-connected-nodes": "غير متصل بعقدة Status", + "not-connected-to-peers": "غير متصل بأي أقران", + "not-enough-snt": "غير كافي SNT", + "not-found": "لم يتم العثور على", + "not-keycard-text": "البطاقة التي استخدمتها ليست بطاقة مفتاحيه. تحتاج إلى شراء بطاقة المفاتيح لاستخدامها", + "not-keycard-title": "لا بطاقة المفاتيح", + "not-registered": "غير مسجل", + "notification-settings": "إعدادات الإشعار", + "notifications": "الاخطارات", + "notifications-non-contacts": "إخطارات من غير جهات الاتصال", + "notifications-preferences": "تفضيلات الإشعار", + "notifications-servers": "خوادم الإشعار", + "notifications-switch": "إظهار الإشعارات", + "notifications-transactions": "معاملات المحفظة", + "notify": "اعلام", + "now": "الآن", + "off": "إيقاف", + "off-status-tree": "خارج شجرة الحالة", + "offline": "غير متصل على الانترنت", + "offline-messaging-use-history-explanation": "قم بتمكين عُقد Status لجلب الرسائل التي تم إرسالها أثناء إغلاق التطبيق. عند التمكين ، تحصل عقدة Status على عنوان IP الخاص بك. عند التعطيل ، لن تتلقى رسائل عند إغلاق التطبيق ولن تراها عند فتح التطبيق لاحقًا.", + "offline-messaging-use-history-nodes": "استخدم عقد Status", + "ok": "حسنا", + "ok-continue": "حسنا ، تابع", + "ok-got-it": "حسنا، حصلت عليه", + "ok-save-pass": "حسنا ، احفظ كلمة المرور", + "okay": "حسنا", + "on": "على", + "on-status-tree": "على شجرة Status", + "once-enabled-share-metadata": "بمجرد التمكين ، قد تشارك الروابط المنشورة في الدردشة بياناتك الوصفية مع الموقع", + "one-day": "يوم واحد", + "one-month": "شهر واحد", + "one-week": "أسبوع واحد", + "open": "فتح", + "open-chat": "فتح الدردشة", + "open-dapp": "افتح ÐApp", + "open-dapp-store": "اكتشاف ÐApps", + "open-home": "فتح...", + "open-in-new-tab": "فتح في علامة تبويب جديدة", + "open-membership": "العضوية المفتوحة", + "open-nfc-settings": "فتح إعدادات NFC", + "open-on-block-explorer": "فتح في مستكشف الكتل", + "opening-buy-crypto": "جارٍ فتح {{site}} ...", + "optimal": "الامثل", + "optional": "اختياري", + "or": "او", + "outgoing": "المنتهية", + "outgoing-transaction": "المعاملات الصادرة", + "page-camera-request-blocked": "تم حظر طلبات الكاميرا. لتمكين طلبات الكاميرا ، انتقل إلى الإعدادات", + "page-would-like-to-use-camera": "ترغب في استخدام الكاميرا الخاصة بك", + "pair": "إقران الأجهزة", + "pair-card": "إقران إلى هذا الجهاز", + "pair-code": "رمز الاقتران", + "pair-code-explanation": "أزواج بطاقة إلى جهاز مختلف (حتى 5) لفتح المفاتيح وتوقيع المعاملات باستخدام نفس بطاقة المفاتيح", + "pair-code-placeholder": "رمز الاقتران ...", + "pair-this-card": "إقران هذه البطاقة", + "pair-this-device": "الإعلان عن الجهاز", + "pair-this-device-description": "قم بإقران أجهزتك لمزامنة جهات الاتصال والدردشة بينهما", + "paired-devices": "الأجهزة المقترنة", + "pairing": "الاقران", + "pairing-card": "بطاقة الاقتران", + "pairing-changed": "تم تغيير رمز الاقتران", + "pairing-code-placeholder": "رمز الاقتران ...", + "pairing-code_error1": "رموز الاقتران غير متطابقة.", + "pairing-go-to-installation": "انتقل إلى إعدادات الاقتران", + "pairing-maximum-number-reached-content": "يرجى تعطيل أحد أجهزتك قبل تمكين جهاز جديد.", + "pairing-maximum-number-reached-title": "تم الوصول إلى أقصى عدد من الأجهزة", + "pairing-new-installation-detected-content": "تم الكشف عن جهاز جديد.\nمن أجل استخدام أجهزتك بشكل صحيح ، من المهم اقرانها وتمكينها قبل استخدامها.\nالرجاء الانتقال إلى قسم الجهاز ضمن الإعدادات لاقران أجهزتك.", + "pairing-new-installation-detected-title": "تم الكشف عن جهاز جديد", + "pairing-no-info": "لا توجد معلومات", + "pairing-please-set-a-name": "الرجاء تعيين اسم لجهازك.", + "passphrase": "عبارة المرور", + "password": "كلمه المرور", + "password-description": "على الأقل 6 خانات. ستحتاج إلى كلمة المرور هذه لفتح الحالة وتأكيد المعاملات", + "password-mismatch": "كلمة المرور الجديدة والتأكيد غير متطابقين", + "password-placeholder": "كلمه المرور...", + "password-placeholder2": "تأكيد كلمة المرور الخاصة بك", + "password-reset-in-progress": "تغيير كلمة المرور...", + "password-reset-success": "تم تغيير كلمة المرور", + "password-reset-success-message": "ستحتاج إلى تسجيل الدخول مرة أخرى", + "password_error1": "كلمات المرور غير متطابقة.", + "paste": "لصق", + "paste-json": "لصق JSON", + "pay-to-chat": "الدفع للدردشة", + "peer-content": "جهاز متصل بشبكة دردشة Status. يمكن لكل مستخدم تمثيل واحد أو أكثر من أقرانه، اعتمادًا على عدد أجهزتهم.", + "peer-title": "الند", + "peer-to-peer": "واحد الى واحد", + "peers": "الأقران", + "pending": "المعلقه", + "pending-confirmation": "في انتظار التأكيد...", + "pending-invitations": "طلبات العضوية المعلقة", + "per-gas-price-limit": "حد سعر الغاز", + "per-gas-tip-limit": "حد الغاز", + "perform-backup": "إجراء النسخ الاحتياطي", + "permissions": "أذونات", + "phone-e164": "الدولية 1", + "photos": "الصور", + "photos-access-error": "لمنح اذن الصور المطلوبة ، يرجى الانتقال إلى إعدادات النظام والتاكد من تحديد Status > الصور المختارة", + "pin": "تثبيت", + "pin-changed": "أدخل رمز المرور المكون من 6 أرقام للمتابعة", + "pin-code": "رمز المرور المكون من ٦ أرقام", + "pin-limit-reached": "تم الوصول إلى حد رقم التعريف الشخصي. قم بإلغاء تثبيت رسالة سابقة أولاً.", + "pin-mismatch": "رمز مرور خاطئ", + "pin-one-attempt": " محاولة واحدة ", + "pin-one-attempt-blocked-after": "قبل حجب بطاقة المفتاح الخاصة بك", + "pin-one-attempt-blocked-before": "كن حذرا، لديك فقط", + "pin-one-attempt-frozen-after": "قبل أن يتم تجميد بطاقة المفتاح الخاصة بك", + "pin-one-attempt-frozen-before": "كن حذرا، لديك فقط", + "pin-retries-left": "{{number}} محاولات متبقية", + "pinned-by": "تم التثبيت بواسطة", + "pinned-messages": "الرسائل المثبتة", + "pinned-messages-count": { + "zero": "", + "one": "1 الرسائل المثبتة", + "two": "", + "few": "", + "many": "", + "other": "{{count}} الرسائل المثبتة" + }, + "pinned-messages-empty": "ستظهر الرسائل المثبتة هنا. لتثبيت رسالة، اضغط مع الاستمرار مع الاستمرار واضغط على \"تثبيت\"", + "powered-by-paraswap": "مدعوم من Paraswap", + "preference": "التفضيل", + "preview-privacy": "معاينة وضع الخصوصية", + "previewing-may-share-metadata": "قد تقوم معاينة الروابط من مواقع الويب هذه بمشاركة بيانات التعريف الخاصة بك مع أصحابها", + "price-impact": "تأثير السعر", + "price-impact-desc": "التأثير السعري المقدر لهذه الصفقة. إذا تجاوزت الرسوم الأساسية الحالية لهذه الكتلة، سيتم تضمين المعاملة الخاصة بك في كتلة التالية مع رسوم أساسية أقل.", + "principles": "المبادئ", + "priority": "أولوية", + "privacy": "الخصوصيه", + "privacy-and-security": "الخصوصية والأمان", + "privacy-photos": "خصوصية صورة الملف الشخصي", + "privacy-policy": "سياسة خاصة", + "privacy-show-to-warning": "سيستمر الأشخاص الذين شاهدوا صورة ملفك الشخصي بالفعل في القيام بذلك", + "private-key": "مفتاح سري", + "private-notifications": "الإخطارات الخاصة", + "private-notifications-descr": "ستعلمك Status بالرسائل الجديدة. يمكنك تعديل تفضيلات الإشعارات الخاصة بك لاحقًا في الإعدادات", + "processing": "لحظة واحدة", + "product-information": "معلومات المنتج", + "profile": "الملف الشخصي", + "profile-deleted-content": "تم حذف ملف التعريف الخاص بك بنجاح", + "profile-deleted-keycard": "يمكنك الآن استعادة زوج مفاتيح آخر على بطاقة المفاتيح الخاص بك", + "profile-deleted-title": "تم حذف الملف الشخصي", + "profile-details": "تفاصيل الملف الشخصي", + "profile-not-found": "لم يتم العثور على ملف التعريف", + "profile-pic-pick": "اختر من المعرض", + "profile-pic-remove": "إزالة الصورة", + "profile-pic-take": "التقط صورة", + "profile-picture-updated": "تم تحديث صورة الملف الشخصي", + "public-channel": "قناة عامة", + "public-chat": "دردشة عامة", + "public-chat-description": "المحادثة هي المكان الذي يمكنك فيه الخروج مع الآخرين وتكوين صداقات والتحدث عن مواضيع تهمك.", + "public-chats": "الدردشات العامة", + "public-group-status": "عامة", + "public-group-topic": "الموضوع", + "public-key": "المفتاح العمومي", + "puk-and-pairing-codes-displayed": "PUK ورموز الاقتران المعروضة", + "puk-changed": "تم تغيير رمز مرور المكون من 12 رقمًا", + "puk-code": "رمز PUK", + "puk-code-explanation": "إذا نسيت رمز المرور المكون من 6 أرقام أو أدخلته بشكل غير صحيح 3 مرات ، فستحتاج إلى هذا الرمز لإلغاء قفل بطاقتك.", + "puk-mismatch": "رمز PUK خاطئ", + "push-failed-transaction": "فشلت معاملتك", + "push-failed-transaction-body": "{{value}}{{currency}}إلى{{to}}", + "push-inbound-transaction": "لقد تلقيت {{value}} {{currency}}", + "push-inbound-transaction-body": "من {{from}} الى{{to}}", + "push-notifications-server-enabled": "تمكين الخادم", + "push-notifications-servers": "إشعارات خوادم", + "push-outbound-transaction": "لقد أرسلت {{value}} {{currency}}", + "push-outbound-transaction-body": "من {{from}} إلى {{to}}", + "quiet-days": "{{quiet-days}} أيام", + "quiet-hours": "{{quiet-hours}} ساعات", + "re-encrypt-key": "إعادة تشفير المفتاح الخاص", + "rearrange-categories": "إعادة ترتيب الفئات", + "receive": "تلقي", + "receive-transaction": "تلقي المعاملة", + "recent": "الأخيرة", + "recent-empty": "ستظهر العناوين المستخدمة مؤخرًا هنا", + "recent-recipients": "جهات الاتصال", + "recently-used-stickers": "ستظهر الملصقات المستخدمة مؤخرًا هنا", + "recipient": "المستلم", + "recipient-code": "أدخل عنوان المستلم", + "recipient-code-placeholder": "0x ... أو username.domain.eth", + "recover": "استعادة", + "recover-key": "الوصول إلى المفاتيح الحالية", + "recover-keycard-multiaccount-not-supported": "مفاتيح هذا الحساب موجودة بالفعل ولا يمكن إضافتها مرة أخرى. إذا فقدت كلمة المرور أو رمز المرور أو بطاقة المفتاح ، فقم بإلغاء تثبيت التطبيق وإعادة التثبيت والوصول إلى مفاتيحك عن طريق إدخال العبارة الأولية", + "recover-with-keycard": "استرداد مع بطاقة المفتاح", + "recover-with-seed-phrase": "استرداد مع كلمات العبارة الأولية", + "recovering-key": "يتم الآن محاولة الوصول إلى المفتاح...", + "recovery-confirm-phrase": "تأكيد العبارة الأولية", + "recovery-phrase": " العبارة الأولية", + "recovery-success-text": "سيكون عليك إنشاء رمز أو كلمة مرور جديدة لإعادة تشفير المفتاح الخاص بك", + "recovery-typo-dialog-description": "يرجى ملاحظة ، يجب أن تستخدم العبارة الأولية نفس الكلمات وترتيبها كما تلقيتها", + "recovery-typo-dialog-title": "هل عبارة البذور صحيحة؟", + "redeem-amount": "{{quantity}}المكافآت المتاحة", + "redeem-now": "استرد الآن", + "redeem-success": "تم استرداد المكافأة بنجاح!", + "reduced-tip": "سيتم تخفيض إكرامية الأولوية", + "refresh": "تحديث", + "registered": "مسجل", + "reject": "رفض", + "reject-and-delete": "رفض وحذف", + "remember-me": "تذكرني", + "remind-me-later": "أرني هذا مرة أخرى", + "remote-notifications": "الإخطارات عن بعد", + "remote-notifications-subtitle": "تمكين إشعارات جوجل", + "remove": "ازاله", + "remove-favourite": "إزالة المفضلة", + "remove-from-chat": "إزالة من الدردشة", + "remove-from-contacts": "إزالة من الاتصالات", + "remove-from-contacts-text": "عن طريق إزالة مستخدم من قائمة جهات الاتصال الخاصة بك ، فإنك لا تخفي عنوان محفظتك عنهم", + "remove-group": "إزالة المجموعة", + "remove-network": "أزاله شبكه الاتصال", + "remove-token": "إزالة عملة رمزية", + "removed": "إزالة", + "repeat-pin": "أدخل رمز المرور المكون من 6 أرقام", + "repeat-puk": "كرر رمز مرور الجديد المكون من 12 رقمًا", + "replying-to": "الرد على{{author}}", + "report-bug-email-template": "1. وصف المشكلة\n {{description}}\n \n\n 2. خطوات التكاثر\n {{steps}}\n \n\n 3. أرفق لقطات الشاشة التي يمكن أن تعرض المشكلة، من فضلك \n", + "request-access": "طلب الدخول", + "request-feature": "طلب ميزة", + "request-membership": "طلب عضوية", + "request-pending": "الطلب في الإنتظار...", + "request-transaction": "طلب المعاملة", + "required-field": "الحقل المطلوب", + "resend-message": "إعادة إرسال", + "reset-card": "إعادة تعيين البطاقة", + "reset-card-description": "ستقوم هذه العملية باعاده تعيين البطاقة إلى الحالة الاوليه. وسوف يمحو جميع بيانات البطاقة بما في ذلك المفاتيح الخاصة. العملية ليست قابله للعكس.", + "reset-database": "إعادة تعيين قاعدة البيانات", + "reset-database-warning": "حذف الدردشات وجهات الاتصال والإعدادات. مطلوب عندما تفقد كلمة مرورك", + "reset-database-warning-keycard": "حذف الدردشات وجهات الاتصال والإعدادات.", + "reset-password": "إعادة تعيين كلمة المرور", + "restore-defaults": "استعادة الضبط الافتراضي", + "retry": "إعادة المحاولة", + "revoke-access": "إلغاء الوصول", + "rpc-url": "RPC URL", + "rpc-usage-copy": "نسخ", + "rpc-usage-filter": "أساليب التصفية", + "rpc-usage-get-stats": "تحديث", + "rpc-usage-info": "إحصائيات استخدام RPC", + "rpc-usage-reset": "إعادة ضبط", + "safe-estimate": "تقدير آمن", + "save": "حفظ", + "save-password": "حفظ كلمة المرور", + "save-password-unavailable": "اضبط رمز مرور الجهاز لحفظ كلمة المرور", + "save-password-unavailable-android": "حفظ كلمه المرور غير متوفر: قد يكون جهازك متجذرا أو يفتقر إلى ميزات الأمان الضرورية.", + "scan-qr": "مسح رمز الاستجابة السريعة", + "scan-qr-code": "مسح رمز الاستجابة السريعة مع عنوان المحفظة", + "scan-tokens": "مسح العملات الرمزية", + "search": "البحث", + "search-no-chat-found": "لا توجد نتائج بحث. هل تعني", + "secret-keys-confirmation-text": "ستحتاجهم إلى الاستمرار في استخدام Keycard في حالة فقدان هاتفك.", + "secret-keys-confirmation-title": "كتب الرموز أسفل؟", + "security": "الأمان", + "see-details": "انظر التفاصيل", + "see-it-again": "شاهدها مره أخرى", + "see-suggestions": "الاطلاع على الاقتراحات", + "seed-key-uid-mismatch": "العبارة الأولية لا تتطابق", + "seed-key-uid-mismatch-desc-1": "العبارة الأولية التي أدخلتها لا تتطابق مع {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "لإدارة المفاتيح لهذا الحساب ، تحقق من العبارة الأولية وحاول مرة أخرى.", + "seed-phrase-content": "مجموعة من الكلمات سهلة القراءة، تم اختيارها عشوائيًا من قائمة BIP39 القياسية وتستخدم لاسترداد أو الوصول إلى حساب الايثريوم الخاص بك في محافظ وأجهزة أخرى. يشار إليها أيضًا باسم \"عبارة ذاكرة\" أو \"عبارة الاسترداد\" أو \"المحفظة الاحتياطية\" عبر نظام التشفير البيئي. تستخدم معظم تطبيقات التشفير نفس المعيار لإنشاء حسابات.", + "seed-phrase-placeholder": "عبارة أصل...", + "seed-phrase-title": "العبارة الأولية", + "select": "حدد", + "select-account": "حدد حساب", + "select-account-dapp": "حدد الحساب الذي ترغب في استخدامه مع Dapps", + "select-account-first": "تحديد حساب أولاً", + "select-chat": "اختر الدردشة لبدء المراسلة", + "select-new-location-for-keys": "حدد موقعًا جديدًا لحفظ (المفاتيح) الخاص بك", + "select-token-to-receive": "حدد العملة الرمزية للاستلام", + "select-token-to-swap": "حدد العملة الرمزية للتبديل", + "selected": "مختارة", + "send-logs": "الإبلاغ عن خطأ", + "send-logs-to": "الإبلاغ عن خطأ إلى {{email}}", + "send-message": "إرسال رسالة", + "send-push-notifications": "إرسال إشعارات", + "send-push-notifications-description": "عند تعطيلها، ، لن يتم إخطار الشخص الذي يتلقى رسائلك بوصوله", + "send-request": "ارسل طلب", + "send-request-amount": "المبلغ", + "send-request-amount-max-decimals": "الحد الأقصى لعدد الكسور العشرية هو {{asset-decimals}}", + "send-request-unknown-token": "token غير معروف - {{asset}}", + "send-sending-to": "إلى {{recipient-name}}", + "send-transaction": "إرسال المعاملة", + "sending": "إرسال", + "sent-at": "أرسلت في", + "server": "الخادم", + "set-a-topic": "إنشاء موضوع", + "set-currency": "ضبط العملة الافتراضية", + "set-custom-fee": "تعيين رسوم مخصصة", + "set-dapp-access-permissions": "تعيين أذونات الوصول إلى DApp", + "set-max": "تعيين الحد الأقصى", + "settings": "الإعدادات", + "share": "مشاركه", + "share-address": "مشاركة العنوان", + "share-chat": "مشاركة الدردشة", + "share-contact-code": "مشاركة مفتاح الدردشة الخاص بي", + "share-dapp-text": "تحقق من هذا التطبيق الذي أستخدمه في Status: {{link}}", + "share-link": "مشاركة الرابط", + "share-logs": "مشاركة السجلات", + "share-my-profile": "تعديل الملف الشخصي", + "share-profile": "مشاركة الملف الشخصي", + "share-profile-link": "مشاركة رابط الملف الشخصي", + "share-public-chat-text": "تحقق من هذه الدردشة العامة على تطبيق Status: {{link}}", + "shared": "المشتركة", + "sharing-copied-to-clipboard": "نسخ", + "sharing-copy-to-clipboard": "نسخ", + "sharing-data-desc-1": "يتم التحقق من صحة البيانات وفقا للقواعد العامة لضمان عدم إرسال أي بيانات حساسة. لا تثق، تحقق.", + "sharing-data-desc-2": "يتم إرسال بيانات الاستخدام مشفرة من طرف إلى طرف عبر شبكة نظير إلى نظير الخاصة بStatus", + "sharing-data-desc-3": "بدلا من مفتاح الدردشة العادي، يتم استخدام مفتاح استخدام واحد", + "sharing-data-desc-4": "لا يمكن إقران بيانات الاستخدام بعنوان IP الخاص بك", + "sharing-data-desc-5": "البيانات التراكمية لجميع المستخدمين متاحة للجمهور", + "sharing-data-desc-6": "تتم إزالة البيانات من هاتفك بعد إرسالها", + "sharing-share": "مشاركه", + "show-less": "عرض أقل", + "show-more": "عرض المزيد", + "show-notifications": "إظهار الإشعارات", + "show-profile-pictures": "الاطلاع على صور الملف الشخصي من", + "show-profile-pictures-to": "إظهار صورة ملف التعريف الخاص بك إلى", + "show-qr": "عرض رمز الاستجابة السريعة", + "show-transaction-data": "إظهار بيانات المعاملات", + "sign-and-send": "التوقيع والإرسال", + "sign-anyway": "تسجيل على أي حال", + "sign-in": "تسجيل الدخول", + "sign-message": "توقيع الرسالة", + "sign-out": "تسجيل الخروج", + "sign-request-failed": "تعذر توقيع الرسالة", + "sign-with": "تسجيل مع", + "sign-with-password": "تسجيل الدخول بكلمة مرور", + "sign-you-in": "تسجيل دخولك في...", + "signing": "التوقيع", + "signing-a-message": "توقيع رسالة", + "signing-phrase": "عبارة التوقيع", + "skip": "تخطي", + "slippage": "انزلاق", + "slow": "بطيء", + "something-went-wrong": "هناك خطأ ما", + "soon": "قريبا", + "specify-address": "حدد العنوان", + "specify-name": "حدد اسم", + "specify-network-id": "تحديد معرف شبكه الاتصال", + "specify-rpc-url": "حدد عنوان URL لـ RPC", + "specify-server-public-key": "أدخل المفتاح العام للخادم", + "specify-symbol": "حدد رمزًا", + "start-chat": "بدء الدردشة", + "start-conversation": "بدء المحادثة", + "start-group-chat": "بدء الدردشة الجماعية", + "start-new-chat": "بدء دردشة جديده", + "starter-pack-coming": "حزمة المبتدئين قادمة في طريقك", + "starter-pack-coming-description": "يمكن أن يستغرق بضع دقائق إلى ساعات", + "starter-pack-received": "تلقى حزمة المبتدئين", + "starter-pack-received-description": "إليك بعض من العملة الرقمية لتبدأ! استخدمها للحصول على ملصقات ، واسم ENS و تجربت dapps", + "status": "Status", + "status-always-online": "دائما متصل", + "status-automatic": "تلقائي", + "status-automatic-subtitle": "تعيين الحالة تلقائيا", + "status-confirmed": "تم تأكيد", + "status-dnd": "عدم الإزعاج", + "status-dnd-subtitle": "كتم صوت كل الإشعارات", + "status-hardwallet": "Status المحفظة الصلبة", + "status-inactive": "غير نشط", + "status-inactive-subtitle": "يخفي حالتك على الإنترنت", + "status-is-open-source": "Status مفتوحة المصدر", + "status-keycard": "بطاقة مفتاح Status", + "status-mobile-descr": "Status تميل إلى استخدام الكثير من البيانات عند مزامنة الدردشات. يمكنك اختيار عدم المزامنة عند شبكة المحمول", + "status-not-sent-click": "غير مؤكد. انقر للحصول على خيارات", + "status-not-sent-tap": "غير مؤكد. اضغط للحصول على خيارات", + "status-pending": "قيد الانتظار", + "status-sent": "أرسلت", + "status-tx-not-found": "TX غير موجود", + "status-updates-descr": "ستظهر تحديثات Status هنا. أضف ملف التعريف كجهة اتصال لتلقي التحديثات على الجدول الزمني الخاص بك.", + "statuses-descr": "شارك ما يدور في ذهنك وابق على اطلاع دائم بجهات الاتصال الخاصة بك", + "statuses-my-status-descr": "شارك ما يدور في ذهنك. سيتمكن أي شخص يزور ملفك الشخصي من رؤية حالتك. سيتلقى الأشخاص الذين يضيفونك كجهة اتصال خاصة بهم تحديثاتك على مخططهم الزمني", + "step-i-of-n": "الخطوة {{step}} من {{number}}", + "sticker": "ملصق", + "sticker-market": "سوق الملصقات", + "storage": "التخزين", + "submit": "إرسال", + "submit-bug": "إرسال خطأ", + "success": "النجاح", + "suggested-min-tip": "اقترح الحد الأدنى .للإكرامية", + "suggested-price-limit": "حد السعر المقترح", + "swap": "مبادله", + "swap-details": "تفاصيل المبادلة", + "switch-to-simple-interface": "التبديل إلى واجهة بسيطة", + "symbol": "رمز", + "sync-all-devices": "مزامنة جميع الأجهزة", + "sync-in-progress": "المزامنة ...", + "sync-settings": "إعدادات المزامنة", + "sync-synced": "متزامنة", + "syncing-devices": "المزامنة ...", + "system": "نظام", + "tabs": "علامات التبويب", + "tag-was-lost": "فقدت العلامة", + "tap-card-again": "انقر على البطاقة في الجزء الخلفي من هاتفك مرة أخرى", + "terms-of-service": "شروط الاستخدام", + "test-networks": "اختبار الشبكات", + "text-input-disabled": "رجاءً انتظر لحظة...", + "thank-you": "شكرا لك", + "this-device": "هذا الجهاز", + "this-device-desc": "سيتم تشفير المفتاح الخاص بك وتخزينه بشكل آمن", + "this-is-you-signing": "هذه هي عبارة توقيعك", + "this-will-take-few-seconds": "هذا سيستغرق بضع ثوان", + "three-days": "ثلاثة ايام", + "three-words-description": "يجب أن تشاهد هذه الكلمات 3 قبل توقيع المعاملة", + "three-words-description-2": "إذا رأيت مجموعة تحرير وإدراج مختلفة، فقم بإلغاء المعاملة وتسجيل الخروج.", + "timeline": "الجدول الزمني", + "tip-cap": "أعلى الرسوم", + "to": "إلى", + "to-block": "حظر", + "to-enable-biometric": "لتمكين {{bio-type-label}} ، يجب حفظ كلمة مرورك على شاشة إلغاء القفل", + "to-encrypt-enter-password": "لتشفير الحساب الرجاء إدخال كلمه المرور", + "to-see-this-message": "لرؤية هذه الرسالة ،", + "token": "عملة رمزية", + "token-auto-validate-decimals-error": "اسم خاطئ {{symbol}} على العنوان {{address}} - اضبط على {{expected}} ولكن تم اكتشافه على أنه {{actual}}", + "token-auto-validate-name-error": "اسم خاطئ {{symbol}} على العنوان {{address}} - اضبط على {{expected}} ولكن تم اكتشافه على أنه {{actual}}", + "token-auto-validate-symbol-error": "اسم خاطئ {{symbol}} على العنوان {{address}} - اضبط على {{expected}} ولكن تم اكتشافه على أنه {{actual}}", + "token-details": "تفاصيل token", + "topic-name-error": "استخدم الأحرف الصغيرة فقط (من أ إلى ي) والأرقام والشرطات (-). لا تستخدم مفاتيح الدردشة", + "total-gas": "إجمالي الغاز", + "transaction": "المعاملات", + "transaction-data": "بيانات المعاملات", + "transaction-declined": "تم رفض الصفقة", + "transaction-description": "اعتبرها مكتملة بعد 12 تاكيد علي الشبكة.", + "transaction-details": "تفاصيل المعاملات", + "transaction-failed": "فشلت المعاملة", + "transaction-fee": "رسوم المعاملات", + "transaction-history": "سجل المعاملات", + "transaction-request": "طلب معاملة", + "transaction-sent": "تم إرسال المعاملة", + "transaction-signed": "تم توقيع المعاملة بنجاح", + "transactions": "المعاملات", + "transactions-filter-select-all": "تحديد الكل", + "transactions-filter-title": "سجل التصفية", + "transactions-history": "سجل المعاملات", + "transactions-history-empty": "لا توجد معاملات في تاريخك حتى الآن", + "transactions-history-loading": "تحميل سجل المعاملات. وهذا قد يستغرق بعض الوقت.", + "transactions-load-more": "التعرف على المزيد", + "transactions-management-enabled": "إدارة المعاملات (ألفا)", + "transactions-sign": "تسجيل", + "transfer-ma-unknown-error-desc-1": "يبدو أنه لم يتم حذف حساباتك المتعددة. ربما تمت إعادة تعيين قاعدة البيانات", + "transfer-ma-unknown-error-desc-2": "يرجى التحقق من قائمة حسابك وحاول مرة أخرى. إذا لم يكن الحساب مدرجًا ، فانتقل إلى الوصول إلى المفاتيح الموجودة للاسترداد باستخدام العبارة الأولية", + "transfers-fetching-failure": "تعذر تحديث محفوظات عمليات النقل. تحقق من الاتصال واسحب لأسفل للمحاولة مرة أخرى", + "tribute-required-by-multiaccount": "{{multiaccount-name}} يتطلب SNT لبدء الدردشة.", + "tribute-state-paid": "تحية مدفوعة", + "tribute-state-pending": "تحية جارية", + "tribute-state-required": "يتطلب {{snt-amount}} تحية SNT", + "tribute-to-talk": "تحية للحديث", + "tribute-to-talk-add-friends": "أضف الأصدقاء كجهة اتصال للسماح بالدردشات دون دفع الجزية.", + "tribute-to-talk-are-you-friends": "هل انتم اصدقاء؟", + "tribute-to-talk-ask-to-be-added": "اطلب إضافتك كجهة اتصال", + "tribute-to-talk-contact-received-your-tribute": " تلقي التحية الخاصة بك. يمكنك الآن الدردشة بشكل أمن مع بعضها البعض.", + "tribute-to-talk-desc": "أنت بحاجة إلى SNT للأشخاص الجدد لبدء الدردشة.", + "tribute-to-talk-disabled": "تحية للحديث", + "tribute-to-talk-disabled-note": "من الآن فصاعدًا ، يمكن للأشخاص الجدد بدء الدردشة معك دون إرسال SNT.", + "tribute-to-talk-enabled": "لديك تحيه للحديث ممكنة.", + "tribute-to-talk-finish-desc": "من الآن فصاعدا ، سوف تتلقي فقط دردشات من جهات الاتصال ، والناس الذين قامو بالدفع ", + "tribute-to-talk-learn-more-1": "وقتك والاهتمام هي أصولك الأكثر قيمة. يتيح لك برنامج تحية للحديث تعيين مبلغ SNT المطلوب للأشخاص الجدد لبدء محادثة معك.", + "tribute-to-talk-learn-more-2": "سيطلب من اي شخص ليس في قائمه الاتصال الخاصة بك الدفع ، ويمكنك الرد بمجرد ان يكون لديهم.", + "tribute-to-talk-learn-more-3": "يمكنك دائمًا إعادة الأموال ، ولكن للتأكد من أن الأصدقاء يمكنهم الوصول إليك بحرية ، يمكنك إضافتهم كجهة اتصال أولاً.", + "tribute-to-talk-paywall-learn-more-1": "وقتنا واهتمامنا هما أهم أصولنا. يتيح لك برنامج Tribute to Talk الاتصال بأشخاص جدد في مقابل الحصول على دفعة SNT.", + "tribute-to-talk-paywall-learn-more-2": "لبدء محادثة مع شخص لديه مجموعة تحية ، ما عليك سوى دفع SNT المطلوب وسيتم إضافتك كجهة اتصال.", + "tribute-to-talk-paywall-learn-more-3": "إذا كنت تعرفهم ، فيمكنك مشاركة ملفك الشخصي خارج Status لتتم إضافته مجانًا.", + "tribute-to-talk-pending": "تحية في انتظار التأكيد", + "tribute-to-talk-pending-note": "معاملة التحية في انتظار التأكيد على الشبكة. يمكنك التحقق من حالتها في سجل المعاملات", + "tribute-to-talk-removing-note": "ستتيح إزالة تحية للحديث للأشخاص الجدد بدء محادثة دون إرسال SNT. يتطلب إجراء الصفقة.", + "tribute-to-talk-set-snt-amount": "قم بتعيين مقدار SNT المطلوب للأشخاص الجدد لبدء الدردشة", + "tribute-to-talk-signing": "في انتظار توقيع المعاملة", + "tribute-to-talk-transaction-failed-note": "لقد فشلت المعاملة وتحية الحديث ولم يتم تتغير الاعدادات ", + "tribute-to-talk-tribute-received1": "تلقى تحية. انت و", + "tribute-to-talk-tribute-received2": " هي الآن اتصالات ويمكن الدردشة بشكل أمن مع بعضها البعض.", + "tribute-to-talk-you-require-snt": "أنت بحاجة إلى SNT للأشخاص الجدد لبدء الدردشة.", + "try-again": "حاول مرة أخري", + "try-keeping-the-card-still": "حاول إبقاء البطاقة ثابتة", + "turn-nfc-description": "تم تعطيل NFC على جهازك. يمكنك تمكينه في الإعدادات", + "turn-nfc-on": "قم بتشغيل NFC للمتابعة", + "two-minutes": "دقيقتان", + "tx-fail-description1": "هذه المعاملة من المحتمل أن تفشل. قم بالتسجيل على مسؤوليتك الخاصة باستخدام رسوم الشبكة المخصصة.", + "tx-fail-description2": "هذه المعاملة من المحتمل أن تفشل. تعيين رسوم شبكة مخصصة للتوقيع على مسؤوليتك الخاصة.", + "type": "نوع", + "type-a-message": "رسالة", + "ulc-enabled": "تمكين ULC", + "unable-to-fetch": "تعذر جلب سجل الدردشة", + "unable-to-read-this-code": "غير قادر على قراءة هذا الرمز", + "unable-to-send-messages": "تعذر إرسال الرسائل واستلامها", + "unblock": "رفع الحظر", + "unblock-contact": "إلغاء حظر هذا المستخدم", + "unknown-status-go-error": "خطأ في Status الانتقال غير معروف", + "unlimited": "غير محدود", + "unlock": "فتح", + "unmute": "إلغاء كتم الصوت", + "unpair-card": "إلغاء اقران بطاقة", + "unpair-card-confirmation": "ستقوم هذه العملية بإلغاء اقران البطاقة من الجهاز الحالي. يتطلب تخويل رمز مرور مكون من 6 أرقام. هل تريد المتابعة ؟", + "unpair-keycard": "قم بإلغاء إقران بطاقة المفاتيح من هذا الهاتف", + "unpair-keycard-warning": "رمز الإقران الخاص بك\/ PUK و PIN لم يتغير", + "unpaired-keycard-text": "إن Keycard التي قمت باستغلالها غير مرتبطة بهذا الهاتف", + "unpaired-keycard-title": "الاتصال مع البطاقة تم فقدانه", + "unpin": "فك", + "update": "تحديث", + "update-to-listen-audio": "قم بالتحديث إلى أحدث إصدار للاستماع إلى رسالة صوتية هنا!", + "update-to-see-image": "قم بالتحديث إلى أحدث إصدار لرؤية صورة جميلة هنا!", + "update-to-see-sticker": "قم بالتحديث إلى أحدث إصدار لرؤية ملصق لطيف هنا!", + "updates-to-tos": "تحديثات لشروط الاستخدام", + "updates-to-tos-desc": "قبل المتابعة، يرجى مراجعة شروط الاستخدام والتأكد من تحملك المسؤولية الكاملة عن كيفية استخدام التطبيق.", + "url": "URL", + "usd-currency": "دولار أمريكي", + "use-as-profile-picture": "استخدم كصورة للملف الشخصي", + "use-valid-contact-code": "الرجاء إدخال مفتاح دردشة صالح أو مسحه ضوئيًا", + "validation-amount-invalid-number": "المبلغ ليس رقمًا صالحًا", + "validation-amount-is-too-precise": "المبلغ دقيق جدا. الحد الأقصى لعدد الكسور العشرية هو {{decimals}} .", + "verified-community": "✓ مجتمع تم التحقق منه", + "version": "نسخة التطبيق", + "view": "عرض", + "view-cryptokitties": "عرض في CryptoKitties", + "view-cryptostrikers": "عرض في CryptoStrikers", + "view-data": "عرض البيانات", + "view-details": "عرض التفاصيل", + "view-etheremon": "عرض في Etheremon", + "view-gitcoin": "عرض في Gitcoin", + "view-on-opensea": "عرض على OpenSea", + "view-profile": "عرض الصفحة الشخصية", + "view-public-dashboard": "عرض لوحة المعلومات العامة", + "view-rules": "عرض القواعد", + "view-signing": "عرض عبارة التوقيع", + "view-superrare": "عرض في SuperRare", + "waiting-for-wifi": "لا توجد شبكة Wi-Fi ، تم تعطيل مزامنة الرسائل.", + "waiting-for-wifi-change": "الإعدادات", + "waiting-to-sign": "في انتظار توقيع المعاملة ...", + "waiting-wi-fi": "في انتظار شبكة واي فاي ...", + "waku-bloom-filter-mode": "وضع تصفية واكو بلوم", + "wakuv2-change-nodes": "هل أنت متأكد أنك تريد تغيير عقد Wakuv2؟", + "wakuv2-node-format": "\/ ip4 \/ {node-ip} \/ tcp \/ {port} \/ p2p \/ {id}", + "wakuv2-settings": "إعدادات Waku v2", + "wallet": "المحفظه", + "wallet-address": "عنوان المحفظة", + "wallet-asset": "الأصول", + "wallet-assets": "الأصول", + "wallet-backup-recovery-title": "النسخ الاحتياطي للعبارة الاولية الخاصة", + "wallet-choose-recipient": "اختيار المستلم", + "wallet-collectibles": "قابلة للجمع", + "wallet-connect": "الاتصال بالمحفظة", + "wallet-connect-2.0": "Wallet Connect 2.0", + "wallet-connect-app-connected": "متصل", + "wallet-connect-go-back": "ارجع إلى متصفحك أو تطبيق لامركزي", + "wallet-connect-proposal-description": "من خلال الاتصال ، فإنك تسمح {{name}} باسترداد عنوان حسابك وتمكين Web3", + "wallet-connect-proposal-title": "هل ترغب في الاتصال بمحفظتك", + "wallet-insufficient-funds": "رصيد غير كاف", + "wallet-insufficient-gas": "لا يكفي ETH للغاز", + "wallet-invalid-address": "عنوان خاطئ: \n {{data}}", + "wallet-invalid-address-checksum": "خطأ في العنوان: \n {{data}}", + "wallet-invalid-chain-id": "الشبكة غير متطابقة: \n {{data}} لكن السلسلة الحالية هي {{chain}}", + "wallet-key-content": "عنوان ست عشري مكون من ٦٤ حرفًا يعتمد على معيار الإيتييوم\" ويبدأ بـ 0x. أمام الجميع ، تتم مشاركة عنوان حسابك مع الآخرين عندما تريد تلقي الأموال. يُشار إليه أيضًا باسم \"عنوان الإيتييوم\" أو \"عنوان المحفظة\".", + "wallet-key-title": "عنوان الحساب", + "wallet-manage-accounts": "إدارة الحسابات", + "wallet-manage-app-connections": "إدارة اتصالات التطبيق", + "wallet-manage-assets": "إدارة الأصول", + "wallet-request": "طلب", + "wallet-send": "إرسال", + "wallet-send-min-units": "21000 وحدة على الأقل", + "wallet-send-min-wei": "الحد الأدنى wei 1 ", + "wallet-settings": "إعدادات المحفظة", + "wallet-total-value": "القيمة الإجمالية", + "wallet-transaction-total-fee": "مجموع الرسوم", + "wants-to-access-profile": "يريد الوصول إلى ملفك الشخصي", + "warning": "تحذير", + "warning-message": "عذرًا ، نحن نحد من إرسال عدة رسائل في تتابع سريع لمنع البريد العشوائي. يرجى المحاولة مرة أخرى في لحظة", + "warning-sending-to-contract-descr": "العنوان الذي أدخلته هو عقد ذكي ، وقد يؤدي إرسال الأموال إلى هذا العنوان إلى فقدان الأموال. للتفاعل مع التطبيق اللامركزي ، افتح DApp في متصفح Status DApp.", + "watch-only": "المشاهدة فقط", + "wc-brand-guide": "إرشادات حول استخدام العلامات التجارية مثل العلامات التجارية والشعارات", + "wc-disclaimer": "إخلاء المسؤولية (بما في ذلك مزودي الطرف الثالث) والضمانات والإصدارات القانونية", + "wc-dispute": "أحكام تسوية المنازعات", + "wc-how-to-use-status-app": "كيفية استخدام تطبيق Status بما في ذلك الخصوصية والأمان", + "wc-new-tos-based-on-principles-prefix": "تم تصميم شروط الاستخدام الجديدة بناءً على", + "web-view-error": "غير قادر على تحميل الصفحة", + "websites": "مواقع الويب", + "webview-camera-permission-requests": "طلبات إذن كاميرا Webview", + "webview-camera-permission-requests-subtitle": "عند التمكين ، يمكن أن تطلب مواقع الويب و التطبيقات الامركزية استخدام الكاميرا", + "welcome-blank-community-message": "ستظهر مجتمعاتك هنا.", + "welcome-blank-message": "ستظهر دردشاتك هنا. لبدء دردشات جديده اضغط علي زر ⊕", + "welcome-community-blank-message": "ستظهر قنواتك هنا. لإنشاء قناة جديدة، انقر فوق الزر ⊕ وحدد \"إنشاء قناة\"", + "welcome-community-blank-message-edit-chats": "ستظهر قنواتك هنا. لإنشاء قناة جديدة، ارجع إلى شاشة المجتمع، وانقر على الزر ⊕ وحدد \"إنشاء قناة\"", + "welcome-screen-text": "انشاء محفظتك ، دعوة الأصدقاء للدردشة\nو استعرض شعبية dapps!", + "welcome-to-status": "مرحبًا بك في Status!", + "welcome-to-status-description": "قم بإعداد محفظة التشفير الخاصة بك ، ودعوة الأصدقاء للدردشة وتصفح التطبيقات اللامركزية", + "what-changed": "ما الذي تغير", + "what-is-shared": "ما هو مشترك", + "whats-on-your-mind": "ما الذي يدور في ذهنك...", + "word-count": "عدد الكلمات", + "word-n": "كلمة # {{number}}", + "word-n-description": "للتحقق مما إذا كنت قد قمت بنسخ نسخة احتياطية من العبارة الأولية بشكل صحيح ، أدخل الكلمة # {{number}} أعلاه.", + "words-n": { + "zero": "", + "one": "كلمة", + "two": "", + "few": "", + "many": "", + "other": "كلمات" + }, + "write-down-and-store-securely": "اكتب الرموز لأسفل \n وتخزينها بشكل آمن", + "wrong-address": "عنوان خاطئ", + "wrong-card": "بطاقة خاطئة", + "wrong-card-text": "البطاقة التي تم النقر عليها لا تتوافق مع المفاتيح التي حددتها", + "wrong-contract": "عقد خاطئ", + "wrong-keycard-text": "بطاقة المفاتيح التي قمت باستغلالها غير مرتبطة بهذا الهاتف", + "wrong-keycard-title": "يبدو انك قمت باستغلال \nبطاقة مفتاح خاطئه", + "wrong-password": "كلمة مرور خاطئة", + "wrong-word": "كلمة خاطئة", + "yes": "نعم", + "you": "أنت", + "you-already-have-an-asset": "لديك بالفعل أصل {{value}}", + "you-are-all-set": "أنتم جميعا مجموعه!", + "you-are-all-set-description": "إذا فقدت هاتفك ، يمكنك الآن الوصول إلى أموالك ومفتاح الدردشة باستخدام العبارة الأولية", + "you-can-change-account": "يمكنك تغيير اسم الحساب واللون إلى ما يحلو لك", + "you-can-choose-preview-websites": "يمكنك اختيار أي من مواقع الويب التالية يمكنه معاينة ارتباط الأوصاف والصور في الدردشات", + "you-can-fetch": "يمكنك إحضار تاريخ الدردشة", + "you-dont-have-contacts": "ليس لديك أي اتصالات بعد.", + "you-dont-have-contacts-invite-friends": "ليس لديك أي جهات اتصال حتى الآن.\n ادعُ أصدقائك لبدء الدردشة.", + "you-dont-have-stickers": "ليس لديك أي ملصقات بعد", + "you-will-need-this-code": "ستحتاج هذا الرمز لفتح الحالة وتوقيع المعاملات", + "you-will-start-from-scratch": "ستبدأ من نقطة الصفر بمجموعة جديدة من المفاتيح", + "your-card-is-frozen": "تم تجميد بطاقة المفتاح الخاص بك. إعادة تعيين الوصول إلى البطاقة", + "your-contact-code": "يسمح لـ DApp إمكانية استرداد مفتاح الدردشة الخاص بك", + "your-data-belongs-to-you": "إذا فقدت العبارة الأولية الخاصة بك ، فستفقد بياناتك وأموالك", + "your-data-belongs-to-you-description": "إذا فقدت إمكانية الوصول ، على سبيل المثال عن طريق فقد هاتفك ، فلا يمكنك الوصول إلى مفاتيحك إلا باستخدام العبارة الأولية. لا أحد ، ولكن لديك العبارة الأولية. اكتبه. ابقها آمنة", + "your-keys": "مفاتيحك", + "your-price-limit": "حد سعرك", + "your-recovery-phrase": "العبارة الأولية الخاصة بك", + "your-recovery-phrase-description": "هذه هي العبارة الأولية الخاصة بك. يمكنك استخدامها لإثبات أن هذه هي محفظتك. يمكنك فقط أن ترى ذلك مرة واحدة! اكتبها على الورق واحتفظ بها في مكان آمن. ستحتاج إليها إذا فقدت أو أعدت تثبيت محفظتك.", + "your-tip-limit": "حد الإكرامية الخاص بك", + "youre-on-mobile-network": "أنت متصل بشبكة الجوال" +} diff --git a/translations/bel.json b/translations/bel.json new file mode 100644 index 00000000000..9f5fc33b493 --- /dev/null +++ b/translations/bel.json @@ -0,0 +1,106 @@ +{ + "amount": "Сума", + "members-active": { + "one": "1 член, 1 актыўны", + "other": "{{count}} члена(ау), {{count}} актыўных", + "zero": "няма членау" + }, + "chat-name": "Імя чата", + "phew-here-is-your-passphrase": [ + "str", + "*Уф*, эгэта было няпроста, вось ваша парольная фраза, *запішыце яе і захавайце ў надзейным месцы!* ", + "Яна будзе патрэбна вам для аднаўлення акаўнта." + ], + "chat-settings": "Налады чата", + "offline": "Оффлайн", + "invited": "запрошаны(на)", + "address": "Адрас", + "datetime-hour": { + "one": "гадзіна", + "other": "гадзін" + }, + "remove": "Выдаліць", + "add-members": "Дадаць членаў", + "done": "Гатова", + "new-group-chat": "Новы групавы чат", + "datetime-yesterday": "учора", + "datetime-ago": "назад", + "contacts": "Кантакты", + "active-online": "У сетцы", + "password": "Пароль", + "discover": "Пошук", + "intro-status": "Пагутарыце са мной у чаце, каб наладзіць свой рахунак і змяніць свае налады!", + "name": "Імя", + "show-qr": "Паказаць QR", + "connect": "Падлучыцца", + "edit": "Змяніць", + "account-generation-message": "Секундачку, мне трэба выканаць вар'яцка складаныя разлікі для стварэння вашага акаўнта!", + "no-messages": "Няма паведамленняў", + "passphrase": "Парольная фраза", + "recipient": "Атрымальнік", + "members-title": "Удзельнікі", + "new-group": "Новая група", + "settings": "Налады", + "chats": "Чаты", + "image-source-make-photo": "Сфатаграфаваць", + "save": "Захаваць", + "sharing-copy-to-clipboard": "Скапіяваць", + "sync-in-progress": "Сінхранізацыя...", + "incorrect-code": [ + "str", + "Выбачайце, код няправільны, увядзіце яшчэ раз" + ], + "image-source-gallery": "Выбраць з галерэі", + "sync-synced": "Сінхранізуецца", + "status-pending": "у чаканні", + "datetime-day": { + "one": "дзень", + "other": "дні" + }, + "scan-qr": "Сканаваць QR", + "next": "Працягнуць", + "recent": "Апошнія", + "status": "Статус", + "wrong-password": "Няправільны пароль", + "sharing-share": "Падзяліцца...", + "clear-history": "Ачысціць гісторыю", + "no-contacts": "Пакуль няма кантактаў", + "datetime-today": "сёння", + "web-view-error": "ой, памылка", + "cancel": "Адмена", + "can-not-add-yourself": "Вы не можаце дадаць сябе", + "add-to-contacts": "Дадаць у кантакты", + "available": "Даступна", + "You": "Вы", + "main-wallet": "Асноўны кашалёк", + "members": { + "one": "1 член", + "other": "{{count}} члена(ау)", + "zero": "няма членов" + }, + "intro-message1": "Сардэчна запрашаем у Статус\nНацісніце на гэтае паведамленне, каб усталяваць пароль і пачаць!", + "new-contact": "Новы кантакт", + "datetime-second": { + "one": "секунда", + "other": "секунды" + }, + "recover": "Аднавіць", + "datetime-minute": { + "one": "хвіліна", + "other": "хвіліны" + }, + "active-unknown": "Невядома", + "public-key": "Публічны ключ", + "profile": "Профіль", + "none": "Няма", + "removed": "выдалены(на)", + "message": "Паведамленне", + "here-is-your-passphrase": [ + "str", + "Вось ваша парольная фраза, *запішыце яе і захавайце ў надзейным месцы!* ", + "Яна будзе патрэбна вам для аднаўлення акаўнта." + ], + "image-source-title": "Mалюнак профілю", + "status-sent": "Адправіць", + "left": "засталося" +} diff --git a/translations/bn.json b/translations/bn.json new file mode 100644 index 00000000000..54f6f93347b --- /dev/null +++ b/translations/bn.json @@ -0,0 +1,1736 @@ +{ + "You": "আপনি", + "about-app": "সম্বন্ধে", + "about-key-storage-content": "Status কখনই আপনার Private key অ্যাক্সেস করবে না। আপনার বীজ বাক্যাংশ ব্যাকআপ করতে নিশ্চিত হোন। আপনি যদি আপনার ফোন হারিয়ে ফেলেন তাহলে এটি আপনার চাবি অ্যাক্সেস করার একমাত্র উপায়।", + "about-key-storage-title": "কী স্টোরেজ সম্পর্কে", + "about-names-content": "কেউ তোমার ভান করতে পারবে না! আপনি ডিফল্টভাবে বেনামী এবং কখনোই আপনার আসল নাম প্রকাশ করতে হবে না। আপনি একটি ছোট ফি জন্য একটি কাস্টম নাম নিবন্ধন করতে পারেন।", + "about-names-title": "নাম পরিবর্তন করা যাবে না", + "about-sharing-data": "ডেটা শেয়ার করার বিষয়ে", + "accept": "গ্রহণ করুন", + "accept-and-add": "গ্রহণ করুন এবং যোগ করুন", + "accept-and-continue": "গ্রহণ করুন এবং চালিয়ে যান", + "accept-and-share-address": "ঠিকানা গ্রহণ এবং শেয়ার করুন", + "accept-new-chats-from": "গ্রহণ করুন নতুন চ্যাট থেকে", + "accept-status-tos-prefix": "আমি স্ট্যাটাস গ্রহণ করি", + "access-existing-keys": "বিদ্যমান কীসমূহ অ্যাক্সেস করুন", + "access-key": "অ্যাক্সেস কী", + "account-added": "অ্যাকাউন্ট যুক্ত হয়েছে", + "account-color": "অ্যাকাউন্টের রং", + "account-content": "আপনি Status একাউন্টকে ব্যাংক একাউন্টের সাথে তুলনা করতে পারেন। ব্যাংক একাউন্টের মত, একটি অ্যাকাউন্টে সাধারণত একটি ঠিকানা এবং ব্যালেন্স থাকে আপনি এই একাউন্ট ব্যবহার করে Ethereum লেনদেন করেন। আপনার মানিব্যাগে একাধিক অ্যাকাউন্ট থাকতে পারে। Status আনলক করে সব অ্যাক্সেস করা হয়েছে।", + "account-exists-title": "একাউন্ট ইতোমধ্যে বিদ্যমান", + "account-is-used": "ব্রাউজারে ড্যাপের সাথে অ্যাকাউন্টটি ব্যবহার করা হচ্ছে।", + "account-name": "অ্যাকাউন্টের নাম", + "account-settings": "অ্যাকাউন্ট সেটিংস", + "account-title": "একাউন্ট", + "accounts": "হিসাব", + "actions": "ক্রিয়া", + "active-online": "অনলাইন", + "active-unknown": "অজানা", + "activity": "কার্যকলাপ", + "add": "যুক্ত", + "add-a-watch-account": "কেবলমাত্র দেখার জন্য ঠিকানা যুক্ত করুন", + "add-account": "একটি অ্যাকাউন্ট যুক্ত করুন", + "add-account-description": "আপনি আপনার স্ট্যাটাস ওয়ালেটে এটি যোগ করতে যেকোনো ধরনের ইথেরিয়াম অ্যাকাউন্ট আমদানি করতে পারেন", + "add-account-incorrect-password": "পাসওয়ার্ডটি ভুল বলে মনে হচ্ছে। অ্যাপ্লিকেশনটি আনলক করতে আপনি যে পাসওয়ার্ডটি ব্যবহার করেন তা প্রবেশ করুন।", + "add-an-account": "একটি অ্যাকাউন্ট যুক্ত করুন", + "add-bootnode": "বুটনোড যুক্ত করুন", + "add-contact": "পরিচিতি যুক্ত করুন", + "add-custom-token": "কাস্টম টোকেন যুক্ত করুন", + "add-favourite": "প্রিয় বিষয় যোগ করুন", + "add-mailserver": "স্ট্যাটাস নোড যুক্ত করুন", + "add-members": "সদস্য যুক্ত করুন", + "add-network": "নেটওয়ার্ক যুক্ত করুন", + "add-new-contact": "নতুন পরিচিতি যুক্ত করুন", + "add-nickname": "একটি ডাকনাম যুক্ত করুন (ঐচ্ছিক)", + "add-node": "নোড যোগ করুন", + "add-private-key-account": "ব্যক্তিগত কী থেকে অ্যাকাউন্ট যুক্ত করুন", + "add-seed-account": "একটি Seed phrase সহ অ্যাকাউন্ট যুক্ত করুন", + "add-to-contacts": "পরিচিতিগুলিতে যুক্ত করুন", + "add-to-contacts-text": "আপনার যোগাযোগ তালিকায় একজন ব্যবহারকারী যুক্ত করে, আপনি আপনার মানিব্যাগ ঠিকানা শেয়ার করুন", + "add-to-favourites": "পছন্দনীয়তে যুক্ত করুন", + "add-watch-account": "কেবলমাত্র দেখার জন্য অ্যাকাউন্ট যুক্ত করুন", + "address": "ঠিকানা", + "address-or-ens-name": "ঠিকানা বা ইএনএস নাম", + "address-received": "ঠিকানা গৃহীত হয়েছে", + "address-request-accepted": "ঠিকানা অনুরোধ গৃহীত", + "address-requested": "ঠিকানা অনুরোধ করা হয়েছে", + "advanced": "উন্নত", + "advanced-settings": "উন্নত সেটিংস", + "advertiser-description": "আপনি স্ট্যাটাস আবিষ্কার করেছেন একজন সঙ্গীকে ধন্যবাদ।স্ট্যাটাস যদি আপনার আইপি ঠিকানা একবার পরীক্ষা করে তবে তারা পুরস্কৃত হয় তাতে আপনার কি আপত্তি আছে? এই তথ্য অন্য কোন কিছুর জন্য ব্যবহার করা হবে না এবং ৭ দিন পর এটি সম্পূর্ণরূপে মুছে ফেলা হবে।", + "advertiser-starter-pack-accept": "গ্রহণ করুন", + "advertiser-starter-pack-decline": "প্রত্যাখ্যান করুন", + "advertiser-starter-pack-description": "এখানে আপনাকে শুরু করার জন্য কিছু ক্রিপ্টো আছে! স্টিকার, একটি ENS নাম পেতে এটি ব্যবহার করুন এবং DApps চেষ্টা করুন।", + "advertiser-starter-pack-title": "স্টার্টার প্যাক", + "advertiser-title": "ডিফল্টভাবে গোপনীয়তা", + "agree-by-continuing": "আপনি কি একমত আমাদের সাথে?", + "all": "সব", + "allow": "অনুমতি দিন", + "allow-and-send": "অনুমতি দিন এবং পাঠান", + "allow-mention-notifications": "উল্লেখ@ দেখান", + "allowing-authorizes-this-dapp": "আপনার ওয়ালেট ঠিকানা পুনরুদ্ধার এবং Web3 সক্রিয় করতে এই DApp অনুমোদন দেন", + "already-have-asset": "আপনার এই সম্পদ ইতিমধ্যেই আছে", + "amount": "পরিমান", + "anyone": "যে কেউ", + "app-commit": "অ্যাপ কমিট", + "appearance": "উপস্থিতি", + "apply": "প্রয়োগ করুন", + "approve": "অনুমোদন করুন", + "approve-limit": "সীমা অনুমোদন করুন", + "approve-token": "টোকেন অনুমোদন করুন", + "approve-token-contract-desc": "একটি চুক্তির সাথে একটি টোকেন অনুমোদন করা এটি আপনার টোকেন ব্যালেন্স ব্যয় করতে দেয়। আপনি যদি মনে করেন যে কোনও প্রকল্প অবিশ্বস্ত, তবে তাদের সাথে টোকেনটি অনুমোদন করবেন না, বা কেবলমাত্র আপনি তাদের সাথে যে পরিমাণ অর্থ ব্যবহার করবেন তা অনুমোদন করবেন না।", + "are-you-sure": "আপনি কি নিশ্চিত?", + "are-you-sure-description": "আপনি পুরো বীজ বাক্যাংশটি আবার দেখতে পাবেন না", + "are-you-sure-to-cancel": "আপনি কি নিশ্চিত যে আপনি বাতিল করতে চান?", + "are-you-sure?": "আপনি কি নিশ্চিত?", + "ask-in-status": "একটি প্রশ্ন জিজ্ঞাসা করুন অথবা একটি বাগ প্রতিবেদন করুন", + "at": "at", + "attribution-received": "{{সর্বোচ্চ}} বোনাস প্রাপ্ত বোনাসগুলির মধ্যে {{আট্রিব}}", + "audio": "অডিও", + "audio-recorder": "রেকর্ডার", + "audio-recorder-error": "রেকর্ডার ত্রুটি", + "audio-recorder-max-ms-reached": "সর্বোচ্চ রেকর্ডিং সময় পৌঁছেছে", + "audio-recorder-permissions-error": "অডিও বার্তা প্রেরণের জন্য আপনাকে অনুমতি দিতে হবে", + "authorize": "অনুমোদন করুন", + "available": "উপলভ্য", + "available-participants": { + "one": "আপনি আরও একটি অংশগ্রহণকারী নির্বাচন করতে পারেন", + "other": "আপনি আরও অংশগ্রহণকারী {{count}}নির্বাচন করতে পারেন" + }, + "back": "পেছনে", + "back-up": "ব্যাক আপ", + "back-up-seed-phrase": "বীজ বাক্যাংশ ব্যাক আপ করুন", + "back-up-your-seed-phrase": "আপনার বীজ বাক্যাংশ ব্যাক আপ করুন", + "backing-up": "ব্যাক আপ করা হচ্ছে...", + "backup-disabled": "অক্ষম", + "backup-enabled": "সক্রিয়", + "backup-recovery-phrase": "বীজ বাক্যাংশ ব্যাক আপ করুন", + "backup-settings": "ব্যাকআপ সেটিংস", + "backup-through-waku": "Waku এর মাধ্যমে ব্যাকআপ", + "bad-fees-description": "আপনার অগ্রাধিকার ফি আমাদের প্রস্তাবিত প্যারামিটারের নিচে।", + "balance": "ভারসাম্য", + "begin-set-up": "উপস্থাপনা শুরু করুন", + "below-base-fee": "বেস ফি এর নিচে সর্বোচ্চ ফি", + "biometric-auth-android-sensor-desc": "স্পর্শ সেন্সর", + "biometric-auth-android-sensor-error-desc": "ব্যর্থ", + "biometric-auth-android-title": "প্রমাণীকরণ প্রয়োজন", + "biometric-auth-confirm-logout": "পুনরায় লগ-ইন করুন", + "biometric-auth-confirm-message": "বায়োমেট্রিক প্রমাণীকরণ অব্যাহত রাখা আবশ্যক, যদি সম্ভব না হয় অনুগ্রহ করে আপনার পাসওয়ার্ড বা পাসকোড দিয়ে আপনার কী আনলক করুন", + "biometric-auth-confirm-title": "আপনাকে অবশ্যই প্রমাণীকরণ করতে হবে!", + "biometric-auth-confirm-try-again": "আবার চেষ্টা করুন", + "biometric-auth-error": "বায়োমেট্রিক প্রমাণীকরণ সম্পাদন করতে অক্ষম ({{code}})", + "biometric-auth-login-error-title": "বায়োমেট্রিক প্রমাণীকরণ ত্রুটি", + "biometric-auth-login-ios-fallback-label": "পাসওয়ার্ড লিখুন", + "biometric-auth-reason-login": "Status খুলুন", + "biometric-auth-reason-verify": "প্রমাণীকরণ যাচাই করুন", + "biometric-disable-bioauth": "{{bio-type-label}} নিষ্ক্রিয় করুন", + "biometric-disable-password-description": "আপনি যদি এটি অক্ষম করেন তবে আপনি এটিও করবেন", + "biometric-disable-password-title": "পাসওয়ার্ড সংরক্ষণ নিষ্ক্রিয় করুন", + "biometric-enable": "আপনি যদি অ্যাপটি অ্যাক্সেস করতে প্রতিবার আপনার পাসওয়ার্ড প্রবেশ করাতে না চান, {{bio-type-label}} সাইন ইন সক্রিয় করুন", + "biometric-enable-button": "{{bio-type-label}} সক্রিয় করুন", + "biometric-enable-keycard": "আপনি যদি অ্যাপটি অ্যাক্সেস করতে প্রতিবার আপনার কীকার্ড ব্যবহার করতে না চান, {{bio-type-label}} সাইন ইন সক্রিয় করুন", + "biometric-faceid": "ফেস আইডি", + "biometric-fingerprint": "আঙ্গুলের ছাপ", + "biometric-secure-with": "{{bio-type-label}} দিয়ে নিরাপদ", + "biometric-touchid": "টাচ আইডি", + "bip39-password-placeholder": "BIP39 পাসওয়ার্ড", + "blank-keycard-text": "আপনি আপনার কী এবং নাম তৈরি করার পর আপনি আপনার কীকার্ড দিয়ে অগ্রসর হতে পারেন", + "blank-keycard-title": "দেখে মনে হচ্ছে আপনি টেপ করেছেন\n একটি ফাঁকা কিকার্ড", + "block": "ব্লক", + "block-contact": "এই ব্যবহারকারীকে অবরুদ্ধ করুন", + "block-contact-details": "অবরোধ এই ব্যবহারকারীর পূর্ববর্তী বার্তাগুলি মুছে ফেলবে এবং নতুন বার্তাগুলি আপনার কাছে পৌঁছানো থেকে বিরত রাখবে", + "blocked-users": "অবরুদ্ধ ব্যবহারকারী", + "bootnode-address": "বুটনোড ঠিকানা", + "bootnode-details": "বুটনোড বিস্তারিত", + "bootnode-format": "এনোড: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "বুটনোডস", + "bootnodes-enabled": "bootnodes সক্রিয় করা হয়েছে", + "bootnodes-settings": "bootnodes সেটিংস", + "browsed-websites": "ব্রাউজারের ইতিহাস এখানে প্রদর্শিত হবে", + "browser": "ব্রাউজার", + "browser-not-secure": "সংযোগ নিরাপদ নয়! লেনদেনে স্বাক্ষর করবেন না বা এই সাইটে ব্যক্তিগত ডেটা প্রেরণ করবেন না।", + "browser-secure": "সংযোগটি সুরক্ষিত। লেনদেনগুলি স্বাক্ষর করার আগে বা ব্যক্তিগত ডেটা প্রবেশের আগে নিশ্চিত হয়ে নিন যে আপনি এই সাইটে সত্যই বিশ্বাস করছেন।", + "browsers": "ব্রাউজারগুলি", + "browsing-cancel": "বাতিল", + "browsing-open-in-android-web-browser": "অ্যান্ড্রয়েডে খুলুন", + "browsing-open-in-ios-web-browser": "iOS-এ খুলুন", + "browsing-open-in-status": "Status খুলুন", + "browsing-site-blocked-description1": "আমরা এই ঠিকানা থেকে সম্ভাব্য বিদ্বেষপূর্ণ কার্যকলাপ সনাক্ত করেছি। আপনাকে এবং আপনার মানিব্যাগ রক্ষা করতে, আমরা আরো নেভিগেশন প্রতিরোধ করছি। আপনি যদি মনে করেন এটি একটি ত্রুটি, তাহলে আমাদের জানান।", + "browsing-site-blocked-description2": "পাবলিক চ্যাট।", + "browsing-site-blocked-go-back": "ফিরে যাও", + "browsing-site-blocked-title": "এই সাইটটি অবরুদ্ধ করা হয়েছে", + "browsing-title": "ব্রাউজ করুন", + "bug-report": "একটি বাগ রিপোর্ট করুন", + "bug-report-description": "* বর্ণনা", + "bug-report-description-placeholder": "আবশ্যক, খালি হতে পারে না", + "bug-report-steps": "ধাপ পুনর্গঠন কর", + "bug-report-steps-placeholder": "- অ্যাপ খুলুন\n- কিছু একটা করুন\n- এবং তারপর অন্য কিছু...", + "bug-report-submit-email": "লগ আর্কাইভ সহ ইমেলের মাধ্যমে জমা দিন", + "bug-report-submit-gh-issue": "লগ ছাড়া একটি GitHub সমস্যা জমা দিন", + "bug-report-too-short-description": "বর্ণনা খুবই ছোট", + "build-yourself": "এই ব্যবহারের শর্তাবলী ছাড়া অ্যাপটি ব্যবহার করতে, আপনি আপনার নিজস্ব সংস্করণ তৈরি করতে পারেন", + "buy-crypto": "ক্রিপ্টো কিনুন", + "buy-crypto-choose-a-service": "ক্রিপ্টো কেনার জন্য আপনি যে পরিষেবাটি ব্যবহার করতে চান তা চয়ন করুন", + "buy-crypto-description": "ক্রিপ্টো কিনতে এখনই একটি ড্যাপ খুঁজুন", + "buy-crypto-leaving": "আপনি স্ট্যাটাস ছেড়ে চলে যাচ্ছেন এবং আপনার ক্রয় সম্পন্ন করতে একটি তৃতীয় পক্ষের ওয়েবসাইটে প্রবেশ করছেন", + "buy-crypto-title": "মনে হচ্ছে আপনার খালি", + "camera-access-error": "প্রয়োজনীয় ক্যামেরা অনুমতি দিতে, অনুগ্রহ করে আপনার সিস্টেম সেটিংসে যান এবং নিশ্চিত করুন যে Status > ক্যামেরা নির্বাচন করা হয়েছে।", + "can-not-add-yourself": "এটি আপনি, চ্যাট শুরু করতে অন্য কাউকে বেছে নিন", + "can-send-messages": "আপনি নতুন বার্তা পাঠাতে এবং গ্রহণ করতে পারেন", + "cancel": "বাতিল", + "cancel-keycard-setup": "কী-কার্ড উপস্থাপনা বাতিল করুন", + "cancelling": "বাতিল করা হচ্ছে", + "cannot-read-card": "কার্ড পড়তে পারছি না।\nঅনুগ্রহ করে এটি আপনার ফোনের পিছনে ধরে রাখুন", + "cannot-use-default-pin": "পাসকোড 000000 অনুমোদিত নয়।\n দয়া করে অন্য নম্বরটি ব্যবহার করুন", + "cant-open-public-chat": "পাবলিক চ্যাট খোলা যাবে না", + "cant-report-bug": "একটি বাগ প্রতিবেদন করা যাবে না", + "card-is-blank": "এই কার্ডটি ফাঁকা", + "card-reseted": "কার্ড পুনরায় সেট করা হয়েছে", + "card-unpaired": "বর্তমান ডিভাইস থেকে কার্ড আনপেয়ার করা হয়েছে", + "category": "বিভাগ", + "category-title": "বিভাগের শিরোনাম", + "change-fleet": "{{fleet}} এ fleet পরিবর্তন করুন", + "change-logging-enabled": "আপনি কি নিশ্চিত যে আপনি {{enable}} লগিং করতে চান?", + "change-pairing": "পেয়ারিং কোড পরিবর্তন করুন", + "change-pairing-description": "পেয়ারিং কোড পরিবর্তন করা বর্তমান পেয়ারিংগুলিকে প্রভাবিত করে না। যাইহোক, যে কোন নতুন পেয়ারিং এর জন্য নতুন কোডের প্রয়োজন হবে।", + "change-pairing-title": "একটি নতুন পেয়ারিং কোড তৈরি করুন", + "change-passcode": "পাসকোড পরিবর্তন করুন", + "change-password": "পাসওয়ার্ড পরিবর্তন করুন", + "change-pin": "৬-সংখ্যার পাসকোড পরিবর্তন করুন", + "change-puk": "12-সংখ্যার PUK পরিবর্তন করুন", + "change-tip": "টিপ পরিবর্তন করুন", + "changed-amount-warning": "{{old}} থেকে {{new}} পর্যন্ত পরিমাণ পরিবর্তন করা হয়েছে", + "changed-asset-warning": "সম্পদ {{old}} থেকে {{new}} পরিবর্তন করা হয়েছে", + "chaos-mode": "বিশৃঙ্খলা মোড", + "chaos-unicorn-day": "বিশৃঙ্খলা ইউনিকর্ন দিবস", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "আলাপ", + "chat-and-transact": "বন্ধুদের সাথে গোপনে চ্যাট করুন এবং লেনদেন করুন", + "chat-is-a-contact": "যোগাযোগ", + "chat-is-not-a-contact": "যোগাযোগ নয়", + "chat-key": "চ্যাট কী", + "chat-key-content": "Status চ্যাট প্রোটোকলের বার্তাগুলি এনক্রিপশন কী ব্যবহার করে প্রেরণ এবং প্রাপ্ত করা হয়। সর্বজনীন চ্যাট কী এমন অক্ষরের একটি স্ট্রিং যা আপনি অন্যদের সাথে ভাগ করেন যাতে তারা আপনাকে Status বার্তা প্রেরণ করতে পারে।", + "chat-key-title": "চ্যাট কী", + "chat-link-previews": "চ্যাট লিঙ্ক পূর্বরূপ", + "chat-name": "চ্যাট নাম", + "chat-name-content": "তিনটি এলোমেলো শব্দ, আপনার চ্যাট কী থেকে অ্যালগরিদমে প্রাপ্ত এবং চ্যাটে আপনার ডিফল্ট ছদ্মনাম হিসেবে ব্যবহৃত হয়। চ্যাটের নাম সম্পূর্ণ অনন্য; অন্য কোন ব্যবহারকারীর একই তিনটি শব্দ থাকতে পারে না।", + "chat-name-title": "চ্যাট নাম", + "chat-notification-preferences": "বিজ্ঞপ্তি সেটিংস", + "chat-settings": "চ্যাট সেটিংস", + "chats": "আড্ডা", + "check-on-block-explorer": "ব্লক এক্সপ্লোরার চেক করুন", + "check-on-opensea": "ওপেনসিয়া পরীক্ষা করুন", + "check-your-recovery-phrase": "আপনার seed phrase পরীক্ষা করুন", + "choose-actions": "ক্রিয়াগুলি চয়ন করুন", + "choose-authentication-method": "একটি প্রমাণীকরণ পদ্ধতি চয়ন করুন", + "choose-new-location-for-keystore": "আপনার কীস্টোর ফাইল সংরক্ষণ করতে একটি নতুন অবস্থান চয়ন করুন", + "choose-storage": "স্টোরেজ বেছে নিন", + "clear": "পরিষ্কার", + "clear-all": "সব পরিষ্কার করে দাও", + "clear-history": "ইতিহাস পরিষ্কার করুন", + "clear-history-action": "পরিষ্কার", + "clear-history-confirmation": "ইতিহাস সাফ করবেন?", + "clear-history-confirmation-content": "আপনি কি নিশ্চিত যে আপনি এই চ্যাটের ইতিহাস মুছে ফেলতে চান?", + "clear-history-title": "ইতিহাস সাফ করবেন?", + "cleared-chat-description-public": "এটা এখানে শান্ত হয়েছে. কথোপকথন শুরু করুন বা", + "close": "বন্ধ", + "close-all": "সব বন্ধ করুন", + "close-app-button": "নিশ্চিত", + "close-app-content": "অ্যাপটি বন্ধ হয়ে যাবে এবং বন্ধ হবে। আপনি যখন এটি পুনরায় খুলবেন, নির্বাচিত নেটওয়ার্কটি ব্যবহৃত হবে", + "close-app-title": "সতর্কীকরণ!", + "collectibles-leak-metadata": "আপনি এখানে আপনার NFT প্রদর্শন করতে পারেন। যদি আপনি তা করেন, আপনি আপনার ওয়ালেট এবং আইপি ঠিকানা শেয়ার করবেন", + "command-button-send": "প্রেরণ", + "communities": "কমিউনিটি", + "communities-alpha": "সম্প্রদায় (আলফা)", + "communities-enabled": "সম্প্রদায় সক্ষম", + "communities-verified": "✓ যাচাইকৃত স্থিতি সম্প্রদায়", + "community": "সম্প্রদায়", + "community-color": "কমিউনিটির রঙ", + "community-color-placeholder": "একটি রঙ বেছে নিন", + "community-edit-title": "সম্প্রদায় সম্পাদনা করুন", + "community-emoji-thumbnail-title": "থাম্বনেইল", + "community-image-pick": "একটি চিত্র বাছাই করুন", + "community-image-remove": "অপসারণ", + "community-image-take": "একটি ছবি তুলুন", + "community-info": "কমিউনিটি তথ্য", + "community-info-not-found": "সম্প্রদায়ের তথ্য পাওয়া যায়নি", + "community-invite-title": "আমন্ত্রণ", + "community-key": "কমিউনিটি প্রাইভেট কী", + "community-key-placeholder": "আপনার সম্প্রদায়ের ব্যক্তিগত কী লিখুন", + "community-link": "কমিউনিটি লিঙ্ক", + "community-members": { + "one": "সদস্য", + "other": "সদস্যরা" + }, + "community-members-title": "সদস্যরা", + "community-message-preview": "{{community-name}} যোগ দেওয়ার আমন্ত্রণ", + "community-private-key": "কমিউনিটি প্রাইভেট কী", + "community-requests-to-join-title": "সদস্যপদের অনুরোধ", + "community-roles": "ভূমিকা", + "community-share-title": "ভাগ করুন", + "community-thumbnail-image": "থাম্বনেইল ছবি", + "community-thumbnail-upload": "আপলোড", + "complete-hardwallet-setup": "এই কার্ডটি এখন সংযুক্ত। আপনার লেনদেনগুলি স্বাক্ষর করতে এবং আপনার কীগুলি আনলক করার জন্য এটি দরকার", + "completed": "সম্পূর্ণ", + "confirm": "নিশ্চিত", + "confirm-new-password": "নতুন পাসওয়ার্ড নিশ্চিত করুন", + "confirm-pairing-code-placeholder": "আপনার জোড়া কোড নিশ্চিত করুন ...", + "confirm-password-placeholder": "আপনার পাসওয়ার্ড নিশ্চিত করুন...", + "confirmation-request": "নিশ্চিতকরণ অনুরোধ", + "confirmations": "নিশ্চিতকরণ", + "confirmations-helper-text": "যখন লেনদেনের 12 টি নিশ্চয়তা থাকে আপনি এটিকে নিষ্পত্তি হিসাবে বিবেচনা করতে পারেন।", + "connect": "সংযোগ করুন", + "connect-mailserver-content": "{{name}}-এ সংযোগ করুন?", + "connect-wallet": "ওয়ালেট সংযোগ করুন", + "connected": "সংযুক্ত", + "connected-to": "সংযুক্ত", + "connecting": "সংযুক্ত হচ্ছে ...", + "connecting-requires-login": "অন্য নেটওয়ার্কের সাথে সংযোগ স্থাপনের জন্য লগইন প্রয়োজন", + "connection-request": "সংযোগের অনুরোধ", + "connection-status": "সংযোগ অবস্থা", + "connection-with-the-card-lost": "কার্ডের সাথে সংযোগ\n বিচ্ছিন্ন হয়েছে", + "connection-with-the-card-lost-setup-text": "উপস্থাপনা পুনরায় শুরু করতে কার্ডটি ধরে রাখুন\n আপনার ফোনের পিছনে এবং রক্ষণাবেক্ষণ\n ফোন যোগাযোগে কার্ড", + "connection-with-the-card-lost-text": "আপনার ফোনের পিছনে কার্ডটি ধরে রাখুন", + "contact-code": "চ্যাট কী", + "contact-s": { + "one": "যোগাযোগ", + "other": "যোগাযোগ" + }, + "contacts": "যোগাযোগ", + "contacts-descr": "আপনার পরিচিতিগুলি এখানে উপস্থিত হবে। আপনি পরিচিতি হিসাবে যাকে যুক্ত করেন তার কাছ থেকে স্ট্যাটাস আপডেট পাবেন", + "contacts-empty": "ই এন এস নামের পরিচিতিগুলি এখানে উপস্থিত হবে", + "continue": "চালিয়ে যান", + "continue-anyway": "যাই হোক চালিয়ে যান", + "contract-address": "চুক্তির ঠিকানা", + "contract-interaction": "চুক্তি মিথস্ক্রিয়া", + "contract-isnt-supported": "চুক্তি সমর্থিত নয়", + "copy-info": "তথ্য অনুলিপি করুন", + "copy-qr": "কোড অনুলিপি করুন", + "copy-to-clipboard": "অনুলিপি", + "copy-transaction-hash": "লেনদেন আইডি অনুলিপি করুন", + "cost-fee": "খরচ \/ ফি", + "counter-9-plus": "৯+", + "counter-99-plus": "৯৯+", + "create": "তৈরি", + "create-a-pin": "একটি 6-সংখ্যার পাসকোড তৈরি করুন", + "create-a-puk": "একটি 12 সংখ্যার পিইউকে তৈরি করুন", + "create-category": "বিভাগ তৈরি করুন", + "create-channel": "একটি চ্যানেল তৈরি করুন", + "create-channel-title": "নতুন চ্যানেল", + "create-community": "একটি সম্প্রদায় তৈরি করুন", + "create-group-chat": "গ্রুপ চ্যাট তৈরি করুন", + "create-multiaccount": "কী তৈরি করুন", + "create-new-key": "নতুন চাবি পান", + "create-pin": "6-সংখ্যার পাসকোড তৈরি করুন", + "create-pin-description": "Status আনলক করতে এবং লেনদেন নিশ্চিত করতে আপনার কার্ড + এই ৬ ডিজিটের পাসকোড প্রয়োজন হবে", + "created-group-chat-description": "আপনি গ্রুপটি তৈরি করেছেন", + "cryptokitty-name": "ক্রিপ্টোকিটি #{id}}", + "currency": "মুদ্রা", + "currency-display-name-aed": "আমিরাতি দিরহাম", + "currency-display-name-afn": "আফগানিস্তান আফগানি", + "currency-display-name-ars": "আর্জেন্টিনা পেসো", + "currency-display-name-aud": "অস্ট্রেলিয়ান ডলার", + "currency-display-name-bbd": "বার্বাডোস ডলার", + "currency-display-name-bdt": "বাংলাদেশী টাকা", + "currency-display-name-bgn": "বুলগেরিয়ান লেভ", + "currency-display-name-bhd": "বাহরাইনি দিনার", + "currency-display-name-bnd": "ব্রুনাই দারুসসালাম ডলার", + "currency-display-name-bob": "বলিভিয়া বলিভিয়ানো", + "currency-display-name-brl": "ব্রাজিল রিয়াল", + "currency-display-name-btn": "ভুটানি এনগল্ট্রাম", + "currency-display-name-cad": "কানাডা ডলার", + "currency-display-name-chf": "সুইজারল্যান্ড ফ্রাঙ্ক", + "currency-display-name-clp": "চিলি পেসো", + "currency-display-name-cny": "চীন ইউয়ান রেনমিনবি", + "currency-display-name-cop": "কলম্বিয়া পেসো", + "currency-display-name-crc": "কোস্টা রিকা কোলন", + "currency-display-name-czk": "চেক কুরুনা", + "currency-display-name-dkk": "ডেনমার্ক ক্রোন", + "currency-display-name-dop": "ডোমিনিকান রিপাবলিক পেসো", + "currency-display-name-egp": "মিশর পাউন্ড", + "currency-display-name-etb": "ইথিওপিয়ান বির", + "currency-display-name-eur": "ইউরো", + "currency-display-name-gbp": "ব্রিটিশ পাউন্ড", + "currency-display-name-gel": "জর্জিয়ান লারি", + "currency-display-name-ghs": "ঘানা সেদি", + "currency-display-name-hkd": "হংকং ডলার", + "currency-display-name-hrk": "ক্রোয়েশিয়া কুনা", + "currency-display-name-huf": "হাঙ্গেরি ফরিন্ট", + "currency-display-name-idr": "ইন্দোনেশিয়া রুপিয়া", + "currency-display-name-ils": "ইজরায়েল শেকেল", + "currency-display-name-inr": "ভারত রুপি", + "currency-display-name-isk": "আইসল্যান্ড ক্রোনা", + "currency-display-name-jmd": "জ্যামাইকা ডলার", + "currency-display-name-jpy": "জাপানি ইয়েন", + "currency-display-name-kes": "কেনিয়ান শিলিং", + "currency-display-name-krw": "কোরিয়া (দক্ষিণ) ওন", + "currency-display-name-kwd": "কুয়েতি দিনার", + "currency-display-name-kzt": "কাজাখস্তান টেঙ্গে", + "currency-display-name-lkr": "শ্রীলংকা রুপি", + "currency-display-name-mad": "মরোক্কোর দিরহাম", + "currency-display-name-mdl": "মোল্দোভান লেউ", + "currency-display-name-mur": "মরিশাস রুপি", + "currency-display-name-mwk": "মালাউয়ান কোয়াছা", + "currency-display-name-mxn": "মেক্সিকো পেসো", + "currency-display-name-myr": "মালয়েশিয়া রিংগিত", + "currency-display-name-mzn": "মোজাম্বিক মেটিক্যাল", + "currency-display-name-nad": "নামিবিয়া ডলার", + "currency-display-name-ngn": "নাইজেরিয়া নাইরা", + "currency-display-name-nok": "নরওয়ে ক্রোন", + "currency-display-name-npr": "নেপাল রুপি", + "currency-display-name-nzd": "নিউজিল্যান্ড ডলার", + "currency-display-name-omr": "ওমান রিয়াল", + "currency-display-name-pen": "পেরু সোল", + "currency-display-name-pgk": "পাপুয়া নিউ গিনি কিনা", + "currency-display-name-php": "ফিলিপাইন পেসো", + "currency-display-name-pkr": "পাকিস্তান রুপি", + "currency-display-name-pln": "পোল্যান্ড জলোটি", + "currency-display-name-pyg": "প্যারাগুয়ে গুয়ারানি", + "currency-display-name-qar": "কাতার রিয়াল", + "currency-display-name-ron": "রুমানিয়া লিউ", + "currency-display-name-rsd": "সার্বিয়া দিনার", + "currency-display-name-rub": "রাশিয়া রুবেল", + "currency-display-name-sar": "সৌদি আরব রিয়াল", + "currency-display-name-sek": "সুইডেন ক্রোনা", + "currency-display-name-sgd": "সিঙ্গাপুর ডলার", + "currency-display-name-thb": "থাইল্যান্ড বাহত", + "currency-display-name-try": "তুর্কি লিরা", + "currency-display-name-ttd": "ত্রিনিদাদ ও টোবাগো ডলার", + "currency-display-name-twd": "তাইওয়ান নিউ ডলার", + "currency-display-name-tzs": "তানজানিয়ান শিলিং", + "currency-display-name-uah": "ইউক্রেন রিভনিয়া", + "currency-display-name-ugx": "উগান্ডার শিলিং", + "currency-display-name-usd": "মার্কিন যুক্তরাষ্ট্র ডলার", + "currency-display-name-uyu": "উরুগুয়ে পেসো", + "currency-display-name-vef": "ভেনেজুয়েলা বলিভার", + "currency-display-name-vnd": "ভিয়েতনাম ডং", + "currency-display-name-zar": "দক্ষিণ আফ্রিকা র্যান্ড", + "current": "বর্তমান", + "current-average": "বর্তমান গড়", + "current-average-tip": "বর্তমান গড় টিপ", + "current-base": "বর্তমান ভিত্তি", + "current-base-fee": "বর্তমান বেস ফি", + "current-minimum-tip": "বর্তমান ন্যূনতম টিপ", + "current-network": "বর্তমান নেটওয়ার্ক", + "current-password": "বর্তমান পাসওয়ার্ড", + "current-pin": "6-ডিজিটের পাসকোড প্রবেশ করান", + "current-pin-description": "অগ্রসর হতে আপনার ৬-ডিজিটের পাসকোড প্রবেশ করান", + "custom": "কাস্টম", + "custom-networks": "পছন্দসই নেটওয়ার্ক", + "custom-node": "আপনি কাস্টম RPC এন্ডপয়েন্ট ব্যবহার করছেন। আপনার স্থানীয় স্থানান্তরের ইতিহাস অসম্পূর্ণ হতে পারে।", + "custom-seed-phrase": "অবৈধ seed phrase", + "custom-seed-phrase-text-1": "এই seed phrase আমাদের সমর্থিত অভিধানের সাথে মেলে না। ভুল বানান শব্দের জন্য পরীক্ষা করুন।", + "dapp": "DApp", + "dapp-starter-pack-accept": "গ্রহণ করুন এবং খুলুন", + "dapp-starter-pack-description": "এখানে আপনাকে শুরু করার জন্য কিছু ক্রিপ্টো আছে! স্টিকার, একটি ENS নাম পেতে এটি ব্যবহার করুন এবং DApps চেষ্টা করুন।", + "dapp-starter-pack-title": "স্টার্টার প্যাক", + "dapp-would-like-to-connect-wallet": "সংযোগ করতে চান", + "dapps": "DApps", + "dapps-permissions": "DApp অনুমতি", + "dark": "অদৃশ্য", + "data": "ডাটা", + "data-collected": "তথ্য সংগ্রহ", + "data-collected-subtitle": "নীচের টেবিলটি সঠিক ডেটা দেখায় যা সংরক্ষণ করা হয় এবং পাঠানো হবে। কোনও সংবেদনশীল ডেটা প্রেরণ করা হয় না তা নিশ্চিত করার জন্য ডেটা সর্বজনীন নিয়মের বিরুদ্ধে যাচাই করা হয়। বিশ্বাস করবেন না, যাচাই করুন।", + "data-syncing": "ডাটা সিংক্রোনাইজিং", + "database-reset-content": "চ্যাট, পরিচিতি এবং সেটিংস মুছে ফেলা হয়েছে। আপনি আপনার কী -কার্ড দিয়ে আপনার অ্যাকাউন্ট ব্যবহার করতে পারেন", + "database-reset-title": "ডাটাবেস রিসেট", + "database-reset-warning": "ডাটাবেস রিসেট করা হবে। চ্যাট, পরিচিতি এবং সেটিংস মুছে ফেলা হবে", + "datetime-ago": "আগে", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "one": "দিন", + "other": "দিন" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "ঘন্টা", + "other": "ঘন্টা" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "সময়", + "other": "সময়" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "", + "other": "সেগেন্ড" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "আজ", + "datetime-yesterday": "গতকাল", + "decimals": "দশমিক", + "decline": "প্রত্যাখ্যান করুন", + "decryption-failed-content": "আপনার উপাত্ত ডিক্রিপ্ট করতে একটি ত্রুটি সংঘটিত হয়েছে। আপনার হয়ত আপনার পুরনো ডেটা মুছে ফেলতে হবে এবং একটি নতুন অ্যাকাউন্ট তৈরি করতে হবে। আবার চেষ্টা করতে মুছে ফেলতে \"প্রয়োগ করুন\" ট্যাপ করুন অথবা \"বাতিল করুন\" ট্যাপ করুন", + "default": "ডিফল্ট", + "default-assets": "ডিফল্ট ERC20 এবং ERC721", + "default-sync-period": "ইতিহাস ফিল্টার করুন", + "delete": "মুছে ফেলা", + "delete-account": "অ্যাকাউন্ট মুছে ফেলুন", + "delete-and-leave-group": "মুছে ফেলুন এবং দল ছেড়ে দিন", + "delete-bootnode": "bootnode মুছে ফেলুন", + "delete-bootnode-are-you-sure": "আপনি কি নিশ্চিত যে আপনি এই bootnode টি মুছে ফেলতে চান?", + "delete-bootnode-title": "bootnode মুছুন", + "delete-category-confirmation": "আপনি কি এই বিভাগটি মুছে ফেলার বিষয়ে নিশ্চিত?\n", + "close-chat": "চ্যাট মুছুন", + "close-chat-confirmation": "আপনি কি নিশ্চিত যে আপনি এই চ্যাটটি মুছে ফেলতে চান?", + "delete-confirmation": "মুছে ফেলা?", + "delete-keys-keycard": "কীকার্ড থেকে কীগুলি মুছুন", + "delete-mailserver": "ইতিহাস নোড মুছে ফেলুন", + "delete-mailserver-are-you-sure": "আপনি কি নিশ্চিত যে আপনি এই ইতিহাস নোডটি মুছে ফেলতে চান?", + "delete-mailserver-title": "ইতিহাস নোড মুছে ফেলুন", + "delete-message": "বার্তা মুছে ফেলুন", + "delete-my-account": "আমার অ্যাকাউন্ট মুছে ফেলুন", + "delete-my-profile": "আমার প্রোফাইল মুছে ফেলুন", + "delete-network-confirmation": "আপনি কি নিশ্চিত যে আপনি এই নেটওয়ার্কটি মুছে ফেলতে চান?", + "delete-network-error": "এটি মুছে ফেলার আগে অনুগ্রহ করে একটি ভিন্ন নেটওয়ার্কে সংযোগ করুন", + "delete-network-title": "নেটওয়ার্ক মুছে ফেলা হবে?", + "delete-node": "নোড মুছুন", + "delete-node-are-you-sure": "আপনি কি নিশ্চিত যে আপনি এই নোডটি মুছতে চান?", + "delete-node-title": "নোড মুছে দিন", + "delete-profile": "প্রোফাইল মুছে ফেলুন", + "delete-profile-warning": "সতর্কীকরণ: আপনার যদি আপনার বীজ বাক্যাংশ লেখা না থাকে, আপনি আপনার প্রোফাইল মুছে ফেলার পর আপনার তহবিলে প্রবেশাধিকার হারাবেন", + "deny": "অস্বীকার করুন", + "derivation-path": "বিবর্তনের পথ", + "describe-channel": "চ্যানেলটি বর্ণনা করুন", + "description": "বর্ণনা", + "dev-mode": "ডেভলপমেন্ট মোড", + "dev-mode-settings": "উন্নয়ন মোড সেটিংস", + "device-syncing": "ডিভাইস এককালবর্তীকরণ", + "devices": "ডিভাইসগুলি", + "disable": "অক্ষম", + "disable-all": "সব নিষ্ক্রিয় করুন", + "disable-later-in-settings": "আপনি সেটিংসে পরে এটি অক্ষম করতে পারেন৷", + "disabled": "অক্ষম", + "disconnect": "সংযোগ বিচ্ছিন্ন করুন", + "disconnected": "অফলাইনে চ্যাট করুন", + "discover": "আবিষ্কার করুন", + "dismiss": "বরখাস্ত করুন", + "display-collectibles": "সংগ্রহযোগ্য প্রদর্শন\n", + "done": "সম্পন্ন হয়েছে", + "dont-ask": "আমাকে আবার জিজ্ঞাসা করবেন না", + "edit": "সম্পাদনা", + "edit-categories": "বিভাগ সম্পাদনা করুন", + "edit-channel-title": "চ্যানেল সম্পাদনা করুন", + "edit-chats": "চ্যাট সম্পাদনা করুন", + "edit-community": "সম্প্রদায় সম্পাদনা করুন", + "edit-favourite": "প্রিয় সম্পাদনা করুন", + "edit-group": "গোষ্ঠী সম্পাদনা করুন", + "edit-profile": "প্রোফাইল সম্পাদনা করুন", + "edited": "সম্পাদিত", + "editing-message": "বার্তা সম্পাদনা করা হচ্ছে", + "empty-activity-center": "আপনার চ্যাটের বিজ্ঞপ্তি\n এখানে প্রদর্শিত হবে", + "empty-chat-description": "কোন বার্তা নেই \nএই আড্ডায় এখনো", + "empty-chat-description-community": "এখানে শেষবারের মতো শান্ত ছিল{{quiet-hours}}", + "empty-chat-description-one-to-one": "আপনি এখানে যে কোনও বার্তা প্রেরণ করেন তা এনক্রিপ্ট করা হয় এবং কেবল আপনি এবং এর মাধ্যমে পড়তে পারেন", + "empty-chat-description-public": "এটি এখানে শেষ {{quiet-hours}} এর জন্য কথোপকথন শুরু করুন \n বা", + "empty-chat-description-public-share-this": "এই চ্যাটটি শেয়ার করুন", + "empty-keycard-required": "একটি খালি কীকার্ড প্রয়োজন", + "empty-pending-invitations-descr": "যারা এই গ্রুপে যোগ দিতে চান\nএকটি আমন্ত্রণ লিংকের মাধ্যমে এখানে প্রদর্শিত হবে", + "empty-tab": "খালি ট্যাব", + "enable": "সক্ষম করুন", + "enable-all": "সব সক্রিয় করুন", + "enable-link-previews": "চ্যাটে লিঙ্কের পূর্বরূপগুলি সক্ষম করবেন?", + "encrypt-with-password": "পাসওয়ার্ড সহ এনক্রিপ্ট করুন", + "ens-10-SNT": "১০ SNT", + "ens-add-username": "ব্যবহারকারীর নাম যুক্ত করুন", + "ens-agree-to": "সম্মত হন", + "ens-chat-settings": "চ্যাট সেটিংস", + "ens-custom-domain": "কাস্টম ডোমেইন", + "ens-custom-username-hints": "username.domain.eth-এর মতো কাস্টম ডোমেইন সহ সম্পূর্ণ ব্যবহারকারীর নাম টাইপ করুন", + "ens-custom-username-taken": "ব্যবহারকারীর নাম আপনার সাথে সম্পর্কিত নয় :(", + "ens-deposit": "আমানত", + "ens-dismiss-message": "বরখাস্ত করতে এখানে ক্লিক করুন", + "ens-displayed-with": "আপনার বার্তাগুলি অন্যদের সাথে প্রদর্শিত হয়", + "ens-get-name": "একটি সার্বজনীন ব্যবহারকারীর নাম পান", + "ens-got-it": "ঠিক আছে, বুঝতে পেরেছি", + "ens-locked": "ব্যবহারকারীর নাম লক করা হয়েছে। {{date}} পর্যন্ত আপনি এটি প্রকাশ করতে পারবেন না", + "ens-name-content": "আপনার চ্যাট কী-এর জন্য কাস্টম ছদ্মনাম যা আপনি Ethereum নাম সেবা ব্যবহার করে নিবন্ধন করতে পারেন। ENS নামবিকেন্দ্রীভূত ব্যবহারকারীর নাম।", + "ens-name-not-found": "ENS নামটি সমাধান করতে পারে না", + "ens-name-title": "ENS নাম", + "ens-network-restriction": "শুধুমাত্র mainnet উপলভ্য", + "ens-no-usernames": "আপনার সাথে কোনও ব্যবহারকারীর নাম সংযুক্ত নেই", + "ens-powered-by": "ইথেরিয়াম নাম সেবা দ্বারা চালিত", + "ens-primary-username": "প্রাথমিক ব্যবহারকারীর নাম", + "ens-register": "নিবন্ধন", + "ens-registration-failed": "ব্যবহারকারীর নাম নিবন্ধন করতে, অনুগ্রহ করে আবার চেষ্টা করুন।", + "ens-registration-failed-title": "লেনদেন ব্যর্থ হয়েছে", + "ens-registration-failure": "নিবন্ধন ব্যর্থ হয়েছে", + "ens-registration-in-progress": "নিবন্ধন চলছে...", + "ens-release-username": "ব্যবহারকারীর নাম প্রকাশ করুন", + "ens-remove-hints": "অপসারণ আপনার কী থেকে ব্যবহারকারীর নামটি পৃথক করবে।", + "ens-remove-username": "ব্যবহারকারীর নাম অপসারণ করুন", + "ens-saved": "এখন আপনার চ্যাট কী-এর সাথে সংযুক্ত এবং Status ব্যবহার করা যাবে।", + "ens-saved-title": "ব্যবহারকারীর নাম যুক্ত করা হয়েছে", + "ens-show-username": "চ্যাটগুলিতে আমার ENS ব্যবহারকারীর নামটি দেখান", + "ens-terms-header": "নাম নিবন্ধনের শর্তাবলী", + "ens-terms-point-1": "তহবিল 1 বছরের জন্য জমা হয়। আপনার SNT লক হয়ে যাবে, তবে ব্যয় হবে না।", + "ens-terms-point-10": "0x0000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS রেজিস্ট্রি)।", + "ens-terms-point-2": "1 বছর পরে, আপনি নামটি প্রকাশ করতে পারেন এবং আপনার আমানত ফিরে পেতে পারেন, বা নাম রাখার জন্য কোনও পদক্ষেপ নিতে পারবেন না।", + "ens-terms-point-3": "যদি চুক্তির শর্তাবলী পরিবর্তিত হয় - উদাহরণস্বরূপ Status চুক্তি আপগ্রেড করে - ব্যবহারকারীর সময় নির্বিশেষে ব্যবহারকারীর নাম প্রকাশ করার অধিকার আছে।", + "ens-terms-point-4": "চুক্তি নিয়ন্ত্রক আপনার জমা দেওয়া তহবিল অ্যাক্সেস করতে পারে না। এগুলি কেবল তাদের পাঠানো ঠিকানায় ফিরে যেতে পারে।", + "ens-terms-point-5": "আপনার ঠিকানা(es) আপনার ENS নামের সাথে জনসম্মুখে সংযুক্ত করা হবে।", + "ens-terms-point-6": "ব্যবহারকারীর নামগুলি stateofus.eth এর সাবডোমেন নোড হিসাবে তৈরি করা হয় এবং ENS স্মার্ট চুক্তির শর্ত সাপেক্ষে।", + "ens-terms-point-7": "আপনি আপনার পক্ষ থেকে SNT স্থানান্তরের চুক্তির অনুমোদন দেন। আপনি যখন স্থানান্তরের অনুমোদন দেওয়ার জন্য একটি লেনদেন অনুমোদন করেন তখনই এটি ঘটতে পারে।", + "ens-terms-point-8": "এই শর্তাবলী ঠিকানায় স্মার্ট কন্ট্রাক্ট লজিক দ্বারা গ্যারান্টি দেওয়া হয়।", + "ens-terms-point-9": "{{address}} (Status ইউজারনেম রেজিস্ট্রার)", + "ens-terms-registration": "নাম নিবন্ধনের শর্তাবলী।", + "ens-test-message": "আরে", + "ens-transaction-pending": "লেনদেন স্থগিত...", + "ens-understand": "আমি বুঝতে পারছি যে আমার মানিব্যাগের ঠিকানা আমার ব্যবহারকারীর নামের সাথে প্রকাশ্যে সংযুক্ত করা হবে।", + "ens-username": "ENS ব্যবহারকারীর নাম", + "ens-username-already-added": "ব্যবহারকারীর নামটি ইতিমধ্যে আপনার চ্যাট কীটির সাথে সংযুক্ত এবং Status অভ্যন্তরে ব্যবহার করা যেতে পারে।", + "ens-username-available": "✓ ব্যবহারকারীর নাম উপলব্ধ!", + "ens-username-connected": "এই ব্যবহারকারীর নামটি আপনার মালিকানাধীন এবং আপনার চ্যাট কী-এর সাথে সংযুক্ত।", + "ens-username-connected-continue": "চ্যাটে আমার ENS ব্যবহারকারীর নাম দেখান' সেট অব্যাহত রাখুন।", + "ens-username-connected-with-different-key": "অব্যাহত রাখার জন্য আপনার বর্তমান চ্যাট কী-এর সাথে ব্যবহারকারীর নাম সংযুক্ত করতে একটি লেনদেনের প্রয়োজন হবে।", + "ens-username-connection-confirmation": "লেনদেন সম্পন্ন হলে {{username}} সংযুক্ত হবে।", + "ens-username-hints": "কমপক্ষে ৪ টি অক্ষর। লাতিন বর্ণ, সংখ্যা এবং কেবল ছোট হাতের অক্ষর।", + "ens-username-invalid": "শুধু অক্ষর এবং সংখ্যা.", + "ens-username-invalid-name-warning": "আপনার নামগুলির একটির নিবন্ধন প্রক্রিয়া অবৈধ অবস্থায় শেষ হয়েছে৷ ওয়ালেট লেনদেনের জন্য নামটি ব্যবহার করবেন না এবং support@status.im-এ আমাদের সহায়তার সাথে যোগাযোগ করুন", + "ens-username-owned": "® ব্যবহারকারীর নাম আপনার মালিকানাধীন। ", + "ens-username-owned-continue": "অব্যাহত রাখা এই ব্যবহারকারীর নামকে আপনার চ্যাট কী-এর সাথে সংযুক্ত করবে।", + "ens-username-registration-confirmation": "চমৎকার! লেনদেন সম্পূর্ণ হলে আপনি {{username}} এর মালিক।", + "ens-username-registration-invalid": "সতর্কতা ! রেজিস্ট্রেশন প্রক্রিয়া অবৈধ অবস্থায় শেষ হয়েছে। ওয়ালেট লেনদেনের জন্য নামটি ব্যবহার করবেন না এবং support@status.im-এ আমাদের সহায়তার সাথে যোগাযোগ করুন", + "ens-username-taken": "ব্যবহারকারীর নাম ইতিমধ্যেই নেওয়া :(", + "ens-username-you-can-follow-progress": "আপনি আপনার মানিব্যাগের লেনদেন ইতিহাস বিভাগের অগ্রগতি অনুসরণ করতে পারেন।", + "ens-usernames": "ENS ব্যবহারকারীর নাম", + "ens-usernames-details": "অন্যান্য ব্যবহারকারীদের দ্বারা সহজে স্বীকৃত হতে একটি সার্বজনীন ব্যবহারকারীর নাম নিবন্ধন করুন", + "ens-want-custom-domain": "আমি অন্য ডোমেইনে একটি নামের মালিক", + "ens-want-domain": "আমি একটি stateofus.eth ডোমেইন চাই", + "ens-welcome-hints": "ইএনএস নামগুলি সেই উন্মাদ-দীর্ঘ ঠিকানাগুলিকে অনন্য ব্যবহারকারীর নামে রূপান্তরিত করে।", + "ens-welcome-point-customize": "একটি ENS নাম চ্যাটে আপনার এলোমেলো 3-শব্দের নাম প্রতিস্থাপন করতে পারে. {{name}} এর পরিবর্তে @yourname হবে।", + "ens-welcome-point-customize-title": "আপনার চ্যাট নামটি কাস্টমাইজ করুন", + "ens-welcome-point-receive": "অন্যরা আপনাকে একটি সহজ ধাপে চ্যাটের মাধ্যমে ফান্ড পাঠাতে পারেন।", + "ens-welcome-point-receive-title": "চ্যাটে লেনদেন গ্রহণ করুন", + "ens-welcome-point-register": "নাম চিরকাল রাখার জন্য একবার নিবন্ধন করুন। ১ বছর পর আপনি নাম প্রকাশ করতে পারেন এবং আপনার SNT ফেরত পেতে পারেন।", + "ens-welcome-point-register-title": "নিবন্ধন করতে ১০ টি SNT", + "ens-welcome-point-simplify": "আপনি আপনার হেক্সাডেসিমাল হ্যাশ (0x ...) এর পরিবর্তে আপনার সহজেই ভাগ করে নেওয়ার জন্য ENS নামে তহবিলগুলি পেতে পারেন।", + "ens-welcome-point-simplify-title": "আপনার ETH ঠিকানা সরল করুন", + "ens-welcome-point-verify": "আপনি পরবর্তী পদক্ষেপগুলিতে নিজের মালিকানাধীন যে কোনও ব্যবহারকারীর নামটি যাচাই করতে এবং যুক্ত করতে পারেন।", + "ens-welcome-point-verify-title": "ইতোমধ্যে একটি ব্যবহারকারীর নামের মালিক?", + "ens-your-username": "আপনার ব্যবহারকারীর নাম", + "ens-your-usernames": "আপনার ব্যবহারকারীর নাম", + "ens-your-your-name": "আপনার ENS নাম", + "enter-12-words": "আপনার seed phrase এর 12 টি শব্দ লিখুন, একক স্পেস দ্বারা পৃথক করে", + "enter-a-private-key": "একটি ব্যক্তিগত কী লিখুন", + "enter-a-seed-phrase": "Seed phrase প্রবেশ করান", + "enter-address": "ঠিকানা লিখুন", + "enter-contact-code": "ই এন এস (vitalik94) অথবা চ্যাট কী (0x04…)", + "enter-pair-code": "আপনার জোড়া কোড প্রবেশ করান", + "enter-pair-code-description": "কী-কার্ড উপস্থাপনার সময় আপনার কাছে জোড়া কোড প্রদর্শিত হয়েছিল", + "enter-password": "পাসওয়ার্ড প্রবেশ করান", + "enter-password-migration-prompt": "আপনার কীগুলির সাথে পরিচিতি, চ্যাট এবং সেটিংস সরাতে আপনার পাসওয়ার্ড লিখুন", + "enter-pin": "6-ডিজিটের পাসকোড প্রবেশ করান", + "enter-puk-code": "PUK কোড প্রবেশ করান", + "enter-puk-code-description": "6-সংখ্যার পাসকোড ব্লক করা হয়েছে।\n পাসকোড অবরোধ মুক্ত করতে দয়া করে PUK কোড প্রবেশ করুন।", + "enter-recipient-address-or-username": "প্রাপকের ঠিকানা বা ব্যবহারকারীর নাম লিখুন", + "enter-seed-phrase": "বীজ বাক্যাংশ লিখুন", + "enter-url": "ইউআরএল লিখুন", + "enter-user-pk": "ব্যবহারকারী পাবলিক কী লিখুন", + "enter-watch-account-address": "একটি QR কোড স্ক্যান করুন\nবা\nদেখার জন্য ঠিকানা প্রবেশ করান", + "enter-word": "শব্দ লিখুন", + "enter-your-code": "আপনার 6-সংখ্যার পাসকোড প্রবেশ করান", + "enter-your-password": "আপনার পাসওয়ার্ড লিখুন", + "error": "ত্রুটি", + "error-unable-to-get-balance": "ভারসাম্য পেতে অক্ষম", + "error-unable-to-get-prices": "মুদ্রা রূপান্তর ত্রুটি। আবার চেষ্টা করতে আপনার স্ক্রীন সতেজ করুন।", + "error-unable-to-get-token-balance": "টোকেন ব্যালেন্স পেতে অক্ষম", + "errors": "ত্রুটি", + "eth": "ETH", + "ethereum-account": "Ethereum account", + "ethereum-address": "ইথেরিয়াম ঠকানা", + "ethereum-node-started-incorrectly-description": "ভুল কনফিগারেশন দিয়ে Ethereum নোড শুরু করা হয়েছে, সেই অবস্থা থেকে পুনরুদ্ধার করতে প্রয়োগণ বন্ধ করা হবে। কনফিগার করা নেটওয়ার্ক id = {{network-id}} actual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ethereum নোডটি ভুলভাবে শুরু হয়েছে", + "etherscan-lookup": "Etherscan এর দিকে তাকান", + "everyone": "প্রত্যেকে", + "expand-all": "সব প্রসারিত করুন", + "export-account": "একাউন্ট রপ্তানি করুন", + "export-key": "ব্যক্তিগত কী রপ্তানি করুন", + "external-storage-denied": "বাহ্যিক স্টোরেজ অ্যাক্সেস অস্বীকার করা হয়", + "failed": "ব্যর্থ", + "faq": "ঘন ঘন জিজ্ঞাসিত প্রশ্ন", + "fast": "দ্রুত", + "favourite": "প্রিয়", + "favourite-description": "আপনার প্রিয় ওয়েবসাইটগুলি এখানে উপস্থিত হবে", + "favourites": "পছন্দনীয়", + "favourites-empty": "পছন্দনীয়তে যুক্ত ঠিকানা এখানে প্রদর্শিত হবে", + "fee-cap": "ফি ক্যাপ", + "fee-explanation": "লেনদেনের জন্য সর্বাধিক সামগ্রিক মূল্য। যদি ব্লক বেস ফি এর চেয়ে বেশি হয়, তাহলে এটি নিম্ন ভিত্তি ফি সহ নিম্নলিখিত ব্লকে অন্তর্ভুক্ত করা হবে।", + "fee-options": "প্রস্তাবিত ফি অপশন", + "fetch-community": "সম্প্রদায় আনয়ন করুন", + "fetch-messages": "বার্তা আনুন", + "fetch-timeline": "আনুন", + "fetching-community": "সম্প্রদায় আনা হচ্ছে...", + "find": "অনুসন্ধান", + "finish": "সমাপ্ত", + "finishing-card-setup": "কার্ড উপস্থাপনা সমাপ্ত হচ্ছে", + "fleet": "বহর", + "fleet-settings": "ফ্লিট সেটিংস", + "follow": "অনুসরণ করুন", + "follow-your-interests": "একটি সর্বজনীন চ্যাটে যান এবং নতুন লোকের সাথে দেখা করুন", + "free": "↓ বিনামূল্যে", + "from": "থেকে", + "gas-amount-limit": "গ্যাসের সীমা", + "gas-limit": "গ্যাসের সীমা", + "gas-price": "Gas সীমা", + "gas-used": "Gas ব্যাবহার", + "generate-a-key": "কী তৈরি করুন", + "generate-a-new-account": "একটি অ্যাকাউন্ট তৈরি করুন", + "generate-a-new-key": "একটি নতুন কী তৈরি করুন", + "generate-account": "কী তৈরি করুন", + "generate-an-account": "একটি অ্যাকাউন্ট তৈরি করুন", + "generate-new-key": "কী তৈরি করুন", + "generating-codes-for-pairing": "> কার্ডে পণ্য সফটওয়্যার ডাউনলোড করা হচ্ছে\n > আনলক এবং জোড়া কোড তৈরি করা হচ্ছে", + "generating-keys": "কী তৈরি করা হচ্ছে...", + "generating-mnemonic": "Seed phrase তৈরি করা হচ্ছে", + "get-a-keycard": "একটি কীকার্ড পান", + "get-started": "শুরু করুন", + "get-status-at": "Status পান http:\/\/status.im", + "get-stickers": "স্টিকার পান", + "give-a-short-description": "একটি সংক্ষিপ্ত বিবরণ দিন", + "give-a-short-description-community": "একটি সংক্ষিপ্ত বিবরণ দিন", + "give-permissions-camera": "অনুমতি দিন\nক্যামেরা অ্যাক্সেস করতে", + "glossary": "শব্দকোষ", + "go-to-settings": "সেটিংসে যান...", + "got-it": "পেয়েছি", + "grant-face-id-permissions": "প্রয়োজনীয় ফেস আইডি অনুমতি দিতে, অনুগ্রহ করে আপনার সিস্টেম সেটিংসে যান এবং নিশ্চিত করুন যে Status> ফেস আইডি নির্বাচন করা হয়েছে।", + "group-chat": "গ্রুপ চ্যাট", + "group-chat-admin": "প্রশাসক", + "group-chat-admin-added": "** {{member}} ** প্রশাসক করা হয়েছে", + "group-chat-all-contacts-invited": "আপনার সমস্ত পরিচিতি ইতিমধ্যে গ্রুপে রয়েছে", + "group-chat-created": "** {{member}} ** গ্রুপ তৈরি করেছে ** {{name}} **", + "group-chat-decline-invitation": "আমন্ত্রণ প্রত্যাখ্যান করুন", + "group-chat-member-added": "** {{member}} ** আমন্ত্রিত হয়েছে", + "group-chat-member-joined": "** {{member}} ** গ্রুপে যোগ দিয়েছে", + "group-chat-member-removed": "** {{member}} ** গোষ্ঠীটি ছেড়ে গেছে", + "group-chat-members-count": "{{নির্বাচিত}}\/{সর্বোচ্চ}} সদস্য", + "group-chat-name-changed": "** {{member}} ** গোষ্ঠীর নাম পরিবর্তন করে ** {{name}} ** করা হয়েছে", + "group-chat-no-contacts": "আপনার এখনও কোনও যোগাযোগ নেই।\n চ্যাট শুরু করতে আপনার বন্ধুদের আমন্ত্রণ জানান", + "group-info": "গ্রুপ তথ্য", + "group-invite": "গ্রুপ আমন্ত্রণ", + "group-invite-link": "গ্রুপ আমন্ত্রণ লিংক", + "group-membership-request": "গ্রুপ সদস্যতার অনুরোধ", + "gwei": "Gwei", + "has-permissions": "অ্যাক্সেস করার অনুমতি আছে", + "hash": "হ্যাশ", + "help": "সাহায্য", + "help-capitalized": "সহায়তা", + "help-center": "সহায়তা কেন্দ্র", + "help-improve-status": "স্ট্যাটাস উন্নত করতে সাহায্য করুন", + "hide": "লুকান", + "hide-content-when-switching-apps": "স্ক্রীনশটগুলি ব্লক করুন", + "hide-content-when-switching-apps-ios": "প্রাকদর্শন লুকান", + "history": "ইতিহাস", + "history-nodes": "ইতিহাস নোড", + "hold-card": "পিছনে কার্ড ধরে রাখুন\n আপনার ফোনের", + "home": "বাড়ি", + "hooks": "হুকস", + "how-it-works": "এটা কিভাবে কাজ করে", + "http-gateway-error": "উফ, অনুরোধ ব্যর্থ হয়েছে!", + "identifier": "শনাক্তকারী", + "image": "চিত্র", + "image-remove-current": "বর্তমান ছবি অপসারণ করুন", + "image-source-gallery": "গ্যালারী থেকে নির্বাচন করুন", + "image-source-make-photo": "ক্যাপচার", + "image-source-title": "ছবি সম্পাদনা করুন", + "import": "আমদানি", + "import-community": "একটি সম্প্রদায় আমদানি করুন", + "import-community-title": "একটি সম্প্রদায় আমদানি করুন", + "in-contacts": "যোগাযোগে", + "include": "অন্তর্ভুক্ত করুন", + "incoming": "আগত", + "incoming-transaction": "আগত লেনদেন", + "incorrect-code": [ + "str", + "দুঃখিত কোডটি ভুল ছিল, দয়া করে এটি আবার লিখুন" + ], + "increase-gas": "গ্যাস বাড়ান", + "initialization": "আরম্ভ", + "install": "↓ ইনস্টল করুন", + "insufficient-balance-to-cover-fee": "লেনদেন ফি কভার করার জন্য যথেষ্ট ব্যালেন্স নেই", + "intro-message1": "Status স্বাগতম! আপনার পাসওয়ার্ড সেট করতে এবং শুরু করতে এই বার্তাটি আলতো চাপুন।", + "intro-privacy-policy-note1": "স্ট্যাটাস আপনার ব্যক্তিগত ডেটা থেকে সংগ্রহ বা লাভ করে না। অব্যাহত রেখে, আপনি এর সাথে একমত", + "intro-privacy-policy-note2": "গোপনীয়তা নীতি", + "intro-text": "Status বিকেন্দ্রীভূত ওয়েবে আপনার গেটওয়ে", + "intro-text1": "একটি পিয়ার-টু-পিয়ার, এনক্রিপ্ট করা নেটওয়ার্কে চ্যাট করুন যেখানে বার্তাসেন্সর বা হ্যাক করা যাবে না", + "intro-text2": "বিশ্বের যে কোন জায়গায় ডিজিটাল সম্পদ প্রেরণ এবং গ্রহণ করুন- কোন ব্যাংক একাউন্টের প্রয়োজন নেই", + "intro-text3": "গেম, এক্সচেঞ্জ এবং সামাজিক নেটওয়ার্ক অনুসন্ধান করুন যেখানে আপনি একা আপনার ডেটার মালিক", + "intro-title1": "সত্যিকারের ব্যক্তিগত যোগাযোগ", + "intro-title2": "নিরাপদ ক্রিপ্টো ওয়ালেট", + "intro-title3": "বিকেন্দ্রীভূত অ্যাপস", + "intro-wizard-text1": "কীগুলির একটি সেট আপনার অ্যাকাউন্ট নিয়ন্ত্রণ করে. আপনার কী আপনার ফোনে সরাসরি, যাতে আপনি সেগুলি ব্যবহার করতে পারেন", + "intro-wizard-text2": "একটা চাবি হল আড্ডার জন্য। এটি একটি পাঠযোগ্য নাম নিয়ে আসে যা পরিবর্তন করা যাবে না।", + "intro-wizard-text3": "আপনি যদি একটি কীকার্ডের মালিক হন, বর্ধিত নিরাপত্তার জন্য সেখানে আপনার চাবি সঞ্চয় করুন।", + "intro-wizard-text4": "আপনার কীসমূহ নিরাপদ এবং এনক্রিপ্ট করুন", + "intro-wizard-text6": "স্ট্যটাস আপনাকে নতুন বার্তাগুলি সম্পর্কে অবহিত করবে। আপনি পরে সেটিংসে আপনার বিজ্ঞপ্তি পছন্দগুলি সম্পাদনা করতে পারেন", + "intro-wizard-title-alt4": "একটি পাসওয়ার্ড তৈরি করুন", + "intro-wizard-title-alt5": "আপনার পাসওয়ার্ড নিশ্চিত করুন", + "intro-wizard-title1": "আপনার চাবি পান", + "intro-wizard-title2": "একটি চ্যাট নাম পছন্দ করুন", + "intro-wizard-title3": "কী স্টোরেজ পছন্দ করুন", + "intro-wizard-title4": "একটি ৬-সংখ্যার পাসকোড তৈরি করুন", + "intro-wizard-title5": "পাসকোডটি নিশ্চিত করুন", + "intro-wizard-title6": "বিজ্ঞপ্তিগুলি সক্ষম করুন", + "introduce-yourself": "একটি সংক্ষিপ্ত বার্তা দিয়ে নিজেকে পরিচয় করিয়ে দিন", + "invalid-address-qr-code": "স্ক্যান করা QR কোড একটি বৈধ ঠিকানা ধারণ করে না", + "invalid-format": "অকার্যকর বিন্যাস\nঅবশ্যই {{format}} হতে হবে", + "invalid-key-confirm": "প্রয়োগ করুন", + "invalid-key-content": "ডেটাবেস এনক্রিপ্ট করা যায় না কারণ একটি ফাইল দূষিত। আপনার তহবিল এবং চ্যাট কী নিরাপদ। অন্যান্য ডেটা, যেমন আপনার চ্যাট এবং পরিচিতিগুলি পুনরুদ্ধার করা যায় না। \" {{erase-multiaccounts-data-button-text}} \" বোতামটি, অন্যান্য সমস্ত ডেটা সরিয়ে দেবে এবং আপনাকে আপনার তহবিলগুলিতে অ্যাক্সেস করতে এবং বার্তাগুলি প্রেরণ করতে দেয়", + "invalid-number": "অকার্যকর সংখ্যা", + "invalid-pairing-password": "অকার্যকর জোড়া পাসওয়ার্ড", + "invalid-public-chat-topic": "অকার্যকর পাবলিক চ্যাট প্রসঙ্গ", + "invalid-range": "অকার্যকর বিন্যাস, অবশ্যই {{min}} এবং {{max}} এর মধ্যে থাকতে হবে", + "invalid-username-or-key": "অবৈধ ব্যবহারকারীর নাম বা চ্যাট কী", + "invite": "আমন্ত্রণ", + "invite-button": "আমন্ত্রণ", + "invite-chat-accept": "গ্রহণ করুন", + "invite-chat-accept-join": "গ্রহণ করুন এবং যোগদান করুন", + "invite-chat-intro": "Status যোগ দিতে একজন বন্ধু আপনাকে রেফার করেছে। এখানে আপনাকে শুরু করার জন্য কিছু ক্রিপ্টো আছে! একটি ENS নাম নিবন্ধন করতে বা একটি স্টিকার প্যাক কিনতে এটি ব্যবহার করুন।", + "invite-chat-name": "বন্ধু রেফারেল", + "invite-chat-pending": "বিচারাধীন", + "invite-chat-rule": "গ্রহণ করলে আপনার বন্ধুকে ক্রিপ্টো রেফারেল বোনাস প্রদান করা হবে।", + "invite-chat-starter-pack": "স্টার্টার প্যাক", + "invite-friends": "বন্ধুদের আমন্ত্রণ করুন", + "invite-instruction-fifth": "আপনি যে কোন সময় আপনার রেফারেল বোনাস পরিশোধ করতে পারেন।", + "invite-instruction-first": "স্ট্যাটাস ডাউনলোড এবং যোগদান করতে আপনি আপনার বন্ধুকে একটি অনন্য আমন্ত্রণ লিংক পাঠান", + "invite-instruction-fourth": "আপনি আপনার রেফারেল বোনাস এবং আপনার বন্ধু স্টার্টার প্যাক পাবেন", + "invite-instruction-second": "আপনার বন্ধু স্ট্যাটাস ডাউনলোড করে এবং একটি অ্যাকাউন্ট তৈরি করে (অ্যান্ড্রয়েডে)", + "invite-instruction-third": "আপনার বন্ধুর সাথে একটি চ্যাট শুরু হয়েছে, যেখানে তারা আপনার রেফারেল নিশ্চিত করে", + "invite-people": "বন্ধুদের আমন্ত্রণ করুন", + "invite-privacy-policy-public": "আপনি একটি রেফারেল লিঙ্কের মাধ্যমে স্ট্যাটাস ইনস্টল করেছেন। এই চ্যাটে যোগদান করে আপনি আপনার রেফারারকে অ্যাট্রিবিউট করেন এবং এতে সম্মত হন", + "invite-privacy-policy1": "গ্রহণ করে আপনি রেফারেল প্রোগ্রামটিতে সম্মত হন", + "invite-privacy-policy2": "শর্তাবলী।", + "invite-public-chat-home": "রেফারেল আমন্ত্রণ", + "invite-public-chat-intro": "আপনাকে শুরু করার জন্য এখানে কিছু ক্রিপ্টো আছে! একটি ENS নাম নিবন্ধন করতে বা স্টিকার প্যাক কিনতে এটি ব্যবহার করুন", + "invite-receive-account": "আপনার রেফারেল বোনাস গ্রহণের জন্য অ্যাকাউন্ট", + "invite-reward": "আপনার আমন্ত্রিত প্রতিটি বন্ধুর জন্য ক্রিপ্টো আয় করুন!", + "invite-reward-friend": "বন্ধু: ", + "invite-reward-friend-description": "আপনার বন্ধু শুরু করার জন্য কিছু {{reward}} নিয়ে গঠিত একটি স্টার্টার প্যাক পাবেন", + "invite-reward-friend-name": "স্টার্টার প্যাক", + "invite-reward-you": "আপনি: ", + "invite-reward-you-description": "একজন বন্ধুকে আমন্ত্রণ জানান এবং রেফারেল বোনাস হিসেবে {{reward}} গ্রহণ করুন। স্টিকার, একটি ই এন এস নাম পেতে এটি ব্যবহার করুন এবং ড্যাপ চেষ্টা করুন", + "invite-reward-you-name": "রেফারেল বোনাস", + "invite-select-account": "আপনার রেফারেল বোনাস পেতে একটি অ্যাকাউন্ট নির্বাচন করুন", + "invite-warning": "এই প্রমোশন শুধুমাত্র একটি অ্যান্ড্রয়েড ডিভাইস ব্যবহারকারীদের জন্য বৈধ, যারা মার্কিন যুক্তরাষ্ট্রের বাসিন্দা নয়। বন্ধুকে ৭ দিনের মধ্যে রেফারেল নিশ্চিত করতে হবে", + "invited": "আমন্ত্রিত", + "join": "যোগদান", + "join-a-community": "অথবা একটি সম্প্রদায়ে যোগ দিন", + "join-group-chat": "গ্রুপে যোগ দিন", + "join-group-chat-description": "{{username}} আপনাকে দলে যোগ দিতে আমন্ত্রণ জানিয়েছে {{group-name}}", + "join-me": "স্ট্যাটাসে আমার সাথে যোগ দিন", + "join-new-private-chat": "একটি নতুন ব্যক্তিগত চ্যাট শুরু করুন", + "join-new-public-chat": "একটি সর্বজনীন আড্ডায় যোগ দিন", + "joined": "যোগদান করা হয়েছে", + "joined-group-chat-description": "আপনি {{group-name}} আমন্ত্রণ থেকে {{username}} যোগদান করেছেন", + "key": "কী", + "key-managment": "কী ব্যবস্থাপনা", + "key-on-device": "এই ডিভাইসে ব্যক্তিগত কী সংরক্ষিত আছে", + "keycard": "কী-কার্ড", + "keycard-access-reset": "কী-কার্ড অ্যাক্সেস রিসেট করা হয়েছে", + "keycard-applet-install-instructions": "অ্যাপলেট ইনস্টল করতে অনুগ্রহ করে https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation উপর নির্দেশাবলী অনুসরণ করুন", + "keycard-awaiting-description": "আপনার ডিভাইসে NFC রিডার খুঁজতে কার্ডটি সরানোর চেষ্টা করুন", + "keycard-awaiting-title": "এখনো খুঁজছি...", + "keycard-backup": "একটি ব্যাকআপ কীকার্ড তৈরি করুন", + "keycard-backup-success-body": "ব্যাকআপ কার্ড সফলভাবে তৈরি হয়েছে। আপনি এখন এটি আপনার অ্যাকাউন্টের সাথে প্রাথমিক কার্ডের মতো ব্যবহার করতে পারেন।", + "keycard-backup-success-title": "ব্যাকআপ সফল", + "keycard-blocked": "কীকার্ড অবরুদ্ধ করা হয়েছে।\n এটি ব্যবহার চালিয়ে যেতে আপনার পুনরায় সেট করতে হবে।", + "keycard-can-use-with-new-passcode": "আপনি আপনার নতুন পাসকোড দিয়ে এই কার্ডটি ব্যবহার করতে পারেন", + "keycard-cancel-setup-text": "এটি কী-কার্ড উপস্থাপনা বাতিল করবে। কী-কার্ড ব্যবহার করার জন্য উপস্থাপনা টি শেষ করা অত্যন্ত বাঞ্ছনীয়। আপনি কি সত্যিই বাতিল করতে চান?", + "keycard-cancel-setup-title": "বিপজ্জনক অপারেশন", + "keycard-connected-description": "কার্ডটি স্থির রাখার চেষ্টা করুন", + "keycard-connected-title": "সংযুক্ত", + "keycard-desc": "আপনি একটি কী কার্ডের মালিক? এতে আপনার চাবি সংরক্ষণ করুন; লেনদেনের জন্য আপনার এটি প্রয়োজন হবে", + "keycard-dont-ask-card": "সাইন ইন করার জন্য কার্ড চাইবেন না", + "keycard-enter-new-passcode": "নতুন পাসকোড প্রবেশ করান {{step}}\/2", + "keycard-error-description": "চালিয়ে যাওয়ার জন্য কার্ডটি আবার সংযুক্ত করুন", + "keycard-error-title": "সংযোগ হারিয়ে গেছে", + "keycard-factory-reset": "কারখানার সেটিংসে কার্ড ফেরত দিন", + "keycard-factory-reset-text": "এটি সম্পাদন করলে কার্ডে সংরক্ষিত যেকোন স্মৃতিচিহ্ন মুছে যাবে। এই কীকার্ডের সাহায্যে আপনি যে স্মরণীয় বাক্যাংশটি ব্যবহার করছেন তার একটি ব্যাকআপ নিশ্চিত করুন।", + "keycard-factory-reset-title": "আপনি কি নিশ্চিত যে আপনি একটি ফ্যাক্টরি রিসেট করতে চান?", + "keycard-free-pairing-slots": "কীকার্ডে {{n}} বিনামূল্যে জোড়া স্লট আছে", + "keycard-has-multiaccount-on-it": "এই কার্ডটি পূর্ণ। প্রতিটি কার্ড একটি প্রধান কী-পেয়ার ধারণ করতে পারে", + "keycard-init-description": "অব্যাহত রাখতে আপনার ফোনের পিছনে কার্ডটি রাখুন", + "keycard-init-title": "কার্ড খুঁজছেন ...", + "keycard-is-blocked-details": "এই অ্যাকাউন্টের জন্য অ্যাক্সেস বা সাইন করতে আপনি আর এই কার্ডটি ব্যবহার করতে পারবেন না। অনেক ব্যর্থ পাসকোড এবং পিইউকে প্রচেষ্টা হয়েছে।", + "keycard-is-blocked-instructions": "আপনার অ্যাকাউন্টটি পুনরায় ইনস্টল করার পর স্ট্যটাস অ্যাক্সেস করতে এবং একটি নতুন কীকার্ড ব্যবহার করতে, আলাদা ওয়ালেট ব্যবহার করুন বা ম্যানুয়ালি কীকার্ড পুনরায় সেট করুন।", + "keycard-is-blocked-title": "কী-কার্ড অবরুদ্ধ", + "keycard-is-frozen-details": "আপনার সম্পদ রক্ষা করতে, আপনার কার্ড হিমায়িত করা হয়েছে। কী আনলক করতে এবং লেনদেন প্রেরণ করতে কার্ড অ্যাক্সেস রিসেট করুন. একটি নতুন পাসকোড তৈরি করুন এবং এই কার্ডে আপনার অ্যাকাউন্ট(গুলি) অ্যাক্সেস করতে আপনার PUK প্রবেশ করান", + "keycard-is-frozen-factory-reset": "মেমোনিক দিয়ে রিসেট করুন", + "keycard-is-frozen-reset": "কার্ড অ্যাক্সেস পুনরায় সেট করুন", + "keycard-is-frozen-title": "কী-কার্ড জমে গেছে", + "keycard-onboarding-finishing-header": "সমাপ্ত হচ্ছে", + "keycard-onboarding-intro-header": "কীকার্ডে আপনার কী সঞ্চয় করুন", + "keycard-onboarding-intro-text": "প্রস্তুত হন, এটি কয়েক মিনিট সময় নিতে পারে, তবে আপনার অ্যাকাউন্ট সুরক্ষিত করা গুরুত্বপূর্ণ", + "keycard-onboarding-mnemonic-text": "আপনার বীজ বাক্যাংশটি লিখতে আপনার একটি কাগজ এবং একটি পেন্সিলেরও প্রয়োজন হবে।", + "keycard-onboarding-pairing-header": "কার্ডটি যুক্ত করা হচ্ছে ...", + "keycard-onboarding-pin-text": "আপনাকে একটি 6-সংখ্যার পাসকোড তৈরি করতে হবে যা আপনার কীকার্ডের অ্যাক্সেস সুরক্ষিত করতে ব্যবহৃত হবে।", + "keycard-onboarding-preparing-header": "কার্ড প্রস্তুত করা হচ্ছে...", + "keycard-onboarding-puk-code-header": "কোড লিখুন\n এবং এগুলি নিরাপদে সংরক্ষণ করুন", + "keycard-onboarding-recovery-phrase-description": "আপনার চাবি ফেরত পেতে আপনার এই বীজ বাক্যাংশ প্রয়োজন. এটা লিখে রাখুন। এটি নিরাপদ, অফলাইন রাখুন, এবং এই ডিভাইস থেকে পৃথক করুন.", + "keycard-onboarding-recovery-phrase-header": "বীজ বাক্যাংশ ব্যাক আপ করুন", + "keycard-onboarding-recovery-phrase-text": "শুধু আপনার চোখের জন্য। এটি আপনার চাবি তৈরি করতে ব্যবহৃত যাদুকরী বীজ।", + "keycard-onboarding-start-header": "পিছনে কার্ড ধরে\n আপনার ফোন শুরু করতে", + "keycard-onboarding-start-step1": "একটি পাসকোড তৈরি করুন", + "keycard-onboarding-start-step1-text": "প্রায় ১ মিনিট। আপনার কী এনক্রিপ্ট করতে একটি ৬-ডিজিটের পাসকোড তৈরি করুন", + "keycard-onboarding-start-step2": "পিইউকে এবং পেয়ারিং কোড লিখুন", + "keycard-onboarding-start-step2-text": "প্রায় ১ মিনিট। তার জন্য আপনার প্রয়োজন এক টুকরো কাগজ এবং একটি পেন্সিল", + "keycard-onboarding-start-step3": "বীজ বাক্যাংশ ব্যাক আপ করুন", + "keycard-onboarding-start-step3-text": "প্রায় ১ মিনিট। এছাড়াও একটি কাগজ এবং একটি পেন্সিল প্রয়োজন", + "keycard-onboarding-start-text": "এবং ফোন যোগাযোগে কার্ড বজায় রাখুন\n উপস্থাপনার সময়। সেটআপ প্রায় ৪ মিনিট সময় লাগবে", + "keycard-processing-description": "কার্ডটি স্থির রাখার চেষ্টা করুন", + "keycard-processing-title": "প্রক্রিয়াকরণ।।।", + "keycard-recover": "হারানো বা হিমায়িত কার্ড?", + "keycard-recover-text": "যদি আপনার স্মারক বাক্যাংশ থাকে তবে আপনি এই অ্যাকাউন্টের সাথে যুক্ত একটি নতুন কীকার্ড তৈরি করতে পারেন। আপনি একটি নতুন কীকার্ড ব্যবহার করতে পারেন অথবা হিমায়িত একটিতে ফ্যাক্টরি রিসেট করতে পারেন।", + "keycard-recover-title": "এই অ্যাকাউন্টের জন্য একটি নতুন কার্ড তৈরি করবেন?", + "keycard-recovery-intro-button-text": "পুনরুদ্ধার শুরু করুন", + "keycard-recovery-intro-header": "কীকার্ডে সংরক্ষিত কীগুলি পুনরুদ্ধার করুন", + "keycard-recovery-intro-text": "আপনি যদি আগে একটি কীকার্ড ব্যবহার করে কী তৈরি করেন এবং এখন এই ডিভাইসে এই কীগুলি ব্যবহার করতে চান", + "keycard-recovery-no-key-header": "কিছুই নেই\n এখানে পুনরুদ্ধার করার", + "keycard-recovery-no-key-text": "আপনার কীকার্ডে কোন কী মজুদ নেই। এটি ব্যবহার করতে, একটি নতুন কী তৈরি করুন এবং কী সঞ্চয় করতে আপনার কীকার্ড চয়ন করুন", + "keycard-recovery-phrase-confirm-header": "বীজ বাক্যাংশ নিশ্চিত করুন", + "keycard-recovery-phrase-confirmation-text": "তুমি দ্বিতীয় বার সুযোগ পেতে পারবে না! আপনি যদি অ্যাক্সেস হারান, উদাহরণস্বরূপ আপনার কী-কার্ড হারিয়ে, আপনি শুধুমাত্র আপনার বীজ বাক্যাংশ দিয়ে আপনার কী অ্যাক্সেস করতে পারেন. কেউ না, কিন্তু তোমার বীজের বাক্যাংশ আছে। এটা লিখে দাও। এটা নিরাপদ রাখো।", + "keycard-recovery-phrase-confirmation-title": "বীজ বাক্যটি নিচে লিখেছেন?", + "keycard-recovery-success-header": "আপনার চাবি হয়েছে\n সফলভাবে পুনরুদ্ধার", + "keycard-redeem-title": "ছাড়িয়ে দিন", + "keycard-redeem-tx": "সম্পদ উদ্ধার করুন", + "keycard-redeem-tx-desc": "স্বাক্ষর করতে এবং সম্পদ গ্রহণ করতে কার্ডটি ট্যাপ করুন", + "keycard-reset-passcode": "পাসকোড রিসেট করুন", + "keycard-success-description": "আপনি এখন কার্ডটি অপসারণ করতে পারেন", + "keycard-success-title": "সাফল্য", + "keycard-unauthorized-operation": "আপনি এই অপারেশন করতে অননুমোদিত।\n বৈধ কার্ডটি আলতো চাপুন এবং আবার চেষ্টা করুন।", + "keycard-upsell-subtitle": "উন্নত নিরাপত্তা এবং সুবিধা", + "language": "ভাষা", + "last-backup-performed": "শেষ ব্যাকআপ সম্পাদিত:", + "last-transaction": "সর্বশেষ লেনদেন", + "learn-more": "আরও জানুন", + "learn-more-about-keycard": "কীকার্ড সম্পর্কে আরও জানুন", + "leave": "ছেড়ে দিন", + "leave-chat": "চ্যাট ছেড়ে দিন", + "leave-chat-confirmation": "আপনি কি নিশ্চিত যে আপনি চ্যাট ছেড়ে যেতে চান?", + "leave-community": "সম্প্রদায় ত্যাগ করুন", + "leave-confirmation": "চ্যাট ছেড়ে দিন", + "leave-group": "দল পরিত্যাগ করুন", + "left": "বাঁদিকে", + "les-ulc": "LES\/ULC", + "lets-go": "চলো যাই", + "light": "হালকা", + "limit": "সীমা", + "linked-on": "{{date}} এ সংযুক্ত", + "load-messages-before": "{{date}} এর আগে", + "load-more-messages": "আরও বার্তা আনুন", + "load-more-timeline": "আরও আনুন", + "loading": "লোড হচ্ছে ...", + "local-notifications": "স্থানীয় বিজ্ঞপ্তিসমূহ", + "local-notifications-subtitle": "ব্যাকগ্রাউন্ড পরিষেবা সক্রিয় করুন", + "lock-app-with": "সঙ্গে অ্যাপ লক করুন", + "log-level": "লগ স্তর", + "log-level-settings": "লগ স্তরের সেটিংস", + "logging": "লগিং", + "logging-enabled": "লগিং সক্রিয় করা হয়েছে?", + "login-pin-description": "আপনার কী আনলক করতে আপনার 6-ডিজিটের পাসকোড প্রবেশ করান", + "logout": "লগ আউট করুন", + "logout-app-content": "একাউন্টটি লগ আউট করা হবে। যখন আপনি এটি আবার আনলক করবেন, নির্বাচিত নেটওয়ার্ক ব্যবহার করা হবে", + "logout-are-you-sure": "আপনি কি নিশ্চিত আপনি চান\nলগ আউট করতে?", + "logout-key-management": "কী ম্যানেজমেন্ট অ্যাক্সেস করতে আপনাকে লগ আউট করতে হবে", + "logout-title": "লগ আউট?", + "looking-for-cards": "কার্ড খুঁজছেন ...", + "lost-connection": "সংযোগ হারিয়ে গেছে", + "low-tip": "টিপ খুব কম", + "lower-than-average-tip": "গড় টিপের চেয়ে কম", + "mail-should-be-configured": "মেইল ক্লায়েন্ট কনফিগার করা উচিত", + "mailserver-address": "স্ট্যাটাস নোডের ঠিকানা", + "mailserver-automatic": "স্বয়ংক্রিয় নির্বাচন", + "mailserver-automatic-switch-explanation": "উপলভ্য দ্রুততম ইতিহাস নোড চয়ন করুন", + "mailserver-connection-error": "ইতিহাস নোডের সাথে সংযোগ করা যায়নি", + "mailserver-content": "Status নেটওয়ার্কের একটি নোড যা ৩০ দিন পর্যন্ত বার্তারুট এবং সঞ্চয় করে।", + "mailserver-details": "ইতিহাস নোডের বিস্তারিত", + "mailserver-error-content": "আপনার নির্বাচিত ইতিহাস নোডে পৌঁছানো যায়নি।", + "mailserver-error-title": "ইতিহাস নোডের সাথে সংযুক্ত হতে ত্রুটি", + "mailserver-format": "এনোড: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "আরেকটি ইতিহাস নোড বেছে নিন", + "mailserver-reconnect": "ইতিহাস নোডের সাথে সংযোগ করা যায়নি। পুনরায় সংযোগ করতে ট্যাপ করুন", + "mailserver-request-error-content": "নিম্নলিখিত ত্রুটিটি ইতিহাস নোড দ্বারা ফেরত দেওয়া হয়েছে: {{error}}", + "mailserver-request-error-status": "ইতিহাস আনার সময় একটি ত্রুটি সংঘটিত হয়েছে, বিস্তারিত জানার জন্য লগপরীক্ষা করুন", + "mailserver-request-error-title": "ইতিহাস নোড অনুরোধ ত্রুটি", + "mailserver-request-retry": "অনুরোধ পুনরায় চেষ্টা করুন", + "mailserver-retry": "পুনরায় চেষ্টা করা", + "mailserver-title": "ইতিহাস নোড", + "main-currency": "প্রধান মুদ্রা", + "main-networks": "প্রধান নেটওয়ার্কসমূহ", + "main-wallet": "প্রধান মানিব্যাগ", + "mainnet-network": "প্রধান নেটওয়ার্ক", + "make-admin": "প্রশাসক তৈরি করুন", + "manage-connections": "অ্যাপ্লিকেশন সংযোগগুলির মধ্যে থেকে সংযোগগুলি পরিচালনা করুন৷", + "manage-keys-and-storage": "কী এবং স্টোরেজ পরিচালনা করুন", + "mark-all-read": "সমস্ত পড়া চিহ্নিত করুন", + "master-account": "মাস্টার অ্যাকাউন্ট", + "max-fee": "সর্বোচ্চ ফি", + "max-priority-fee": "সর্বোচ্চ অগ্রাধিকার ফি", + "maximum-fee": "সর্বোচ্চ ফি", + "maximum-fee-desc": "লেনদেনের জন্য সর্বাধিক সামগ্রিক মূল্য। যদি বর্তমান ব্লক বেস ফি এটি অতিক্রম করে তবে আপনার লেনদেনটি কম বেস ফি সহ একটি নিম্নলিখিত ব্লকে অন্তর্ভুক্ত করা হবে।", + "maybe-later": "হয়তো পরে", + "member-ban": "নিষিদ্ধ সদস্য", + "member-kick": "কিক সদস্য", + "members": { + "one": "1 সদস্য", + "other": " {{count}} সদস্য" + }, + "members-active": { + "one": "সদস্য", + "other": "{{count}} সদস্য" + }, + "members-active-none": "কোন সদস্য নেই", + "members-count": "{{count}} সদস্য", + "members-label": "সদস্যরা", + "members-limit-reached": "সদস্যদের সীমা পৌঁছেছে", + "members-title": "সদস্যরা", + "membership-approval": "অনুমোদন প্রয়োজন", + "membership-approval-description": "আপনার কমিউনিটি যোগদানের জন্য স্বাধীন, কিন্তু নতুন সদস্যদের প্রথমে কমিউনিটি নির্মাতার অনুমোদন প্রয়োজন", + "membership-button": "সদস্যপদের প্রয়োজনীয়তা", + "membership-declined": "সদস্যপদের অনুরোধ প্রত্যাখ্যান করা হয়েছে", + "membership-description": "গ্রুপ মেম্বারশিপ আপনাকে গ্রুপ অ্যাডমিন দ্বারা গ্রহণ করতে হবে", + "membership-ens": "ইএনএস ব্যবহারকারীর নাম প্রয়োজন", + "membership-ens-description": "আপনার সম্প্রদায়ের যোগদান করতে সক্ষম হওয়ার জন্য একটি ইএনএস ব্যবহারকারীর নাম প্রয়োজন", + "membership-free": "কোন প্রয়োজনীয়তা নেই", + "membership-free-description": "আপনার কমিউনিটি যে কেউ যোগদানের জন্য বিনামূল্যে", + "membership-invite": "অন্য সদস্যের আমন্ত্রণ প্রয়োজন", + "membership-invite-description": "আপনার সম্প্রদায় শুধুমাত্র বিদ্যমান সম্প্রদায়ের সদস্যদের একটি আমন্ত্রণ দ্বারা যোগদান করা যেতে পারে", + "membership-none": "কিছুই না", + "membership-none-placeholder": "আপনি নতুন সদস্যদের যোগদানের আগে নির্দিষ্ট মানদণ্ড পূরণ করতে পারেন। এটি যে কোন সময় পরিবর্তন করা যেতে পারে", + "membership-request-pending": "সদস্যপদের আবেদন মুলতুবি", + "membership-requests": "সদস্যপদের অনুরোধ", + "membership-title": "সদস্যপদের প্রয়োজনীয়তা", + "message": "বার্তা", + "message-not-sent": "বার্তা প্রেরণ করা হয়নি", + "message-options-cancel": "বাতিল", + "message-reply": "উত্তর", + "messages": "বার্তাগুলি", + "messages-from-contacts-only-subtitle": "আপনার পরিচিতি হিসেবে যোগ করা লোকজনই আপনার সাথে নতুন চ্যাট শুরু করতে পারে অথবা আপনাকে একটি গ্রুপে আমন্ত্রণ জানাতে পারেন", + "might-break": "কিছু অ্যাপ ভাঙ্গতে পারে", + "migration-successful": "মাইগ্রেশন সফল", + "migration-successful-text": "অ্যাকাউন্ট সফলভাবে কীকার্ডে স্থানান্তরিত হয়েছে", + "migrations-failed-content": "{{message}}\n স্কিমা সংস্করণ: প্রাথমিক {{initial-version}} , বর্তমান {{current-version}} , শেষ {{last-version}} \n\n একটি ডাটাবেস ত্রুটি ঘটেছে। আপনার তহবিল এবং চ্যাট কী নিরাপদ। অন্যান্য ডেটা, যেমন আপনার চ্যাট এবং পরিচিতিগুলি পুনরুদ্ধার করা যায় না। \" {{erase-multiaccounts-data-button-text}} \" বোতামটি, অন্যান্য সমস্ত ডেটা সরিয়ে ফেলবে এবং আপনাকে আপনার তহবিলগুলিতে অ্যাক্সেস করতে এবং বার্তাগুলি প্রেরণের অনুমতি দেয়।", + "miners-higher-fee": "আপনি যদি উচ্চতর ফি প্রদান করেন তবে খনির লোকেরা সম্ভবত আপনার লেনদেনকে অন্তর্ভুক্ত করবে।", + "minimum-received": "ন্যূনতম প্রাপ্তি", + "mobile-network-ask-me": "মোবাইল নেটওয়ার্কে আমাকে জিজ্ঞেস করুন", + "mobile-network-continue-syncing": "এককালবর্তীকরণ অব্যাহত রাখুন", + "mobile-network-continue-syncing-details": "আপনি এটি পরে সেটিংসে পরিবর্তন করতে পারেন", + "mobile-network-go-to-settings": "সেটিংসে যান", + "mobile-network-settings": "মোবাইল ডাটা", + "mobile-network-sheet-configure": "আপনি আরো সিংক্রোনাইজিং কনফিগার করতে পারেন \nবিস্তারিত", + "mobile-network-sheet-offline": "কোনও ওয়াই-ফাই নেই, বার্তা সিঙ্ক করা অক্ষম হয়েছে।", + "mobile-network-sheet-offline-details": "মোবাইল নেটওয়ার্ক ব্যবহার করে এককালবর্তীকরণ বন্ধ", + "mobile-network-sheet-remember-choice": "আমার পছন্দ মনে রেখো", + "mobile-network-sheet-settings": "সেটিংস", + "mobile-network-start-syncing": "এককালবর্তীকরণ শুরু করুন", + "mobile-network-stop-syncing": "এককালবর্তীকরণ বন্ধ করুন", + "mobile-network-stop-syncing-details": "ওয়াই-ফাই-এর সাথে সংযুক্ত না হওয়া পর্যন্ত?", + "mobile-network-use-mobile": "মোবাইল ডাটা ব্যবহার করুন", + "mobile-network-use-mobile-data": "চ্যাট এবং ওয়ালেট সিঙ্ক করার সময় স্ট্যাটাস প্রচুর ডেটা ব্যবহার করে।", + "mobile-network-use-wifi": "শুধুমাত্র ওয়াই-ফাই", + "mobile-syncing-sheet-details": "চ্যাট এবং ওয়ালেট সিঙ্ক করার সময় Status প্রচুর ডেটা ব্যবহার করে।", + "mobile-syncing-sheet-title": "মোবাইল ডেটা ব্যবহার করে সিঙ্ক করবেন?", + "more": "আরও", + "move-and-reset": "সরান এবং পুনরায় সেট করুন", + "move-keystore-file": "কীস্টোর ফাইল সরান", + "move-keystore-file-to-keycard": "কীস্টোর ফাইলকে কীকার্ডে সরাতে চান?", + "multiaccount-exists-content": "এই একাউন্টের জন্য কী ইতোমধ্যে বিদ্যমান এবং পুনরায় যুক্ত করা যাবে না। আপনি যদি আপনার পাসওয়ার্ড, পাসকোড বা কীকার্ড হারিয়ে ফেলেন, অ্যাপটি আনইনস্টল করুন, আপনার বীজ বাক্যাংশ প্রবেশ করিয়ে আপনার কী পুনরায় ইনস্টল করুন এবং অ্যাক্সেস করুন", + "multiaccount-exists-title": "এই অ্যাকাউন্টের কীগুলি ইতিমধ্যে বিদ্যমান", + "multiaccounts-recover-enter-phrase-text": "১২,১৫,১৮,২১ বা ২৪ শব্দ প্রবেশ করান।\nএকটি একক স্থান দ্বারা শব্দ পৃথক করুন।", + "multiaccounts-recover-enter-phrase-title": "আপনার বীজ বাক্যাংশ লিখুন", + "mute": "নিঃশব্দ করুন", + "my-accounts": "আমার অ্যাকাউন্ট", + "my-accounts-empty": "আপনার উপলভ্য একাউন্টসমূহ এখানে প্রদর্শিত হবে", + "my-profile": "আমার প্রোফাইল", + "my-status": "আমার স্ট্যাটাস", + "name": "নাম", + "name-of-token": "আপনার টোকেনের নাম", + "name-optional": "নাম (ঐচ্ছিক)", + "name-your-channel": "আপনার চ্যানেলের নাম দিন", + "name-your-channel-placeholder": "চ্যানেলের নাম", + "name-your-community": "আপনার সম্প্রদায়ের নাম দিন", + "name-your-community-placeholder": "একটি আকর্ষণীয় নাম", + "need-help": "সাহায্য লাগবে?", + "network": "নেটওয়ার্ক", + "network-chain": "নেটওয়ার্ক চেইন", + "network-details": "নেটওয়ার্কের বিস্তারিত", + "network-fee": "নেটওয়ার্ক ফি", + "network-id": "নেটওয়ার্ক আইডি", + "network-info": "নেটওয়ার্ক তথ্য", + "network-invalid-network-id": "নির্দিষ্ট নেটওয়ার্ক আইডি RPC url দ্বারা নেটওয়ার্ক আইডির সাথে সামঞ্জস্যপূর্ণ নয়", + "network-invalid-status-code": "অকার্যকর স্তিতি কোড: {{code}}", + "network-invalid-url": "নেটওয়ার্ক ইউআরএল অবৈধ", + "network-settings": "নেটওয়ার্ক সেটিংস", + "never": "কখনই না", + "new": "নতুন", + "new-category": "নতুন বিভাগ", + "new-chat": "নতুন চ্যাট", + "new-community-title": "নতুন সম্প্রদায়", + "new-contact": "নতুন পরিচিতি", + "new-contract": "নতুন চুক্তি", + "new-favourite": "নতুন প্রিয়", + "new-group": "নতুন দল", + "new-group-chat": "নতুন গ্রুপ চ্যাট", + "new-network": "নতুন নেটওয়ার্ক", + "new-password": "নতুন পাসওয়ার্ড", + "new-pin-description": "নতুন 6-ডিজিটের পাসকোড প্রবেশ করান", + "new-public-group-chat": "পাবলিক চ্যাটে যোগ দিন", + "new-puk-description": "নতুন 12-সংখ্যার PUK লিখুন", + "new-status": "নতুন স্ট্যাটাস", + "new-tab": "নতুন ট্যাব", + "next": "পরবর্তী", + "nickname": "ডাকনাম", + "nickname-description": "ডাকনামগুলি আপনাকে স্ট্যাটাসে অন্যদের সনাক্ত করতে সহায়তা করে।\nআপনি যে ডাকনামগুলি যোগ করেছেন তা কেবল আপনি দেখতে পারেন", + "no": "না", + "no-collectibles": "কোনো সংগ্রহ সুপ্রাপ্য নয়", + "no-contacts": "এখনো কোন পরিচিতি নেই", + "no-keycard-applet-on-card": "কার্ডে কোন কীকার্ড অ্যাপলেট নেই", + "no-messages": "কোনো বার্তা নেই", + "no-pairing-slots-available": "এই কার্ডটি ইতোমধ্যে ৫টি ডিভাইসে জোড়া হয়েছে এবং এটির সাথে জোড়া হতে পারে না। অনুগ্রহ করে জোড়া ডিভাইসগুলির একটি ব্যবহার করুন, এই কার্ড দিয়ে লগ ইন করুন এবং কার্ডে জোড়া স্লট খালি করুন", + "no-pinned-messages": "কোন পিন করা বার্তা নেই", + "no-result": "কোন ফলাফল নেই", + "no-thanks": "না ধন্যবাদ", + "no-tokens-found": "কোনো টোকেন খুঁজে পাওয়া যায়নি", + "node-address": "নোডের ঠিকানা", + "node-details": "নোডের বিবরণ", + "node-info": "নোড তথ্য", + "node-version": "নোড সংস্করণ", + "nodes-disabled": "স্ট্যাটাস নোড নিষ্ক্রিয়", + "non-archival-node": "আরপিসি এন্ডপয়েন্ট আর্কাইভের অনুরোধ সমর্থন করে না। আপনার স্থানীয় স্থানান্তরের ইতিহাস অসম্পূর্ণ হতে পারে।", + "non-contacts": "পরিচিতি নেই", + "nonce": "nonce", + "none": "কিছুই না", + "normal": "স্বাভাবিক", + "not-applicable": "অস্বাক্ষরিত লেনদেনের জন্য প্রযোজ্য নয়", + "not-connected-nodes": "স্ট্যাটাস নোডের সাথে সংযুক্ত নয়", + "not-connected-to-peers": "কোন সমবয়সীদের সাথে সংযুক্ত নয়", + "not-enough-snt": "পর্যাপ্ত SNT নেই", + "not-found": "পাওয়া যায়নি", + "not-keycard-text": "আপনি যে কার্ডটি ব্যবহার করেছেন তা কীকার্ড নয়। এটি ব্যবহার করার জন্য আপনাকে একটি কীকার্ড কিনতে হবে", + "not-keycard-title": "কীকার্ড নয়", + "not-registered": "অনিবন্ধিত", + "notification-settings": "বিজ্ঞপ্তি", + "notifications": "বিজ্ঞপ্তি", + "notifications-non-contacts": "যোগাযোগবিহীন থেকে বিজ্ঞপ্তি", + "notifications-preferences": "বিজ্ঞপ্তি পছন্দসমূহ", + "notifications-servers": "বিজ্ঞপ্তি সার্ভার", + "notifications-switch": "বিজ্ঞপ্তিগুলি দেখান", + "notifications-transactions": "মানিব্যাগ লেনদেন", + "notify": "অবহিত", + "now": "এখন", + "off": "বন্ধ", + "off-status-tree": "অফ Status ট্রি", + "offline": "অফলাইন", + "offline-messaging-use-history-explanation": "অ্যাপটি বন্ধ করার সময় প্রেরিত বার্তা আনতে ইতিহাস নোড সক্রিয় করুন। যখন সক্রিয় করা হয়, একটি ইতিহাস নোড আপনার IP ঠিকানা পায়। যখন নিষ্ক্রিয় করা হবে তখন আপনি বার্তা পাবেন না যখন অ্যাপটি বন্ধ করা হবে এবং পরে অ্যাপটি খুললে আপনি সেগুলি দেখতে পাবেন না।", + "offline-messaging-use-history-nodes": "ইতিহাস নোড ব্যবহার করুন", + "ok": "ঠিক আছে", + "ok-continue": "ঠিক আছে, চালিয়ে যান", + "ok-got-it": "আচ্ছা আমি বুঝে গেছি", + "ok-save-pass": "ঠিক আছে, পাসওয়ার্ড সংরক্ষণ করুন", + "okay": "ঠিক আছে", + "on": "চালু করুন", + "on-status-tree": "অন Status ট্রি", + "once-enabled-share-metadata": "একবার সক্রিয় হয়ে গেলে, চ্যাটে পোস্ট করা লিংকগুলো সাইটের সাথে আপনার মেটাডাটা শেয়ার করতে পারে", + "one-day": "এক দিন", + "one-month": "এক মাস", + "one-week": "এক সপ্তাহ", + "open": "খুলুন", + "open-chat": "চ্যাট খুলুন", + "open-dapp": "DApp খুলুন", + "open-dapp-store": "DApps আবিষ্কার করুন", + "open-home": "খুলুন।।।", + "open-in-new-tab": "নতুন ট্যাবে খুলুন", + "open-membership": "উন্মুক্ত সদস্যপদ", + "open-nfc-settings": "এনএফসি সেটিংস খুলুন", + "open-on-block-explorer": "ব্লক এক্সপ্লোরারে খুলুন", + "opening-buy-crypto": "{{site}} খোলা হচ্ছে ...", + "optimal": "সর্বোত্তম", + "optional": "ঐচ্ছিক", + "or": "বা", + "outgoing": "বহির্গামী", + "outgoing-transaction": "বহির্গামী লেনদেন", + "page-camera-request-blocked": "ক্যামেরার অনুরোধ অবরুদ্ধ। ক্যামেরার অনুরোধ সক্রিয় করতে সেটিংসে যান", + "page-would-like-to-use-camera": "আপনার ক্যামেরা ব্যবহার করতে চান", + "pair": "ডিভাইসগুলি যুক্ত করুন", + "pair-card": "এই ডিভাইসে যুক্ত করুন", + "pair-code": "জোড়া কোড", + "pair-code-explanation": "কী আনলক করতে এবং একই কীকার্ডের সাথে লেনদেনে স্বাক্ষর করতে একটি ভিন্ন ডিভাইসে (৫ পর্যন্ত) কার্ড জোড়া", + "pair-code-placeholder": "জোড়া কোড...", + "pair-this-card": "এই কার্ডটি যুক্ত করুন", + "pair-this-device": "ডিভাইসের বিজ্ঞাপন দিন", + "pair-this-device-description": "তাদের মধ্যে যোগাযোগ এবং চ্যাট এককালবর্তী করতে আপনার ডিভাইসগুলি জোড়া করুন", + "paired-devices": "জোড়া ডিভাইস", + "pairing": "জোড়া", + "pairing-card": "জোড়া কার্ড", + "pairing-changed": "পেয়ারিং কোড পরিবর্তন করা হয়েছে", + "pairing-code-placeholder": "কোড জোড়া হচ্ছে ...", + "pairing-code_error1": "পেয়ারিং কোড মেলে না", + "pairing-go-to-installation": "জোড়া সেটিংসে যান", + "pairing-maximum-number-reached-content": "নতুন কোনও সক্ষম করার আগে দয়া করে আপনার একটি ডিভাইস অক্ষম করুন।", + "pairing-maximum-number-reached-title": "ডিভাইসের সর্বোচ্চ সংখ্যা পৌঁছেছে", + "pairing-new-installation-detected-content": "একটি নতুন ডিভাইস সনাক্ত করা হয়েছে।\n আপনার ডিভাইসগুলি সঠিকভাবে ব্যবহার করতে, তাদের ব্যবহারের আগে তাদের জোড়া এবং সক্ষম করা জরুরী।\n আপনার ডিভাইসগুলি যুক্ত করতে দয়া করে সেটিংসের অধীনে ডিভাইস বিভাগে যান।", + "pairing-new-installation-detected-title": "নতুন ডিভাইস শনাক্ত করা হয়েছে", + "pairing-no-info": "কোন তথ্য নেই", + "pairing-please-set-a-name": "অনুগ্রহ করে আপনার ডিভাইসের জন্য একটি নাম নির্ধারণ করুন।", + "passphrase": "পাসফ্রেজ", + "password": "পাসওয়ার্ড", + "password-description": "কমপক্ষে ৬ অক্ষর. আপনার পাসওয়ার্ড আপনার চাবিকে রক্ষা করে। স্ট্যাটাস আনলক করতে এবং লেনদেনের জন্য আপনার এটি প্রয়োজন।", + "password-mismatch": "নতুন পাসওয়ার্ড এবং নিশ্চিতকরণ মেলে না", + "password-placeholder": "পাসওয়ার্ড।।।", + "password-placeholder2": "আপনার পাসওয়ার্ড নিশ্চিত করুন", + "password-reset-in-progress": "পাসওয়ার্ড পরিবর্তন করা হচ্ছে ...", + "password-reset-success": "পাসওয়ার্ড পরিবর্তিত হয়েছে", + "password-reset-success-message": "আপনাকে আবার সাইন ইন করতে হবে", + "password_error1": "পাসওয়ার্ড মেলে না।", + "paste": "আটকান", + "paste-json": "JSON প্রতিলেপন করুন", + "pay-to-chat": "চ্যাট করতে টাকা দিন", + "peer-content": "Status চ্যাট নেটওয়ার্কের সাথে সংযুক্ত একটি ডিভাইস। প্রত্যেক ব্যবহারকারী তাদের ডিভাইসের সংখ্যার উপর নির্ভর করে এক বা একাধিক সমবয়সীদের প্রতিনিধিত্ব করতে পারে।", + "peer-title": "সমকক্ষ", + "peer-to-peer": "পিয়ার টু পিয়ার", + "peers": "সহকর্মীরা", + "pending": "বিচারাধীন", + "pending-confirmation": "অমীমাংসিত নিশ্চিতকরণ...", + "pending-invitations": "সদস্যপদের অনুরোধ স্থগিত", + "per-gas-price-limit": "প্রতি গ্যাস মূল্য সীমা", + "per-gas-tip-limit": "প্রতি গ্যাস টিপ সীমা", + "perform-backup": "ব্যাকআপ সঞ্চালন", + "permissions": "অনুমতি", + "phone-e164": "আন্তর্জাতিক ১", + "photos": "ছবি", + "photos-access-error": "প্রয়োজনীয় ফটো অনুমতি দিতে, অনুগ্রহ করে আপনার সিস্টেম সেটিংসে যান এবং নিশ্চিত করুন যে Status > ফটো নির্বাচন করা হয়েছে।", + "pin": "পিন", + "pin-changed": "৬-ডিজিটের পাসকোড পরিবর্তন করা হয়েছে", + "pin-code": "৬-ডিজিটের পাসকোড", + "pin-limit-reached": "পিনের সীমায় পৌঁছেছে। প্রথমে একটি পূর্ববর্তী বার্তা আনপিন করুন।", + "pin-mismatch": "ভুল পাসকোড", + "pin-one-attempt": "এক চেষ্টা", + "pin-one-attempt-blocked-after": "আপনার কিকার্ড ব্লক হওয়ার আগে", + "pin-one-attempt-blocked-before": "সাবধানে থাকুন, আপনার একটি মাত্র সুযোগ আছে", + "pin-one-attempt-frozen-after": "আপনার কিকার্ড হিমশীতল হওয়ার আগে", + "pin-one-attempt-frozen-before": "সাবধানে থাকুন, আপনার একটি মাত্র সুযোগ আছে", + "pin-retries-left": "{{number}} বাকি আছে", + "pinned-by": "যার দ্বারা পিন করা হয়েছে", + "pinned-messages": "পিন করা বার্তাগুলি", + "pinned-messages-count": { + "one": "১টি পিনড বার্তা", + "other": "পিন করা বার্তাগুলি" + }, + "pinned-messages-empty": "পিন করা বার্তাগুলি এখানে প্রদর্শিত হবে। একটি বার্তা পিন করতে, এটি টিপুন এবং ধরে রাখুন এবং `পিন` আলতো চাপুন", + "powered-by-paraswap": "Parswap দ্বারা চালিত", + "preference": "অগ্রাধিকার", + "preview-privacy": "প্রাইভেসি মোডের পূর্বরূপ দেখুন", + "previewing-may-share-metadata": "এই ওয়েবসাইটথেকে লিংক প্রাকদর্শন তাদের মালিকদের সাথে আপনার মেটাডাটা শেয়ার করতে পারে", + "price-impact": "দামের প্রভাব", + "price-impact-desc": "এই লেনদেনের জন্য আনুমানিক মূল্য প্রভাব. যদি বর্তমান ব্লকের বেস ফি এর বেশি হয়, তাহলে আপনার লেনদেন নিম্ন ভিত্তি ফি সহ নিম্নলিখিত ব্লকে অন্তর্ভুক্ত করা হবে।", + "principles": "নীতি", + "priority": "অগ্রাধিকার", + "privacy": "গোপনীয়তা", + "privacy-and-security": "গোপনীয়তা এবং নিরাপত্তা", + "privacy-photos": "প্রোফাইল ছবির গোপনীয়তা", + "privacy-policy": "গোপনীয়তা নীতি", + "privacy-show-to-warning": "যারা ইতিমধ্যে আপনার প্রোফাইল ছবি দেখেছেন তারা তা করতে থাকবে", + "private-key": "ব্যক্তিগত কী", + "private-notifications": "ব্যক্তিগত বিজ্ঞপ্তি", + "private-notifications-descr": "স্ট্যটাস আপনাকে নতুন বার্তাগুলি সম্পর্কে অবহিত করবে। আপনি পরে সেটিংসে আপনার বিজ্ঞপ্তি পছন্দগুলি সম্পাদনা করতে পারেন", + "processing": "শুধু একটি মুহূর্ত", + "product-information": "পণ্যের তথ্য", + "profile": "প্রোফাইল", + "profile-deleted-content": "আপনার প্রোফাইল সফলভাবে মুছে ফেলা হয়েছে", + "profile-deleted-keycard": "আপনি এখন আপনার কীকার্ডে অন্য কীপেয়ার পুনরুদ্ধার করতে পারেন", + "profile-deleted-title": "প্রোফাইল মুছে ফেলা হয়েছে", + "profile-details": "প্রোফাইল বিশদ", + "profile-not-found": "প্রোফাইল পাওয়া যায়নি", + "profile-pic-pick": "গ্যালারী থেকে নির্বাচন করুন", + "profile-pic-remove": "ছবি সরান", + "profile-pic-take": "ছবি তুলুন", + "profile-picture-updated": "প্রোফাইল ছবি আপডেট করা হয়েছে", + "public-channel": "পাবলিক চ্যানেল", + "public-chat": "পাবলিক চ্যাট", + "public-chat-description": "আপনার স্বার্থের জন্য পাবলিক চ্যাটে যোগ দিন! যে কেউ নতুন শুরু করতে পারে।", + "public-chats": "পাবলিক চ্যাট", + "public-group-status": "পাবলিক", + "public-group-topic": "বিষয়", + "public-key": "পাবলিক কী", + "puk-and-pairing-codes-displayed": "PUK এবং জোড়া কোড প্রদর্শিত হয়েছে", + "puk-changed": "12-সংখ্যার PUK পরিবর্তন করা হয়েছে", + "puk-code": "PUK কোড", + "puk-code-explanation": "আপনি যদি আপনার ৬ ডিজিটের পাসকোড ভুলে যান অথবা ভুলভাবে ৩ বার প্রবেশ করান, তাহলে আপনার কার্ড আনলক করার জন্য এই কোডের প্রয়োজন হবে।", + "puk-mismatch": "ভুল PUK কোড", + "push-failed-transaction": "আপনার লেনদেন ব্যর্থ হয়েছে", + "push-failed-transaction-body": "{{মান}} {{মুদ্রা}} থেকে {{থেকে}}", + "push-inbound-transaction": "আপনি {{মান}} {{মুদ্রা}} পেয়েছেন", + "push-inbound-transaction-body": "{{old}} থেকে {{new}} পর্যন্ত পরিমাণ পরিবর্তন করা হয়েছে", + "push-notifications-server-enabled": "সার্ভার সক্রিয় করা হয়েছে", + "push-notifications-servers": "বিজ্ঞপ্তি সার্ভারগুলি পুশ করুন", + "push-outbound-transaction": "আপনি {{value}} {{currency}} প্রেরণ করেছেন", + "push-outbound-transaction-body": "{{old}} থেকে {{new}} পর্যন্ত পরিমাণ পরিবর্তন করা হয়েছে", + "quiet-days": "{{quiet-days}} দিন", + "quiet-hours": "{{quiet-hours}} ঘন্টা", + "re-encrypt-key": "আপনার কীগুলি পুনরায় এনক্রিপ্ট করুন", + "rearrange-categories": "শ্রেণীবিন্যাস পুনর্বিন্যাস করুন", + "receive": "প্রাপ্তি", + "receive-transaction": "লেনদেন গ্রহণ করুন", + "recent": "সাম্প্রতিক", + "recent-empty": "সম্প্রতি ব্যবহৃত ঠিকানাএখানে প্রদর্শিত হবে", + "recent-recipients": "যোগাযোগ", + "recently-used-stickers": "সম্প্রতি ব্যবহৃত স্টিকার গুলো এখানে প্রদর্শিত হবে", + "recipient": "প্রাপক", + "recipient-code": "প্রাপকের ঠিকানা লিখুন", + "recipient-code-placeholder": "0x... অথবা username.domain.eth", + "recover": "পুনরুদ্ধার", + "recover-key": "বিদ্যমান কীসমূহ অ্যাক্সেস করুন", + "recover-keycard-multiaccount-not-supported": "এই একাউন্টের জন্য কী ইতোমধ্যে বিদ্যমান এবং পুনরায় যুক্ত করা যাবে না। আপনি যদি আপনার পাসওয়ার্ড, পাসকোড বা কীকার্ড হারিয়ে ফেলেন, অ্যাপটি আনইনস্টল করুন, আপনার বীজ বাক্যাংশ প্রবেশ করিয়ে আপনার কী পুনরায় ইনস্টল করুন এবং অ্যাক্সেস করুন", + "recover-with-keycard": "কীকার্ড দিয়ে পুনরুদ্ধার করুন", + "recover-with-seed-phrase": "বীজ বাক্যাংশ দিয়ে পুনরুদ্ধার করুন", + "recovering-key": "কীগুলি অ্যাক্সেস করা হচ্ছে ...", + "recovery-confirm-phrase": "বীজ বাক্যাংশ নিশ্চিত করুন", + "recovery-phrase": "বীজ বাক্যাংশ", + "recovery-success-text": "আপনার কীপুনরায় এনক্রিপ্ট করতে আপনাকে একটি নতুন কোড বা পাসওয়ার্ড তৈরি করতে হবে", + "recovery-typo-dialog-description": "অনুগ্রহ করে লক্ষ্য করুন, আপনার বীজ বাক্যাংশ টি পাওয়ার সাথে সাথে ঠিক একই শব্দ ব্যবহার করতে হবে এবং অর্ডার করতে হবে", + "recovery-typo-dialog-title": "বীজের বাক্যাংশটি কি সঠিক?", + "redeem-amount": "{{পরিমাণ}} বোনাস উপলব্ধ", + "redeem-now": "এখনি তুলুন", + "redeem-success": "বোনাস সাফল্য উদ্ধার করুন!", + "reduced-tip": "অগ্রাধিকার টিপ হ্রাস করা হবে", + "refresh": "সতেজ", + "registered": "নিবন্ধিত", + "reject": "প্রত্যাখ্যান করুন", + "reject-and-delete": "প্রত্যাখ্যান করুন এবং মুছুন", + "remember-me": "আমাকে মনে রেখো", + "remind-me-later": "আমাকে এটা আবার দেখাও", + "remote-notifications": "দূরবর্তী বিজ্ঞপ্তিগুলি", + "remote-notifications-subtitle": "Google পুশ বিজ্ঞপ্তিগুলি সক্ষম করুন", + "remove": "অপসারণ", + "remove-favourite": "প্রিয়টি সরান", + "remove-from-chat": "চ্যাট থেকে অপসারণ করুন", + "remove-from-contacts": "পরিচিতি থেকে অপসারণ করুন", + "remove-from-contacts-text": "আপনার পরিচিতি তালিকা থেকে কোনও ব্যবহারকারীকে সরিয়ে আপনি তাদের থেকে আপনার ওয়ালেট ঠিকানাটি গোপন করবেন না", + "remove-group": "গ্রুপ অপসারণ করুন", + "remove-network": "নেটওয়ার্ক অপসারণ করুন", + "remove-token": "টোকেন অপসারণ করুন", + "removed": "অপসারণ", + "repeat-pin": "নতুন ৬-সংখ্যার পাসকোড পুনরাবৃত্তি করুন", + "repeat-puk": "নতুন 12-সংখ্যা PUK পুনরাবৃত্তি করুন৷", + "replying-to": "{{author}} কে উত্তর দেওয়া হচ্ছে", + "report-bug-email-template": "1. ইস্যু বিবরণ (আপনি যে বৈশিষ্ট্যটি চান তা বর্ণনা করুন, অথবা সংক্ষেপে বাগ এবং আপনি কি করেছেন, আপনি কি আশা করেছিলেন, এবং আসলে কি ঘটবে তা বর্ণনা করুন। নিচের বিভাগসমূহ) 2. প্রজননের পদক্ষেপ (বর্ণনা করুন কিভাবে আমরা ধাপে ধাপে বাগ প্রতিলিপি করতে পারি। - Status খুলুন -... - ধাপ ৩, ইত্যাদি। 3. প্রত্যাশিত আচরণ (আপনি যা আশা করেছেন তা বর্ণনা করুন। 4. প্রকৃত আচরণ (আসলে কি ঘটেছে তা বর্ণনা করুন। 5. সমস্যা ডেমো করতে পারে দয়া করে এমন স্ক্রিনশট সংযুক্ত করুন।", + "request-access": "অ্যাক্সেসের অনুরোধ করুন", + "request-feature": "একটি বৈশিষ্ট্য অনুরোধ", + "request-membership": "সদস্যতার জন্য অনুরোধ", + "request-pending": "মুলতুবি অনুরোধ…", + "request-transaction": "অনুরোধ লেনদেন", + "required-field": "প্রয়োজনীয় ক্ষেত্র", + "resend-message": "পুনরায় পাঠান", + "reset-card": "কার্ড রিসেট করুন", + "reset-card-description": "এই অপারেশন কার্ডটিকে প্রাথমিক অবস্থায় রিসেট করবে। এটি ব্যক্তিগত কী সহ সমস্ত কার্ড ডেটা মুছে ফেলবে। অপারেশন বিপরীত হবে না।", + "reset-database": "ডাটাবেস রিসেট করুন", + "reset-database-warning": "চ্যাট, পরিচিতি এবং সেটিংস মুছুন। যখন আপনি আপনার পাসওয়ার্ড হারিয়ে ফেলবেন তখন এটি প্রয়োজনীয়", + "reset-database-warning-keycard": "চ্যাট, পরিচিতি এবং সেটিংস মুছুন।", + "reset-password": "পাসওয়ার্ড রিসেট করুন", + "restore-defaults": "ডিফল্টগুলি পুনর্বহাল করুন", + "retry": "পুনরায় চেষ্টা করা", + "revoke-access": "প্রবেশ বাতিল করুন", + "rpc-url": "আরপিসি ইউআরএল", + "rpc-usage-copy": "অনুলিপি", + "rpc-usage-filter": "ফিল্টার পদ্ধতি", + "rpc-usage-get-stats": "সতেজ", + "rpc-usage-info": "RPC ব্যবহারের পরিসংখ্যান", + "rpc-usage-reset": "রিসেট", + "safe-estimate": "নিরাপদ অনুমান", + "save": "সংরক্ষণ", + "save-password": "পাসওয়ার্ড সংরক্ষণ করুন", + "save-password-unavailable": "পাসওয়ার্ড সংরক্ষণ করতে ডিভাইস পাসকোড নির্ধারণ করুন", + "save-password-unavailable-android": "গুপ্ত-সংকেত সংরক্ষণ অনুপলভ্য: আপনার ডিভাইসটি মূল হতে পারে অথবা প্রয়োজনীয় নিরাপত্তা বৈশিষ্ট্যের অভাব হতে পারে.", + "scan-qr": "কিউআর কোড স্ক্যান করুন", + "scan-qr-code": "একটি ওয়ালেট ঠিকানা সহ একটি QR কোড স্ক্যান করুন", + "scan-tokens": "টোকেন স্ক্যান করুন", + "search": "অনুসন্ধান করুন", + "search-no-chat-found": "কোন সন্ধান ফলাফল নেই. তুমি কি বলতে চাচ্ছো", + "secret-keys-confirmation-text": "আপনি যদি কখনো আপনার ফোন হারিয়ে ফেলেন তাহলে আপনার কীকার্ড ব্যবহার চালিয়ে যেতে হবে।", + "secret-keys-confirmation-title": "কোড গুলো লিখেছেন?", + "security": "নিরাপত্তা", + "see-details": "বিস্তারিত দেখুন", + "see-it-again": "এটি আবার দেখুন", + "see-suggestions": "পরামর্শ দেখুন", + "seed-key-uid-mismatch": "বীজ মিলছে না", + "seed-key-uid-mismatch-desc-1": "আপনার লেখা বীজ বাক্যাংশ এর সাথে মেলে না", + "seed-key-uid-mismatch-desc-2": "এই অ্যাকাউন্টের কীগুলি পরিচালনা করতে আপনার বীজ বাক্যাংশ যাচাই করুন এবং আবার চেষ্টা করুন।", + "seed-phrase-content": "তালিকা থেকে এলোমেলোভাবে নির্বাচিত এবং অন্যান্য মানিব্যাগ এবং ডিভাইসে আপনার Ethereum অ্যাকাউন্ট পুনরুদ্ধার বা অ্যাক্সেস করতে ব্যবহৃত. এছাড়াও ক্রিপ্টো বাস্তুতন্ত্র জুড়ে একটি \"স্মৃতিচারণমূলক বাক্যাংশ\", \"পুনরুদ্ধার বাক্যাংশ\" বা \"ওয়ালেট ব্যাকআপ\" হিসেবে উল্লেখ করা হয়। অধিকাংশ ক্রিপ্টো অ্যাপ অ্যাকাউন্ট তৈরি করতে এই একই মান ব্যবহার করে।", + "seed-phrase-placeholder": "বীজ বাক্যাংশ ...", + "seed-phrase-title": "বীজ বাক্যাংশ", + "select": "নির্বাচন করুন", + "select-account": "অ্যাকাউন্ট নির্বাচন করুন", + "select-account-dapp": "Dapps-এর সাথে আপনি যে অ্যাকাউন্টটি ব্যবহার করতে চান তা নির্বাচন করুন", + "select-account-first": "প্রথমে একটি অ্যাকাউন্ট নির্বাচন করুন", + "select-chat": "বার্তা শুরু করতে চ্যাট নির্বাচন করুন", + "select-new-location-for-keys": "আপনার ব্যক্তিগত কী (গুলি) সংরক্ষণ করতে একটি নতুন অবস্থান নির্বাচন করুন", + "select-token-to-receive": "গ্রহণ করতে টোকেন নির্বাচন করুন", + "select-token-to-swap": "সোয়াপ করতে টোকেন নির্বাচন করুন", + "selected": "নির্বাচিত", + "send-logs": "একটি বাগ রিপোর্ট করুন", + "send-logs-to": "{{email}} এ একটি বাগ প্রতিবেদন করুন", + "send-message": "বার্তা পাঠান", + "send-push-notifications": "পুশ বিজ্ঞপ্তিগুলি পাঠান", + "send-push-notifications-description": "যখন নিষ্ক্রিয় করা হবে, যে ব্যক্তি আপনার বার্তা গ্রহণ করছে তাকে তাদের আগমন সম্পর্কে অবহিত করা হবে না", + "send-request": "অনুরোধ প্রেরণ করুন", + "send-request-amount": "পরিমান", + "send-request-amount-max-decimals": "দশমিক সংখ্যা সর্বোচ্চ {{asset-decimals}}", + "send-request-unknown-token": "অজানা টোকেন - {{asset}}", + "send-sending-to": "\t\n{{recipient-name}} to", + "send-transaction": "লেনদেন প্রেরণ করুন", + "sending": "প্রেরণ", + "sent-at": "পাঠানো হয়েছে", + "server": "সার্ভার", + "set-a-topic": "একটি বিষয় তৈরি করুন", + "set-currency": "মুদ্রা নির্ধারণ করুন", + "set-custom-fee": "কাস্টম ফি নির্ধারণ করুন", + "set-dapp-access-permissions": "DApp অ্যাক্সেস অনুমতি নির্ধারণ করুন", + "set-max": "সর্বোচ্চ নির্ধারণ করুন", + "settings": "সেটিংস", + "share": "ভাগ করুন", + "share-address": "ঠিকানা শেয়ার করুন", + "share-chat": "চ্যাট শেয়ার করুন", + "share-contact-code": "আমার চ্যাট কী শেয়ার করুন", + "share-dapp-text": "Status আমি যে DApp ব্যবহার করছি তা দেখুন: {{link}}", + "share-link": "শেয়ার লিংক", + "share-logs": "লগগুলি শেয়ার করুন", + "share-my-profile": "আমার প্রোফাইল শেয়ার করুন", + "share-profile": "প্রোফাইল শেয়ার করুন", + "share-profile-link": "প্রোফাইল লিংক শেয়ার করুন", + "share-public-chat-text": "Status অ্যাপে এই সর্বজনীন চ্যাটটি দেখুন: {{link}}", + "shared": "অংশীদারি", + "sharing-copied-to-clipboard": "অনুলিপি", + "sharing-copy-to-clipboard": "অনুলিপি", + "sharing-data-desc-1": "কোনও সংবেদনশীল তথ্য পাঠানো হয় না তা নিশ্চিত করার জন্য জনসাধারণের নিয়মের বিরুদ্ধে ডেটা বৈধ করা হয়। বিশ্বাস করবেন না, যাচাই করুন।", + "sharing-data-desc-2": "ব্যবহারের তথ্য স্ট্যাটাসের পিয়ার-টু-পিয়ার নেটওয়ার্কের উপর এনক্রিপ্ট করা এন্ড-টু-এন্ড পাঠানো হয়", + "sharing-data-desc-3": "আপনার নিয়মিত চ্যাট কী এর পরিবর্তে, একটি একক ব্যবহার কী ব্যবহার করা হয়", + "sharing-data-desc-4": "ব্যবহারের তথ্য আপনার আইপি ঠিকানার সাথে যুক্ত করা যাবে না", + "sharing-data-desc-5": "সকল ব্যবহারকারীর সমষ্টিগত তথ্য সর্বজনীনভাবে উপলব্ধ", + "sharing-data-desc-6": "ডেটা পাঠানোর পরে আপনার ফোন থেকে সরানো হয়", + "sharing-share": "ভাগ করুন", + "show-less": "কম দেখাও", + "show-more": "আরও দেখান", + "show-notifications": "বিজ্ঞপ্তিগুলি দেখান", + "show-profile-pictures": "এখান থেকে প্রোফাইল ছবি দেখুন", + "show-profile-pictures-to": "প্রোফাইল শেয়ার করুন", + "show-qr": "QR কোড দেখান", + "show-transaction-data": "লেনদেনের তথ্য দেখান", + "sign-and-send": "স্বাক্ষর করুন এবং প্রেরণ করুন", + "sign-anyway": "যাই হোক স্বাক্ষর করুন", + "sign-in": "আনলক করুন", + "sign-message": "বার্তা স্বাক্ষর করুন", + "sign-out": "সাইন আউট করুন", + "sign-request-failed": "বার্তায় স্বাক্ষর করা যায়নি", + "sign-with": "সাথে সাইন ইন করুন", + "sign-with-password": "পাসওয়ার্ড দিয়ে সাইন ইন করুন", + "sign-you-in": "আপনাকে স্বাক্ষর করা হচ্ছে...", + "signing": "স্বাক্ষর", + "signing-a-message": "একটি বার্তায় স্বাক্ষর করা হচ্ছে", + "signing-phrase": "স্বাক্ষর বাক্যাংশ", + "skip": "এড়িয়ে যান", + "slippage": "স্লিপেজ", + "slow": "ধীর", + "something-went-wrong": "কিছু ভুল হয়েছে", + "soon": "শীঘ্রই", + "specify-address": "ঠিকানা উল্লেখ করুন", + "specify-name": "একটি নাম উল্লেখ করুন", + "specify-network-id": "নেটওয়ার্ক আইডি নির্দিষ্ট ভাবে উল্লেখ করুন", + "specify-rpc-url": "একটি RPC URL উল্লেখ করুন", + "specify-server-public-key": "সার্ভার সর্বজনীন কী প্রবেশ করান", + "specify-symbol": "একটি প্রতীক উল্লেখ করুন", + "start-chat": "চ্যাট শুরু করুন", + "start-conversation": "কথোপকথন শুরু করুন", + "start-group-chat": "গ্রুপ চ্যাট শুরু করুন", + "start-new-chat": "নতুন চ্যাট শুরু করুন", + "starter-pack-coming": "স্টার্টার প্যাক আপনার পথে আসছে", + "starter-pack-coming-description": "কয়েক মিনিট থেকে কয়েক ঘন্টা সময় লাগতে পারে", + "starter-pack-received": "স্টার্টার প্যাক গৃহীত হয়েছে", + "starter-pack-received-description": "এখানে আপনাকে শুরু করার জন্য কিছু ক্রিপ্টো আছে! স্টিকার, একটি ENS নাম পেতে এটি ব্যবহার করুন এবং DApps চেষ্টা করুন।", + "status": "Status", + "status-always-online": "সবসময় অনলাইন", + "status-automatic": "স্বয়ংক্রিয়", + "status-automatic-subtitle": "স্বয়ংক্রিয়ভাবে স্থিতি সেট করুন", + "status-confirmed": "নিশ্চিত করা হয়েছে", + "status-dnd": "বিরক্ত করবেন না", + "status-dnd-subtitle": "সমস্ত বিজ্ঞপ্তি নিঃশব্দ করে", + "status-hardwallet": "Status hardwallet", + "status-inactive": "নিষ্ক্রিয়", + "status-inactive-subtitle": "আপনার অনলাইন স্ট্যাটাস লুকিয়ে রাখে", + "status-is-open-source": "স্ট্যাটাস ওপেন সোর্স", + "status-keycard": "Status কীকার্ড", + "status-mobile-descr": "চ্যাট সিঙ্ক করার সময় স্ট্যাটাস অনেক ডেটা ব্যবহার করে। মোবাইল নেটওয়ার্কে থাকাকালীন আপনি সিঙ্ক না করা বেছে নিতে পারেন৷", + "status-not-sent-click": "নিশ্চিত করা হয়নি। পছন্দসমূহের জন্য ক্লিক করুন", + "status-not-sent-tap": "নিশ্চিত করা হয়নি। পছন্দসমূহের জন্য ট্যাপ করুন", + "status-pending": "বিচারাধীন", + "status-sent": "প্রেরিত", + "status-tx-not-found": "TX খুঁজে পাওয়া যায়নি", + "status-updates-descr": "Status হালনাগাদসমূহ এখানে প্রদর্শিত হবে। আপনার সময়রেখায় হালনাগাদসমূহ পেতে পরিচিতি হিসেবে প্রোফাইলটি যুক্ত করুন।", + "statuses-descr": "আপনার মনে যা আছে তা ভাগ করুন এবং আপনার পরিচিতিগুলির সাথে আপডেট থাকুন", + "statuses-my-status-descr": "\t\nআপনার মনে যা আছে তা ভাগ করুন। আপনার প্রোফাইল দেখার জন্য যে কেউ আপনার Status দেখতে সক্ষম হবে। আপনাকে যোগাযোগ হিসাবে যুক্ত করা লোকেরা তাদের টাইমলাইনে আপনার আপডেটগুলি গ্রহণ করবে", + "step-i-of-n": "{{number}} এর পদক্ষেপ {{step}} {{number}}", + "sticker": "স্টিকার", + "sticker-market": "স্টিকার বাজার", + "storage": "সঞ্চয়", + "submit": "জমা দিন", + "submit-bug": "একটি বাগ জমা দিন", + "success": "সাফল্য", + "suggested-min-tip": "প্রস্তাবিত min. tip", + "suggested-price-limit": "প্রস্তাবিত মূল্য সীমা", + "swap": "অদলবদল", + "swap-details": "অদলবদল বিবরণ", + "switch-to-simple-interface": "সাধারণ ইন্টারফেসে স্যুইচ করুন", + "symbol": "প্রতীক", + "sync-all-devices": "সকল ডিভাইস এককালবর্তী করুন", + "sync-in-progress": "এককালবর্তী করা হচ্ছে...", + "sync-settings": "এককালবর্তীকরণ সেটিংস", + "sync-synced": "সিংক্রোনাইজে", + "syncing-devices": "এককালবর্তী করা হচ্ছে...", + "system": "পদ্ধতি", + "tabs": "ট্যাব", + "tag-was-lost": "ট্যাগ হারিয়ে গেছে", + "tap-card-again": "কার্ডটি আবার আপনার ফোনের পিছনে ট্যাপ করুন", + "terms-of-service": "ব্যবহারের শর্তাবলী", + "test-networks": "নেটওয়ার্ক পরীক্ষা করুন", + "text-input-disabled": "দয়া করে একমিনিট অপেক্ষা করো।।।", + "thank-you": "ধন্যবাদ", + "this-device": "এই যন্ত্রটি", + "this-device-desc": "আপনার কীগুলি সঙ্কেতায়িত এবং নিরাপদে আপনার ডিভাইসে সংরক্ষণ করা হবে", + "this-is-you-signing": "এটা আপনার স্বাক্ষর বাক্যাংশ", + "this-will-take-few-seconds": "এটি কয়েক সেকেন্ড সময় লাগবে", + "three-days": "তিন দিন", + "three-words-description": "প্রতিটি লেনদেনে স্বাক্ষর করার আগে আপনার এই ৩টি শব্দ দেখা উচিত", + "three-words-description-2": "আপনি যদি একটি ভিন্ন সমন্বয় দেখেন, লেনদেন বাতিল করুন এবং সাইন আউট করুন", + "timeline": "টাইমলাইন", + "tip-cap": "টিপ ক্যাপ", + "to": "করতে", + "to-block": "ব্লক", + "to-enable-biometric": "{{bio-type-label}} সক্রিয় করতে, আপনাকে অবশ্যই আনলক স্ক্রীনে আপনার পাসওয়ার্ড সংরক্ষণ করতে হবে", + "to-encrypt-enter-password": "অ্যাকাউন্ট এনক্রিপ্ট করতে আপনার পাসওয়ার্ড দিন", + "to-see-this-message": "এই বার্তাটি দেখতে,", + "token": "টোকেন", + "token-auto-validate-decimals-error": "ঠিকানা {{address}} ঠিকানায় টোকেন {{symbol}} এর জন্য ভুল দশমিক - {{expected}} সেট করা হয়েছে কিন্তু {{actual}} হিসাবে শনাক্ত করা হয়েছে", + "token-auto-validate-name-error": "ঠিকানায় {{symbol}} ঠিকানায় টোকেনের জন্য ভুল নাম {{address}} - {{expected}} সেট করা হয়েছে কিন্তু {{actual}} হিসাবে শনাক্ত করা হয়েছে", + "token-auto-validate-symbol-error": "ঠিকানায় {{symbol}} ঠিকানায় টোকেনের জন্য ভুল নাম {{address}} - {{expected}} সেট করা হয়েছে কিন্তু {{actual}} হিসাবে শনাক্ত করা হয়েছে", + "token-details": "টোকেন বিস্তারিত", + "topic-name-error": "কেবল ছোট হাতের অক্ষর (a to z), সংখ্যা এবং ড্যাশ (-) ব্যবহার করুন। চ্যাট কীগুলি ব্যবহার করবেন না", + "total-gas": "মোট গ্যাস", + "transaction": "লেনদেন", + "transaction-data": "লেনদেনের তথ্য", + "transaction-declined": "লেনদেন প্রত্যাখ্যান", + "transaction-description": "নেটওয়ার্কে 12 টি নিশ্চিতকরণের পরে এটি সম্পূর্ণ বিবেচনা করুন।", + "transaction-details": "লেনদেনের বিস্তারিত", + "transaction-failed": "লেনদেন ব্যর্থ হয়েছে", + "transaction-fee": "লেনদেন ফি", + "transaction-history": "লেনদেনের ইতিহাস", + "transaction-request": "লেনদেনের অনুরোধ", + "transaction-sent": "লেনদেন পাঠানো হয়েছে", + "transaction-signed": "লেনদেন সফলভাবে স্বাক্ষরিত হয়েছে", + "transactions": "লেনদেন", + "transactions-filter-select-all": "সব নির্বাচন করুন", + "transactions-filter-title": "ইতিহাস ফিল্টার করুন", + "transactions-history": "লেনদেনের ইতিহাস", + "transactions-history-empty": "আপনার ইতিহাসে এখনো কোন লেনদেন হয়নি", + "transactions-history-loading": "লেনদেনের ইতিহাস লোড করা হচ্ছে। এতে কিছু সময় লাগতে পারে।", + "transactions-load-more": "আরও লোড করুন", + "transactions-management-enabled": "লেনদেন ব্যবস্থাপনা (আলফা)", + "transactions-sign": "চিহ্ন", + "transfer-ma-unknown-error-desc-1": "মনে হচ্ছে আপনার মাল্টি অ্যাকাউন্ট মুছে ফেলা হয়নি। ডেটাবেস রিসেট করা হতে পারে", + "transfer-ma-unknown-error-desc-2": "অনুগ্রহ করে আপনার অ্যাকাউন্টের তালিকা টি পরীক্ষা করুন এবং আবার চেষ্টা করুন। যদি অ্যাকাউন্টটি তালিকাভুক্ত না হয় তবে বীজ বাক্যাংশের সাথে পুনরুদ্ধার করতে বিদ্যমান কীগুলিতে অ্যাক্সেস করুন", + "transfers-fetching-failure": "স্থানান্তরের ইতিহাস আপডেট করা যায়নি। আপনার সংযোগ পরীক্ষা করুন এবং আবার চেষ্টা করতে নীচে টানুন", + "tribute-required-by-multiaccount": "{{multiaccount-name}} জন্য একটি চ্যাট শুরু করার জন্য SNT প্রয়োজন।", + "tribute-state-paid": "শ্রদ্ধা নিবেদন", + "tribute-state-pending": "শ্রদ্ধা নিবেদন মুলতুবি", + "tribute-state-required": "{{snt-ammount}} SNT শ্রদ্ধাঞ্জলি প্রয়োজন", + "tribute-to-talk": "কথা বলার প্রতি শ্রদ্ধা", + "tribute-to-talk-add-friends": "শ্রদ্ধা নিবেদন ছাড়াই চ্যাটগুলিকে অনুমতি দেওয়ার জন্য বন্ধুদের যোগাযোগ হিসাবে যুক্ত করুন।", + "tribute-to-talk-are-you-friends": "তুমরা কী বন্ধু?", + "tribute-to-talk-ask-to-be-added": "একটি যোগাযোগ হিসাবে যুক্ত করতে বলুন", + "tribute-to-talk-contact-received-your-tribute": " তোমার শ্রদ্ধা ঞ্জলি পেয়েছি। আপনি এখন নিরাপদে একে অপরের সাথে চ্যাট করতে পারেন।", + "tribute-to-talk-desc": "নতুন দের জন্য SNT প্রয়োজন দ্বারা আপনার মনোযোগ আকর্ষণ করুন একটি চ্যাট শুরু করার জন্য", + "tribute-to-talk-disabled": "প্রতিবন্ধী কথা বলার প্রতি শ্রদ্ধা", + "tribute-to-talk-disabled-note": "এখন থেকে, নতুন রা SNT না পাঠিয়ে আপনার সাথে চ্যাট শুরু করতে পারবেন।", + "tribute-to-talk-enabled": "আপনার কথা বলার প্রতি শ্রদ্ধা নিবেদন সক্রিয় আছে।", + "tribute-to-talk-finish-desc": "এখন থেকে, আপনি শুধুমাত্র যোগাযোগ থেকে চ্যাট পাবেন, এবং যারা অর্থ প্রদান করেছেন ", + "tribute-to-talk-learn-more-1": "আপনার সময় এবং মনোযোগ আপনার সবচেয়ে মূল্যবান সম্পদ। টকের প্রতি শ্রদ্ধা নিবেদন আপনাকে নতুন দের সাথে চ্যাট শুরু করার জন্য প্রয়োজনীয় একটি পরিমাণ SNT সেট করতে দেয়।", + "tribute-to-talk-learn-more-2": "যে কেউ আপনার কন্ট্যাক্ট লিস্টে নেই তাকে টাকা দিতে বলা হবে, এবং একবার তাদের কাছে গেলে আপনি সাড়া দিতে পারেন।", + "tribute-to-talk-learn-more-3": "আপনি সবসময় টাকা ফেরত পাঠাতে পারেন, কিন্তু বন্ধুরা যাতে স্বাধীনভাবে আপনার কাছে পৌঁছাতে পারে তা নিশ্চিত করতে, প্রথমে তাদের যোগাযোগ হিসেবে যোগ করুন।", + "tribute-to-talk-paywall-learn-more-1": "আমাদের সময় এবং মনোযোগ আমাদের সবচেয়ে মূল্যবান সম্পদ। টকের প্রতি শ্রদ্ধা নিবেদন আপনাকে একটি SNT পেমেন্টের বিনিময়ে নতুন দের সাথে যোগাযোগ করতে দেয়।", + "tribute-to-talk-paywall-learn-more-2": "যার একটি শ্রদ্ধাঞ্জলি সেট আছে তার সাথে চ্যাট শুরু করতে, শুধুমাত্র প্রয়োজনীয় SNT পরিশোধ করুন এবং আপনাকে একটি যোগাযোগ হিসেবে যুক্ত করা হবে।", + "tribute-to-talk-paywall-learn-more-3": "আপনি যদি তাদের চেনেন, আপনি Status বাইরে আপনার প্রোফাইল শেয়ার করতে পারেন বিনামূল্যে যুক্ত করতে।", + "tribute-to-talk-pending": "শ্রদ্ধা নিবেদন নিশ্চিতকরণের মুলতুবি", + "tribute-to-talk-pending-note": "শ্রদ্ধাঞ্জলি লেনদেন নেটওয়ার্কে নিশ্চিতকরণ মুলতুবি আছে। আপনি লেনদেনের ইতিহাসে এর Status পরীক্ষা করতে পারেন", + "tribute-to-talk-removing-note": "টক-এর প্রতি শ্রদ্ধা নিবেদন অপসারণ করলে নতুন রা SNT পাঠানো ছাড়াই চ্যাট শুরু করতে পারবে। একটি লেনদেন করা প্রয়োজন।", + "tribute-to-talk-set-snt-amount": "নতুন দের জন্য প্রয়োজনীয় SNT-এর পরিমাণ নির্ধারণ করুন একটি চ্যাট শুরু করার জন্য", + "tribute-to-talk-signing": "লেনদেনে স্বাক্ষর করার জন্য অপেক্ষা করা হচ্ছে", + "tribute-to-talk-transaction-failed-note": "লেনদেন ব্যর্থ হয়েছে এবং আপনার বক্তৃতা সেটিংসের প্রতি শ্রদ্ধা নিবেদন পরিবর্তন করা হয়নি", + "tribute-to-talk-tribute-received1": "শ্রদ্ধা নিবেদন। আপনি এবং", + "tribute-to-talk-tribute-received2": "এখন পরিচিতি এবং একে অপরের সাথে নিরাপদে চ্যাট করতে পারেন।", + "tribute-to-talk-you-require-snt": "নতুন দের জন্য আপনার SNT প্রয়োজন একটি চ্যাট শুরু করার জন্য।", + "try-again": "আবার চেষ্টা করুন", + "try-keeping-the-card-still": "কার্ডটি স্থির রাখার চেষ্টা করুন", + "turn-nfc-description": "এনএফসি ইয়র ডিভাইসে নিষ্ক্রিয়। আপনি সেটিংসে এটি সক্রিয় করতে পারেন", + "turn-nfc-on": "অব্যাহত রাখতে এনএফসি চালু করুন", + "two-minutes": "দুই মিনিট", + "tx-fail-description1": "এই লেনদেন ব্যর্থ হওয়ার সম্ভাবনা আছে। কাস্টম নেটওয়ার্ক ফি ব্যবহার করে আপনার নিজের ঝুঁকিতে স্বাক্ষর করুন।", + "tx-fail-description2": "এই লেনদেন ব্যর্থ হওয়ার সম্ভাবনা আছে। আপনার নিজের ঝুঁকিতে স্বাক্ষর করার জন্য একটি কাস্টম নেটওয়ার্ক ফি নির্ধারণ করুন।", + "type": "প্রকার", + "type-a-message": "বার্তা", + "ulc-enabled": "ইউএলসি সক্ষম হয়েছে", + "unable-to-fetch": "চ্যাটের ইতিহাস আনতে অক্ষম", + "unable-to-read-this-code": "এই কোডটি পড়তে অক্ষম", + "unable-to-send-messages": "বার্তাগুলি পাঠাতে এবং গ্রহণ করতে অক্ষম", + "unblock": "অবরোধ মুক্ত করুন", + "unblock-contact": "এই ব্যবহারকারীকে অবরোধ মুক্ত করুন", + "unknown-status-go-error": "অজানা status-go ত্রুটি", + "unlimited": "সীমাহীন", + "unlock": "আনলক করুন", + "unmute": "নীরব করো না", + "unpair-card": "কার্ড জোড় করা", + "unpair-card-confirmation": "এই অপারেশনটি বর্তমান ডিভাইস থেকে কার্ডটি জোড় করে দেবে। ৬-সংখ্যার পাসকোড অনুমোদন প্রয়োজন। আপনি কি এগিয়ে যেতে চান?", + "unpair-keycard": "এই ফোন থেকে কীকার্ড খুলে ফেলুন", + "unpair-keycard-warning": "আপনার পেয়ারিং কোড\/পিইউকে এবং পিন অপরিবর্তিত থাকবে", + "unpaired-keycard-text": "আপনি যে কীকার্ডটি ট্যাপ করেছেন তা এই ফোনের সাথে সংযুক্ত নয়", + "unpaired-keycard-title": "মনে হচ্ছে আপনার কার্ড আনপেয়ার করা হয়েছে", + "unpin": "আনপিন করুন", + "update": "হালনাগাদ", + "update-to-listen-audio": "এখানে একটি অডিও বার্তা শুনতে সর্বশেষ সংস্করণে হালনাগাদ করুন!", + "update-to-see-image": "এখানে একটি চমৎকার ছবি দেখতে সর্বশেষ সংস্করণে আপডেট করুন!", + "update-to-see-sticker": "এখানে একটি চমৎকার স্টিকার দেখতে সর্বশেষ সংস্করণে আপডেট করুন!", + "updates-to-tos": "ব্যবহারের শর্তাবলীতে আপডেট", + "updates-to-tos-desc": "আপনি চালিয়ে যাওয়ার আগে, অনুগ্রহ করে ব্যবহারের শর্তাবলী পর্যালোচনা করুন এবং নিশ্চিত করুন যে আপনি কীভাবে অ্যাপটি ব্যবহার করেন তার জন্য আপনি সম্পূর্ণ দায়িত্ব নেবেন।", + "url": "ইউআরএল", + "usd-currency": "Usd", + "use-as-profile-picture": "প্রোফাইল ছবি হিসেবে ব্যবহার করুন", + "use-valid-contact-code": "অনুগ্রহ করে একটি বৈধ চ্যাট কী বা ব্যবহারকারীর নাম প্রবেশ করান বা স্ক্যান করুন", + "validation-amount-invalid-number": "পরিমাণ একটি বৈধ সংখ্যা নয়", + "validation-amount-is-too-precise": "পরিমাণ খুব নিখুঁত। দশমিকের সর্বোচ্চ সংখ্যা হল {{decimals}}।", + "verified-community": "✓ যাচাইকৃত সম্প্রদায়", + "version": "অ্যাপ সংস্করণ", + "view": "দেখুন", + "view-cryptokitties": "ক্রিপ্টোকিটিতে দেখুন", + "view-cryptostrikers": "ক্রিপ্টোস্ট্রাইকারে দেখুন", + "view-data": "ডেটা দেখুন", + "view-details": "বিস্তারিত দেখুন", + "view-etheremon": "ইথেরেমনে দেখুন", + "view-gitcoin": "গিটকয়েনে দেখুন", + "view-on-opensea": "OpenSea এ দেখুন", + "view-profile": "প্রোফাইল দেখুন", + "view-public-dashboard": "সর্বজনীন ড্যাশবোর্ড দেখুন", + "view-rules": "নিয়ম দেখুন", + "view-signing": "স্বাক্ষর বাক্যাংশ প্রদর্শন করুন", + "view-superrare": "SuperRare দেখুন", + "waiting-for-wifi": "কোনও ওয়াই-ফাই নেই, বার্তা সিঙ্ক করা অক্ষম হয়েছে।", + "waiting-for-wifi-change": "সেটিংস", + "waiting-to-sign": "লেনদেনে স্বাক্ষর করার জন্য অপেক্ষা করছে...", + "waiting-wi-fi": "Wi-Fi এর জন্য অপেক্ষা করা হচ্ছে...", + "waku-bloom-filter-mode": "ওয়াকু ব্লুম ফিল্টার মোড", + "wakuv2-change-nodes": "আপনি কি নিশ্চিত যে আপনি ওয়াকুভ২ নোডপরিবর্তন করতে চান?", + "wakuv2-node-format": "\/ip4\/ {node-ip} \/tcp\/ {port} \/p2p\/ {id}", + "wakuv2-settings": "Waku v2 সেটিংস", + "wallet": "মানিব্যাগ", + "wallet-address": "মানিব্যাগের ঠিকানা", + "wallet-asset": "সম্পদ", + "wallet-assets": "সম্পদ", + "wallet-backup-recovery-title": "আপনার বীজ বাক্যাংশ ব্যাক আপ করুন", + "wallet-choose-recipient": "প্রাপক চয়ন করুন", + "wallet-collectibles": "সংগ্রহ", + "wallet-connect": "ওয়ালেট সংযোগ", + "wallet-connect-2.0": "Wallet Connect 2.0", + "wallet-connect-app-connected": "সংযুক্ত", + "wallet-connect-go-back": "আপনার ব্রাউজারে বা ড্যাপে ফিরে যান", + "wallet-connect-proposal-description": "সংযোগ করে আপনি আপনার অ্যাকাউন্ট ঠিকানা পুনরুদ্ধার করতে এবং Web3 সক্ষম করার অনুমতি দেন", + "wallet-connect-proposal-title": "আপনার ওয়ালেটের সাথে সংযোগ করতে চাই৷", + "wallet-insufficient-funds": "অপর্যাপ্ত তহবিল", + "wallet-insufficient-gas": "গ্যাসের জন্য পর্যাপ্ত ইটিএইচ নেই", + "wallet-invalid-address": "ভুল ঠিকানা:\n {{data}}", + "wallet-invalid-address-checksum": "ঠিকানায় ত্রুটি:\n {{data}}", + "wallet-invalid-chain-id": "নেটওয়ার্ক মেলে না: \n {{data}} কিন্তু বর্তমান চেইন হচ্ছে {{chain}}", + "wallet-key-content": "Ethereum স্ট্যান্ডার্ডের ভিত্তিতে এবং 0x দিয়ে শুরু করে একটি 64 টি অক্ষরের হেক্স ঠিকানা। জনসমক্ষে, যখন আপনি তহবিল পেতে চান তখন আপনার অ্যাকাউন্টের ঠিকানা অন্যের সাথে ভাগ করা হয়। একটি \"Ethereum ঠিকানা\" বা \"মানিব্যাগের ঠিকানা\" হিসাবেও উল্লেখ করা হয়।", + "wallet-key-title": "অ্যাকাউন্টের ঠিকানা", + "wallet-manage-accounts": "অ্যাকাউন্টগুলি পরিচালনা করুন", + "wallet-manage-app-connections": "অ্যাপ সংযোগ পরিচালনা করুন", + "wallet-manage-assets": "সম্পদ পরিচালনা করুন", + "wallet-request": "অনুরোধ", + "wallet-send": "প্রেরণ", + "wallet-send-min-units": "সর্বনিম্ন 21000 ইউনিট", + "wallet-send-min-wei": "ন্যূনতম 1 ওয়ে", + "wallet-settings": "মানিব্যাগ সেটিংস", + "wallet-total-value": "মোট মূল্য", + "wallet-transaction-total-fee": "মোট ফি", + "wants-to-access-profile": "আপনার প্রোফাইলে অ্যাক্সেস করতে চায়", + "warning": "সতর্কীকরণ", + "warning-message": "দুঃখিত, আমরা স্প্যাম প্রতিরোধ করতে দ্রুত বেশ কিছু বার্তা পাঠাতে সীমাবদ্ধ. অনুগ্রহ করে এক মুহূর্তের মধ্যে আবার চেষ্টা করুন", + "warning-sending-to-contract-descr": "আপনি যে ঠিকানায় প্রবেশ করেছেন তা একটি স্মার্ট চুক্তি, এই ঠিকানায় তহবিল পাঠানোর ফলে তহবিল ক্ষতিগ্রস্ত হতে পারে। একটি DApp-এর সাথে মিথস্ক্রিয়া করতে, Status DApp ব্রাউজারে DApp খুলুন।", + "watch-only": "কেবলমাত্র দেখার জন্য", + "wc-brand-guide": "ব্র্যান্ডিং যেমন ট্রেডমার্ক এবং লোগো ব্যবহার করার বিষয়ে নির্দেশিকা", + "wc-disclaimer": "Disclaimers (তৃতীয় পক্ষের প্রদানকারী সহ), ওয়ারেন্টি, এবং আইনি রিলিজ", + "wc-dispute": "বিরোধ নিষ্পত্তির বিধান", + "wc-how-to-use-status-app": "গোপনীয়তা এবং নিরাপত্তা সহ স্থিতি অ্যাপ্লিকেশনটি কীভাবে ব্যবহার করবেন", + "wc-new-tos-based-on-principles-prefix": "আমাদের উপর ভিত্তি করে ডিজাইন করা নতুন ব্যবহারের শর্তাবলী", + "web-view-error": "পৃষ্ঠা লোড করতে অক্ষম", + "websites": "ওয়েবসাইট", + "webview-camera-permission-requests": "ওয়েবভিউ ক্যামেরার অনুমতি অনুরোধ", + "webview-camera-permission-requests-subtitle": "যখন সক্রিয় করা হয়, ওয়েবসাইট এবং ড্যাপস আপনার ক্যামেরা ব্যবহার করতে বলতে পারে", + "welcome-blank-community-message": "আপনার সম্প্রদায়গুলি এখানে উপস্থিত হবে।", + "welcome-blank-message": "আপনার চ্যাট এখানে প্রদর্শিত হবে। নতুন চ্যাট শুরু করতে ⊕ বোতামটি চাপুন", + "welcome-community-blank-message": "আপনার চ্যানেলগুলি এখানে উপস্থিত হবে। একটি নতুন চ্যানেল তৈরি করতে, ⊕ বোতামে ক্লিক করুন এবং \"একটি চ্যানেল তৈরি করুন\" নির্বাচন করুন", + "welcome-community-blank-message-edit-chats": "আপনার চ্যানেল এখানে প্রদর্শিত হবে. একটি নতুন চ্যানেল তৈরি করতে, কমিউনিটি স্ক্রিনে ফিরে যান, ⊕ বোতামে ক্লিক করুন এবং \"একটি চ্যানেল তৈরি করুন\" নির্বাচন করুন।", + "welcome-screen-text": "আপনার মানিব্যাগ সেট আপ করুন, চ্যাটে বন্ধুদের আমন্ত্রণ করুন\n এবং জনপ্রিয় ড্যাপ ব্রাউজ করুন!", + "welcome-to-status": "Status স্বাগতম", + "welcome-to-status-description": "আপনার ক্রিপ্টো ওয়ালেট সেট আপ করুন, বন্ধুদের চ্যাট এবং বিকেন্দ্রীভূত অ্যাপস ব্রাউজ করতে আমন্ত্রণ জানান", + "what-changed": "কি পরিবর্তন হয়েছে", + "what-is-shared": "কি শেয়ার করা হয়", + "whats-on-your-mind": "আপনি কি ভাবছেন...", + "word-count": "শব্দ গণনা", + "word-n": "শব্দ # {{number}}", + "word-n-description": "আপনি আপনার বীজ বাক্যটি সঠিকভাবে ব্যাকআপ করেছেন কিনা তা পরীক্ষা করার জন্য, উপরে #{{number}} শব্দটি প্রবেশ করান।", + "words-n": { + "one": "১ শব্দ", + "other": "{{count}}শব্দ" + }, + "write-down-and-store-securely": "কোড লিখুন\n এবং তাদের নিরাপদে সংরক্ষণ করুন", + "wrong-address": "ভুল ঠিকানা", + "wrong-card": "ভুল কার্ড", + "wrong-card-text": "ট্যাপ করা কার্ড আপনার নির্বাচিত কীর সাথে সামঞ্জস্যপূর্ণ নয়", + "wrong-contract": "ভুল চুক্তি", + "wrong-keycard-text": "আপনি যে কীকার্ডটি ট্যাপ করেছেন তা এই ফোনের সাথে সংযুক্ত নয়", + "wrong-keycard-title": "দেখে মনে হচ্ছে আপনি টেপ করেছেন\n একটি ভুল কিকার্ড", + "wrong-password": "ভুল পাসওয়ার্ড", + "wrong-word": "ভুল শব্দ", + "yes": "হ্যাঁ", + "you": "আপনি", + "you-already-have-an-asset": "আপনার ইতোমধ্যে একটি সম্পদ আছে {{value}}", + "you-are-all-set": "তোমরা সবাই প্রস্তুত!", + "you-are-all-set-description": "আপনি যদি আপনার ফোন হারান, আপনি এখন আপনার বীজ বাক্যাংশ ব্যবহার করে আপনার তহবিল এবং চ্যাট কী অ্যাক্সেস করতে পারেন", + "you-can-change-account": "আপনি যা চান তা হিসাবের নাম এবং রং পরিবর্তন করতে পারেন", + "you-can-choose-preview-websites": "আপনি নিম্নলিখিত ওয়েবসাইটগুলির মধ্যে কোনটি চ্যাটে বর্ণনা এবং ছবির লিঙ্ক প্রাকদর্শন করতে পারেন তা চয়ন করতে পারেন", + "you-can-fetch": "আপনি চ্যাটের ইতিহাস আনতে পারেন", + "you-dont-have-contacts": "তোমার এখনো কোন যোগাযোগ নেই।", + "you-dont-have-contacts-invite-friends": "আপনার এখনও কোনও পরিচিতি নেই।\nচ্যাট করা শুরু করতে আপনার বন্ধুদের আমন্ত্রণ জানান।", + "you-dont-have-stickers": "তোমার কাছে এখনো কোন স্টিকার নেই", + "you-will-need-this-code": "Status খুলতে এবং লেনদেন সাইন করতে আপনার এই কোডটির প্রয়োজন হবে", + "you-will-start-from-scratch": "আপনি একটি নতুন সেট কী দিয়ে শুরু করবেন", + "your-card-is-frozen": "আপনার কী-কার্ড জমে গেছে। কার্ড অ্যাক্সেস রিসেট করুন", + "your-contact-code": "অ্যাক্সেস মঞ্জুর করা এই DApp আপনার চ্যাট কী পুনরুদ্ধার করতে অনুমোদন দেয়", + "your-data-belongs-to-you": "আপনি যদি আপনার বীজ বাক্যাংশ হারান তাহলে আপনি আপনার ডেটা এবং তহবিল হারান", + "your-data-belongs-to-you-description": "আপনি যদি অ্যাক্সেস হারান, উদাহরণস্বরূপ, আপনার ফোন হারিয়ে, আপনি শুধুমাত্র আপনার বীজ বাক্যাংশ দিয়ে আপনার চাবি অ্যাক্সেস করতে পারেন. কেউ না, কিন্তু তোমার বীজের বাক্যাংশ আছে। এটা লিখে দাও। এটা নিরাপদ রাখুন", + "your-keys": "আপনার চাবি", + "your-price-limit": "আপনার মূল্য সীমা", + "your-recovery-phrase": "আপনার বীজ বাক্যাংশ", + "your-recovery-phrase-description": "এটা তোমার বীজের বাক্যাংশ। আপনি এটা ব্যবহার করে প্রমাণ করতে যে এটা আপনার মানিব্যাগ। তুমি শুধু একবারই এটা দেখতে পাবে! এটা কাগজে লিখে নিরাপদ জায়গায় রাখুন। আপনি যদি আপনার মানিব্যাগ হারান বা পুনরায় ইনস্টল করেন তাহলে আপনার এটি প্রয়োজন হবে।", + "your-tip-limit": "আপনার টিপ সীমা", + "youre-on-mobile-network": "আপনি মোবাইল নেটওয়ার্কে আছেন" +} diff --git a/translations/cs.json b/translations/cs.json new file mode 100644 index 00000000000..e8fab9eada9 --- /dev/null +++ b/translations/cs.json @@ -0,0 +1,145 @@ +{ + "confirm": "Potvrdit", + "amount": "Množství", + "members-active": { + "one": "1 účastník", + "other": "{{count}} účastníci", + "zero": "žádní účastníci" + }, + "chat-name": "Název chatu", + "phew-here-is-your-passphrase": "*Uf*, to byla fuška, tady jsou bezpečnostní slova, *zapiš je a ulož na bezpečném místě!* Budou potřeba pro obnovení přístupu k účtu.", + "public-group-topic": "Téma", + "chat-settings": "Nastavení chatu", + "offline": "Offline", + "invited": "pozván", + "address": "Adresa", + "new-public-group-chat": "Přidat se k veřejnému chatu", + "datetime-hour": { + "one": "hodina", + "other": "hodin(y)" + }, + "datetime-ago-format": "{{ago}} {{number}} {{time-intervals}}", + "camera-access-error": "Pro udělení potřebných oprávnění ke kameře přejděte do nastavení systému a ujistěte se, že je vybráno Status > Kamera.", + "remove": "Odstranit", + "add-members": "Přidat členy", + "photos-access-error": "Pro udělení potřebných oprávnění k fotoaparátu přejděte do nastavení systému a ujistěte se, že je vybráno Status > Fotoaparát.", + "done": "Hotovo", + "close-chat": "Smazat chat", + "new-group-chat": "Nový skupinový chat", + "wallet": "Peněženka", + "wallet-request": "Požadavek", + "sign-in": "Přihlásit se", + "datetime-yesterday": "včera", + "create-new-account": "Vytvořit nový účet", + "datetime-ago": "uplynulo:", + "contacts": "Kontakty", + "got-it": "Mám to", + "active-online": "Online", + "password": "Heslo", + "browsing-title": "Prohlížet", + "transactions-history-empty": "V historii nemáš žádné transakce", + "discover": "Objevit", + "browsing-cancel": "Storno", + "intro-status": "Chat se mnou ti může pomoci nastavit ůčet a změnit další nastavení!", + "name": "Jméno", + "show-qr": "Zobrazit QR kǒd", + "connect": "Připojit", + "edit": "Upravit", + "account-generation-message": "Vteřinku, musím použít docela těžkou matiku na vygenerování účtu!", + "no-messages": "Žádné zprávy", + "passphrase": "Bezpečnostní slova", + "recipient": "Příjemce", + "members-title": "Členové", + "new-group": "Nová skupina", + "phone-e164": "Mezinárodní 1", + "settings": "Nastavení", + "delete": "Smazat", + "chats": "Chaty", + "transaction": "Transakce", + "public-group-status": "Veřejné", + "image-source-make-photo": "Vyfotit", + "start-conversation": "Zahájit konverzaci", + "save": "Uložit", + "sharing-copy-to-clipboard": "Kopírovat do schránky", + "sync-in-progress": "Synchronizuji...", + "send-transaction": "Odeslat transakci", + "incorrect-code": [ + "str", + "Tento kód není správný, prosím zkus to znovu." + ], + "image-source-gallery": "Vybrat z galerie", + "sync-synced": "Synchronizováno", + "status-pending": "Čekám", + "datetime-day": { + "one": "den", + "other": "dny(ů)" + }, + "wallet-send": "Poslat", + "scan-qr": "Načíst QR kód", + "contact-s": { + "one": "kontakt", + "other": "kontakty(ů)" + }, + "type": "Typ", + "next": "Další", + "recent": "Poslední", + "status": "Status", + "from": "Od", + "wrong-password": "Špatné heslo", + "in-contacts": "V kontaktech", + "transactions-sign": "Podepsat", + "sharing-share": "Sdílet...", + "type-a-message": "Napište zprávu...", + "clear-history": "Vymazat historii", + "no-contacts": "Ještě tu nejsou žádné kontakty", + "datetime-today": "dnes", + "web-view-error": "ups, chyba", + "error": "Chyba", + "more": "více", + "cancel": "Storno", + "can-not-add-yourself": "Nemůžeš přidat sebe", + "add-to-contacts": "Přidat do kontaktů", + "available": "Dostupný", + "You": "Ty", + "main-wallet": "Hlavní peněženka", + "transactions": "Transakce", + "members": { + "one": "1 účastník", + "other": "{{count}} účastníci", + "zero": "žádní účastníci" + }, + "intro-message1": [ + "str", + "Vítá vás Status\nKlepněte na tuto zprávu pro nastavení hesla a zahájení!" + ], + "transactions-history": "Historie", + "new-contact": "Nový kontakt", + "datetime-second": { + "one": "sekunda", + "other": "sekund(y)" + }, + "recover": "Obnovit", + "datetime-minute": { + "one": "minuta", + "other": "minut(y)" + }, + "browsing-open-in-android-web-browser": "Otevřít ve webovém prohlížeči", + "browsing-open-in-ios-web-browser": "Otevřít ve webovém prohlížeči", + "edit-profile": "Upravit profil", + "active-unknown": "Neznámý", + "public-key": "Veřejný klíč", + "profile": "Profil", + "none": "Žádný", + "removed": "odstraněn", + "transactions-filter-select-all": "Označit vše", + "transactions-filter-title": "Filtrovat historii", + "message": "Zpráva", + "here-is-your-passphrase": "Tady jsou bezpečnostní slova, *zapiš je a ulož na bezpečném místě!* Budou potřeba pro obnovení přístupu k účtu.", + "wallet-assets": "Aktiva", + "image-source-title": "Profilový obrázek", + "current-network": "Aktuální síť", + "left": "opuštěno", + "to": "Komu", + "status-sent": "Odesláno", + "data": "Data" +} diff --git a/translations/da.json b/translations/da.json new file mode 100644 index 00000000000..ebeba286f50 --- /dev/null +++ b/translations/da.json @@ -0,0 +1,131 @@ +{ + "confirm": "Bekræft", + "amount": "Beløb", + "members-active": { + "one": "1 medlem", + "other": "{{count}} medlemmer", + "zero": "ingen medlemmer" + }, + "chat-name": "Chatnavn", + "phew-here-is-your-passphrase": "*Puha* det var hårdt, her er din kodesætning (passphrase), *skriv den ned og gem den sikkert!* Du skal bruge den for at kunne gendanne din konto.", + "public-group-topic": "Emne", + "chat-settings": "Chatindstillinger", + "offline": "Offline", + "invited": "Inviteret", + "address": "Adresse", + "new-public-group-chat": "Deltag i offentlig samtale", + "datetime-hour": { + "one": "time", + "other": "timer" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "Gå venligst til dine systemindstillinger og sørg for at du Status > Kamera er tilladt.", + "remove": "Fjern", + "add-members": "Tilføj medlemmere", + "photos-access-error": "Gå venligst til dine systemindstillinger og sørg for at du Status > Billeder er tilladt.", + "done": "Klar", + "close-chat": "Fjern samtale", + "new-group-chat": "Ny gruppsamtale", + "sign-in": "Log på", + "datetime-yesterday": "i går", + "create-new-account": "Opret en ny konto", + "datetime-ago": "siden", + "contacts": "Kontakter", + "got-it": "Forstået", + "active-online": "Online", + "password": "Kodeord", + "browsing-title": "Browse", + "discover": "Opdag", + "browsing-cancel": "Annullér", + "intro-status": "Chat med mig for at opsætte din konto og ændre dine indstillinger!!", + "name": "Navn", + "show-qr": "Vis QR-kode", + "connect": "Tilslut", + "edit": "Rediger", + "account-generation-message": "Vent et øjeblik, jeg er nødt til at gøre nogle skøre beregninger for at generere din konto!", + "no-messages": "Ingen beskeder", + "passphrase": "Kodesætning (passphrase)", + "recipient": "Modtager", + "members-title": "Medlemmere", + "new-group": "Ny gruppe", + "phone-e164": "International 1", + "settings": "Indstillinger", + "delete": "Slet", + "chats": "Samtaler", + "transaction": "Transaktion", + "status-sent": "Sendt", + "public-group-status": "Offentlig", + "image-source-make-photo": "Tag billede", + "start-conversation": "Begynd samtale", + "save": "Gem", + "sharing-copy-to-clipboard": "Kopier til udklipsholderen", + "sync-in-progress": "Synkroniserer...", + "send-transaction": "Send transaktion", + "incorrect-code": [ + "str", + "Koden var desværre forkert. Prøv venligst igen" + ], + "image-source-gallery": "Vælg fra galleri", + "sync-synced": "Synkroniseret", + "status-pending": "Under behandling", + "datetime-day": { + "one": "dag", + "other": "dage" + }, + "scan-qr": "Skan QR-kode", + "contact-s": { + "one": "kontakt", + "other": "kontakter" + }, + "next": "Næste", + "recent": "Seneste", + "status": "Status", + "from": "Fra", + "wrong-password": "Forkert kodeord", + "in-contacts": "I kontakter", + "sharing-share": "Del...", + "type-a-message": "Skriv en besked...", + "clear-history": "Fjern historik", + "no-contacts": "Ingen kontakter endnu", + "datetime-today": "i dag", + "web-view-error": "hovsa, fejl", + "error": "Fejl", + "more": "mere", + "cancel": "Annullér", + "can-not-add-yourself": "Du kan ikke tilføje dig selv fjolle", + "add-to-contacts": "Tilføj til kontakter", + "available": "Aktiv", + "You": "Du", + "main-wallet": "Hovedpung", + "members": { + "one": "1 medlem", + "other": "{{count}} medlemmer", + "zero": "ingen medlemmer" + }, + "intro-message1": "Velkommen til Status\n Tryk på denne meddelelse for at angive din adgangskode og komme i gang!", + "new-contact": "Ny kontakt", + "datetime-second": { + "one": "sekund", + "other": "sekunder" + }, + "recover": "Gendan", + "datetime-minute": { + "one": "minut", + "other": "minutter" + }, + "browsing-open-in-android-web-browser": "Åben i web browser", + "browsing-open-in-ios-web-browser": "Åben i web browser", + "edit-profile": "Rediger profil", + "active-unknown": "Ukendt", + "public-key": "Offentlig nøgle", + "profile": "Profil", + "none": "Ingen", + "removed": "Fjernet", + "message": "Meddelelser", + "here-is-your-passphrase": "Her er din kodesætning (passphrase), *skriv den ned og gem den sikkert!* Du behøver den for at gendanne din konto.", + "image-source-title": "Profilbillede", + "current-network": "Nuværende netværk", + "left": "Forlod", + "to": "Til", + "data": "Data" +} diff --git a/translations/de.json b/translations/de.json new file mode 100644 index 00000000000..2faaa21fe6d --- /dev/null +++ b/translations/de.json @@ -0,0 +1,1715 @@ +{ + "You": "Sie", + "about-app": "Über diese App", + "about-key-storage-content": "Status wird nie auf Ihren privaten Schlüssel zugreifen. Sichern Sie unbedingt Ihre Seed-Phrase. Wenn Sie Ihr Smartphone verlieren, ist dies die einzige Möglichkeit, auf Ihre Schlüssel zuzugreifen.", + "about-key-storage-title": "Informationen zur Schlüsselspeicherung", + "about-names-content": "Niemand kann vorgeben, Sie zu sein! Sie sind standardmäßig anonym und müssen niemals Ihren richtigen Namen preisgeben. Sie können einen benutzerdefinierten Namen gegen eine geringe Gebühr registrieren.", + "about-names-title": "Namen können nicht geändert werden", + "about-sharing-data": "Über das Teilen von Daten", + "accept": "Akzeptieren", + "accept-and-add": "Akzeptieren und hinzufügen", + "accept-and-continue": "Akzeptieren und fortfahren", + "accept-and-share-address": "Adresse akzeptieren und teilen", + "accept-new-chats-from": "Neue Chats annehmen von", + "accept-status-tos-prefix": "Ich akzeptiere Status", + "access-existing-keys": "Greife auf vorhandene Schlüssel zu", + "access-key": "Zugangsschlüssel", + "account-added": "Konto hinzugefügt", + "account-color": "Farbe des Kontos", + "account-content": "Sie können Konten in Status mit Bankkonten vergleichen. Wie ein Bankkonto hat ein Konto normalerweise eine Adresse und einen Kontostand. Sie verwenden dieses Konto, um Transaktionen auf Ethereum durchzuführen. Sie können mehrere Konten in Ihrer Wallet haben, welche nach dem Entsperren von Status direkt zur Verfügung stehen.", + "account-exists-title": "Konto existiert bereits", + "account-is-used": "Das Konto wird mit Dapps im Browser verwendet.", + "account-name": "Name des Kontos", + "account-settings": "Konto-Einstellungen", + "account-title": "Konto", + "accounts": "Konten", + "actions": "Aktionen", + "active-online": "Online", + "active-unknown": "Unbekannt", + "activity": "Aktivität", + "add": "hinzufügen", + "add-a-watch-account": "Fügen Sie ein Beobachtungskonto hinzu", + "add-account": "Konto hinzufügen", + "add-account-description": "Sie können jede Art von Ethereum-Konten importieren, um sie Ihrer Status-Wallet hinzuzufügen", + "add-account-incorrect-password": "Das Passwort scheint falsch zu sein. Geben Sie das Passwort ein, mit dem Sie die App üblicherweise entsperren.", + "add-an-account": "Füge ein Konto hinzu", + "add-bootnode": "Bootnode hinzufügen", + "add-contact": "Kontakt hinzufügen", + "add-custom-token": "Benutzerdefiniertes Token hinzufügen", + "add-favourite": "Favorit hinzufügen", + "add-mailserver": "Mailserver hinzufügen", + "add-members": "Mitglieder hinzufügen", + "add-network": "Netzwerk hinzufügen", + "add-new-contact": "Neuen Kontakt hinzufügen", + "add-nickname": "Alias hinzufügen", + "add-node": "Knoten hinzufügen", + "add-private-key-account": "Konto mit privatem Schlüssel hinzufügen", + "add-seed-account": "Konto mit einer Seed-Phrase hinzufügen", + "add-to-contacts": "Zu Kontakten hinzufügen", + "add-to-contacts-text": "Durch Hinzufügen eines Benutzers zu Ihrer Kontaktliste teilen Sie Ihre Wallet-Adresse", + "add-to-favourites": "Zu Favoriten hinzufügen", + "add-watch-account": "Füge ein Beobachtungskonto hinzu", + "address": "Adresse", + "address-or-ens-name": "Adresse oder ENS-Name", + "address-received": "Adresse erhalten", + "address-request-accepted": "Adressanfrage akzeptiert", + "address-requested": "Adresse angefordert", + "advanced": "Erweitert", + "advanced-settings": "Erweiterte Einstellungen", + "advertiser-description": "Sie haben Status dank eines Partners entdeckt. Erlauben Sie, dass Status Ihre IP-Adresse einmal überprüft, damit sie belohnt werden? Diese Informationen werden für nichts anderes verwendet und nach 7 Tagen vollständig gelöscht.", + "advertiser-starter-pack-accept": "Akzeptieren", + "advertiser-starter-pack-decline": "Ablehnen", + "advertiser-starter-pack-description": "Hier ist etwas Kryptowährung für den Anfang! Benutzen Sie diese, um Sticker zu bekommen, einen ENS-Namen zu erstellen und DApps zu testen.", + "advertiser-starter-pack-title": "Starter Pack", + "advertiser-title": "Datenschutz standardmäßig", + "agree-by-continuing": "Indem Sie fortfahren, stimmen Sie zu \n zu unserer", + "all": "Alle", + "allow": "Erlauben", + "allow-and-send": "Erlauben und senden", + "allow-mention-notifications": "Zeige @ Erwähnungen an", + "allowing-authorizes-this-dapp": "Durch das Zulassen wird diese DApp berechtigt, Ihre Wallet Adresse abzurufen und Web3 zu aktivieren", + "already-have-asset": "Sie haben dieses Asset bereits", + "amount": "Betrag", + "anyone": "Jeder", + "appearance": "Erscheinungsbild", + "apply": "Anwenden", + "approve": "Genehmigen", + "approve-limit": "Limit genehmigen", + "approve-token": "Token genehmigen", + "approve-token-contract-desc": "Die Genehmigung eines Tokens mit einem Vertrag ermöglicht es ihm, Ihr Token-Guthaben auszugeben. Wenn Sie der Meinung sind, dass ein Projekt nicht vertrauenswürdig ist, genehmigen Sie das Token nicht mit ihnen oder genehmigen Sie nur den Betrag, den Sie mit ihnen verwenden werden.", + "are-you-sure": "Sind Sie sicher?", + "are-you-sure-description": "Die gesamte Seed-Phrase wird nicht mehr angezeigt", + "are-you-sure-to-cancel": "Sind Sie sicher, dass Sie abbrechen möchten?", + "are-you-sure?": "Sind Sie sicher?", + "ask-in-status": "Stellen Sie eine Frage oder melden Sie einen Fehler", + "at": "bei", + "attribution-received": "{{attrib}} von {{max}} Boni erhalten", + "audio": "Audio", + "audio-recorder": "Rekorder", + "audio-recorder-error": "Rekorderfehler", + "audio-recorder-max-ms-reached": "Maximale Aufnahmezeit erreicht", + "audio-recorder-permissions-error": "Sie müssen die Erlaubnis zum Senden von Audionachrichten erteilen", + "authorize": "Autorisieren Sie", + "available": "Verfügbar", + "available-participants": { + "one": "Sie können noch ein Mitglied auswählen", + "other": "Sie können noch {{count}} Mitglieder auswählen" + }, + "back": "Zurück", + "back-up": "Sichern", + "back-up-seed-phrase": "Sichern der Seed-Phrase", + "back-up-your-seed-phrase": "Sichern sie ihre Seed-Phrase", + "backing-up": "Sichern…", + "backup-disabled": "Deaktiviert", + "backup-enabled": "Aktiviert", + "backup-recovery-phrase": "Seed-Phrase sichern", + "backup-settings": "Backup-Einstellungen", + "backup-through-waku": "Backup über Waku", + "bad-fees-description": "Ihre Prioritätsgebühr liegt unter unseren vorgeschlagenen Parametern.", + "balance": "Kontostand", + "begin-set-up": "Beginnen Sie mit der Einrichtung", + "below-base-fee": "Maximale Gebühr unter Grundgebühr", + "biometric-auth-android-sensor-desc": "Fingerabdruck", + "biometric-auth-android-sensor-error-desc": "Fehlgeschlagen", + "biometric-auth-android-title": "Authentifizierung erforderlich", + "biometric-auth-confirm-logout": "Erneut anmelden", + "biometric-auth-confirm-message": "Die biometrische Authentifizierung ist erforderlich, um fortzufahren. Wenn dies nicht möglich ist, entsperren Sie bitte Ihre Schlüssel mit Ihrem Passwort oder Passcode", + "biometric-auth-confirm-title": "Sie müssen sich authentifizieren!", + "biometric-auth-confirm-try-again": "Erneut versuchen", + "biometric-auth-error": "Biometrische Authentifizierung nicht möglich ({{code}})", + "biometric-auth-login-error-title": "Fehler bei der biometrischen Authentifizierung", + "biometric-auth-login-ios-fallback-label": "Passwort eingeben", + "biometric-auth-reason-login": "In Status einloggen", + "biometric-auth-reason-verify": "Überprüfen Sie die Authentifizierung", + "biometric-disable-bioauth": "{{bio-type-label}} deaktivieren", + "biometric-disable-password-description": "Wenn Sie dies deaktivieren, werden Sie auch ", + "biometric-disable-password-title": "Speichern des Passworts deaktivieren", + "biometric-enable": "Wenn Sie nicht jedes Mal Ihr Passwort eingeben möchten, um auf die App zuzugreifen, aktivieren Sie die {{bio-type-label}}-Anmeldung", + "biometric-enable-button": "Aktivieren Sie {{bio-type-label}}", + "biometric-enable-keycard": "Wenn Sie Ihre Keycard nicht jedes Mal verwenden möchten, um auf die App zuzugreifen, aktivieren Sie die {{bio-type-label}}-Anmeldung", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Fingerabdruck", + "biometric-secure-with": "Mit {{bio-type-label}} sichern", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39 Passwort", + "blank-keycard-text": "Sie können mit Ihrer Keycard fortfahren, sobald Sie Ihre Schlüssel und Ihren Namen generiert haben", + "blank-keycard-title": "Wahrscheinlich haben Sie eine \nleere Keycard verwendet", + "block": "Block", + "block-contact": "Diesen Benutzer blockieren", + "block-contact-details": "Durch das Blockieren werden die vorherigen Nachrichten dieses Benutzers gelöscht. Neue Nachrichten werden nicht mehr empfangen.", + "blocked-users": "Blockierte Benutzer", + "bootnode-address": "Bootknotenadresse", + "bootnode-details": "Bootknoten-Details", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootknoten", + "bootnodes-enabled": "Bootknoten aktiviert", + "bootnodes-settings": "Bootnodes Einstellungen", + "browsed-websites": "Der Browserverlauf wird hier angezeigt", + "browser": "Browser", + "browser-not-secure": "Verbindung ist nicht sicher! Unterzeichnen Sie auf dieser Website keine Transaktionen und senden Sie keine persönlichen Daten.", + "browser-secure": "Die Verbindung ist sicher. Stellen Sie sicher, dass Sie dieser Website wirklich vertrauen, bevor Sie Transaktionen unterzeichnen oder persönliche Daten eingeben.", + "browsers": "Browser", + "browsing-cancel": "Abbrechen", + "browsing-open-in-android-web-browser": "In Android öffnen", + "browsing-open-in-ios-web-browser": "In iOS öffnen", + "browsing-open-in-status": "In Status öffnen", + "browsing-site-blocked-description1": "Wir haben potenzielle böswillige Aktivitäten von dieser Adresse aus entdeckt. Um Sie und Ihre Wallet zu schützen, verhindern wir die weitere Navigation.\n\nWenn Sie der Meinung sind, dass es sich um einen Fehler handelt, teilen Sie uns dies mit in der ", + "browsing-site-blocked-description2": " öffentlicher Chat.", + "browsing-site-blocked-go-back": "Zurück", + "browsing-site-blocked-title": "Diese Seite ist blockiert", + "browsing-title": "Durchsuchen", + "bug-report": "Melden Sie einen technischen Fehler", + "bug-report-description": "* Beschreibung", + "bug-report-description-placeholder": "Erforderlich, kann nicht leer sein", + "bug-report-steps": "Schritte zur Reproduktion", + "bug-report-steps-placeholder": "- App öffnen\n- etwas tun\n- und dann etwas anderes...", + "bug-report-submit-email": "Einreichung per E-Mail mit Archiv der Protokolle", + "bug-report-submit-gh-issue": "Einreichen eines GitHub-Problems ohne Protokolle", + "bug-report-too-short-description": "Beschreibung ist zu kurz", + "build-yourself": "Um die App ohne diese Nutzungsbedingungen zu nutzen, können Sie Ihre eigene Version erstellen", + "buy-crypto": "Krypto kaufen", + "buy-crypto-choose-a-service": "Wählen Sie einen Dienst, den Sie zum Kauf von Krypto verwenden möchten", + "buy-crypto-description": "Finden Sie eine DApp, um jetzt Kryptowährung zu kaufen", + "buy-crypto-leaving": "Sie verlassen Status und rufen eine Website eines Drittanbieters auf, um Ihren Kauf abzuschließen", + "buy-crypto-title": "Sieht aus, als wäre Ihre Wallet leer", + "camera-access-error": "Um den benötigten Kamera-Zugriff zu erlauben, gehen Sie bitte in Ihre Systemeinstellungen und stelle sicher, dass Status > Kamera ausgewählt ist.", + "can-not-add-yourself": "Das sind Sie; um einen Chat zu starten, wählen Sie jemand anderes", + "can-send-messages": "Sie können neue Nachrichten senden und empfangen", + "cancel": "Abbrechen", + "cancel-keycard-setup": "Keycard-Einrichtung abbrechen", + "cancelling": "Abbrechen", + "cannot-read-card": "Karte kann nicht gelesen werden. \nBitte halten Sie es an die Rückseite Ihres Handys!", + "cannot-use-default-pin": "Passcode 000000 ist nicht erlaubt. \nBitte verwenden Sie eine andere Nummer", + "cant-open-public-chat": "Öffentlicher Chat kann nicht geöffnet werden", + "cant-report-bug": "Ich kann keinen Fehler melden", + "card-is-blank": "Diese Karte ist leer", + "card-reseted": "Karte wurde zurückgesetzt", + "card-unpaired": "Karte wurde vom aktuellen Gerät getrennt", + "category": "Kategorie", + "category-title": "Titel der Kategorie", + "change-fleet": "Fleet in {{fleet}} ändern", + "change-logging-enabled": "Möchten Sie die Protokollierung {{enable}}?", + "change-pairing": "Pairing-Code ändern", + "change-pairing-description": "Das Ändern des Pairing-Codes hat keine Auswirkungen auf die aktuellen Pairings. Für jede neue Paarung ist jedoch der neue Code erforderlich.", + "change-pairing-title": "Erstellen eines neuen Pairing-Code", + "change-passcode": "Passcode ändern", + "change-password": "Passwort ändern", + "change-pin": "Ändern Sie den 6-stelligen Passcode", + "change-puk": "12-stelligen PUK ändern", + "change-tip": "Trinkgeld ändern", + "changed-amount-warning": "Der Betrag wurde von {{old}} zu {{new}} geändert", + "changed-asset-warning": "Asset wurde von {{old}} in {{new}} geändert", + "chaos-mode": "Chaos-Modus", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chatten Sie und tauschen Sie Kryptowährung privat mit Freunden aus", + "chat-is-a-contact": "Kontakt", + "chat-is-not-a-contact": "Kein Kontakt", + "chat-key": "Chat-Key", + "chat-key-content": "Nachrichten im Status-Chat-Protokoll werden mit Verschlüsselungsschlüsseln gesendet und empfangen. Der öffentliche Chat-Schlüssel ist eine Zeichenfolge, die Sie mit anderen teilen, damit diese Ihnen Nachrichten im Status senden können.", + "chat-key-title": "Chat-Schlüssel", + "chat-link-previews": "Chat-Link-Vorschauen", + "chat-name": "Chatname", + "chat-name-content": "Drei zufällige Wörter, die algorithmisch von Ihrem Chat-Schlüssel abgeleitet und als Standardalias im Chat verwendet werden. Chat-Namen sind völlig eindeutig. Kein anderer Benutzer kann dieselben drei Wörter haben.", + "chat-name-title": "Chat-Name", + "chat-notification-preferences": "Benachrichtigungseinstellungen", + "chat-settings": "Chat-Einstellungen", + "chats": "Chats", + "check-on-block-explorer": "Überprüfen auf dem Block-Explorer", + "check-on-opensea": "auf Opensea überprüfen", + "check-your-recovery-phrase": "Überprüfen Sie Ihre Seed-Phrase", + "choose-actions": "Aktionen auswählen", + "choose-authentication-method": "Wählen Sie eine Authentifizierungsmethode", + "choose-new-location-for-keystore": "Wählen Sie einen neuen Speicherort für Ihre Keystore-Datei", + "choose-storage": "Speicherort wählen", + "clear": "Leeren", + "clear-all": "Alles löschen", + "clear-history": "Verlauf löschen", + "clear-history-action": "Leeren", + "clear-history-confirmation": "Verlauf leeren?", + "clear-history-confirmation-content": "Möchten Sie diesen Chat-Verlauf wirklich löschen?", + "clear-history-title": "Verlauf löschen?", + "close": "Schließen", + "close-all": "Alle schließen", + "close-app-button": "Bestätigen", + "close-app-content": "Die App wird angehalten und geschlossen. Wenn Sie sie erneut öffnen, wird das ausgewählte Netzwerk verwendet", + "close-app-title": "Warnung!", + "collectibles-leak-metadata": "Hier können Sie Ihre NFTs anzeigen. Wenn Sie dies tun, teilen Sie Ihre Wallet und IP-Adresse", + "command-button-send": "Senden", + "communities": "Communities", + "communities-alpha": "Communities (Alpha)", + "communities-enabled": "Communities aktiviert", + "communities-verified": "✓ Verifizierte Status Community", + "community": "Community", + "community-color": "Community Farbe", + "community-color-placeholder": "Wählen Sie eine Farbe", + "community-edit-title": "Community bearbeiten", + "community-emoji-thumbnail-title": "Miniaturansicht", + "community-image-pick": "Bild wählen", + "community-image-remove": "Entfernen", + "community-image-take": "Foto machen", + "community-info": "Community-Info", + "community-info-not-found": "Community-Informationen nicht gefunden", + "community-invite-title": "Einladen", + "community-key": "Privater Community-Schlüssel", + "community-key-placeholder": "Geben Sie Ihren privaten Community-Schlüssel ein", + "community-link": "Community-Link", + "community-members": { + "one": "{{count}} Mitglied", + "other": "{{count}} Mitglieder" + }, + "community-members-title": "Mitglieder", + "community-message-preview": "Einladung zum Beitritt zu {{community-name}}", + "community-private-key": "Privater Community-Schlüssel", + "community-requests-to-join-title": "Anfragen zur Mitgliedschaft", + "community-roles": "Rollen", + "community-share-title": "Teilen", + "community-thumbnail-image": "Vorschaubild", + "community-thumbnail-upload": "Hochladen", + "complete-hardwallet-setup": "Diese Karte ist jetzt verlinkt. Sie benötigen sie, um Transaktionen zu unterzeichnen und Ihre Schlüssel freizuschalten.", + "completed": "Abgeschlossen", + "confirm": "Bestätigen", + "confirm-new-password": "Bestätige neues Passwort", + "confirm-pairing-code-placeholder": "Bestätigen Sie Ihren Pairing-Code ...", + "confirm-password-placeholder": "Bestätigen Sie Ihr Passwort...", + "confirmation-request": "Bestätigungsanfrage", + "confirmations": "Bestätigungen", + "confirmations-helper-text": "Wenn die Transaktion 12 Bestätigungen hat, können Sie sie als abgeschlossen betrachten.", + "connect": "Verbinden", + "connect-mailserver-content": "Mit {{name}} verbinden?", + "connect-wallet": "Wallet verbinden", + "connected": "Verbunden", + "connected-to": "Verbunden mit", + "connecting": "Verbinden...", + "connecting-requires-login": "Für die Verbindung mit einem anderen Netzwerk ist eine Anmeldung erforderlich", + "connection-status": "Verbindungsstatus", + "connection-with-the-card-lost": "Verbindung zur Karte\nverloren", + "connection-with-the-card-lost-setup-text": "Um die Einrichtung fortzusetzen,\nhalten Sie die Karte direkt an die\nRückseite Ihres Smartphones", + "connection-with-the-card-lost-text": "Um fortzufahren, halten Sie die Karte an die Rückseite Ihres Smartphones", + "contact-code": "Chat-Key", + "contact-s": { + "one": "Kontakt", + "other": "Kontakte" + }, + "contacts": "Kontakte", + "contacts-descr": "Ihre Kontakte werden hier angezeigt. Sie erhalten Statusaktualisierungen von jedem, den Sie als Kontakt hinzufügen", + "contacts-empty": "Kontakte mit ENS-Namen werden hier angezeigt", + "continue": "Fortsetzen", + "continue-anyway": "Trotzdem fortfahren", + "contract-address": "Vertragsadresse", + "contract-interaction": "Vertragliche Interaktion", + "contract-isnt-supported": "Vertrag wird nicht unterstützt", + "copy-info": "Informationen kopieren", + "copy-qr": "Code kopieren", + "copy-to-clipboard": "Kopieren", + "copy-transaction-hash": "Transaktions-ID kopieren", + "cost-fee": "Kosten\/Gebühr", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Erstellen", + "create-a-pin": "Erstellen Sie einen 6-stelligen Passcode", + "create-a-puk": "Erstellen eines 12-stelligen PUKs", + "create-category": "Kategorie erstellen", + "create-channel": "Einen Kanal erstellen", + "create-channel-title": "Neuer Kanal", + "create-community": "Eine Community erstellen", + "create-group-chat": "Gruppenchat erstellen", + "create-multiaccount": "Schlüssel generieren", + "create-new-key": "Holen Sie sich neue Schlüssel", + "create-pin": "Erstellen Sie ein 6-stelliges Passwort", + "create-pin-description": "Sie benötigen Ihre Karte + diesen 6-stelligen Passcode, um Status freizuschalten und Transaktionen zu bestätigen", + "created-group-chat-description": "Sie haben die Gruppe {{group-name}} erstellt", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Währung", + "currency-display-name-aed": "VAE-Dirham", + "currency-display-name-afn": "Afghani", + "currency-display-name-ars": "Argentinischer Peso", + "currency-display-name-aud": "Australischer Dollar", + "currency-display-name-bbd": "Barbados-Dollar", + "currency-display-name-bdt": "Bangladescher Taka", + "currency-display-name-bgn": "Lew", + "currency-display-name-bhd": "Bahrain-Dinar", + "currency-display-name-bnd": "Brunei-Dollar", + "currency-display-name-bob": "Boliviano", + "currency-display-name-brl": "Brasilianischer Real", + "currency-display-name-btn": "Ngultrum", + "currency-display-name-cad": "Kanadischer Dollar", + "currency-display-name-chf": "Schweizer Franken", + "currency-display-name-clp": "Chilenischer Peso", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Kolumbianischer Peso", + "currency-display-name-crc": "Costa-Rica-Colón", + "currency-display-name-czk": "Tschechische Krone", + "currency-display-name-dkk": "Dänische Krone", + "currency-display-name-dop": "Dominikanischer Peso", + "currency-display-name-egp": "Ägyptisches Pfund", + "currency-display-name-etb": "Äthiopischer Birr", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Pfund Sterling", + "currency-display-name-gel": "Georgischer Lari", + "currency-display-name-ghs": "Cedi", + "currency-display-name-hkd": "Hongkong-Dollar", + "currency-display-name-hrk": "Kroatische Kuna", + "currency-display-name-huf": "Forint", + "currency-display-name-idr": "Indonesien Rupiah", + "currency-display-name-ils": "Schekel", + "currency-display-name-inr": "Indische Rupie", + "currency-display-name-isk": "Isländische Krone", + "currency-display-name-jmd": "Jamaika-Dollar", + "currency-display-name-jpy": "Japanische YEN", + "currency-display-name-kes": "Kenianischer Schilling", + "currency-display-name-krw": "Südkoreanischer Won", + "currency-display-name-kwd": "Kuwait-Dinar", + "currency-display-name-kzt": "Kasachstan Tenge", + "currency-display-name-lkr": "Sri-Lanka-Rupie", + "currency-display-name-mad": "Marokkanischer Dirham", + "currency-display-name-mdl": "Moldauischer Leu", + "currency-display-name-mur": "Mauritius-Rupie", + "currency-display-name-mwk": "Malawi-Kwacha", + "currency-display-name-mxn": "Mexikanischer Peso", + "currency-display-name-myr": "Malaysia Ringgit", + "currency-display-name-mzn": "Mosambik Metical", + "currency-display-name-nad": "Namibischer Dollar", + "currency-display-name-ngn": "Nigerianischer Naira", + "currency-display-name-nok": "Norwegische Krone", + "currency-display-name-npr": "Nepalesische Rupie", + "currency-display-name-nzd": "Neuseeland-Dollar", + "currency-display-name-omr": "Omanischer Rial", + "currency-display-name-pen": "Peruanischer Sol", + "currency-display-name-pgk": "Kina", + "currency-display-name-php": "Philippinischer Peso", + "currency-display-name-pkr": "Pakistanische Rupie", + "currency-display-name-pln": "Złoty", + "currency-display-name-pyg": "Paraguayischer Guaraní", + "currency-display-name-qar": "Katar Riyal", + "currency-display-name-ron": "Rumänischer Leu", + "currency-display-name-rsd": "Serbischer Dinar", + "currency-display-name-rub": "Russischer Rubel", + "currency-display-name-sar": "Saudi-Riyal", + "currency-display-name-sek": "Schwedische Krone", + "currency-display-name-sgd": "Singapur-Dollar", + "currency-display-name-thb": "Baht", + "currency-display-name-try": "Türkische Lira", + "currency-display-name-ttd": "Trinidad-und-Tobago-Dollar", + "currency-display-name-twd": "Neuer Taiwan-Dollar", + "currency-display-name-tzs": "Tansania-Schilling", + "currency-display-name-uah": "Ukrainische Hrywnja", + "currency-display-name-ugx": "Uganda-Schilling", + "currency-display-name-usd": "US-Dollar", + "currency-display-name-uyu": "Uruguayischer Peso", + "currency-display-name-vef": "Venezolanischer Bolívar", + "currency-display-name-vnd": "Vietnamesischer Đồng", + "currency-display-name-zar": "Südafrikanischer Rand", + "current": "Aktuell", + "current-average": "Aktueller Durchschnitt", + "current-average-tip": "Aktuelles durchschnittliches Trinkgeld", + "current-base": "Aktuelle Basis", + "current-base-fee": "Aktuelle Grundgebühr", + "current-minimum-tip": "Aktuelles Mindesttrinkgeld", + "current-network": "Aktuelles Netzwerk", + "current-password": "Aktuelles Passwort", + "current-pin": "Geben Sie einen 6-stelligen Passcode ein", + "current-pin-description": "Geben Sie Ihren 6-stelligen Passcode ein, um fortzufahren", + "custom": "Benutzerdefiniert", + "custom-networks": "Benutzerdefinierte Netzwerke", + "custom-node": "Sie verwenden einen benutzerdefinierten RPC-Endpunkt. Ihre lokale Übertragungshistorie ist möglicherweise unvollständig.", + "custom-seed-phrase": "Falsche Seed-Phrase", + "custom-seed-phrase-text-1": "Diese Seed-Phrase passt nicht zu unserem unterstützten Wörterbuch. Suchen Sie nach falsch geschriebenen Wörtern.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Akzeptieren und Öffnen", + "dapp-starter-pack-description": "Hier ist etwas Kryptowährung für den Anfang! Benutze diesen, um Sticker zu bekommen, einen ENS-Namen zu erstellen und DApps auszuprobieren.", + "dapp-starter-pack-title": "Starter Pack", + "dapp-would-like-to-connect-wallet": "möchte eine Verbindung zu herstellen", + "dapps": "ÐApps", + "dapps-permissions": "DApp-Berechtigungen", + "dark": "Dunkel", + "data": "Daten", + "data-collected": "Daten gesammelt", + "data-collected-subtitle": "Die folgende Tabelle zeigt die genauen Daten, die gespeichert und gesendet werden. Die Daten werden anhand öffentlicher Regeln validiert, um sicherzustellen, dass keine sensiblen Daten gesendet werden. Vertraue nicht, verifiziere.", + "data-syncing": "Synchronisiere Daten", + "database-reset-content": "Chats, Kontakte und Einstellungen wurden gelöscht. Du kannst dein Konto mit deiner Schlüsselkarte benutzen.", + "database-reset-title": "Datenbank zurücksetzen", + "database-reset-warning": "Die Datenbank wird zurückgesetzt. Chats, Kontakte und Einstellungen werden gelöscht", + "datetime-ago": "vor", + "datetime-ago-format": "{{ago}} {{number}} {{time-intervals}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "Tag", + "other": "Tage" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "Stunde", + "other": "Stunden" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "Minute", + "other": "Minuten" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "Sekunde", + "other": "Sekunden" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "heute", + "datetime-yesterday": "gestern", + "decimals": "Dezimalstellen", + "decline": "Ablehnen", + "decryption-failed-content": "Beim Entschlüsseln Ihrer Daten ist ein Fehler aufgetreten. Möglicherweise müssen Sie Ihre alten Daten löschen und ein neues Konto erstellen. Tippen Sie zum Löschen auf „Übernehmen“ oder zum erneuten Versuch auf „Abbrechen“", + "default": "Standard", + "default-assets": "Standard ERC20 und ERC721", + "default-sync-period": "Synchronisierungsverlauf für", + "delete": "Löschen", + "delete-account": "Konto löschen", + "delete-and-leave-group": "Gruppe löschen und verlassen", + "delete-bootnode": "Bootknoten löschen", + "delete-bootnode-are-you-sure": "Möchten Sie diesen Bootknoten wirklich löschen?", + "delete-bootnode-title": "Bootknoten löschen", + "delete-category-confirmation": "Möchten Sie diese Kategorie wirklich löschen?", + "close-chat": "Chat löschen", + "close-chat-confirmation": "Möchten Sie diesen Chat wirklich löschen?", + "delete-confirmation": "Löschen?", + "delete-keys-keycard": "Schlüssel von der Schlüsselkarte löschen", + "delete-mailserver": "Mailserver löschen", + "delete-mailserver-are-you-sure": "Möchten Sie diesen Mailserver wirklich löschen?", + "delete-mailserver-title": "Mailserver löschen", + "delete-message": "Nachricht löschen", + "delete-my-account": "Mein Konto löschen", + "delete-my-profile": "Mein Profil löschen", + "delete-network-confirmation": "Sind Sie sicher, dass Sie dieses Netzwerk löschen wollen?", + "delete-network-error": "Bitte verbinden Sie sich mit einem anderen Netzwerk, bevor Sie dieses löschen", + "delete-network-title": "Netzwerk löschen?", + "delete-node": "Knoten löschen", + "delete-node-are-you-sure": "Sind Sie sicher, dass Sie diesen Knoten löschen wollen?", + "delete-node-title": "Knoten löschen", + "delete-profile": "Profil löschen", + "delete-profile-warning": "Warnung: Wenn Sie Ihre Seed-Phrase nicht notiert haben, verliersen Sie nach dem Löschen Ihres Profils den Zugang zu Ihrer Wallet.", + "deny": "Verweigern", + "derivation-path": "Ableitungspfad", + "describe-channel": "Beschreiben Sie den Kanal", + "description": "Beschreibung", + "dev-mode": "Entwicklungsmodus", + "dev-mode-settings": "Einstellungen des Entwicklungsmodus", + "device-syncing": "Gerätesynchronisierung", + "devices": "Geräte", + "disable": "deaktivieren", + "disable-all": "Alle deaktivieren", + "disable-later-in-settings": "Sie können dies später in den Einstellungen deaktivieren", + "disabled": "Deaktiviert", + "disconnected": "Chat offline", + "discover": "Entdecken", + "dismiss": "Verwerfen", + "display-collectibles": "Sammlerstücke anzeigen", + "done": "Erledigt", + "dont-ask": "Frag mich nicht noch einmal", + "edit": "Bearbeiten", + "edit-channel-title": "Kanal bearbeiten", + "edit-chats": "Chats bearbeiten", + "edit-community": "Community bearbeiten", + "edit-favourite": "Favorit bearbeiten", + "edit-group": "Gruppe bearbeiten", + "edit-profile": "Profil bearbeiten", + "edited": "Bearbeitet", + "editing-message": "Nachricht bearbeiten", + "empty-activity-center": "Ihre Chat-Benachrichtigungen\nwerden hier erscheinen", + "empty-chat-description": "Es gibt noch keine Nachrichten in diesem Chat", + "empty-chat-description-community": "Es war ruhig hier in den letzten {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Alle Nachrichten, die Sie hier senden, sind verschlüsselt und nur lesbar von Ihnen und ", + "empty-chat-description-public": "Hier gab es die letzten {{quiet-hours}} keine Aktivitäten. Starten Sie das Gespräch oder ", + "empty-chat-description-public-share-this": "Diesen Chat teilen", + "empty-keycard-required": "Erfordert eine leere Keycard", + "empty-pending-invitations-descr": "Gruppenanfragen über einen Einladungslink werden hier dargestellt", + "empty-tab": "Leere Registerkarte", + "enable": "Aktivieren", + "enable-all": "Alle aktivieren", + "enable-link-previews": "Linkvorschau im Chat aktivieren?", + "encrypt-with-password": "Mit Passwort verschlüsseln", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Benutzernamen hinzufügen", + "ens-agree-to": "Ich akzeptiere die ", + "ens-chat-settings": "Chat-Einstellungen", + "ens-custom-domain": "Benutzerdefinierte Domain", + "ens-custom-username-hints": "Geben Sie den gesamten Benutzernamen einschließlich der benutzerdefinierten Domain wie username.domain.eth ein", + "ens-custom-username-taken": "Benutzername gehört Ihnen nicht :(", + "ens-deposit": "Einzahlen", + "ens-dismiss-message": "Hier klicken um zu schließen", + "ens-displayed-with": "Ihre Nachrichten werden anderen angezeigt mit", + "ens-get-name": "Holen Sie sich einen universellen Benutzernamen", + "ens-got-it": "Ok, verstanden", + "ens-locked": "Benutzername gesperrt. Sie können es erst ab dem {{date}} freigeben", + "ens-name-content": "Benutzerdefinierter Alias für Ihren Chat-Schlüssel, den Sie über den Ethereum Name Service registrieren können. ENS-Namen sind dezentrale Benutzernamen.", + "ens-name-not-found": "ENS-Name kann nicht aufgelöst werden", + "ens-name-title": "ENS-Name", + "ens-network-restriction": "Nur im Hauptnetzwerk verfügbar", + "ens-no-usernames": "Sie haben keinen Benutzernamen verknüpft", + "ens-powered-by": "Unterstützt von Ethereum Name Services", + "ens-primary-username": "Primärer Benutzername", + "ens-register": "Registrieren", + "ens-registration-failed": "Versuchen Sie es erneut, um den Benutzernamen zu registrieren.", + "ens-registration-failed-title": "Transaktion fehlgeschlagen", + "ens-registration-failure": "Registrierung fehlgeschlagen", + "ens-registration-in-progress": "Registrierung läuft ...", + "ens-release-username": "Geben Sie den Benutzernamen frei", + "ens-remove-hints": "Durch Entfernen wird der Benutzername von Ihrem Schlüssel entkoppelt.", + "ens-remove-username": "Benutzernamen entfernen", + "ens-saved": " ist jetzt mit Ihrem Chat-Schlüssel verbunden und kann in Status verwendet werden.", + "ens-saved-title": "Benutzername hinzugefügt", + "ens-show-username": "Meinen ENS-Benutzernamen in Chats anzeigen", + "ens-terms-header": "Bedingungen für die Namensregistrierung", + "ens-terms-point-1": "Das Geld wird für ein Jahr hinterlegt. Ihr SNT wird gesperrt, aber nicht ausgegeben.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS-Eintragung).", + "ens-terms-point-2": "Nach einem Jahr können Sie den Namen freigeben und Ihre Einzahlung zurückerhalten oder keine Maßnahmen ergreifen und damit den Namen beibehalten.", + "ens-terms-point-3": "Wenn sich die Contract-Bedingungen ändern – z. B. Status führt Contract-Aktualisierungen durch – hat der Benutzer das Recht, den Benutzernamen freizugeben, und zwar unabhängig von der Haltezeit.", + "ens-terms-point-4": "Der Contract Controller kann nicht auf Ihre eingezahlten Beträge zugreifen. Sie können nur an die Adresse zurücknewegt werden, an die sie gesendet wurden.", + "ens-terms-point-5": "Ihre Adresse(n) werden öffentlich mit Ihrem ENS-Namen verknüpft.", + "ens-terms-point-6": "Benutzernamen werden als Subdomain-Knoten von stateofus.eth erstellt und unterliegen den ENS-Smart-Contract-Bedingungen.", + "ens-terms-point-7": "Sie ermächtigen den Contract, SNT in Ihrem Namen zu übertragen. Dies kann nur passieren, wenn Sie eine Transaktion zur Autorisierung der Übertragung genehmigen.", + "ens-terms-point-8": "Diese Bedingungen werden durch die intelligente Smart-Contract-Logik an folgenden Adressen garantiert:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Bedingungen für die Namensregistrierung.", + "ens-test-message": "Hallo", + "ens-transaction-pending": "Transaktion ausstehend...", + "ens-understand": "Ich verstehe, dass meine Wallet-Adresse mit meinem Benutzernamen öffentlich verknüpft wird.", + "ens-username": "ENS-Benutzername", + "ens-username-already-added": "Der Benutzername ist bereits mit Ihrem Chat-Schlüssel verbunden und kann in Status verwendet werden.", + "ens-username-available": "✓ Benutzername verfügbar!", + "ens-username-connected": "Dieser Benutzername gehört Ihnen und ist mit Ihrem Chat-Schlüssel verbunden.", + "ens-username-connected-continue": "Fortsetzen, um die Anzeige des ENS-Benutzernamen in Chats einzustellen", + "ens-username-connected-with-different-key": "Für die Fortsetzung ist eine Transaktion erforderlich, um den Benutzernamen mit Ihrem aktuellen Chat-Schlüssel zu verbinden.", + "ens-username-connection-confirmation": "{{username}} wird verbunden, sobald die Transaktion abgeschlossen ist.", + "ens-username-hints": "Mindestens 4 Zeichen. Nur lateinische Buchstaben, Zahlen und alles in Kleinbuchstaben.", + "ens-username-invalid": "Nur Buchstaben und Zahlen.", + "ens-username-owned": "✓ Der Benutzername gehört Ihnen. ", + "ens-username-owned-continue": "Wenn Sie fortfahren, wird dieser Benutzername mit Ihrem Chat-Schlüssel verbunden.", + "ens-username-registration-confirmation": "Super! Sie besitzen {{username}}, sobald die Transaktion abgeschlossen ist.", + "ens-username-taken": "Benutzername bereits vergeben :(", + "ens-username-you-can-follow-progress": "Sie können den Fortschritt im Abschnitt \"Transaktionsverlauf\" Ihrer Wallet verfolgen.", + "ens-usernames": "ENS-Benutzernamen", + "ens-usernames-details": "Registrieren Sie einen universellen Benutzernamen, der von anderen Benutzern leicht erkannt werden kann", + "ens-want-custom-domain": "Ich besitze einen Namen auf einer anderen Domain", + "ens-want-domain": "Ich möchte eine stateofus.eth-Domain", + "ens-welcome-hints": "ENS-Namen verwandeln diese verrückten langen Adressen in eindeutige Benutzernamen.", + "ens-welcome-point-customize": "Ein ENS Name kann ihren zufälligen 3-Wort-Namen im Chat ersetzen. Seien sie @yourname anstelle von {{name}}.", + "ens-welcome-point-customize-title": "Wählen Sie einen Chat-Namen", + "ens-welcome-point-receive": "Andere können ihnen in einem Schritt Geld per Chat senden.", + "ens-welcome-point-receive-title": "Erhalten Sie Transaktionen im Chat", + "ens-welcome-point-register": "Registrieren Sie sich ein Mal, um den Namen für immer zu behalten. Nach einem Jahr können Sie den Namen freigeben und Ihre SNT zurückerhalten.", + "ens-welcome-point-register-title": "10 SNT für die Registrierung", + "ens-welcome-point-simplify": "Sie können Geld auf Ihren einfach zu teilenden ENS-Namen anstatt auf Ihren hexadezimalen Hash (0x ...) erhalten.", + "ens-welcome-point-simplify-title": "Vereinfachen Sie Ihre ETH-Adresse", + "ens-welcome-point-verify": "In den nächsten Schritten können Sie alle Benutzernamen überprüfen und hinzufügen, die Sie besitzen.", + "ens-welcome-point-verify-title": "Haben Sie bereits einen Benutzernamen?", + "ens-your-username": "Ihr Benutzername", + "ens-your-usernames": "Ihre Benutzernamen", + "ens-your-your-name": "Ihr ENS-Name", + "enter-12-words": "Geben Sie die 12 Wörter Ihrer Seed-Phrase ein, die durch einzelne Leerzeichen getrennt sind", + "enter-a-private-key": "Geben Sie einen Schlüssel ein", + "enter-a-seed-phrase": "Geben Sie ein eine Seed-Phrase ein", + "enter-address": "Adresse eingeben", + "enter-contact-code": "ENS-Name (vitalik94) oder Chat-Key (0x04…) eingeben", + "enter-pair-code": "Geben Sie Ihren Kopplungscode ein", + "enter-pair-code-description": "Der Kopplungscode wurde Ihnen während des Keycard-Setups angezeigt", + "enter-password": "Passwort eingeben", + "enter-password-migration-prompt": "Geben Sie Ihr Passwort ein, um Kontakte, Chats und Einstellungen zusammen mit Ihren Schlüsseln zu verschieben", + "enter-pin": "Geben Sie einen 6-stelligen Passcode ein", + "enter-puk-code": "Geben Sie den PUK-Code ein", + "enter-puk-code-description": "Der 6-stellige Passcode wurde gesperrt. \n Bitte geben Sie den PUK-Code ein, um den Passcode zu entsperren.", + "enter-recipient-address-or-username": "Geben Sie die Adresse oder den Benutzernamen des Empfängers ein", + "enter-seed-phrase": "Seed-Phrase eingeben", + "enter-url": "URL eingeben", + "enter-user-pk": "Öffentlichen Schlüssel eingeben", + "enter-watch-account-address": "Scannen Sie einen QR-Code \noder \ngeben Sie die Adresse ein, die Sie sehen möchten", + "enter-word": "Wort eingeben", + "enter-your-code": "Geben Sie Ihren 6-stelligen Code ein", + "enter-your-password": "Geben Sie Ihr Passwort ein", + "error": "Fehler", + "error-unable-to-get-balance": "Abrufen des Kontostands fehlgeschlagen", + "error-unable-to-get-prices": "Währungsumrechnungsfehler. Aktualisieren Sie Ihren Bildschirm, um es erneut zu versuchen.", + "error-unable-to-get-token-balance": "Token-Guthaben kann nicht abgerufen werden", + "errors": "Fehler", + "eth": "ETH", + "ethereum-account": "Ethereum-Konto", + "ethereum-address": "Ethereum-Adresse", + "ethereum-node-started-incorrectly-description": "Der Ethereum-Knoten wurde mit einer falschen Konfiguration gestartet. Die Anwendung wird gestoppt, um diesen Zustand zu beheben. Konfigurierte Netzwerk-ID = {{network-id}} , jetzt = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Der Ethereum-Knoten wurde falsch gestartet", + "etherscan-lookup": "Schauen Sie bei Etherscan nach", + "everyone": "Jedem", + "expand-all": "Alle erweitern", + "export-account": "Konto exportieren", + "export-key": "Privaten Schlüssel exportieren", + "external-storage-denied": "Der Zugriff auf den externen Speicher wird verweigert", + "failed": "Fehlgeschlagen", + "faq": "Häufig gestellte Fragen", + "fast": "Schnell", + "favourite": "Favorit", + "favourite-description": "Ihre Lieblingswebsites werden hier angezeigt", + "favourites": "Favoriten", + "favourites-empty": "Favorisierte Adressen werden hier angezeigt", + "fee-cap": "Gebührenobergrenze", + "fee-explanation": "Maximaler Gesamtpreis für die Transaktion. Übersteigt die Blockgrundgebühr diese, wird sie in einen Folgeblock mit niedrigerer Grundgebühr eingerechnet.", + "fee-options": "Empfohlene Gebührenoptionen", + "fetch-community": "Community abrufen", + "fetch-messages": "↓ Nachrichten abrufen", + "fetch-timeline": "↓ Abrufen", + "fetching-community": "Community wird abgerufen...", + "find": "Finden", + "finish": "Fertig", + "finishing-card-setup": "Karteneinrichtung wird beendet", + "fleet": "Fleet", + "fleet-settings": "Fleet-Einstellungen", + "follow": "Folgen", + "follow-your-interests": "Gehen Sie in einen öffentlichen Chat und lernen Sie neue Leute kennen", + "free": "↓ Kostenlos", + "from": "Von", + "gas-amount-limit": "Obergrenze der Gasmenge", + "gas-limit": "Gaslimit", + "gas-price": "Gaspreis", + "gas-used": "Gas verbraucht", + "generate-a-key": "Schlüssel generieren", + "generate-a-new-account": "Konto erstellen", + "generate-a-new-key": "Neuen Schlüssel generieren", + "generate-account": "Schlüssel generieren", + "generate-an-account": "Konto erstellen", + "generate-new-key": "Schlüssel generieren", + "generating-codes-for-pairing": "> Herunterladen der Produktsoftware auf die Karte \n > Generieren von Entsperr- und Kopplungscodes", + "generating-keys": "Schlüssel werden generiert ...", + "generating-mnemonic": "Seed-Phrase generieren", + "get-a-keycard": "Holen Sie sich eine Keycard", + "get-started": "Loslegen", + "get-status-at": "Laden Sie Status unter http:\/\/status.im herunter", + "get-stickers": "Sticker hinzufügen", + "give-a-short-description": "Geben Sie eine kurze Beschreibung", + "give-a-short-description-community": "Beschreiben Sie es kurz", + "give-permissions-camera": "Erlaubnis erteilen,\num auf die Kamera zuzugreifen", + "glossary": "Glossar", + "go-to-settings": "Gehen Sie zu Einstellungen...", + "got-it": "Verstanden", + "grant-face-id-permissions": "Um die erforderliche Berechtigung für Face ID zu erteilen, gehen Sie zu Ihren Systemeinstellungen und stellen Sie sicher, dass Status > Face ID ausgewählt ist", + "group-chat": "Gruppenchat", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** wurde zum Administrator ernannt", + "group-chat-all-contacts-invited": "Alle Ihre Kontakte sind bereits in der Gruppe", + "group-chat-created": "**{{member}}** hat die Gruppe **{{name}}** erstellt", + "group-chat-decline-invitation": "Einladung ablehnen", + "group-chat-member-added": "**{{member}}** wurde eingeladen", + "group-chat-member-joined": "**{{member}}** ist der Gruppe beigetreten", + "group-chat-member-removed": "** {{member}} ** hat die Gruppe verlassen", + "group-chat-members-count": "{{selected}}\/{{max}} Mitglieder", + "group-chat-name-changed": "**{{member}}** hat den Namen der Gruppe in **{{name}}** geändert", + "group-chat-no-contacts": "Sie haben noch keine Kontakte. \nLaden Sie Ihre Freunde zum Chatten ein", + "group-info": "Gruppeninfo", + "group-invite": "Gruppeneinladung", + "group-invite-link": "Gruppeneinladungs-Link", + "group-membership-request": "Antrag auf Gruppenmitgliedschaft", + "gwei": "Gwei", + "has-permissions": "hat Zugriffsberechtigung", + "hash": "Hash", + "help": "Hilfe", + "help-capitalized": "Hilfe", + "help-center": "Hilfezentrum", + "help-improve-status": "Helfen Sie mit, Status zu verbessern", + "hide": "Ausblenden", + "hide-content-when-switching-apps": "Screenshots blockieren", + "hide-content-when-switching-apps-ios": "Vorschau ausblenden", + "history": "Transaktionsverlauf", + "history-nodes": "Verlaufsknoten", + "hold-card": "Halten Sie die Karte an der Rückseite\n Ihres Smartphones", + "home": "Startseite", + "hooks": "Hooks", + "how-it-works": "Wie es funktioniert", + "http-gateway-error": "Oh nein, Anfrage ist fehlgeschlagen", + "identifier": "Kennung", + "image": "Bild", + "image-remove-current": "Aktuelles Foto löschen", + "image-source-gallery": "Aus Galerie auswählen", + "image-source-make-photo": "mit Kamera aufnehmen", + "image-source-title": "Bild bearbeiten", + "import": "Importieren", + "import-community": "Importieren Sie eine Community", + "import-community-title": "Importieren Sie eine Community", + "in-contacts": "In Kontakten", + "include": "Enthalten", + "incoming": "Eingehend", + "incoming-transaction": "Eingehende Transaktion", + "incorrect-code": [ + "str", + "Entschuldigung, der Code war falsch, bitte geben Sie ihn erneut ein" + ], + "increase-gas": "Gas erhöhen", + "initialization": "Initialisierung", + "install": "↓ Installieren", + "intro-message1": "Willkommen bei Status!\nKlicke auf diese Nachricht, um dein Passwort festzulegen und loszulegen.", + "intro-privacy-policy-note1": "Status sammelt, teilt oder verkauft keine persönlichen Daten. Wenn Sie fortfahren, akzeptieren Sie die ", + "intro-privacy-policy-note2": "Datenschutzerklärung", + "intro-text": "Status ist Ihr Tor zum dezentralisierten Web", + "intro-text1": "Chatten Sie über ein Peer-to-Peer-Netzwerk, in dem Nachrichten nicht zensiert oder gehackt werden können", + "intro-text2": "Senden und empfangen Sie digitale Assets überall auf der Welt - kein Bankkonto erforderlich", + "intro-text3": "Entdecken Sie Spiele, Börsen und soziale Netzwerke, in denen nur Sie Ihre Daten besitzen", + "intro-title1": "Wirklich private Kommunikation", + "intro-title2": "Sichere Krypto-Wallet", + "intro-title3": "Dezentrale Apps", + "intro-wizard-text1": "Ein Schlüsselsatz steuert Ihr Konto. Ihre Schlüssel befinden sich auf Ihrem Handy, damit nur Sie sie verwenden können", + "intro-wizard-text2": "Ein Schlüssel ist für den Chat. Es kommt mit einem lesbaren Namen, der nicht geändert werden kann.", + "intro-wizard-text3": "Wenn Sie eine Keycard besitzen, bewahren Sie Ihre Schlüssel dort auf, um die Sicherheit zu erhöhen.", + "intro-wizard-text4": "Sichern und verschlüsseln Sie Ihre Schlüssel", + "intro-wizard-text6": "Status benachrichtigt Sie über neue Nachrichten. Sie können Ihre Benachrichtigungseinstellungen später in den Einstellungen bearbeiten", + "intro-wizard-title-alt4": "Erstellen Sie ein Passwort", + "intro-wizard-title-alt5": "Bestätigen Sie Ihr Passwort", + "intro-wizard-title1": "Holen Sie sich Ihre Schlüssel", + "intro-wizard-title2": "Wählen Sie einen Chat-Namen", + "intro-wizard-title3": "Schlüsselspeicher auswählen", + "intro-wizard-title4": "Erstellen Sie einen 6-stelligen Code", + "intro-wizard-title5": "Bestätigen Sie den Code", + "intro-wizard-title6": "Benachrichtigungen aktivieren", + "introduce-yourself": "Stelle dich mit einer kurzen Nachricht vor", + "invalid-address-qr-code": "Der gescannte QR-Code enthält keine gültige Adresse", + "invalid-format": "Ungültiges Format \nEs muss wie folgt aussehen: {{format}}", + "invalid-key-confirm": "Anwenden", + "invalid-key-content": "Die Datenbank kann nicht verschlüsselt werden, weil eine Datei beschädigt ist. Ihr Guthaben und Ihr Chat-Schlüssel sind sicher. Andere Daten, wie Ihre Chats und Kontakte, können nicht wiederhergestellt werden. Die Schaltfläche \"{{erase-multiaccounts-data-button-text}}\" entfernt alle anderen Daten und ermöglicht Ihnen den Zugriff auf Ihre Gelder und das Senden von Nachrichten.", + "invalid-number": "Ungültige Nummer", + "invalid-pairing-password": "Ungültiges Kopplungspasswort", + "invalid-public-chat-topic": "Ungültiges öffentliches Chat-Thema", + "invalid-range": "Ungültiges Format, es muss zwischen {{min}} und {{max}} betragen", + "invalid-username-or-key": "Ungültiger Benutzername oder Chat-Schlüssel", + "invite": "Einladen", + "invite-button": "Einladen", + "invite-chat-accept": "Akzeptieren", + "invite-chat-accept-join": "Akzeptieren und Beitreten", + "invite-chat-intro": "Sie wurden von einem Freund zur Teilnahme an Status eingeladen. Hier ist etwas Kryptowährung, um den Einstieg zu erleichtern! Verwenden Sie diese, um einen ENS-Namen zu registrieren oder ein Sticker-Paket zu kaufen.", + "invite-chat-name": "Freunde Empfehlung", + "invite-chat-pending": "Ausstehend", + "invite-chat-rule": "Die Annahme belohnt auch Ihren Freund mit einem Krypto-Empfehlungsbonus", + "invite-chat-starter-pack": "Starter Pack", + "invite-friends": "Freunde einladen", + "invite-instruction-fifth": "Du kannst deinen Empfehlungsbonus jederzeit einlösen.", + "invite-instruction-first": "Sie senden einem Freund einen eindeutigen Einladungslink zum Herunterladen und Nutzen von Status", + "invite-instruction-fourth": "Sie erhalten einen Empfehlungsbonus und Ihr Freund das Starter Pack", + "invite-instruction-second": "Ihr Freund lädt Status herunter und erstellt ein Konto (auf Android)", + "invite-instruction-third": "Ein Chat mit Ihrem Freund wird gestartet, in dem er Ihre Überweisung bestätigt", + "invite-people": "Leute einladen", + "invite-privacy-policy-public": "Sie haben Status über einen Empfehlungslink installiert. Indem Sie diesem Chat beitreten, geben Sie Ihren Referrer an und erklären sich einverstanden mit den", + "invite-privacy-policy1": "Mit der Annahme akzeptieren Sie die Empfehlungsprogramm", + "invite-privacy-policy2": "Geschäftsbedingungen.", + "invite-public-chat-home": "Einladung zur Empfehlung", + "invite-public-chat-intro": "Hier ist etwas Kryptowährung für den Anfang! Verwenden Sie es, um einen ENS-Namen zu registrieren oder ein Stickerpaket zu kaufen", + "invite-receive-account": "Konto, um Ihren Empfehlungsbonus zu erhalten", + "invite-reward": "Verdienen Sie Kryptowährung für jeden Freund, den Sie einladen!", + "invite-reward-friend": "Freund:", + "invite-reward-friend-description": "Ihr\/e Freund\/in erhält ein Starter-Paket, bestehend aus einigen {{reward}}, um anzufangen", + "invite-reward-friend-name": "Starter Pack", + "invite-reward-you": "Sie: ", + "invite-reward-you-description": "Laden Sie einen Freund ein und erhalten {{reward}} als Empfehlungsbonus. Verwenden Sie diesen, um Sticker, einen ENS-Namen zu erhalten oder DApps auszuprobieren", + "invite-reward-you-name": "Empfehlungs-Bonus", + "invite-select-account": "Wählen Sie ein Konto aus, um den Empfehlungsbonus zu erhalten", + "invite-warning": "Der Bonus ist nur für Android Benutzer gültig, welche nicht in den USA leben. Ihr Freund muss den Werbe-Link innerhalb von 7 Tagen bestätigen.", + "invited": "eingeladen", + "join": "Beitreten", + "join-a-community": "oder einer Community beitreten", + "join-group-chat": "Gruppe beitreten", + "join-group-chat-description": "{{username}} hat Sie eingeladen, der Gruppe {{group-name}} beizutreten ", + "join-me": "Hey, lass uns auf Status schreiben: {{url}}", + "join-new-private-chat": "Einen neuen privaten Chat starten", + "join-new-public-chat": "Einem öffentlichen Chat beitreten", + "joined": "Beigetreten", + "joined-group-chat-description": "Sie sind {{group-name}} durch die Einladung von {{username}} beigetreten", + "key": "Schlüssel", + "key-managment": "Schlüsselverwaltung", + "key-on-device": "Privater Schlüssel ist auf diesem Gerät gespeichert", + "keycard": "Keycard", + "keycard-access-reset": "Keycard-Zugriff ist zurückgesetzt", + "keycard-applet-install-instructions": "Befolgen Sie zum Installieren des Applets die Anweisungen unter https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Bewegen Sie die Karte, um den NFC-Leser auf Deinem Gerät zu finden", + "keycard-awaiting-title": "Immer noch auf der Suche...", + "keycard-backup": "Sicherungskarte erstellen", + "keycard-backup-success-body": "Sicherungskarte erfolgreich erstellt. Sie kann genau wie die Hauptkarte mit deinem Konto benutzt werden.", + "keycard-backup-success-title": "Sicherung erfolgreich", + "keycard-blocked": "Keycard wurde gesperrt. \nSie müssen die Karte zurücksetzen, um sie weiter verwenden zu können.", + "keycard-can-use-with-new-passcode": "Sie können diese Karte mit Ihrem neuen Zugangscode verwenden", + "keycard-cancel-setup-text": "Dadurch wird die Einrichtung der Keycard abgebrochen. Es wird dringend empfohlen, die Einrichtung abzuschließen, um die Keycard zu verwenden. Möchten Sie wirklich abbrechen?", + "keycard-cancel-setup-title": "Gefährliche Aktion", + "keycard-connected-description": "Versuchen Sie, die Karte ruhig zu halten", + "keycard-connected-title": "Verbunden", + "keycard-desc": "Besitzen Sie eine Keycard? Bewahren Sie Ihre Schlüssel darauf auf. Sie benötigen sie für Transaktionen", + "keycard-dont-ask-card": "Für die Anmeldung nicht nach einer Karte fragen", + "keycard-enter-new-passcode": "Neuen Zugangscode eingeben {{step}}\/2", + "keycard-error-description": "Schließe die Karte erneut an, um fortzufahren", + "keycard-error-title": "Verbindung unterbrochen", + "keycard-factory-reset": "Karte auf Werkseinstellungen zurücksetzen", + "keycard-factory-reset-text": "Dadurch werden alle auf der Karte gespeicherten Seed-Phrasen gelöscht. Stellen Sie sicher, dass Sie eine Sicherungskopie der Seed-Phrase haben, die Sie mit dieser Keycard verwendet haben.", + "keycard-factory-reset-title": "Sind Sie sicher, dass Sie einen Werksreset durchführen wollen?", + "keycard-free-pairing-slots": "Die Keycard verfügt über {{n}} freie Kopplungsslots", + "keycard-has-multiaccount-on-it": "Diese Karte ist voll. Jede Karte kann ein Hauptschlüsselpaar enthalten", + "keycard-init-description": "Legen Sie die Karte an die Rückseite Ihres Smartphones, um fortzufahren", + "keycard-init-title": "Suche Karten...", + "keycard-is-blocked-details": "Sie können diese Karte nicht mehr verwenden, um auf dieses Konto zuzugreifen oder es zu unterzeichnen. Es gab zu viele fehlgeschlagene Zugangscode- und PUK-Versuche.", + "keycard-is-blocked-instructions": "Um auf Ihr Konto zugreifen zu können, müssen Sie Ihre Karte auf die Werkseinstellungen zurücksetzen. Tippen Sie auf die Schaltfläche unten, um den Vorgang zu starten. Sie benötigen Ihre Seed-Phrase.", + "keycard-is-blocked-title": "Keycard ist gesperrt", + "keycard-is-frozen-details": "Um Ihr Vermögen zu schützen, wurde Ihre Karte eingefroren. Setzen Sie den Kartenzugriff zurück, um die Schlüssel wieder freizuschalten und Transaktionen zu senden. Das können Sie mit Ihrem PUK oder Ihrer Seed-Phrase.", + "keycard-is-frozen-factory-reset": "Zurücksetzen mit Mnemonik", + "keycard-is-frozen-reset": "Zurücksetzen mit PUK", + "keycard-is-frozen-title": "Keycard ist eingefroren", + "keycard-onboarding-finishing-header": "Der letzte Feinschliff...", + "keycard-onboarding-intro-header": "Speichern Sie Ihre Schlüssel auf der Keycard", + "keycard-onboarding-intro-text": "Machen Sie sich bereit, dies kann einige Minuten dauern, aber es ist wichtig, um Ihr Konto zu sichern", + "keycard-onboarding-mnemonic-text": "Sie benötigen auch ein Blatt Papier und einen Bleistift, um Ihre Seed-Phrase aufzuschreiben.", + "keycard-onboarding-pairing-header": "Karte koppeln...", + "keycard-onboarding-pin-text": "Sie müssen einen 6-stelligen Passcode erstellen, der verwendet wird, um den Zugriff auf Ihre Keycard zu schützen.", + "keycard-onboarding-preparing-header": "Karte vorbereiten...", + "keycard-onboarding-puk-code-header": "Schreiben Sie die Codes auf\nund bewahren Sie sie sicher auf", + "keycard-onboarding-recovery-phrase-description": "Sie benötigen diese Seed-Phrase, um Ihren Schlüssel zurückzubekommen. Schreiben Sie sie auf. Bewahren Sie sie sicher, offline und getrennt von diesem Gerät auf.", + "keycard-onboarding-recovery-phrase-header": "Sichern der Seed-Phrase", + "keycard-onboarding-recovery-phrase-text": "Nur für Ihre Augen! Dies ist die magische Seed-Phrase, mit der Sie Ihren Schlüssel generieren.", + "keycard-onboarding-start-header": "Halten Sie die Karte an die\nRückseite des Smartphones,\num zu beginnen", + "keycard-onboarding-start-step1": "Erstellen Sie einen Passcode", + "keycard-onboarding-start-step1-text": "Dauert nur eine Minute. Erstellen Sie einen 6-stelligen Passcode, um Ihre Schlüssel zu verschlüsseln", + "keycard-onboarding-start-step2": "Schreiben Sie die PUK und den Kopplungscode", + "keycard-onboarding-start-step2-text": "Das dauert etwa eine Minute. Sie werden dafür ein Stück Papier und einen Stift brauchen", + "keycard-onboarding-start-step3": "Seed-Phrase sichern", + "keycard-onboarding-start-step3-text": "Das dauert etwa eine Minute. Sie brauchen noch ein Stück Papier und einen Stift", + "keycard-onboarding-start-text": "Halten Sie die Karte die ganze Zeit am Smartphone\n während der Initialisierung. Das wird etwa vier Minuten dauern", + "keycard-processing-description": "Versuchen Sie, die Karte ruhig zu halten", + "keycard-processing-title": "Verarbeitung...", + "keycard-recover": "Karte verloren oder gesperrt?", + "keycard-recover-text": "Wenn Sie Ihre Seed-Phrase haben, können Sie eine neue Keycard erstellen, die mit diesem Konto verbunden ist. Sie können entweder eine neue Keycard verwenden oder eine eingefrorene Keycard auf die Werkseinstellungen zurücksetzen.", + "keycard-recover-title": "Eine neue Karte für dieses Konto erstellen?", + "keycard-recovery-intro-button-text": "Wiederherstellung beginnen", + "keycard-recovery-intro-header": "Auf Keycard gespeicherte Schlüssel wiederherstellen", + "keycard-recovery-intro-text": "Wenn Sie zuvor Schlüssel auf einer Keycard generiert haben und diese Schlüssel jetzt auf diesem Gerät verwenden möchten", + "keycard-recovery-no-key-header": "Es gibt nichts zum\nWiederherstellen", + "keycard-recovery-no-key-text": "Auf Ihrer Keycard ist kein Schlüssel gespeichert. Um sie zu verwenden, generieren Sie einen neuen Schlüssel und wählen Sie Ihre Keycard aus, um den Schlüssel zu speichern", + "keycard-recovery-phrase-confirm-header": "Bestätigen Sie die Seed-Phrase", + "keycard-recovery-phrase-confirmation-text": "Sie werden keine zweite Chance haben! Wenn Sie den Zugang verlieren, z.B. durch den Verlust Ihrer Schlüsselkarte, können Sie nur noch mit Ihrer Seed-Phrase auf Ihre Schlüssel zugreifen. Niemand außer Ihnen hat Ihre Seed-Phrase. Schreiben Sie sie auf und bewahren Sie sie sicher auf.", + "keycard-recovery-phrase-confirmation-title": "Haben Sie die Seed-Phrase aufgeschrieben?", + "keycard-recovery-success-header": "Ihre Schlüssel wurden\nerfolgreich wiederhergestellt", + "keycard-redeem-title": "Einlösen auf", + "keycard-redeem-tx": "Assets einlösen", + "keycard-redeem-tx-desc": "Halten Sie die Karte ans mobile Endgerät, um zu signieren und Assets zu erhalten", + "keycard-reset-passcode": "Zugangscode zurücksetzen", + "keycard-success-description": "Du kannst die Karte jetzt entfernen", + "keycard-success-title": "Erfolg", + "keycard-unauthorized-operation": "Sie sind nicht berechtigt, diesen Vorgang auszuführen. \n Bitte benutzen Sie eine gültige Karte und versuchen Sie es erneut.", + "keycard-upsell-subtitle": "Ihre tragbare, einfach zu bedienende Hardware-Geldbörse", + "language": "Sprache", + "last-backup-performed": "Letzte durchgeführte Sicherung:", + "last-transaction": "Letzte Transaktion", + "learn-more": "Mehr erfahren", + "learn-more-about-keycard": "Erfahren Sie mehr über Keycards", + "leave": "Verlassen", + "leave-chat": "Chat verlassen", + "leave-chat-confirmation": "Der Chatverlauf wird von Ihrem Gerät entfernt. Nach dem erneuten Beitritt können Sie Ihren Verlauf nicht mehr wiederherstellen.", + "leave-community": "Gemeinschaft verlassen", + "leave-confirmation": "Verlasse {{chat-name}}", + "leave-group": "Gruppe verlassen", + "left": "verlassen", + "les-ulc": "LES\/ULC", + "lets-go": "Los geht's", + "light": "Hell", + "limit": "Limit", + "linked-on": "Verknüpft am {{date}}", + "load-messages-before": "Vor dem {{date}}", + "load-more-messages": "↓ Weitere Nachrichten abrufen", + "load-more-timeline": "↓ Mehr laden", + "loading": "Laden…", + "local-notifications": "Lokale Benachrichtigungen", + "lock-app-with": "App sperren mit", + "log-level": "Log Einstellungen", + "log-level-settings": "Einstellungen der Protokollebene", + "logging": "Protokollierung", + "logging-enabled": "Protokollierung aktiviert?", + "login-pin-description": "Geben Sie Ihren 6-stelligen Passcode ein, um Ihre Schlüssel zu entsperren", + "logout": "Ausloggen", + "logout-app-content": "Das Konto wird abgemeldet. Wenn Sie es erneut entsperren, wird das ausgewählte Netzwerk verwendet.", + "logout-are-you-sure": "Möchten sie sich wirklich ausloggen?", + "logout-key-management": "Um auf die Schlüsselverwaltung zugreifen zu können, müssen Sie sich abmelden.", + "logout-title": "Ausloggen?", + "looking-for-cards": "Such Karten...", + "lost-connection": "Verbindung verloren", + "low-tip": "Trinkgeld ist zu niedrig", + "lower-than-average-tip": "unterdurchschnittliches Trinkgeld", + "mail-should-be-configured": "Mail-Client sollte konfiguriert werden", + "mailserver-address": "Mailserver-Adresse", + "mailserver-automatic": "Automatische Auswahl", + "mailserver-automatic-switch-explanation": "Wählen Sie den schnellsten verfügbaren Verlaufsknoten", + "mailserver-connection-error": "Verbindung zum Mailserver konnte nicht hergestellt werden", + "mailserver-content": "Ein Knoten im Statusnetzwerk, der Nachrichten für bis zu 30 Tage weiterleitet und speichert.", + "mailserver-details": "Mailserver-Details", + "mailserver-error-content": "Der von Ihnen ausgewählte Mailserver konnte nicht erreicht werden.", + "mailserver-error-title": "Fehler beim Herstellen einer Verbindung zum Mailserver", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Wählen Sie einen anderen Mailserver", + "mailserver-reconnect": "Verbindung zum Mailserver konnte nicht hergestellt werden. Tippen Sie, um die Verbindung wiederherzustellen", + "mailserver-request-error-content": "Der folgende Fehler wurde vom Mailserver zurückgegeben: {{error}}", + "mailserver-request-error-status": "Beim Abrufen des Verlaufs ist ein Fehler aufgetreten. Überprüfen Sie die Protokolle auf Details.", + "mailserver-request-error-title": "Fehler bei Mailserver-Anfrage", + "mailserver-request-retry": "Anfrage wiederholen", + "mailserver-retry": "Wiederholen", + "mailserver-title": "Mail-Server", + "main-currency": "Standardwährung", + "main-networks": "Hauptnetzwerke", + "main-wallet": "Haupt-Wallet", + "mainnet-network": "Hauptnetzwerk", + "make-admin": "Zum Admin ernennen", + "manage-keys-and-storage": "Verwalten von Schlüsseln und Speichern", + "mark-all-read": "Alles als gelesen markieren", + "master-account": "Master-Konto", + "max-fee": "Maximale Gebühr", + "max-priority-fee": "Maximale Prioritätsgebühr", + "maximum-fee": "Maximale Gebühr", + "maximum-fee-desc": "Maximaler Gesamtpreis für die Transaktion. Wenn die aktuelle Blockgrundgebühr diese übersteigt, wird Ihre Transaktion in einen nachfolgenden Block mit einer niedrigeren Grundgebühr aufgenommen.", + "maybe-later": "Vielleicht später", + "member-ban": "Mitglied sperren", + "member-kick": "Mitglied rauswerfen", + "members": { + "one": "1 Mitglied", + "other": "{{count}} Mitglieder" + }, + "members-active": { + "one": "1 Mitglied", + "other": "{{count}} Mitglieder" + }, + "members-active-none": "keine Mitglieder", + "members-count": "{{count}} Mitglieder", + "members-label": "Mitglieder", + "members-limit-reached": "Maximale Anzahl an Teilnehmern erreicht", + "members-title": "Mitglieder", + "membership-approval": "Genehmigung erforderlich", + "membership-approval-description": "Der Beitritt zu Ihrer Community ist frei, aber neue Mitglieder müssen zunächst vom Ersteller der Community genehmigt werden", + "membership-button": "Voraussetzung für die Mitgliedschaft", + "membership-declined": "Die Gruppenanfrage wurde abgelehnt", + "membership-description": "Die Einstellungen der Gruppe erfordern, dass ein Admin dich freischaltet", + "membership-ens": "ENS-Benutzername erforderlich", + "membership-ens-description": "Ihre Community benötigt einen ENS-Benutzernamen, um beitreten zu können", + "membership-free": "Keine Bedingung", + "membership-free-description": "Deiner Community kann jeder beitreten", + "membership-invite": "Einladung von einem anderen Mitglied anfordern", + "membership-invite-description": "Ihrer Community kann man nur durch eine Einladung von bestehenden Communitymitgliedern beitreten", + "membership-none": "Keine", + "membership-none-placeholder": "Sie können von neuen Mitgliedern verlangen, dass sie bestimmte Kriterien erfüllen, bevor sie beitreten können. Dies kann jederzeit geändert werden", + "membership-request-pending": "Antrag auf Mitgliedschaft steht noch aus", + "membership-requests": "Anfragen zur Mitgliedschaft", + "membership-title": "Voraussetzung für die Mitgliedschaft", + "message": "Nachricht", + "message-not-sent": "Nachricht nicht gesendet", + "message-options-cancel": "Abbrechen", + "message-reply": "Antworten", + "messages": "Nachrichten", + "messages-from-contacts-only-subtitle": "Nur Personen, die Sie als Kontakte hinzugefügt haben, können einen neuen Chat mit Ihnen beginnen oder Sie zu einer Gruppe einladen", + "might-break": "Könnte einige ÐApps zum Absturz bringen", + "migration-successful": "Migration erfolgreich", + "migration-successful-text": "Konto erfolgreich auf Schlüsselkarte migriert", + "migrations-failed-content": "{{message}}\nSchemaversion: Anfängliche {{initial-version}}, Aktuelle {{current-version}}, Letzte {{last-version}}\n\nEin Datenbankfehler ist aufgetreten. Ihr Guthaben und Ihr Chat-Schlüssel sind sicher. Andere Daten, wie Ihre Chats und Kontakte, können nicht wiederhergestellt werden. Die Schaltfläche \"{{erase-multiaccounts-data-button-text}}\" entfernt alle anderen Daten und ermöglicht Ihnen den Zugriff auf Ihr Guthaben und das Senden von Nachrichten.", + "miners-higher-fee": "Miner werden Ihre Transaktion wahrscheinlich früher bearbeiten, wenn Sie eine höhere Gebühr zahlen.", + "minimum-received": "Minimum erhalten", + "mobile-network-ask-me": "Mich fragen, wenn Mobilfunknetz aktiviert ist", + "mobile-network-continue-syncing": "Synchronisierung fortsetzen", + "mobile-network-continue-syncing-details": "Sie können das später in den Einstellungen ändern", + "mobile-network-go-to-settings": "Zu den Einstellungen", + "mobile-network-settings": "Mobile Daten", + "mobile-network-sheet-configure": "Sie können die Synchronisierung in den Einstellungen detaillierter konfigurieren", + "mobile-network-sheet-offline": "Kein WLAN, Nachrichtensynchronisierung deaktiviert.", + "mobile-network-sheet-offline-details": "Synchronisierung über Mobilfunk ist deaktiviert", + "mobile-network-sheet-remember-choice": "Auswahl speichern", + "mobile-network-sheet-settings": "Einstellungen", + "mobile-network-start-syncing": "Synchronisierung starten", + "mobile-network-stop-syncing": "Synchronisierung anhalten", + "mobile-network-stop-syncing-details": "Bis eine WLAN-Verbindung besteht?", + "mobile-network-use-mobile": "Mobile Daten nutzen", + "mobile-network-use-mobile-data": "Status hat einen hohen Datenverbrauch beim Synchronisieren von Chats.", + "mobile-network-use-wifi": "Nur Wi-Fi\/WLAN", + "mobile-syncing-sheet-details": "Status verwendet beim Synchronisieren von Chats und Wallet viel Datenvolumen", + "mobile-syncing-sheet-title": "Mobile Datenverbindung zum Synchronisieren nutzen?", + "more": "mehr", + "move-and-reset": "Verschieben und Zurücksetzen", + "move-keystore-file": "Keystore-Datei verschieben", + "move-keystore-file-to-keycard": "Keystore-Datei auf die Keycard verschieben?", + "multiaccount-exists-content": "Schlüssel für dieses Konto sind bereits vorhanden und können nicht erneut hinzugefügt werden. Wenn Sie Ihr Passwort, Ihren Passcode oder Ihre Schlüsselkarte verloren haben, deinstallieren Sie die App, installieren Sie sie neu und greifen Sie auf Ihre Schlüssel zu, indem Sie Ihre Seed-Phrase eingeben", + "multiaccount-exists-title": "Schlüssel für dieses Konto sind bereits vorhanden", + "multiaccounts-recover-enter-phrase-text": "Geben Sie 12, 15, 18, 21 oder 24 Wörter ein. \nTrennen Sie die Wörter durch ein Leerzeichen.", + "multiaccounts-recover-enter-phrase-title": "Geben Sie Ihre Seed-Phrase ein", + "mute": "Stumm", + "my-accounts": "Meine Konten", + "my-accounts-empty": "Ihre verfügbaren Konten werden hier angezeigt", + "my-profile": "Mein Profil", + "my-status": "Mein Status", + "name": "Name", + "name-of-token": "Der Name Ihres Tokens", + "name-optional": "Name (optional)", + "name-your-channel": "Benennen Sie Ihren Kanal", + "name-your-channel-placeholder": "Kanalname", + "name-your-community": "Benennen Sie Ihre Community", + "name-your-community-placeholder": "Ein einprägsamer Name", + "need-help": "Benötigen Sie Hilfe?", + "network": "Netzwerk", + "network-chain": "Netzwerkkette", + "network-details": "Netzwerkdetails", + "network-fee": "Netzwerkgebühr", + "network-id": "Netzwerk-ID", + "network-info": "Netzwerk-Information", + "network-invalid-network-id": "Die angegebene Netzwerk-ID entspricht nicht der Netzwerk-ID der RPC-URL", + "network-invalid-status-code": "Ungültiger Statuscode: {{code}}", + "network-invalid-url": "Netzwerk-URL ist ungültig", + "network-settings": "Netzwerkeinstellungen", + "never": "Niemals", + "new": "Neu", + "new-category": "Neue Kategorie", + "new-chat": "Neuer Chat", + "new-community-title": "Neue Community", + "new-contact": "Neuer Kontakt", + "new-contract": "Neuer Contract", + "new-favourite": "Neuer Favorit", + "new-group": "Neue Gruppe", + "new-group-chat": "Neuer Gruppenchat", + "new-network": "Neues Netzwerk", + "new-password": "Neues Passwort", + "new-pin-description": "Geben Sie einen neuen 6-stelligen Passcode ein", + "new-public-group-chat": "Öffentlichem Chat beitreten", + "new-puk-description": "Neuen 12-stelligen PUK eingeben", + "new-status": "Neuer Status", + "new-tab": "Neue Registerkarte", + "next": "Weiter", + "nickname": "Alias", + "nickname-description": "Aliasse helfen dir, andere einfach zu identifizieren. Nur du kannst von dir erstellte Aliasse sehen.", + "no": "Nein", + "no-collectibles": "Keine Sammlerstücke verfügbar", + "no-contacts": "Noch keine Kontakte", + "no-keycard-applet-on-card": "Kein Keycard-Applet auf der Karte", + "no-messages": "Keine Nachrichten", + "no-pairing-slots-available": "Diese Karte ist bereits mit fünf Geräten gekoppelt und kann nicht mit diesem verknüpft werden. Bitte verwenden Sie eines der gekoppelten Geräte, melden Sie sich mit dieser Karte an und geben Sie eine Kopplung auf der Karte frei", + "no-pinned-messages": "Keine angehefteten Nachrichten", + "no-result": "Keine Ergebnisse", + "no-thanks": "Nein Danke", + "no-tokens-found": "Keine Token gefunden", + "node-address": "Adresse des Knotens", + "node-details": "Details zum Knotenpunkt", + "node-info": "Knoteninformation", + "node-version": "Node-Version", + "nodes-disabled": "Knoten von Status sind deaktiviert", + "non-archival-node": "Der RPC-Endpunkt unterstützt keine Archivierungsanfragen. Ihre lokale Übertragungshistorie ist möglicherweise unvollständig.", + "non-contacts": "Nicht in meinen Kontakten", + "nonce": "Nonce", + "none": "Keine", + "normal": "Normal", + "not-applicable": "Nicht anwendbar für unsignierte Transaktionen", + "not-connected-nodes": "Mit keinem Knoten von Status verbunden", + "not-connected-to-peers": "Keine Verbindung zu einer Gegenstelle", + "not-enough-snt": "Nicht genug SNT", + "not-found": "Nicht gefunden", + "not-keycard-text": "Die von Ihnen verwendete Karte ist keine Keycard. Sie müssen eine Keycard kaufen, um sie verwenden zu können", + "not-keycard-title": "Keine Keycard", + "not-registered": "nicht registriert", + "notification-settings": "Benachrichtigungen", + "notifications": "Benachrichtigungen", + "notifications-non-contacts": "Benachrichtigungen von Nicht-Kontakten", + "notifications-preferences": "Benachrichtigungseinstellungen", + "notifications-servers": "Benachrichtigungsserver", + "notifications-switch": "Benachrichtungen anzeigen", + "notifications-transactions": "Wallet-Transaktionen", + "notify": "Benachrichtigen", + "now": "Jetzt", + "off": "Aus", + "off-status-tree": "Nicht mit Status verbunden", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Aktivieren Sie Verlaufsknoten, um Nachrichten abzurufen, die gesendet wurden, während die Anwendung geschlossen war. Wenn aktiviert, erhält ein Verlaufsknoten Ihre IP-Adresse. Wenn deaktiviert, erhalten Sie keine Nachrichten, wenn die Anwendung geschlossen wird, und sehen sie auch nicht, wenn Sie die Anwendung später öffnen.", + "offline-messaging-use-history-nodes": "Verlaufsknoten verwenden", + "ok": "OK", + "ok-continue": "Okay, weiter", + "ok-got-it": "Okay, verstanden", + "ok-save-pass": "OK, Passwort speichern", + "okay": "Okay", + "on": "Ein", + "on-status-tree": "Mit Status verbunden", + "once-enabled-share-metadata": "Sobald diese Funktion aktiviert ist, können im Chat gepostete Links Ihre Metadaten mit der Website teilen", + "one-day": "Ein Tag", + "one-month": "Ein Monat", + "one-week": "Eine Woche", + "open": "Öffnen", + "open-chat": "Chat öffnen", + "open-dapp": "ÐApp öffnen", + "open-dapp-store": "ÐApps erkunden", + "open-home": "Öffnen…", + "open-in-new-tab": "In neuer Registerkarte öffnen", + "open-membership": "Offene Mitgliedschaft", + "open-nfc-settings": "NFC-Einstellungen öffnen", + "opening-buy-crypto": "{{site}} wird geöffnet...", + "optimal": "Optimal", + "optional": "optional", + "or": "ODER", + "outgoing": "Ausgehend", + "outgoing-transaction": "Ausgehende Transaktion", + "page-camera-request-blocked": "Kameraanfragen sind blockiert. Um Kameraanfragen zu aktivieren, gehen Sie zu den Einstellungen", + "page-would-like-to-use-camera": "möchte Ihre Kamera benutzen", + "pair": "Geräte koppeln", + "pair-card": "Mit diesem Gerät koppeln", + "pair-code": "Kopplungscode", + "pair-code-explanation": "Paart die Karte mit einem anderen Gerät (bis zu 5), um Schlüssel freizuschalten und Transaktionen mit derselben Schlüsselkarte zu signieren", + "pair-code-placeholder": "Kopplungscode", + "pair-this-card": "Diese Karte koppeln", + "pair-this-device": "Gerät synchronisieren", + "pair-this-device-description": "Koppeln Sie Ihre Geräte, um Kontakte und Chats zwischen ihnen zu synchronisieren", + "paired-devices": "Gekoppelte Geräte", + "pairing": "Kopplung", + "pairing-card": "Karte verknüpfen", + "pairing-changed": "Der Pairing-Code wurde geändert", + "pairing-code-placeholder": "Pairing-Code ...", + "pairing-code_error1": "Pairing-Codes stimmen nicht überein.", + "pairing-go-to-installation": "Gehen Sie zu den Kopplungseinstellungen", + "pairing-maximum-number-reached-content": "Bitte deaktivieren Sie eines Ihrer Geräte, bevor Sie ein neues aktivieren.", + "pairing-maximum-number-reached-title": "Maximale Anzahl der Geräte erreicht", + "pairing-new-installation-detected-content": "Ein neues Gerät wurde erkannt. \nUm Ihre Geräte richtig zu verwenden, ist es wichtig, sie vor der Verwendung zu koppeln und zu aktivieren. \nBitte gehen Sie zu Einstellungen > Geräte, um Ihre Geräte zu koppeln.", + "pairing-new-installation-detected-title": "Neues Gerät erkannt", + "pairing-no-info": "Keine Informationen", + "pairing-please-set-a-name": "Bitte geben Sie einen Namen für Ihr Gerät ein.", + "passphrase": "Passphrase", + "password": "Passwort", + "password-description": "Mindestens sechs Zeichen. Ihr Passwort schützt Ihre Schlüssel. Sie benötigen es, um Status zu entsperren und Transaktionen durchzuführen.", + "password-mismatch": "Neues Passwort und Bestätigung stimmen nicht überein", + "password-placeholder": "Passwort...", + "password-placeholder2": "Bestätigen Sie Ihr Passwort", + "password-reset-in-progress": "Ändere Passwort...", + "password-reset-success": "Passwort geändert", + "password-reset-success-message": "Sie müssen sich erneut anmelden", + "password_error1": "Passwörter stimmen nicht überein.", + "paste": "Einfügen", + "paste-json": "JSON einfügen", + "pay-to-chat": "Zahlen Sie, um zu chatten", + "peer-content": "Ein Gerät, das mit dem Status-Chat-Netzwerk verbunden ist. Jeder Benutzer kann je nach Anzahl der Geräte einen oder mehrere Peers darstellen.", + "peer-title": "Peer", + "peer-to-peer": "Peer-to-Peer", + "peers": "Peers", + "pending": "Ausstehend", + "pending-confirmation": "Ausstehende Bestätigung...", + "pending-invitations": "Ausstehende Gruppenanfragen", + "per-gas-price-limit": "Preislimit pro Gas", + "per-gas-tip-limit": "Trinkgeldlimit pro Gas", + "perform-backup": "Backup durchführen", + "permissions": "Berechtigungen", + "phone-e164": "International 1", + "photos": "Fotos", + "photos-access-error": "Um den benötigten Zugriff auf Fotos zu erlauben, gehen Sie bitte in die Systemeinstellungen und stellen Sie sicher, dass Status > Fotos ausgewählt ist", + "pin": "Anheften", + "pin-changed": "6-stelliges Passwort wurde aktualisiert", + "pin-code": "6-stelliger Passcode", + "pin-limit-reached": "Limit der angehefteten Nachrichten erreicht. Lösen Sie zuerst eine vorherige Nachricht.", + "pin-mismatch": "Falscher Passcode", + "pin-one-attempt": " einen Versuch ", + "pin-one-attempt-blocked-after": "bevor Ihre Keycard gesperrt wird", + "pin-one-attempt-blocked-before": "Achtung, Sie haben nur", + "pin-one-attempt-frozen-after": "bevor Ihre Keycard eingefroren wird", + "pin-one-attempt-frozen-before": "Achtung, Sie haben nur", + "pin-retries-left": "{{number}} Versuche übrig", + "pinned-by": "Angeheftet von", + "pinned-messages": "Angeheftete Nachrichten", + "pinned-messages-count": { + "one": "1 angeheftete Nachricht", + "other": "{{count}} angeheftete Nachrichten" + }, + "pinned-messages-empty": "Angeheftete Nachrichten werden hier angezeigt. Um eine Nachricht anzuheften, halten Sie sie gedrückt und tippen Sie auf „Anheften“.", + "powered-by-paraswap": "Unterstützt von Paraswap", + "preference": "Präferenz", + "preview-privacy": "Vorschau des Datenschutzmodus", + "previewing-may-share-metadata": "Wenn Sie Links von diesen Websites in der Vorschau anzeigen, werden Ihre Metadaten möglicherweise an die Eigentümer dieser Websites weitergegeben", + "price-impact": "Auswirkungen auf den Preis", + "price-impact-desc": "Geschätzte Preisauswirkungen für diese Transaktion. Wenn die aktuelle Blockgrundgebühr diese übersteigt, wird Ihre Transaktion in einen nachfolgenden Block mit einer niedrigeren Grundgebühr aufgenommen.", + "principles": "Grundsätze", + "priority": "Priorität", + "privacy": "Datenschutz", + "privacy-and-security": "Datenschutz und Sicherheit", + "privacy-photos": "Profilfoto Datenschutz", + "privacy-policy": "Datenschutzbestimmungen", + "privacy-show-to-warning": "Personen, die Ihr Profilbild bereits gesehen haben, werden dies auch weiterhin tun", + "private-key": "Privater Schlüssel", + "private-notifications": "Private Benachrichtigungen", + "private-notifications-descr": "Status informiert Sie über neue Nachrichten. Sie können Ihre Benachrichtigungseinstellungen später in den Einstellungen bearbeiten.", + "processing": "Einen Augenblick", + "product-information": "Produktinformation", + "profile": "Profil", + "profile-deleted-content": "Ihr Profil wurde erfolgreich gelöscht", + "profile-deleted-keycard": "Sie können nun ein anderes Schlüsselpaar auf Ihrer Keycard wiederherstellen", + "profile-deleted-title": "Profil gelöscht", + "profile-details": "Profildetails", + "profile-not-found": "Profil nicht gefunden", + "profile-pic-pick": "Aus Galerie auswählen", + "profile-pic-remove": "Foto entfernen", + "profile-pic-take": "Foto aufnehmen", + "profile-picture-updated": "Profilbild aktualisiert", + "public-channel": "Öffentlicher Kanal", + "public-chat": "Öffentlicher Chat", + "public-chat-description": "Nehmen Sie an öffentlichen Chats für Ihre Interessen teil! Jeder kann einen neuen Chat starten.", + "public-chats": "Öffentliche Chats", + "public-group-status": "Öffentlich", + "public-group-topic": "Thema", + "public-key": "Öffentlicher Schlüssel", + "puk-and-pairing-codes-displayed": "PUK- und Kopplungscodes werden angezeigt", + "puk-changed": "12-stelliger PUK wurde geändert", + "puk-code": "PUK-Code", + "puk-code-explanation": "Wenn Sie Ihr 6-stelliges Passwort vergessen oder dreimal falsch eingegeben haben, benötigen Sie diesen Code, um Ihre Karte zu entsperren.", + "puk-mismatch": "Falscher PUK-Code", + "push-failed-transaction": "Ihre Transaktion ist fehlgeschlagen", + "push-failed-transaction-body": "{{value}} {{currency}} an {{to}}", + "push-inbound-transaction": "Sie haben {{value}} {{currency}} erhalten", + "push-inbound-transaction-body": "Von {{from}} zu {{to}}", + "push-notifications-server-enabled": "Server aktiviert", + "push-notifications-servers": "Push-Benachrichtigungsserver", + "push-outbound-transaction": "Sie haben {{value}} {{currency}} gesendet", + "push-outbound-transaction-body": "Von {{from}} zu {{to}}", + "quiet-days": "{{quiet-days}} Tage", + "quiet-hours": "{{quiet-hours}} Stunden", + "re-encrypt-key": "Verschlüsseln Sie Ihre Schlüssel erneut", + "rearrange-categories": "Kategorien neu anordnen", + "receive": "Empfangen", + "receive-transaction": "Transaktion empfangen", + "recent": "Kürzlich", + "recent-empty": "Kürzlich verwendete Adressen werden hier angezeigt", + "recent-recipients": "Kontakte", + "recently-used-stickers": "Kürzlich verwendete Sticker werden hier angezeigt", + "recipient": "Empfänger", + "recipient-code": "Empfängeradresse eingeben", + "recipient-code-placeholder": "0x ... oder username.domain.eth", + "recover": "Wiederherstellen", + "recover-key": "Greifen Sie auf vorhandene Schlüssel zu", + "recover-keycard-multiaccount-not-supported": "Schlüssel für dieses Konto sind bereits vorhanden und können nicht erneut hinzugefügt werden. Wenn Sie Ihr Passwort, Ihren Passcode oder Ihre Schlüsselkarte verloren haben, deinstallieren Sie die App, installieren Sie sie neu und greifen Sie auf Ihre Schlüssel zu, indem Sie Ihre Seed-Phrase eingeben", + "recover-with-keycard": "Mit Keycard wiederherstellen", + "recover-with-seed-phrase": "Wiederherstellen mit Seed-Phrase", + "recovering-key": "Zugriff auf Schlüssel...", + "recovery-confirm-phrase": "Bestätigen Sie die Seed-Phrase", + "recovery-phrase": "Seed-Phrase", + "recovery-success-text": "Sie müssen einen neuen Code oder ein neues Passwort erstellen, um Ihren Schlüssel erneut zu verschlüsseln.", + "recovery-typo-dialog-description": "Bitte beachten Sie, dass Ihre Seed-Phrase genau dieselben Wörter und dieselbe Reihenfolge verwenden muss, wie Sie sie erhalten haben.", + "recovery-typo-dialog-title": "Ist die Seed-Phrase korrekt?", + "redeem-amount": "Menge der verfügbaren Boni: {{quantity}}", + "redeem-now": "Jetzt einlösen", + "redeem-success": "Bonus erfolgreich eingelöst!", + "reduced-tip": "Prioritätstrinkgeld wird reduziert", + "refresh": "Aktualisieren", + "registered": "registriert", + "reject-and-delete": "Ablehnen und löschen", + "remember-me": "Eingeloggt bleiben", + "remind-me-later": "Nochmal anzeigen", + "remove": "Entfernen", + "remove-favourite": "Favorit entfernen", + "remove-from-chat": "Aus dem Chat entfernen", + "remove-from-contacts": "Aus Kontakten entfernen", + "remove-from-contacts-text": "Wenn Sie einen Benutzer aus Ihrer Kontaktliste entfernen, verbergen Sie Ihre Wallet-Adresse nicht vor ihm", + "remove-group": "Gruppe entfernen", + "remove-network": "Netzwerk entfernen", + "remove-token": "Token entfernen", + "removed": "entfernt", + "repeat-pin": "Wiederholen Sie den neuen 6-stelligen Passcode", + "repeat-puk": "Wiederholen Sie den neuen 12-stelligen PUK", + "replying-to": "Antwort an {{author}}", + "report-bug-email-template": "1. Problembeschreibung \n{{description}}\n\n 2. Schritte zum Reproduzieren des Problems\n {{steps}}\n \n 3. Fügen Sie bitte Screenshots bei, die das Problem darstellen", + "request-access": "Zugang anfordern", + "request-feature": "Eine Funktion anfordern", + "request-membership": "Mitgliedschaft beantragen", + "request-pending": "Gruppenanfrage wird bearbeitet...", + "request-transaction": "Transaktion anfordern", + "required-field": "Pflichtfeld", + "resend-message": "Erneut senden", + "reset-card": "Karte zurücksetzen", + "reset-card-description": "Diese Operation setzt die Karte in den Ausgangszustand zurück. Dabei werden alle Kartendaten einschließlich der privaten Schlüssel gelöscht. Die Operation ist nicht umkehrbar.", + "reset-database": "Datenbank zurücksetzen", + "reset-database-warning": "Chats, Kontakte und Einstellungen löschen. Erforderlich, wenn Sie Ihr Passwort verloren haben", + "reset-database-warning-keycard": "Chats, Kontakte und Einstellungen löschen.", + "reset-password": "Passwort zurücksetzen", + "restore-defaults": "Standardeinstellungen wiederherstellen", + "retry": "Wiederholen", + "revoke-access": "Zugangsberechtigung widerrufen", + "rpc-url": "RPC-URL", + "rpc-usage-copy": "Kopieren", + "rpc-usage-filter": "Filtermethoden", + "rpc-usage-get-stats": "Aktualisieren", + "rpc-usage-info": "RPC-Nutzungsstatistiken", + "rpc-usage-reset": "Zurücksetzen", + "safe-estimate": "Sichere Schätzung", + "save": "Speichern", + "save-password": "Passwort speichern", + "save-password-unavailable": "Legen Sie den Gerätepasscode fest, um das Passwort zu speichern", + "save-password-unavailable-android": "Speichern des Passworts nicht verfügbar: Ihr Gerät ist möglicherweise gerootet oder verfügt nicht über die erforderlichen Sicherheitsfunktionen.", + "scan-qr": "QR-Code scannen", + "scan-qr-code": "Scannen Sie einen QR-Code mit einer Wallet Adresse", + "scan-tokens": "Tokens scannen", + "search": "Suche", + "search-no-chat-found": "Keine Suchergebnisse. Meinen Sie vielleicht", + "secret-keys-confirmation-text": "Sie benötigen sie, um Ihre Keycard weiterhin verwenden zu können, falls Sie Ihr Smartphone verlieren sollten.", + "secret-keys-confirmation-title": "Codes aufgeschrieben?", + "security": "Sicherheit", + "see-details": "Siehe Details", + "see-it-again": "SEHEN SIE ES SICH WIEDER AN", + "see-suggestions": "Siehe Vorschläge", + "seed-key-uid-mismatch": "Seed-Phrase stimmt nicht überein", + "seed-key-uid-mismatch-desc-1": "Die eingegebene Seed-Phrase stimmt nicht mit {{multiaccount-name}} überein", + "seed-key-uid-mismatch-desc-2": "Um Schlüssel für dieses Konto zu verwalten, überprüfen Sie Ihre Seed-Phrase und versuchen Sie es erneut.", + "seed-phrase-content": "Eine Reihe von benutzerfreundlichen Wörtern, die zufällig aus der BIP39-Standardliste ausgewählt und zum Wiederherstellen oder Zugreifen auf Ihr Ethereum-Konto auf anderen Wallets und Geräten verwendet werden. Wird im gesamten Krypto-Ökosystem auch als \"Mnemonische Phrase\", \"Wiederherstellungsphrase\" oder \"Wallet Backup\" bezeichnet. Die meisten Krypto-Apps verwenden denselben Standard zum Generieren von Konten.", + "seed-phrase-placeholder": "Seed-Phrase", + "seed-phrase-title": "Seed-Phrase", + "select": "Auswählen", + "select-account": "Konto auswählen", + "select-account-dapp": "Wählen Sie das Konto aus, das Sie mit DApps verwenden möchten", + "select-account-first": "Wählen Sie zuerst ein Konto aus", + "select-chat": "Wählen Sie einen Chat aus, um mit dem Messaging zu beginnen", + "select-new-location-for-keys": "Wählen Sie einen neuen Speicherort für Ihre(n) privaten Schlüssel", + "select-token-to-receive": "Zu empfangendes Token auswählen", + "select-token-to-swap": "Token zum Tauschen auswählen", + "selected": "Ausgewählt", + "send-logs": "Melden Sie einen technischen Fehler", + "send-logs-to": "Einen Fehler an {{email}} melden", + "send-message": "Nachricht senden", + "send-push-notifications": "Push-Benachrichtigungen senden", + "send-push-notifications-description": "Wenn diese Option deaktiviert ist, wird die Person, die Ihre Nachrichten empfängt, nicht über ihre Ankunft informiert", + "send-request": "Anfrage senden", + "send-request-amount": "Betrag", + "send-request-amount-max-decimals": "Die maximale Anzahl von Dezimalstellen beträgt {{asset-decimals}}", + "send-request-unknown-token": "Unbekanntes Token – {{asset}}", + "send-sending-to": "an {{recipient-name}}", + "send-transaction": "Transaktion senden", + "sending": "Sende", + "sent-at": "Gesendet an", + "server": "Server", + "set-a-topic": "Erstellen Sie ein Thema", + "set-currency": "Standardwährung festlegen", + "set-custom-fee": "Benutzerdefinierte Gebühr festlegen", + "set-dapp-access-permissions": "Festlegen von DApp-Zugriffsberechtigungen", + "set-max": "Maximalwert einstellen", + "settings": "Einstellungen", + "share": "Teilen", + "share-address": "Adresse teilen", + "share-chat": "Chat teilen", + "share-contact-code": "Meinen Chat-Schlüssel teilen", + "share-dapp-text": "Schauen Sie sich diese DApp an, die ich in Status verwende: {{link}}", + "share-link": "Link teilen", + "share-logs": "Protokolle teilen", + "share-my-profile": "Mein Profil teilen", + "share-profile": "Profil teilen", + "share-profile-link": "Profillink teilen", + "share-public-chat-text": "Sehen Sie sich diesen öffentlichen Chat in der Status-App an: {{link}}", + "shared": "Geteilt", + "sharing-copied-to-clipboard": "Kopiert", + "sharing-copy-to-clipboard": "Kopieren", + "sharing-data-desc-1": "Die Daten werden anhand öffentlicher Regeln validiert, um sicherzustellen, dass keine sensiblen Daten gesendet werden. Vertraue nicht, verifiziere.", + "sharing-data-desc-2": "Nutzungsdaten werden Ende-zu-Ende verschlüsselt über das Peer-to-Peer-Netzwerk von Status gesendet", + "sharing-data-desc-3": "Anstelle Ihres normalen Chat-Schlüssels wird ein Einmalschlüssel verwendet", + "sharing-data-desc-4": "Nutzungsdaten können nicht mit Ihrer IP-Adresse in Verbindung gebracht werden", + "sharing-data-desc-5": "Kumulierte Daten aller Benutzer sind öffentlich verfügbar", + "sharing-data-desc-6": "Die Daten werden nach dem Senden von Ihrem Telefon entfernt", + "sharing-share": "Teilen", + "show-less": "Weniger anzeigen", + "show-more": "Mehr anzeigen", + "show-notifications": "Benachrichtigungen anzeigen", + "show-profile-pictures": "Profilbilder anzeigen von", + "show-profile-pictures-to": "Zeigen Sie Ihr Profilbild an", + "show-qr": "QR-Code anzeigen", + "show-transaction-data": "Transaktionsdaten anzeigen", + "sign-and-send": "Signieren und senden", + "sign-anyway": "Trotzdem unterschreiben", + "sign-in": "Anmelden", + "sign-message": "Nachricht signieren", + "sign-out": "Ausloggen", + "sign-request-failed": "Nachricht konnte nicht signiert werden", + "sign-with": "Signieren mit", + "sign-with-password": "Mit Passwort signieren", + "sign-you-in": "Sie werden angemeldet...", + "signing": "Signieren", + "signing-a-message": "Eine Nachricht signieren", + "signing-phrase": "Signierphrase", + "skip": "Überspringen", + "slippage": "Slippage", + "slow": "Langsam", + "something-went-wrong": "Etwas ist schiefgelaufen", + "soon": "Demnächst", + "specify-address": "Adresse teilen", + "specify-name": "Geben Sie einen Namen an", + "specify-network-id": "Geben Sie die Netzwerk-ID an", + "specify-rpc-url": "Spezifizieren Sie eine RPC-URL", + "specify-server-public-key": "Öffentlichen Schlüssel des Servers eingeben", + "specify-symbol": "Geben Sie ein Symbol an", + "start-chat": "Chat beginnen", + "start-conversation": "Gespräch beginnen", + "start-group-chat": "Gruppenchat starten", + "start-new-chat": "Neuen Chat starten", + "starter-pack-coming": "Starter Pack ist auf dem Weg zu Ihnen", + "starter-pack-coming-description": "Kann ein paar Minuten bis Stunden dauern", + "starter-pack-received": "Starter Pack erhalten", + "starter-pack-received-description": "Hier ist etwas Kryptowährung für den Anfang! Benutzen Sie diese, um Sticker zu bekommen, einen ENS-Namen zu erstellen und DApps zu testen.", + "status": "Status", + "status-always-online": "Immer online", + "status-automatic": "Automatisch", + "status-automatic-subtitle": "Status automatisch setzen", + "status-confirmed": "Bestätigt", + "status-dnd": "Nicht stören", + "status-dnd-subtitle": "Schaltet alle Benachrichtigungen stumm", + "status-hardwallet": "Status-Hardwallet", + "status-inactive": "Inaktiv", + "status-inactive-subtitle": "Verbirgt Ihren Online-Status", + "status-is-open-source": "Status ist Open-Source", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status neigt dazu, beim Synchronisieren von Chats eine Menge Daten zu verbrauchen. Sie können wählen, dass Sie nicht synchronisieren, wenn Sie sich im Mobilfunknetz befinden", + "status-not-sent-click": "Unbestätigt. Klicken Sie für weitere Optionen", + "status-not-sent-tap": "Unbestätigt. Tippen Sie hier, um weitere Optionen anzuzeigen", + "status-pending": "Ausstehend", + "status-sent": "Gesendet", + "status-tx-not-found": "Transaktion nicht gefunden", + "status-updates-descr": "Hier werden Statusaktualisierungen angezeigt. Fügen Sie das Profil als Kontakt hinzu, um Aktualisierungen auf Ihrer Timeline zu erhalten.", + "statuses-descr": "Teilen Sie, was Sie auf dem Herzen haben und bleiben Sie mit Ihren Kontakten auf dem Laufenden", + "statuses-my-status-descr": "Teilen Sie, was Sie auf dem Herzen haben. Jeder, der Ihr Profil besucht, kann Ihren Status sehen. Personen, die Sie als Kontakt hinzufügen, erhalten Ihre Updates in ihrer Timeline", + "step-i-of-n": "Schritt {{step}} von {{number}}", + "sticker": "Sticker", + "sticker-market": "Sticker-Markt", + "storage": "Aufbewahrung", + "submit": "Senden", + "submit-bug": "Einen Fehler einreichen", + "success": "Erfolg", + "suggested-min-tip": "Empfohlenes Mindesttrinkgeld", + "suggested-price-limit": "Vorgeschlagenes Preislimit", + "swap": "Tausch\/Swap", + "swap-details": "Details zum Tausch\/Swap", + "switch-to-simple-interface": "Wechsel zur einfachen Benutzeroberfläche", + "symbol": "Symbol", + "sync-all-devices": "Alle Geräte synchronisieren", + "sync-in-progress": "Synchronisiere...", + "sync-settings": "Synchronisierung", + "sync-synced": "Synchronisiert", + "syncing-devices": "Synchronisiere...", + "system": "System", + "tabs": "Registerkarten", + "tag-was-lost": "Tag wurde verloren", + "tap-card-again": "Um fortzufahren, halten Sie die Karte noch einmal an die Rückseite Ihres Smartphones", + "terms-of-service": "Nutzungsbedingungen", + "test-networks": "Testnetzwerke", + "text-input-disabled": "Einen Augenblick bitte...", + "thank-you": "Vielen Dank", + "this-device": "Dieses Gerät", + "this-device-desc": "Ihre Schlüssel werden verschlüsselt und sicher auf Ihrem Gerät gespeichert", + "this-is-you-signing": "Dies ist Ihre Signaturphrase", + "this-will-take-few-seconds": "Dies dauert einen Augenblick", + "three-days": "Drei Tage", + "three-words-description": "Sie sollten diese 3 Wörter sehen, bevor Sie eine Transaktion signieren", + "three-words-description-2": "Wenn Sie eine andere Kombination sehen, brechen Sie die Transaktion ab und melden Sie sich ab", + "timeline": "Timeline", + "tip-cap": "Trinkgeldobergrenze", + "to": "An", + "to-block": "Blockieren", + "to-enable-biometric": "Um {{bio-type-label}} zu aktivieren, müssen Sie Ihr Passwort auf dem Entsperrbildschirm speichern", + "to-encrypt-enter-password": "Um das Konto zu verschlüsseln, geben Sie bitte Ihr Passwort ein", + "to-see-this-message": "Um diese Nachricht zu sehen,", + "token": "Token", + "token-auto-validate-decimals-error": "Falsche Dezimalstellen für Token {{symbol}} auf der Adresse {{address}} – gesetzt auf {{expected}} aber als {{actual}} erkannt", + "token-auto-validate-name-error": "Falscher Name für Token {{symbol}} auf der Adresse {{address}} – gesetzt auf {{expected}} aber als {{actual}} erkannt", + "token-auto-validate-symbol-error": "Falsches Symbol für Token {{symbol}} auf der Adresse {{address}} – gesetzt auf {{expected}} aber als {{actual}} erkannt", + "token-details": "Token-Details", + "topic-name-error": "Verwenden Sie nur Kleinbuchstaben (a bis z), Zahlen und Striche (-). Verwenden Sie keine Chat-Schlüssel", + "total-gas": "Gas insgesamt", + "transaction": "Transaktion", + "transaction-data": "Transaktionsdetails", + "transaction-declined": "Transaktion abgelehnt", + "transaction-description": "Betrachten Sie es nach 12 Bestätigungen im Netzwerk als abgeschlossen.", + "transaction-details": "Transaktionsdetails", + "transaction-failed": "Transaktion fehlgeschlagen", + "transaction-fee": "Transaktionsgebühr", + "transaction-history": "Transaktionsverlauf", + "transaction-request": "Transaktionsanfrage", + "transaction-sent": "Transaktion gesendet", + "transaction-signed": "Die Transaktion wurde erfolgreich signiert", + "transactions": "Transaktionen", + "transactions-filter-select-all": "Alle auswählen", + "transactions-filter-title": "Filterverlauf", + "transactions-history": "Transaktionsverlauf", + "transactions-history-empty": "Noch keine Transaktionen in Ihrem Verlauf", + "transactions-history-loading": "Laden der Transaktionshistorie. Dies kann eine Weile dauern.", + "transactions-load-more": "Mehr laden", + "transactions-management-enabled": "Transaktionsmanagement (Alpha)", + "transactions-sign": "Signieren", + "transfer-ma-unknown-error-desc-1": "Es sieht so aus, als sei Ihr Multiaccount nicht gelöscht worden. Die Datenbank wurde möglicherweise zurückgesetzt", + "transfer-ma-unknown-error-desc-2": "Bitte überprüfen Sie Ihre Kontoliste und versuchen Sie es erneut. Wenn das Konto nicht aufgelistet ist, gehen Sie zu 'Auf vorhandene Schlüssel zugreifen', um es mit der Seed-Phrase wiederherzustellen", + "transfers-fetching-failure": "Der Übertragungsverlauf konnte nicht aktualisiert werden. Überprüfen Sie Ihre Verbindung und wischen Sie nach unten, um es erneut zu versuchen", + "tribute-required-by-multiaccount": "{{multiaccount-name}} benötigt SNT, um einen Chat zu starten.", + "tribute-state-paid": "Tribut bezahlt", + "tribute-state-pending": "Tribut steht aus", + "tribute-state-required": "Benötigt ein SNT-Tribut i.H.v. {{snt-amount}} ", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "Fügen Sie Freunde als Kontakte hinzu, um Chats ohne Tributzahlung zuzulassen.", + "tribute-to-talk-are-you-friends": "Sind Sie Freunde?", + "tribute-to-talk-ask-to-be-added": "Bitten Sie darum, als Kontakt hinzugefügt zu werden", + "tribute-to-talk-contact-received-your-tribute": " erhielt Ihren Tribut. Sie können jetzt sicher miteinander chatten.", + "tribute-to-talk-desc": "Monetarisieren Sie Ihre Aufmerksamkeit, indem Sie SNT verlangen, damit neue Personen mit Ihnen einen Chat starten können", + "tribute-to-talk-disabled": "Tribute to Talk deaktiviert", + "tribute-to-talk-disabled-note": "Von nun an können neue Personen einen Chat mit Ihnen beginnen, ohne SNT zu senden.", + "tribute-to-talk-enabled": "Sie haben Tribute to Talk aktiviert.", + "tribute-to-talk-finish-desc": "Von nun an erhalten Sie nur noch Chats von Kontakten und Personen, die bezahlt haben ", + "tribute-to-talk-learn-more-1": "Ihre Zeit und Aufmerksamkeit sind Ihr wertvollstes Kapital. Mit Tribute to Talk können Sie einen SNT-Betrag festlegen, der erforderlich ist, damit neue Personen einen Chat mit Ihnen beginnen können.", + "tribute-to-talk-learn-more-2": "Jeder, der nicht in Ihrer Kontaktliste steht, wird zur Zahlung aufgefordert, und Sie können antworten, sobald er dies getan hat.", + "tribute-to-talk-learn-more-3": "Sie können das Geld jederzeit zurückschicken. Um sicherzustellen, dass Freunde Sie frei erreichen können, fügen Sie diese zuerst als Kontakte hinzu.", + "tribute-to-talk-paywall-learn-more-1": "Unsere Zeit und Aufmerksamkeit sind unser wertvollstes Kapital. Mit Tribute to Talk können Sie eine SNT-Zahlung erhalten, um neue Leute kontaktieren.", + "tribute-to-talk-paywall-learn-more-2": "Um einen Chat mit jemandem zu starten, der eine Gebühr festgelegt hat, zahlen Sie einfach die erforderliche Menge an SNT und Sie werden als Kontakt hinzugefügt.", + "tribute-to-talk-paywall-learn-more-3": "Wenn Sie sie kennen, können Sie Ihr Profil außerhalb von Status freigeben, um es kostenlos hinzuzufügen.", + "tribute-to-talk-pending": "Tribut wartet auf Bestätigung", + "tribute-to-talk-pending-note": "Die Bestätigung der Tributstransaktion im Netzwerk steht noch aus. Sie können den aktuellen Status im Transaktionsverlauf überprüfen", + "tribute-to-talk-removing-note": "Durch Entfernen von Tribute to Talk können neue Personen einen Chat starten, ohne SNT zu senden. Dies erfordert eine Transaktion.", + "tribute-to-talk-set-snt-amount": "Legen Sie den SNT-Betrag fest, der erforderlich ist, damit neue Personen einen Chat mit Ihnen starten können", + "tribute-to-talk-signing": "Warten auf die Signierung der Transaktion", + "tribute-to-talk-transaction-failed-note": "Die Transaktion ist fehlgeschlagen und Ihre Einstellungen für Tribute to Talk wurden nicht geändert", + "tribute-to-talk-tribute-received1": "Tribut erhalten. Sie und ", + "tribute-to-talk-tribute-received2": " sind jetzt Kontakte und können sicher miteinander chatten.", + "tribute-to-talk-you-require-snt": "Sie fragen SNT an, damit neue Personen einen Chat starten können.", + "try-again": "Versuchen Sie es erneut", + "try-keeping-the-card-still": "Versuchen Sie, die Karte ruhig zu halten", + "turn-nfc-description": "NFC ist auf Ihrem Gerät deaktiviert. Sie können es in den Einstellungen aktivieren", + "turn-nfc-on": "Schalten Sie NFC ein, um fortzufahren", + "two-minutes": "zwei Minuten", + "tx-fail-description1": "Diese Transaktion wird wahrscheinlich scheitern. Die Unterzeichnung erfolgt auf eigenes Risiko unter Verwendung einer benutzerdefinierten Netzwerkgebühr.", + "tx-fail-description2": "Diese Transaktion wird wahrscheinlich scheitern. Legen Sie eine benutzerdefinierte Netzwerkgebühr fest, um auf eigenes Risiko zu signieren.", + "type": "Typ", + "type-a-message": "Nachricht", + "ulc-enabled": "ULC aktiviert", + "unable-to-fetch": "Chatverlauf kann nicht abgerufen werden", + "unable-to-read-this-code": "Dieser Code kann nicht gelesen werden", + "unable-to-send-messages": "Senden und Empfangen von Nachrichten nicht möglich", + "unblock": "Entsperren", + "unblock-contact": "Diesen Benutzer entsperren", + "unknown-status-go-error": "Unbekannter status-go Fehler", + "unlimited": "Unbegrenzt", + "unlock": "Freischalten", + "unmute": "Stummschaltung aufheben", + "unpair-card": "Karte entkoppeln", + "unpair-card-confirmation": "Durch diesen Vorgang wird die Karte vom aktuellen Gerät getrennt. Das erfordert eine 6-stellige Passcode-Autorisierung. Möchten Sie fortfahren?", + "unpair-keycard": "Schlüsselkarte von diesem Gerät entkoppeln", + "unpair-keycard-warning": "Dein Pairing Code\/PUK und PIN bleiben unverändert", + "unpaired-keycard-text": "Die gewählte Keycard ist nicht mit diesem Smartphone verbunden", + "unpaired-keycard-title": "Anscheinend wurde Ihre Karte entkoppelt", + "unpin": "Lösen", + "update": "Aktualisieren", + "update-to-listen-audio": "Aktualisiere auf die neueste Version, um hier eine Audiobotschaft zu hören!", + "update-to-see-image": "Aktualisiere auf die neueste Version, um hier ein schönes Bild zu sehen!", + "update-to-see-sticker": "Aktualisiere auf die neueste Version, um hier einen schönen Sticker zu sehen!", + "updates-to-tos": "Aktualisierungen der Nutzungsbedingungen", + "updates-to-tos-desc": "Bevor Sie fortfahren, lesen Sie bitte die Nutzungsbedingungen und bestätigen Sie, dass Sie die volle Verantwortung dafür übernehmen, wie Sie die App verwenden.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Als Profilbild verwenden", + "use-valid-contact-code": "Bitte geben Sie einen gültigen Chat-Schlüssel oder Benutzernamen ein oder scannen Sie ihn ein", + "validation-amount-invalid-number": "Der Betrag ist keine gültige Zahl", + "validation-amount-is-too-precise": "Betrag ist zu genau. Die maximale Anzahl von Dezimalstellen beträgt {{decimals}}.", + "verified-community": "✓ Verifizierte Community", + "version": "App-Version", + "view": "Ansehen", + "view-cryptokitties": "In CryptoKitties anzeigen", + "view-cryptostrikers": "In CryptoStrikers anzeigen", + "view-data": "Daten anzeigen", + "view-details": "Details ansehen", + "view-etheremon": "In Etheremon anzeigen", + "view-gitcoin": "In Gitcoin anzeigen", + "view-on-opensea": "Auf OpenSea anzeigen", + "view-profile": "Profil anzeigen", + "view-public-dashboard": "Öffentliches Dashboard anzeigen", + "view-rules": "Regeln anzeigen", + "view-signing": "Signaturphrase anzeigen", + "view-superrare": "In SuperRare anzeigen", + "waiting-for-wifi": "Kein WLAN, Nachrichtensynchronisierung deaktiviert.", + "waiting-for-wifi-change": "Einstellungen", + "waiting-to-sign": "Warten auf die Signierung der Transaktion...", + "waiting-wi-fi": "Warten auf WLAN...", + "waku-bloom-filter-mode": "Waku Bloom Filtermodus", + "wakuv2-change-nodes": "Möchten Sie die 'Waku v2'-Knoten wirklich ändern?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "'Waku v2' Einstellungen", + "wallet": "Wallet", + "wallet-address": "Wallet-Adresse", + "wallet-asset": "Asset", + "wallet-assets": "Assets", + "wallet-backup-recovery-title": "Sichern Sie Ihre Seed-Phrase", + "wallet-choose-recipient": "Empfänger auswählen", + "wallet-collectibles": "Sammlerstücke", + "wallet-insufficient-funds": "Unzureichende Mittel", + "wallet-insufficient-gas": "Nicht genug ETH für Gas", + "wallet-invalid-address": "Ungültige Adresse: \n {{data}}", + "wallet-invalid-address-checksum": "Fehler in der Adresse: \n {{data}}", + "wallet-invalid-chain-id": "Netzwerk stimmt nicht überein: \n {{data}} aber das aktuelle ist {{chain}}", + "wallet-key-content": "Eine 64-stellige Hex-Adresse, die auf dem Ethereum-Standard basiert und mit 0x beginnt. In der Öffentlichkeit wird Ihre Kontoadresse mit anderen geteilt, wenn Sie Geld erhalten möchten. Wird auch als \"Ethereum-Adresse\" oder \"Wallet-Adresse\" bezeichnet.", + "wallet-key-title": "Kontoadresse", + "wallet-manage-accounts": "Konten verwalten", + "wallet-manage-assets": "Assets verwalten", + "wallet-request": "Anfrage", + "wallet-send": "Senden", + "wallet-send-min-units": "Mindestens 21000 Einheiten", + "wallet-send-min-wei": "Mindestens 1 wei", + "wallet-settings": "Wallet-Einstellungen", + "wallet-total-value": "Gesamtwert", + "wallet-transaction-total-fee": "Gesamtgebühr", + "wants-to-access-profile": "möchte auf Ihr Profil zugreifen", + "warning": "Warnung", + "warning-message": "Leider begrenzen wir mehrere Nachrichten hintereinander, um Spam zu vermeiden. Bitte versuchen Sie es gleich noch einmal", + "warning-sending-to-contract-descr": "Die eingegebene Adresse ist ein Smart Contract; wenn Sie hierhin Werte senden, können Sie diese verlieren. Um mit einer DApp zu interagieren, öffnen Sie die DApp im Status DApp Browser.", + "watch-only": "Nur zur Beobachtung", + "wc-brand-guide": "Anleitung zur Verwendung von Branding wie Marken und Logos", + "wc-disclaimer": "Haftungsausschlüsse (einschließlich Drittanbieter), Garantien und rechtliche Hinweise", + "wc-dispute": "Bestimmungen zur Streitbeilegung", + "wc-how-to-use-status-app": "So verwenden Sie die Status-App, einschließlich Datenschutz und Sicherheit", + "wc-new-tos-based-on-principles-prefix": "Neue Nutzungsbedingungen basierend auf unseren", + "web-view-error": "Seite kann nicht geladen werden", + "websites": "Webseiten", + "webview-camera-permission-requests": "Berechtigungsanforderungen für Webview-Kameras", + "webview-camera-permission-requests-subtitle": "Wenn diese Option aktiviert ist, können Websites und DApps Sie bitten, Ihre Kamera zu benutzen.", + "welcome-blank-community-message": "Ihre Communities werden hier angezeigt.", + "welcome-blank-message": "Ihre Chats werden hier angezeigt. Um neue Chats zu starten, drücken Sie die ⊕-Taste", + "welcome-community-blank-message": "Deine Chats werden hier angezeigt. Klicke oben auf die drei Punkte und wähle \"Kanal erstellen\", um einen neuen Chat zu starten", + "welcome-community-blank-message-edit-chats": "Ihre Kanäle werden hier angezeigt. Um einen neuen Kanal zu erstellen, gehen Sie zurück zum Community-Bildschirm, klicken Sie auf die Schaltfläche ⊕ und wählen Sie \"Einen Kanal erstellen\".", + "welcome-screen-text": "Richten Sie Ihre Wallet ein, laden Sie Freunde\nzum Chatten ein und stöbern Sie in beliebten DApps!", + "welcome-to-status": "Willkommen bei Status!", + "welcome-to-status-description": "Richten Sie Ihre Krypto-Wallet ein, laden Sie Freunde zum Chatten ein und durchsuchen Sie dezentrale Apps", + "what-changed": "Was sich geändert hat", + "what-is-shared": "Was wird geteilt", + "whats-on-your-mind": "Was haben Sie auf dem Herzen…", + "word-count": "Wortzahl", + "word-n": "Wort #{{number}}", + "word-n-description": "Geben Sie das Wort #{{number}} oben ein, um zu überprüfen, ob Sie Ihre Seed-Phrase korrekt gesichert haben.", + "words-n": { + "one": "1 Wort", + "other": "{{count}} Worte" + }, + "write-down-and-store-securely": "Schreiben Sie die Codes auf \n und bewahren Sie sie sicher auf", + "wrong-address": "Falsche Adresse", + "wrong-card": "Falsche Karte", + "wrong-card-text": "Die benutzte Karte entspricht nicht den von Ihnen gewählten Schlüsseln", + "wrong-contract": "Falscher Vertrag", + "wrong-keycard-text": "Die gewählte Keycard ist nicht mit diesem Smartphone verbunden", + "wrong-keycard-title": "Wahrscheinlich haben Sie eine \nfalsche Keycard verwendet", + "wrong-password": "Falsches Passwort", + "wrong-word": "Falsches Wort", + "yes": "Ja", + "you": "Sie", + "you-already-have-an-asset": "Sie haben bereits ein Asset {{value}}", + "you-are-all-set": "Es ist alles bereit!", + "you-are-all-set-description": "Wenn Sie Ihr Smartphone verlieren, können Sie jetzt mit Ihrer Seed-Phrase auf Ihre Gelder und Ihren Chat-Schlüssel zugreifen", + "you-can-change-account": "Sie können den Kontonamen und die Farbe nach Ihren Wünschen ändern", + "you-can-choose-preview-websites": "Sie können wählen, welche der folgenden Websites eine Vorschau von Beschreibungen und Bildern in Chats anzeigen können", + "you-can-fetch": "Sie können den Chatverlauf abrufen", + "you-dont-have-contacts": "Sie haben noch keine Kontakte.", + "you-dont-have-contacts-invite-friends": "Sie haben noch keine Kontakte.\nLaden Sie Ihre Freunde zum Chatten ein.", + "you-dont-have-stickers": "Sie haben noch keine Sticker", + "you-will-need-this-code": "Sie benötigen diesen Code, um Status zu öffnen und Transaktionen zu signieren", + "you-will-start-from-scratch": "Sie beginnen mit einem neuen Schlüsselsatz von vorne", + "your-card-is-frozen": "Ihre Keycard ist eingefroren. Kartenzugang zurücksetzen", + "your-contact-code": "Durch das Gewähren des Zugriffs wird diese DApp berechtigt, Ihren Chat-Schlüssel abzurufen", + "your-data-belongs-to-you": "Wenn Sie Ihre Seed-Phrase verlieren, verlieren Sie Ihre Daten und Ihr Geld", + "your-data-belongs-to-you-description": "Wenn Sie den Zugang verlieren, z.B. durch den Verlust Ihres Smartphones, können Sie auf Ihre Schlüssel nur noch mit Ihrer Seed-Phrase zugreifen. Niemand außer Sie hat Ihre Seed-Phrase. Schreiben Sie diese auf und bewahren Sie sie sicher auf.", + "your-keys": "Ihre Schlüssel", + "your-price-limit": "Ihr Preislimit", + "your-recovery-phrase": "Ihre Seed-Phrase", + "your-recovery-phrase-description": "Dies ist Ihre Seed-Phrase. Sie verwenden sie, um zu beweisen, dass dies Ihre Wallet ist. Sie bekommen sie nur einmal zu sehen! Schreiben Sie sie auf Papier und bewahren Sie es an einem sicheren Ort auf. Sie benötigen sie, wenn Sie Ihre Wallet verlieren oder neu installieren.", + "your-tip-limit": "Ihr Trinkgeldlimit", + "youre-on-mobile-network": "Sie sind im Mobilfunknetz" +} diff --git a/translations/de_ch.json b/translations/de_ch.json new file mode 100644 index 00000000000..481fba1000e --- /dev/null +++ b/translations/de_ch.json @@ -0,0 +1,93 @@ +{ + "amount": "Betrag", + "members-active": { + "one": "1 Mitglied, 1 aktiv", + "other": "{{count}} Mitglieder, {{count}} aktiv", + "zero": "Keine Mitglieder" + }, + "chat-name": "Chat Name", + "phew-here-is-your-passphrase": "*Phew* das war hart, hier ist deine Passphrase, *Schreibe diese auf und bewahre diese sicher auf!* Du benötigst diese, um dein Konto wiederherzustellen.", + "chat-settings": "Chat Einstellungen", + "offline": "Offline", + "invited": "eingeladen", + "address": "Adresse", + "datetime-hour": { + "one": "Stunde", + "other": "Stunden" + }, + "remove": "Entfernen", + "add-members": "Mitglieder hinzufügen", + "done": "Erledigt", + "new-group-chat": "Neuer Gruppenchat", + "datetime-yesterday": "gestern", + "datetime-ago": "vor", + "contacts": "Kontakte", + "active-online": "Online", + "password": "Passwort", + "discover": "Entdecken", + "intro-status": "Chat mit mir, damit ich dein Konto einrichten und deine Einstellungen ändern kann!", + "name": "Name", + "show-qr": "QR-Code anzeigen", + "connect": "Verbinden", + "edit": "Bearbeiten", + "account-generation-message": "Gib mir eine Sekunde, Ich muss wie verrückt etwas berechnen um dein Konto zu generieren!", + "no-messages": "Keine Nachrichten", + "passphrase": "Passphrase", + "recipient": "Empfänger", + "members-title": "Mitglieder", + "settings": "Einstellungen", + "chats": "Chats", + "image-source-make-photo": "Erfassen", + "save": "Speichern", + "sync-in-progress": "Synchronisierung...", + "incorrect-code": [ + "str", + "Leider ist der Code nicht korrekt. Bitte versuche es nochmals" + ], + "image-source-gallery": "Aus der Galerie auswählen", + "sync-synced": "Synchron", + "status-pending": "Anhängig", + "datetime-day": { + "one": "Tag", + "other": "Tage" + }, + "scan-qr": "QR scannen", + "recent": "Kürzlich", + "status": "Status", + "status-sent": "Gesendet", + "wrong-password": "Falsches Passwort", + "clear-history": "Verlauf löschen", + "no-contacts": "Noch keine Kontakte", + "datetime-today": "heute", + "web-view-error": "oops, Fehler", + "can-not-add-yourself": "Du kannst dich nicht selbst hinzufügen", + "add-to-contacts": "Zu Kontakten hinzufügen", + "available": "Verfügbar", + "You": "Du", + "main-wallet": "Haupt-Portemonnaie", + "members": { + "one": "1 Mitglied", + "other": "{{count}} Mitglieder", + "zero": "Keine Mitglieder" + }, + "intro-message1": "Willkommen zu Status\nTap diese Nachricht um dein Passwort einzurichten & loszulegen!", + "new-contact": "Neuer Kontakt", + "datetime-second": { + "one": "Sekunde", + "other": "Sekunden" + }, + "recover": "Wiederherstellen", + "datetime-minute": { + "one": "Minute", + "other": "Minuten" + }, + "active-unknown": "Unbekannt", + "public-key": "Öffentlicher Schlüssel", + "profile": "Profil", + "none": "Keine", + "removed": "entfernt", + "message": "Nachricht", + "here-is-your-passphrase": "Hier ist deine Passphrase, *Schreibe diese auf und bewahre diese sicher auf!* Du benötigst diese, um dein Konto wiederherzustellen.", + "image-source-title": "Profilbild", + "left": "verlassen" +} diff --git a/translations/el.json b/translations/el.json new file mode 100644 index 00000000000..dc400fd30a1 --- /dev/null +++ b/translations/el.json @@ -0,0 +1,1360 @@ +{ + "You": "Εσείς", + "about-app": "Σχετικά με", + "about-key-storage-content": "Το Status δεν θα έχει ποτέ πρόσβαση στο ιδιωτικό σας κλειδί. Φροντίστε να δημιουργήσετε αντίγραφα ασφαλείας της φράσης seed σας. Εάν χάσετε το τηλέφωνό σας, είναι ο μόνος τρόπος πρόσβασης στα κλειδιά σας.", + "about-key-storage-title": "Σχετικά με την αποθήκευση κλειδιών", + "about-names-content": "Κανείς δεν μπορεί να προσποιηθεί ότι είσαι εσύ! Είσαι ανώνυμος από προεπιλογή και δεν χρειάζεται να αποκαλύψεις το πραγματικό σου όνομα. Μπορείτε να καταχωρήσετε ένα προσαρμοσμένο όνομα έναντι μικρής χρέωσης.", + "about-names-title": "Δεν είναι δυνατή η αλλαγή των ονομάτων", + "accept": "Αποδοχή", + "accept-and-share-address": "Αποδοχή και κοινή χρήση διεύθυνσης", + "access-existing-keys": "Πρόσβαση στα υπάρχοντα κλειδιά", + "access-key": "Κλειδί πρόσβασης", + "account-added": "Προστέθηκε λογαριασμός", + "account-color": "Χρώμα λογαριασμού", + "account-content": "Μπορείτε να συγκρίνετε λογαριασμούς του Status με τραπεζικούς λογαριασμούς. Όπως ένας τραπεζικός λογαριασμός, ένας λογαριασμός έχει συνήθως διεύθυνση και υπόλοιπο. Χρησιμοποιείτε αυτόν τον λογαριασμό για συναλλαγές στο Ethereum. Μπορείτε να έχετε πολλούς λογαριασμούς στο πορτοφόλι σας. Όλα προσβάσιμα με ξεκλείδωμα Status.", + "account-exists-title": "Ο λογαριασμός υπάρχει ήδη", + "account-name": "Όνομα λογαριασμού", + "account-settings": "Ρυθμίσεις λογαριασμού", + "account-title": "Λογαριασμός", + "accounts": "Λογαριασμοί", + "active-online": "Σε σύνδεση", + "active-unknown": "Άγνωστο", + "add": "Προσθήκη", + "add-a-watch-account": "Προσθέστε μια διεύθυνση μόνο για παρακολούθηση", + "add-account": "Προσθέστε έναν λογαριασμό", + "add-account-description": "Μπορείτε να εισαγάγετε οποιονδήποτε τύπο λογαριασμού Ethereum για να τον προσθέσετε στο πορτοφόλι Status σας", + "add-account-incorrect-password": "Ο κωδικός πρόσβασης φαίνεται να είναι λανθασμένος. Εισαγάγετε τον κωδικό πρόσβασης που χρησιμοποιείτε για να ξεκλειδώσετε την εφαρμογή.", + "add-an-account": "Προσθέστε έναν λογαριασμό", + "add-bootnode": "Προσθήκη bootnode", + "add-contact": "Προσθήκη επαφής", + "add-custom-token": "Προσθήκη προσαρμοσμένου token", + "add-favourite": "Προσθήκη αγαπημένου", + "add-mailserver": "Προσθήκη κόμβου ιστορικού", + "add-members": "Προσθήκη μελών", + "add-network": "Προσθήκη δικτύου", + "add-new-contact": "Προσθήκη νέας επαφής", + "add-nickname": "Προσθέστε ένα ψευδώνυμο (προαιρετικό)", + "add-private-key-account": "Προσθήκη λογαριασμού από ιδιωτικό κλειδί", + "add-seed-account": "Προσθέστε λογαριασμό με μια φράση seed", + "add-to-contacts": "Προσθήκη στις επαφές", + "add-to-contacts-text": "Προσθέτοντας έναν χρήστη στη λίστα επαφών σας, μοιράζεστε τη διεύθυνση του πορτοφολιού σας", + "add-to-favourites": "Προσθήκη στα αγαπημένα", + "add-watch-account": "Προσθήκη λογαριασμού μόνο για παρακολούθηση", + "address": "Διεύθυνση", + "address-or-ens-name": "Διεύθυνση ή όνομα ENS", + "address-received": "Η διεύθυνση ελήφθη", + "address-request-accepted": "Το αίτημα διεύθυνσης έγινε αποδεκτό", + "address-requested": "Ζητήθηκε διεύθυνση", + "advanced": "Προηγμένη", + "advanced-settings": "Προηγμένες ρυθμίσεις", + "advertiser-description": "Ανακαλύψατε το Status χάρη σε έναν συνεργάτη. Σας πειράζει εάν το Status ελέγξει τη διεύθυνση IP σας μία φορά, ώστε να ανταμειφθεί; Αυτές οι πληροφορίες δεν θα χρησιμοποιηθούν για οτιδήποτε άλλο και θα καταργηθούν εντελώς μετά από 7 ημέρες.", + "advertiser-starter-pack-accept": "Αποδοχή", + "advertiser-starter-pack-decline": "Απόρριψη", + "advertiser-starter-pack-description": "Εδώ είναι μερικά crypto για να ξεκινήσετε! Χρησιμοποιήστε τα για να πάρετε αυτοκόλλητα, ένα όνομα ENS και να δοκιμάσετε dapps", + "advertiser-starter-pack-title": "Πακέτο εκκίνησης", + "advertiser-title": "Απόρρητο από προεπιλογή", + "agree-by-continuing": "Συνεχίζοντας, συμφωνείτε\n στο δικό μας ", + "all": "Όλα", + "allow": "Να επιτρέπεται", + "allow-mention-notifications": "Εμφάνιση @ αναφορών", + "allowing-authorizes-this-dapp": "Η άδεια επιτρέπει σε αυτήν την εφαρμογή να ανακτήσει τη διεύθυνση του πορτοφολιού σας και να ενεργοποιήσει το Web3", + "already-have-asset": "Έχετε ήδη αυτό το περιουσιακό στοιχείο", + "amount": "Ποσό", + "appearance": "Εμφάνιση", + "apply": "Εφαρμογή", + "are-you-sure": "Είστε σίγουρει?", + "are-you-sure-description": "Δεν θα μπορείτε να δείτε ξανά ολόκληρη τη φράση seed", + "are-you-sure-to-cancel": "Είστε βέβαιοι ότι θέλετε να ακυρώσετε;", + "are-you-sure?": "Είστε σίγουρει?", + "ask-in-status": "Κάντε μια ερώτηση ή αναφέρετε ένα σφάλμα", + "at": "στο", + "attribution-received": "{{attrib}} από τα {{max}} μπόνους που ελήφθησαν", + "audio": "Ήχος", + "audio-recorder": "Ηχογράφηση", + "audio-recorder-error": "Σφάλμα ηχογράφησης", + "audio-recorder-max-ms-reached": "Συμπληρώθηκε ο μέγιστος χρόνος καταγραφής", + "audio-recorder-permissions-error": "Πρέπει να δώσετε άδεια για την αποστολή ηχητικών μηνυμάτων", + "authorize": "Εξουσιοδοτώ", + "available": "Διαθέσιμα", + "available-participants": { + "one": "Μπορείτε να επιλέξετε έναν ακόμη συμμετέχοντα", + "other": "Μπορείτε να επιλέξετε {{count}} ακόμη συμμετέχοντες" + }, + "back": "Πίσω", + "back-up-seed-phrase": "Αντίγραφο ασφαλείας φράσης seed", + "back-up-your-seed-phrase": "Δημιουργήστε αντίγραφα ασφαλείας για τη φράση seed σας", + "backup-disabled": "Απενεργοποιημένα", + "backup-recovery-phrase": "Αντίγραφο ασφαλείας φράσης seed", + "balance": "Υπόλοιπο", + "begin-set-up": "Έναρξη ρύθμισης", + "biometric-auth-android-sensor-desc": "Αισθητήρας αφής", + "biometric-auth-android-sensor-error-desc": "Απέτυχε", + "biometric-auth-android-title": "Απαιτείται Πιστοποίηση", + "biometric-auth-confirm-logout": "Επανασύνδεση", + "biometric-auth-confirm-message": "Απαιτείται βιομετρικός έλεγχος ταυτότητας για να συνεχιστεί, εάν δεν είναι δυνατόν, ξεκλειδώστε τα κλειδιά σας με τον κωδικό πρόσβασης σας", + "biometric-auth-confirm-title": "Πρέπει να κάνετε έλεγχο ταυτότητας!", + "biometric-auth-confirm-try-again": "Προσπάθησε ξανά", + "biometric-auth-error": "Δεν είναι δυνατή η εκτέλεση βιομετρικού ελέγχου ταυτότητας ({{code}})", + "biometric-auth-login-error-title": "Σφάλμα βιομετρικού ελέγχου ταυτότητας", + "biometric-auth-login-ios-fallback-label": "Εισάγετε τον κωδικό πρόσβασης", + "biometric-auth-reason-login": "Σύνδεση στο Status", + "biometric-auth-reason-verify": "Επαλήθευση ελέγχου ταυτότητας", + "biometric-disable-bioauth": "απενεργοποίηση {{bio-type-label}}", + "biometric-disable-password-description": "Εάν απενεργοποιήσετε αυτό, θα ", + "biometric-disable-password-title": "Απενεργοποίηση αποθήκευσης κωδικού πρόσβασης", + "biometric-enable": "Εάν δεν θέλετε να εισάγετε τον κωδικό σας κάθε φορά για πρόσβαση στην εφαρμογή, ενεργοποιήστε τη {{bio-type-label}} σύνδεση ", + "biometric-enable-button": "Ενεργοποίηση {{bio-type-label}}", + "biometric-enable-keycard": "Εάν δεν θέλετε να χρησιμοποιείτε την Keycard σας κάθε φορά για πρόσβαση στην εφαρμογή, ενεργοποιήστε τη {{bio-type-label}} σύνδεση ", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Δακτυλικό αποτύπωμα", + "biometric-secure-with": "Ασφαλίστε με {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "blank-keycard-text": "Μπορείτε να συνεχίσετε με την κάρτα-κλειδί σας μόλις δημιουργήσετε τα κλειδιά και το όνομά σας", + "blank-keycard-title": "Φαίνεται ότι έχετε πατήσει\n μια κενή κάρτα-κλειδί", + "block": "Αποκλεισμός", + "block-contact": "Αποκλεισμός αυτού του χρήστη", + "block-contact-details": "Ο αποκλεισμός θα διαγράψει τα προηγούμενα μηνύματα αυτού του χρήστη και θα σταματήσει τη λήψη νέων από εσάς", + "blocked-users": "Αποκλεισμένοι χρήστες", + "bootnode-address": "Διεύθυνση Bootnode", + "bootnode-details": "Λεπτομέρειες Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Οι bootnodes ενεργοποιήθηκαν", + "bootnodes-settings": "Ρυθμίσεις Bootnodes", + "browsed-websites": "Το ιστορικό του προγράμματος περιήγησης θα εμφανιστεί εδώ", + "browser": "Πρόγραμμα περιήγησης", + "browser-not-secure": "Η σύνδεση δεν είναι ασφαλής! Μην υπογράφετε συναλλαγές και μην στέλνετε προσωπικά δεδομένα σε αυτόν τον ιστότοπο.", + "browser-secure": "Η σύνδεση είναι ασφαλής. Βεβαιωθείτε ότι εμπιστεύεστε πραγματικά αυτόν τον ιστότοπο πριν υπογράψετε συναλλαγές ή εισαγάγετε προσωπικά δεδομένα.", + "browsers": "Πρόγραμμα περιήγησης", + "browsing-cancel": "Ακύρωση", + "browsing-open-in-android-web-browser": "Άνοιγμα σε Android", + "browsing-open-in-ios-web-browser": "Άνοιγμα σε iOS", + "browsing-open-in-status": "Άνοιγμα στο Status", + "browsing-site-blocked-description1": "Εντοπίσαμε πιθανή κακόβουλη δραστηριότητα από αυτήν τη διεύθυνση. Για να προστατεύσουμε εσάς και το πορτοφόλι σας, εμποδίζουμε την περαιτέρω πλοήγηση. \n\n Εάν πιστεύετε ότι πρόκειται για σφάλμα, ενημερώστε μας στο ", + "browsing-site-blocked-description2": " δημόσια συνομιλία.", + "browsing-site-blocked-go-back": "Πήγαινε πίσω", + "browsing-site-blocked-title": "Αυτός ο ιστότοπος έχει αποκλειστεί", + "browsing-title": "Περιήγηση", + "bug-report": "Αναφορά σφάλματος", + "buy-crypto-description": "Βρείτε ένα dapp για να αγοράσετε crypto τώρα", + "buy-crypto-title": "Φαίνεται ότι το πορτοφόλι σας είναι άδειο", + "camera-access-error": "Για να παραχωρήσετε την απαιτούμενη άδεια κάμερας, μεταβείτε στις ρυθμίσεις του συστήματός σας και βεβαιωθείτε ότι το Status > Κάμερα είναι επιλεγμένο.", + "can-not-add-yourself": "Εσείς είστε αυτός, για να ξεκινήσετε μια συνομιλία επιλέξτε κάποιον άλλο", + "cancel": "Ακύρωση", + "cancel-keycard-setup": "Ακύρωση ρύθμισης Keycard", + "cancelling": "Ακύρωση", + "cannot-read-card": "Δεν είναι δυνατή η ανάγνωση κάρτας.\n Κρατήστε τη στο πίσω μέρος του τηλεφώνου σας", + "cannot-use-default-pin": "Ο κωδικός 000000 δεν επιτρέπεται.\n Παρακαλώ χρησιμοποιήστε έναν άλλο αριθμό", + "cant-open-public-chat": "Δεν είναι δυνατό το άνοιγμα δημόσιας συνομιλίας", + "cant-report-bug": "Δεν είναι δυνατή η αναφορά σφάλματος", + "card-is-blank": "Αυτή η κάρτα είναι κενή", + "card-reseted": "Έγινε επαναφορά της κάρτας", + "card-unpaired": "Η κάρτα έχει αποσυνδεθεί από την τρέχουσα συσκευή", + "change-fleet": "Αλλαγή στόλου σε {{fleet}}", + "change-logging-enabled": "Είστε βέβαιοι ότι θέλετε να {{enable}} σύνδεση;", + "change-passcode": "Αλλαγή κωδικού πρόσβασης", + "change-password": "Αλλαγή κωδικού πρόσβασης", + "change-pin": "Αλλάξτε τον 6ψήφιο κωδικό πρόσβασης", + "changed-amount-warning": "Το ποσό άλλαξε από {{old}} σε {{new}}", + "changed-asset-warning": "Το περιουσιακό στοιχείο άλλαξε από {{old}} σε {{new}}", + "chaos-mode": "Λειτουργία χάους", + "chaos-unicorn-day": "Ημέρα Χάους Μονόκερου", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Συνομιλία", + "chat-and-transact": "Συνομιλήστε και πραγματοποιήστε συναλλαγές ιδιωτικά με φίλους", + "chat-is-a-contact": "Επικοινωνία", + "chat-is-not-a-contact": "Δεν είναι επαφή", + "chat-key": "Κλειδί συνομιλίας", + "chat-key-content": "Τα μηνύματα στο πρωτόκολλο συνομιλίας του Status αποστέλλονται και λαμβάνονται μέσω κλειδιών κρυπτογράφησης. Το δημόσιο κλειδί συνομιλίας είναι μια σειρά χαρακτήρων που μοιράζεστε με άλλους, ώστε να μπορούν να σας στέλνουν μηνύματα στο Status.", + "chat-key-title": "Κλειδί συνομιλίας", + "chat-link-previews": "Προεπισκοπήσεις συνδέσμου συνομιλίας", + "chat-name": "Όνομα συνομιλίας", + "chat-name-content": "Τρεις τυχαίες λέξεις, που παράγονται αλγοριθμικά από το κλειδί συνομιλίας σας και χρησιμοποιούνται ως το προεπιλεγμένο ψευδώνυμό σας στη συνομιλία. Τα ονόματα συνομιλίας είναι εντελώς μοναδικά· κανένας άλλος χρήστης δεν μπορεί να έχει τις ίδιες τρεις λέξεις.", + "chat-name-title": "Όνομα Συνομιλίας", + "chat-settings": "Ρυθμίσεις συνομιλίας", + "chats": "Συζητήσεις", + "check-on-opensea": "Ελέγξτε στο opensea", + "check-your-recovery-phrase": "Ελέγξτε τη φράση seed σας", + "choose-authentication-method": "Επιλέξτε μια μέθοδο ελέγχου ταυτότητας", + "clear": "Εκκαθάριση", + "clear-all": "Εκκαθάριση όλων", + "clear-history": "Καθαρισμός ιστορικού", + "clear-history-action": "Εκκαθάριση", + "clear-history-confirmation": "Καθαρισμός ιστορικού?", + "clear-history-confirmation-content": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το ιστορικό συνομιλίας;", + "clear-history-title": "Καθαρισμός ιστορικού?", + "close": "Κλείσιμο", + "close-all": "Κλείσιμο όλων", + "close-app-button": "Επιβεβαίωση", + "close-app-content": "Η εφαρμογή θα σταματήσει και θα κλείσει. Όταν την ανοίξετε ξανά, θα χρησιμοποιηθεί το επιλεγμένο δίκτυο", + "close-app-title": "Προειδοποίηση!", + "command-button-send": "Αποστολή", + "community-image-remove": "Κατάργηση", + "community-invite-title": "Προσκαλέστε", + "community-members-title": "Μέλη", + "community-share-title": "Κοινοποίηση", + "complete-hardwallet-setup": "Αυτή η κάρτα είναι πλέον συνδεδεμένη. Τη χρειάζεστε για να υπογράψετε συναλλαγές και να ξεκλειδώσετε τα κλειδιά σας", + "completed": "Ολοκληρωμένα", + "confirm": "Επιβεβαίωση", + "confirm-password-placeholder": "Επιβεβαιώστε τον κωδικό πρόσβασης σας...", + "confirmation-request": "Αίτημα επιβεβαίωσης", + "confirmations": "Επιβεβαιώσεις", + "confirmations-helper-text": "Όταν η συναλλαγή έχει 12 επιβεβαιώσεις, μπορείτε να την θεωρήσετε διευθετημένη.", + "connect": "Σύνδεση", + "connect-mailserver-content": "Σύνδεση στο {{name}};", + "connect-wallet": "Σύνδεση πορτοφολιού", + "connected": "Συνδεδεμένος", + "connecting": "Σύνδεση...", + "connecting-requires-login": "Για τη σύνδεση σε άλλο δίκτυο απαιτείται σύνδεση λογαριασμού", + "connection-with-the-card-lost": "Η σύνδεση με την κάρτα\n έχει χαθεί", + "connection-with-the-card-lost-setup-text": "Για να συνεχίσετε τη ρύθμιση κρατήστε την κάρτα στο\nπίσω μέρος του τηλεφώνου σας και κρατήστε την κάρτα σε επαφή με το τηλέφωνο", + "connection-with-the-card-lost-text": "Για να συνεχίσετε κρατήστε την κάρτα στο πίσω μέρος του τηλεφώνου σας", + "contact-code": "Κλειδί συνομιλίας", + "contact-s": { + "one": "επαφή", + "other": "επαφές" + }, + "contacts": "Επαφές", + "contacts-descr": "Οι επαφές σας θα εμφανίζονται εδώ. Θα λάβετε ενημερώσεις κατάστασης από οποιονδήποτε προσθέτετε ως επαφή", + "contacts-empty": "Οι επαφές με ονόματα ENS θα εμφανίζονται εδώ", + "continue": "Συνέχεια", + "continue-anyway": "Συνεχίστε ούτως ή άλλως", + "contract-address": "Διεύθυνση συμβολαίου", + "contract-interaction": "Αλληλεπίδραση συμβολαίου", + "copy-info": "Αντιγραφή πληροφοριών", + "copy-qr": "Αντιγραφή κωδικού", + "copy-to-clipboard": "Αντιγραφή", + "copy-transaction-hash": "Αντιγραφή αναγνωριστικού συναλλαγής", + "cost-fee": "Κόστος\/Τέλος", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Δημιουργία", + "create-a-pin": "Δημιουργήστε έναν 6ψήφιο κωδικό πρόσβασης", + "create-group-chat": "Δημιουργία ομαδικής συνομιλίας", + "create-multiaccount": "Δημιουργία κλειδιών", + "create-new-key": "Λάβετε νέα κλειδιά", + "create-pin": "Δημιουργήστε 6ψήφιο κωδικό πρόσβασης", + "create-pin-description": "Θα χρειαστείτε την κάρτα σας + αυτόν τον 6ψήφιο κωδικό πρόσβασης για να ξεκλειδώσετε το Status και να επιβεβαιώσετε τις συναλλαγές", + "created-group-chat-description": "Δημιουργήσατε την ομάδα {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Νόμισμα", + "currency-display-name-aed": "Ντιράμ Ηνωμένων Αραβικών Εμιράτων", + "currency-display-name-afn": "Αφγάνι Αφγανιστάν", + "currency-display-name-ars": "Πέσο Αργεντινής", + "currency-display-name-aud": "Δολάριο Αυστραλίας", + "currency-display-name-bbd": "Δολάριο Μπαρμπάντος", + "currency-display-name-bdt": "Τάκα Μπαγκλαντές", + "currency-display-name-bgn": "Λεβ Βουλγαρίας", + "currency-display-name-bhd": "Δηνάριο Μπαχρέιν", + "currency-display-name-bnd": "Δολάριο Μπρουνέι Νταρουσαλάμ", + "currency-display-name-bob": "Μπολιβιάνο Βολιβίας", + "currency-display-name-brl": "Ρεάλ Βραζιλίας", + "currency-display-name-btn": "Νγκούλτρουμ Μπουτάν", + "currency-display-name-cad": "Δολάριο Καναδά", + "currency-display-name-chf": "Φράγκο Ελβετίας", + "currency-display-name-clp": "Πέσο Χιλής", + "currency-display-name-cny": "Γιουάν Ρενμίνμπι Κίνας", + "currency-display-name-cop": "Πέσο Κολομβίας", + "currency-display-name-crc": "Κολόν Κόστα Ρίκα", + "currency-display-name-czk": "Κορόνα Τσεχίας", + "currency-display-name-dkk": "Κορόνα Δανίας", + "currency-display-name-dop": "Πέσο Δομινικανής Δημοκρατίας", + "currency-display-name-egp": "Λίρα Αιγύπτου", + "currency-display-name-etb": "Μπιρ Αιθιοπίας", + "currency-display-name-eur": "Ευρώ", + "currency-display-name-gbp": "Βρετανική Λίρα", + "currency-display-name-gel": "Λάρι Γεωργίας", + "currency-display-name-ghs": "Σέντι Γκάνας", + "currency-display-name-hkd": "Δολάριο Χονγκ Κονγκ", + "currency-display-name-hrk": "Κούνα Κροατίας", + "currency-display-name-huf": "Φιορίνι Ουγγαρίας", + "currency-display-name-idr": "Ρουπία Ινδονησίας", + "currency-display-name-ils": "Σέκελ Ισραήλ", + "currency-display-name-inr": "Ρουπία Ινδίας", + "currency-display-name-isk": "Κορώνα Ισλανδίας", + "currency-display-name-jmd": "Δολάριο Τζαμάικας", + "currency-display-name-jpy": "Γιεν Ιαπωνίας", + "currency-display-name-kes": "Σελίνι Κένυας", + "currency-display-name-krw": "Γουόν Νότιας Κορέας", + "currency-display-name-kwd": "Δηνάριο Κουβέιτ", + "currency-display-name-kzt": "Τένγκε Καζακστάν", + "currency-display-name-lkr": "Ρουπία της Σρι Λάνκα", + "currency-display-name-mad": "Ντιρχάμ Μαρόκου", + "currency-display-name-mdl": "Λέου Μολδαβίας", + "currency-display-name-mur": "Ρουπία Μαυρίκιου", + "currency-display-name-mwk": "Κουάτσα Μαλάουι", + "currency-display-name-mxn": "Πέσο Μεξικού", + "currency-display-name-myr": "Ρινγκίτ Μαλαισίας", + "currency-display-name-mzn": "Μετικάλ Μοζαμβίκης", + "currency-display-name-nad": "Δολάριο Ναμίμπια", + "currency-display-name-ngn": "Νάιρα Νιγηρίας", + "currency-display-name-nok": "Κορόνα Νορβηγίας", + "currency-display-name-npr": "Ρουπία Νεπάλ", + "currency-display-name-nzd": "Δολάριο Νέας Ζηλανδίας", + "currency-display-name-omr": "Ριάλ Ομάν", + "currency-display-name-pen": "Σολ Περού", + "currency-display-name-pgk": "Κίνα Παπούας Νέας Γουινέας", + "currency-display-name-php": "Πέσο Φιλιππίνων", + "currency-display-name-pkr": "Ρουπία Πακιστάν", + "currency-display-name-pln": "Ζλότι Πολωνίας", + "currency-display-name-pyg": "Γκουαράνι Παραγουάης", + "currency-display-name-qar": "Ριάλ Κατάρ", + "currency-display-name-ron": "Λέου Ρουμανίας", + "currency-display-name-rsd": "Δηνάριο Σερβίας", + "currency-display-name-rub": "Ρούβλι Ρωσίας", + "currency-display-name-sar": "Ριάλ Σαουδικής Αραβίας", + "currency-display-name-sek": "Κορώνα Σουηδίας", + "currency-display-name-sgd": "Δολάριο Σιγκαπούρης", + "currency-display-name-thb": "Μπατ Ταϊλάνδης", + "currency-display-name-try": "Λίρα Τουρκίας", + "currency-display-name-ttd": "Δολάριο του Τρινιντάντ και Τομπάγκο", + "currency-display-name-twd": "Νέο δολάριο Ταϊβάν", + "currency-display-name-tzs": "Σελίνι Τανζανίας", + "currency-display-name-uah": "Ουκρανία Χρυβνία", + "currency-display-name-ugx": "Σελίνι Ουγκάντας", + "currency-display-name-usd": "Δολάριο Ηνωμένων Πολιτειών", + "currency-display-name-uyu": "Πέσο Ουρουγουάης", + "currency-display-name-vef": "Μπολιβάρ Βενεζουέλας", + "currency-display-name-vnd": "Ντονγκ Βιετνάμ", + "currency-display-name-zar": "Ραντ Νότιας Αφρικής", + "current-network": "Τρέχων δίκτυο", + "current-pin": "Εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης", + "current-pin-description": "Εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης για να συνεχίσετε", + "custom": "Προσαρμοσμένο", + "custom-networks": "Προσαρμοσμένα δίκτυα", + "custom-seed-phrase": "Μη έγκυρη φράση seed", + "custom-seed-phrase-text-1": "Αυτή η φράση seed δεν ταιριάζει με το υποστηριζόμενο λεξικό μας. Ελέγξτε για λέξεις με ορθογραφικά λάθη.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Αποδοχή και Άνοιγμα", + "dapp-starter-pack-description": "Να και κάποια crypto για να ξεκινήσετε! Χρησιμοποιήστε τα για να λάβετε αυτοκόλλητα, ένα όνομα ENS και να δοκιμάσετε dapps", + "dapp-starter-pack-title": "Πακέτο εκκίνησης", + "dapp-would-like-to-connect-wallet": "θα ήθελε να συνδεθεί στο", + "dapps": "ÐApps", + "dapps-permissions": "Δικαιώματα DApp", + "dark": "Σκοτεινό", + "data": "Δεδομένα", + "data-syncing": "Συγχρονισμός δεδομένων", + "datetime-ago": "πριν", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "one": "μέρα", + "other": "μέρες" + }, + "datetime-day-short": { + "one": "Μ", + "other": "Μ" + }, + "datetime-hour": { + "one": "ώρα", + "other": "ώρες" + }, + "datetime-hour-short": { + "one": "Ω", + "other": "Ω" + }, + "datetime-minute": { + "one": "λεπτό", + "other": "λεπτά" + }, + "datetime-minute-short": { + "one": "Λ", + "other": "Λ" + }, + "datetime-second": { + "one": "δευτερόλεπτο", + "other": "δευτερόλεπτα" + }, + "datetime-second-short": { + "one": "Τώρα", + "other": "Μήνα" + }, + "datetime-today": "σήμερα", + "datetime-yesterday": "εχθές", + "decimals": "Δεκαδικά", + "decline": "Απόρριψη", + "decryption-failed-content": "Παρουσιάστηκε σφάλμα κατά την αποκρυπτογράφηση των δεδομένων σας. Ίσως χρειαστεί να διαγράψετε τα παλιά σας δεδομένα και να δημιουργήσετε έναν νέο λογαριασμό. Πατήστε \"Εφαρμογή\" για διαγραφή ή \"Ακύρωση\" για να δοκιμάσετε ξανά", + "default": "Προκαθορισμένο", + "default-assets": "Προεπιλεγμένα ERC20 και ERC721", + "delete": "Διαγραφή", + "delete-account": "Διαγραφή λογαριασμού", + "delete-and-leave-group": "Διαγραφή και έξοδος από την ομάδα", + "delete-bootnode": "Διαγραφή bootnode", + "delete-bootnode-are-you-sure": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον bootnode;", + "delete-bootnode-title": "Διαγραφή bootnode", + "close-chat": "Διαγραφή συνομιλίας", + "close-chat-confirmation": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη συζήτηση;", + "delete-confirmation": "Διαγραφή;", + "delete-mailserver": "Διαγραφή κόμβου ιστορικού", + "delete-mailserver-are-you-sure": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον κόμβο ιστορικού;", + "delete-mailserver-title": "Διαγραφή κόμβου ιστορικού", + "delete-message": "Διαγραφή μηνύματος", + "delete-my-account": "Διαγραφή του λογαριασμού μου", + "delete-my-profile": "Διαγραφή του προφίλ μου", + "delete-network-confirmation": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το δίκτυο;", + "delete-network-error": "Συνδεθείτε σε διαφορετικό δίκτυο πριν διαγράψετε αυτό", + "delete-network-title": "Διαγραφή δικτύου;", + "delete-profile": "Διαγραφή προφίλ", + "delete-profile-warning": "Προειδοποίηση: Εάν δεν έχετε γράψει τη φράση seed σας, θα χάσετε την πρόσβαση στα χρήματά σας μετά τη διαγραφή του προφίλ σας", + "deny": "Απόρριψη", + "derivation-path": "Διαδρομή προέλευσης", + "description": "Περιγραφή", + "dev-mode": "Λειτουργία ανάπτυξης", + "dev-mode-settings": "Ρυθμίσεις λειτουργίας ανάπτυξης", + "device-syncing": "Συγχρονισμός συσκευής", + "devices": "Συσκευές", + "disable": "απενεργοποίηση", + "disabled": "Απενεργοποιημένα", + "disconnected": "Συνομιλία εκτός σύνδεσης", + "discover": "Ανακαλύψτε", + "dismiss": "Απόρριψη", + "done": "Έγινε", + "dont-ask": "Μη με ξαναρωτήσεις", + "edit": "Επεξεργασία", + "edit-favourite": "Επεξεργασία αγαπημένου", + "edit-group": "Επεξεργασία ομάδας", + "edit-profile": "Επεξεργασία προφίλ", + "empty-chat-description": "Δεν υπάρχουν μηνύματα\n σε αυτήν τη συνομιλία ακόμα", + "empty-chat-description-one-to-one": "Όποια μηνύματα στέλνετε εδώ είναι κρυπτογραφημένα και μπορούν να διαβαστούν μόνο από εσάς και ", + "empty-chat-description-public": "Ήταν ήσυχα εδώ τις τελευταίες {{quiet-hours}}. Ξεκινήστε τη συνομιλία ή ", + "empty-chat-description-public-share-this": "μοιραστείτε αυτήν τη συνομιλία.", + "empty-pending-invitations-descr": "Άτομα που επιθυμούν να συμμετάσχουν στην ομάδα\n μέσω συνδέσμου πρόσκλησης θα εμφανίζονται εδώ", + "empty-tab": "Κενή καρτέλα", + "enable": "Ενεργοποίηση", + "enable-all": "Ενεργοποίηση όλων", + "enable-link-previews": "Ενεργοποίηση προεπισκοπήσεων συνδέσμων στη συνομιλία;", + "encrypt-with-password": "Κρυπτογράφηση με κωδικό πρόσβασης", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Προσθήκη ονόματος χρήστη", + "ens-agree-to": "Συμφωνώ να", + "ens-chat-settings": "Ρυθμίσεις συνομιλίας", + "ens-custom-domain": "Προσαρμοσμένος τομέας", + "ens-custom-username-hints": "Πληκτρολογήστε ολόκληρο το όνομα χρήστη, συμπεριλαμβανομένου του προσαρμοσμένου τομέα, όπως username.domain.eth", + "ens-custom-username-taken": "Το όνομα χρήστη δεν σας ανήκει :(", + "ens-deposit": "Κατάθεση", + "ens-dismiss-message": "Κάντε κλικ εδώ για απόρριψη", + "ens-displayed-with": "Τα μηνύματά σας εμφανίζονται σε άλλους με", + "ens-get-name": "Αποκτήστε ένα καθολικό όνομα χρήστη", + "ens-got-it": "Εντάξει, το κατάλαβα", + "ens-locked": "Το όνομα χρήστη είναι κλειδωμένο. Δεν θα μπορείτε να το απελευθερώσετε μέχρι {{date}}", + "ens-name-content": "Προσαρμοσμένο ψευδώνυμο για το κλειδί συνομιλίας που μπορείτε να καταχωρήσετε χρησιμοποιώντας την υπηρεσία ονόματος Ethereum. Τα ονόματα ENS είναι αποκεντρωμένα ονόματα χρήστη.", + "ens-name-not-found": "Δεν είναι δυνατή η επίλυση του ονόματος ENS", + "ens-name-title": "Όνομα ENS", + "ens-network-restriction": "Διατίθεται μόνο στο Mainnet", + "ens-no-usernames": "Δεν έχετε συνδεδεμένο όνομα χρήστη", + "ens-powered-by": "Με την υποστήριξη των Ethereum Name Services", + "ens-primary-username": "Κύριο όνομα χρήστη", + "ens-register": "Εγγραφή", + "ens-registration-failed": "Για να καταχωρήσετε το όνομα χρήστη, δοκιμάστε ξανά.", + "ens-registration-failed-title": "Η συναλλαγή απέτυχε", + "ens-registration-failure": "Η εγγραφή απέτυχε", + "ens-registration-in-progress": "Η εγγραφή βρίσκεται σε εξέλιξη ...", + "ens-release-username": "Απελευθερώστε το όνομα χρήστη", + "ens-remove-hints": "Η κατάργηση θα αποσυνδέσει το όνομα χρήστη από το κλειδί σας.", + "ens-remove-username": "Κατάργηση ονόματος χρήστη", + "ens-saved": " είναι πλέον συνδεδεμένο με το κλειδί συνομιλίας και μπορεί να χρησιμοποιηθεί στο Status.", + "ens-saved-title": "Προστέθηκε όνομα χρήστη", + "ens-show-username": "Εμφάνιση του ονόματος χρήστη ENS στις συζητήσεις", + "ens-terms-header": "Όροι εγγραφής ονόματος", + "ens-terms-point-1": "Τα χρήματα κατατίθενται για 1 έτος. Το SNT σας θα κλειδωθεί, αλλά δεν θα δαπανηθεί.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Μητρώο ENS).", + "ens-terms-point-2": "Μετά από 1 έτος, μπορείτε να απελευθερώσετε το όνομα και να πάρετε την κατάθεσή σας πίσω, ή να μην κάνετε καμία ενέργεια για να κρατήσετε το όνομα.", + "ens-terms-point-3": "Εάν οι όροι του συμβολαίου αλλάξουν -- π.χ. το Status κάνει αναβάθμιση του συμβολαίου -- ο χρήστης έχει το δικαίωμα να αποδεσμεύσει το όνομα χρήστη ανεξάρτητα από το χρόνο κράτησης.", + "ens-terms-point-4": "Ο ελεγκτής συμβολαίου δεν μπορεί να αποκτήσει πρόσβαση στα κατατεθειμένα σας χρήματα. Μπορούν να μετακινηθούν μόνο πίσω στη διεύθυνση που τα έστειλε.", + "ens-terms-point-5": "Οι διευθύνσεις σας θα συσχετιστούν δημόσια με το ENS όνομά σας.", + "ens-terms-point-6": "Τα ονόματα χρήστη δημιουργούνται ως κόμβοι υποτομέα του stateofus.eth και υπόκεινται στους όρους του έξυπνου συμβολαίου ENS.", + "ens-terms-point-7": "Εξουσιοδοτείτε το συμβόλαιο για τη μεταφορά SNT εκ μέρους σας. Αυτό μπορεί να συμβεί μόνο όταν εγκρίνετε μια συναλλαγή για την εξουσιοδότηση της μεταφοράς.", + "ens-terms-point-8": "Αυτοί οι όροι διασφαλίζονται από τη λογική του έξυπνου συμβολαίου στις διευθύνσεις:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "Όροι εγγραφής ονόματος.", + "ens-test-message": "Γεια", + "ens-transaction-pending": "Εκκρεμεί συναλλαγή...", + "ens-understand": "Κατανοώ ότι η διεύθυνση πορτοφολιού μου θα συνδεθεί δημόσια με το όνομα χρήστη μου.", + "ens-username": "Όνομα χρήστη ENS", + "ens-username-already-added": "Το όνομα χρήστη είναι ήδη συνδεδεμένο με το κλειδί συνομιλίας σας και μπορεί να χρησιμοποιηθεί εντός του Status.", + "ens-username-available": "✓ Διαθέσιμο όνομα χρήστη!", + "ens-username-connected": "Αυτό το όνομα χρήστη σας ανήκει και συνδέεται με το κλειδί συνομιλίας σας.", + "ens-username-connected-continue": "Συνεχίστε να ορίζετε «Εμφάνιση του ονόματος χρήστη ENS μου στις συζητήσεις».", + "ens-username-connected-with-different-key": "Εάν συνεχίσετε, απαιτείται μια συναλλαγή για τη σύνδεση του ονόματος χρήστη με το τρέχον κλειδί συνομιλίας σας.", + "ens-username-connection-confirmation": "{{username}} θα συνδεθεί μόλις ολοκληρωθεί η συναλλαγή.", + "ens-username-hints": "Τουλάχιστον 4 χαρακτήρες. Λατινικά γράμματα, αριθμούς και πεζά μόνο.", + "ens-username-invalid": "Γράμματα και αριθμοί μόνο.", + "ens-username-owned": "✓ Το όνομα χρήστη ανήκει σε εσάς. ", + "ens-username-owned-continue": "Εάν συνεχίσετε, θα συνδέσετε αυτό το όνομα χρήστη με το κλειδί συνομιλίας σας.", + "ens-username-registration-confirmation": "Ωραία! Είστε κάτοχος του {{username}} μόλις ολοκληρωθεί η συναλλαγή.", + "ens-username-taken": "Το όνομα χρήστη χρησιμοποιείται ήδη :(", + "ens-username-you-can-follow-progress": "Μπορείτε να παρακολουθήσετε την πρόοδο στην ενότητα Ιστορικό Συναλλαγών του πορτοφολιού σας.", + "ens-usernames": "ENS ονόματα χρήστη", + "ens-usernames-details": "Καταχωρήστε ένα καθολικό όνομα χρήστη ώστε να αναγνωρίζεται εύκολα από άλλους χρήστες", + "ens-want-custom-domain": "Έχω ένα όνομα σε άλλο τομέα", + "ens-want-domain": "Θέλω έναν τομέα stateofus.eth", + "ens-welcome-hints": "Τα ονόματα ENS μετατρέπουν αυτές τις πολύ μεγάλες διευθύνσεις σε μοναδικά ονόματα χρήστη.", + "ens-welcome-point-customize": "Ένα όνομα ENS μπορεί να αντικαταστήσει το τυχαίο όνομά σας 3 λέξεων στη συνομιλία. Γίνετε @yourname αντί για {{name}}.", + "ens-welcome-point-customize-title": "Προσαρμόστε το όνομα της συνομιλίας σας", + "ens-welcome-point-receive": "Άλλοι μπορούν να σας στείλουν χρήματα μέσω συνομιλίας με ένα απλό βήμα.", + "ens-welcome-point-receive-title": "Λάβετε συναλλαγές στη συνομιλία", + "ens-welcome-point-register": "Εγγραφείτε μία φορά για να διατηρήσετε το όνομα για πάντα. Μετά από 1 έτος, μπορείτε να αποδεσμεύσετε το όνομα και να λάβετε ξανά τα SNT.", + "ens-welcome-point-register-title": "10 SNT για εγγραφή", + "ens-welcome-point-simplify": "Μπορείτε να λάβετε χρήματα στο εύχρηστο προς διαμοιρασμό όνομα ENS αντί για το δεκαεξαδικό κρυπτογράφημα (0x...).", + "ens-welcome-point-simplify-title": "Απλοποιήστε τη διεύθυνση ETH σας", + "ens-welcome-point-verify": "Μπορείτε να επαληθεύσετε και να προσθέσετε τα ονόματα χρήστη που σας ανήκουν στα επόμενα βήματα.", + "ens-welcome-point-verify-title": "Έχετε ήδη όνομα χρήστη;", + "ens-your-username": "Το όνομα χρήστη σας", + "ens-your-usernames": "Τα ονόματα χρήστη σας", + "ens-your-your-name": "Το ENS όνομα σας", + "enter-12-words": "Εισαγάγετε τις 12 λέξεις της φράσης seed σας, χωρισμένες με μεμονωμένα κενά", + "enter-a-private-key": "Εισαγάγετε ένα ιδιωτικό κλειδί", + "enter-a-seed-phrase": "Εισαγάγετε μια φράση seed", + "enter-address": "Εισαγάγετε διεύθυνση", + "enter-contact-code": "Εισαγάγετε το όνομα χρήστη ENS ή το κλειδί συνομιλίας", + "enter-pair-code": "Εισαγάγετε τον κωδικό σύζευξης", + "enter-pair-code-description": "Ο κωδικός σύζευξης εμφανίστηκε σε εσάς κατά τη ρύθμιση της Keycard", + "enter-password": "Εισάγετε τον κωδικό πρόσβασης", + "enter-pin": "Εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης", + "enter-puk-code": "Εισαγάγετε τον κωδικό PUK", + "enter-puk-code-description": "Ο 6ψήφιος κωδικός πρόσβασης έχει αποκλειστεί.\n Εισαγάγετε τον κωδικό PUK για να ξεμπλοκάρετε τον κωδικό πρόσβασης.", + "enter-recipient-address-or-username": "Εισαγάγετε τη διεύθυνση ή το όνομα χρήστη του παραλήπτη", + "enter-seed-phrase": "Εισαγάγετε φράση seed", + "enter-url": "Εισαγάγετε διεύθυνση URL", + "enter-watch-account-address": "Σάρωση κωδικού QR\n ή\n εισαγάγετε τη διεύθυνση για παρακολούθηση", + "enter-word": "Εισαγάγετε λέξη", + "enter-your-code": "Εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης", + "enter-your-password": "Εισάγετε τον κωδικό σας", + "error": "Σφάλμα", + "error-unable-to-get-balance": "Δεν είναι δυνατή η λήψη υπολοίπου", + "error-unable-to-get-prices": "Σφάλμα μετατροπής νομίσματος. Ανανεώστε την οθόνη σας για να δοκιμάσετε ξανά.", + "error-unable-to-get-token-balance": "Δεν είναι δυνατή η λήψη υπολοίπου token", + "errors": "Σφάλματα", + "eth": "ETH", + "ethereum-account": "Λογαριασμός Ethereum", + "ethereum-address": "Διεύθυνση Ethereum", + "ethereum-node-started-incorrectly-description": "Ο κόμβος Ethereum ξεκίνησε με εσφαλμένη ρύθμιση παραμέτρων, η εφαρμογή θα διακοπεί για ανάκτηση από αυτήν την κατάσταση. Ρυθμισμένο αναγνωριστικό δικτύου = {{network-id}}, πραγματικό = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ο κόμβος Ethereum ξεκίνησε εσφαλμένα", + "etherscan-lookup": "Κοιτάξτε στο Ethercan", + "export-account": "Εξαγωγή λογαριασμού", + "external-storage-denied": "Δεν επιτρέπεται η πρόσβαση σε εξωτερικό χώρο αποθήκευσης", + "failed": "Απέτυχε", + "faq": "Συχνές ερωτήσεις", + "favourite": "Αγαπημένο", + "favourite-description": "Οι αγαπημένοι σας ιστότοποι θα εμφανίζονται εδώ", + "favourites": "Αγαπημένα", + "favourites-empty": "Οι διευθύνσεις που προστέθηκαν στα αγαπημένα θα εμφανίζονται εδώ", + "fetch-messages": "↓ Λήψη μηνυμάτων", + "fetch-timeline": "↓ Λήψη", + "find": "Εύρεση", + "finish": "Τέλος", + "finishing-card-setup": "Ολοκληρώνεται η ρύθμιση της κάρτας", + "fleet": "Στόλος", + "fleet-settings": "Ρυθμίσεις στόλου", + "follow-your-interests": "Μεταβείτε σε μια δημόσια συνομιλία και γνωρίστε νέα άτομα", + "free": "↓ Δωρεάν", + "from": "Από", + "gas-limit": "Όριο Gas", + "gas-price": "Τιμή Gas", + "gas-used": "Χρησιμοποιημένο gas", + "generate-a-key": "Δημιουργία κλειδιών", + "generate-a-new-account": "Δημιουργία λογαριασμού", + "generate-a-new-key": "Δημιουργήστε ένα νέο κλειδί", + "generate-account": "Δημιουργία κλειδιών", + "generate-an-account": "Δημιουργία λογαριασμού", + "generate-new-key": "Δημιουργία κλειδιών", + "generating-codes-for-pairing": "> Λήψη λογισμικού προϊόντος στην κάρτα\n > Δημιουργία κωδικών ξεκλειδώματος & σύζευξης", + "generating-keys": "Δημιουργούνται κλειδιά...", + "generating-mnemonic": "Δημιουργία φράσης seed", + "get-a-keycard": "Αποκτήστε μια Keycard", + "get-started": "Ξεκινήστε", + "get-status-at": "Λήψη Status http:\/\/status.im", + "get-stickers": "Λάβετε αυτοκόλλητα", + "give-permissions-camera": "Δώστε άδεια\nγια πρόσβαση στην κάμερα", + "glossary": "Γλωσσάριο", + "go-to-settings": "Μεταβείτε στις Ρυθμίσεις...", + "got-it": "Το έπιασα", + "grant-face-id-permissions": "Για να παραχωρήσετε την απαιτούμενη άδεια στο Face ID, μεταβείτε στις ρυθμίσεις του συστήματός σας και βεβαιωθείτε ότι το Status > Face ID είναι επιλεγμένο", + "group-chat": "Ομαδική συζήτηση", + "group-chat-admin": "Διαχειριστής", + "group-chat-admin-added": "Ο χρήστης **{{member}}** έχει γίνει διαχειριστής", + "group-chat-all-contacts-invited": "Όλες οι επαφές σας είναι ήδη στην ομάδα", + "group-chat-created": "Ο χρήστης **{{member}}** δημιούργησε την ομάδα **{{name}}**", + "group-chat-decline-invitation": "Απόρριψη πρόσκλησης", + "group-chat-member-added": "Ο χρήστης **{{member}}** έχει προσκληθεί", + "group-chat-member-joined": "Ο χρήστης **{{member}}** συμμετέχει στην ομάδα", + "group-chat-member-removed": "Ο χρήστης **{{member}}** αποχώρησε από την ομάδα", + "group-chat-members-count": "{{selected}} \/ {{max}} μέλη", + "group-chat-name-changed": "Ο χρήστης **{{member}}** άλλαξε το όνομα της ομάδας σε **{{name}}**", + "group-chat-no-contacts": "Δεν έχετε ακόμα επαφές.\n Προσκαλέστε τους φίλους σας να για να ξεκινήσετε τη συζήτηση", + "group-info": "Πληροφορίες ομάδας", + "group-invite": "Ομαδική πρόσκληση", + "group-invite-link": "Σύνδεσμος πρόσκλησης ομάδας", + "group-membership-request": "Αίτηση μέλους ομάδας", + "gwei": "Gwei", + "has-permissions": "έχει άδεια πρόσβασης", + "hash": "Hash", + "help": "βοήθεια", + "help-capitalized": "Βοήθεια", + "help-center": "Κέντρο βοήθειας", + "hide-content-when-switching-apps": "Αποκλεισμός στιγμιότυπων οθόνης", + "hide-content-when-switching-apps-ios": "Απόκρυψη προεπισκόπησης", + "history": "Ιστορικό", + "history-nodes": "Κόμβοι ιστορικού", + "hold-card": "Κρατήστε την κάρτα στο πίσω μέρος\n του τηλεφώνου σας", + "home": "Αρχική", + "hooks": "Hooks", + "how-it-works": "Πώς λειτουργεί", + "http-gateway-error": "Ουπς, η αίτηση απέτυχε!", + "identifier": "Αναγνωριστικό", + "image": "Εικόνα", + "image-remove-current": "Κατάργηση τρέχουσας φωτογραφίας", + "image-source-gallery": "Επιλέξτε από τη συλλογή", + "image-source-make-photo": "Λήψη", + "image-source-title": "Επεξεργασία εικόνας", + "in-contacts": "στις επαφές", + "incoming": "Εισερχόμενα", + "incoming-transaction": "Εισερχόμενη συναλλαγή", + "incorrect-code": [ + "οδός", + "Δυστυχώς, ο κωδικός δεν ήταν σωστός, εισαγάγετε τον ξανά" + ], + "increase-gas": "Αύξηση Gas", + "initialization": "Αρχικοποίηση", + "install": "↓ Εγκατάσταση", + "intro-message1": "Καλώς ήλθατε στο Status!\n Πατήστε αυτό το μήνυμα για να ορίσετε τον κωδικό πρόσβασης σας και να ξεκινήσετε.", + "intro-privacy-policy-note1": "Το Status δεν συλλέγει ούτε επωφελείται από τα προσωπικά σας δεδομένα. Συνεχίζοντας, συμφωνείτε με το ", + "intro-privacy-policy-note2": "πολιτική απορρήτου", + "intro-text": "Το Status είναι η είσοδος σας στον αποκεντρωμένο ιστό", + "intro-text1": "Συνομιλήστε μέσω ενός peer-to-peer, κρυπτογραφημένου δικτύου όπου τα μηνύματα δεν μπορούν να λογοκριθούν ή να παραβιαστούν", + "intro-text2": "Αποστολή και λήψη ψηφιακών περιουσιακών στοιχείων οπουδήποτε στον κόσμο - δεν απαιτείται τραπεζικός λογαριασμός", + "intro-text3": "Εξερευνήστε παιχνίδια, συναλλαγές και κοινωνικά δίκτυα όπου μόνο εσείς κατέχετε τα δεδομένα σας", + "intro-title1": "Πραγματικά ιδιωτική επικοινωνία", + "intro-title2": "Ασφαλές πορτοφόλι crypto", + "intro-title3": "Αποκεντρωμένες εφαρμογές", + "intro-wizard-text1": "Ένα σύνολο κλειδιών ελέγχει το λογαριασμό σας. Τα κλειδιά σας ζουν στο τηλέφωνό σας, ώστε μόνο εσείς να μπορείτε να τα χρησιμοποιήσετε", + "intro-wizard-text2": "Ένα κλειδί είναι για συνομιλία. Έρχεται με ένα αναγνώσιμο όνομα που δεν μπορεί να αλλάξει.", + "intro-wizard-text3": "Εάν έχετε Keycard, αποθηκεύστε τα κλειδιά σας εκεί για βελτιωμένη ασφάλεια.", + "intro-wizard-text4": "Ασφαλίστε και κρυπτογραφήστε τα κλειδιά σας", + "intro-wizard-text6": "Το Status θα σας ειδοποιήσει για νέα μηνύματα. Μπορείτε να επεξεργαστείτε τις προτιμήσεις ειδοποιήσεων αργότερα στις ρυθμίσεις", + "intro-wizard-title-alt4": "Δημιούργησε έναν κωδικό πρόσβασης", + "intro-wizard-title-alt5": "Επιβεβαιώστε τον κωδικό πρόσβασης σας", + "intro-wizard-title1": "Πάρτε τα κλειδιά σας", + "intro-wizard-title2": "Επιλέξτε ένα όνομα συνομιλίας", + "intro-wizard-title3": "Επιλογή χώρου αποθήκευσης κλειδιών", + "intro-wizard-title4": "Δημιουργήστε έναν 6ψήφιο κωδικό πρόσβασης", + "intro-wizard-title5": "Επιβεβαιώστε τον κωδικό πρόσβασης", + "intro-wizard-title6": "Ενεργοποίηση ειδοποιήσεων", + "introduce-yourself": "Συστήστε τον εαυτό σας με ένα σύντομο μήνυμα", + "invalid-address-qr-code": "Ο σαρωμένος κωδικός QR δεν περιέχει έγκυρη διεύθυνση", + "invalid-format": "Μη έγκυρη μορφή\nΠρέπει να είναι {{format}}", + "invalid-key-confirm": "Εφαρμογή", + "invalid-key-content": "Η βάση δεδομένων δεν μπορεί να κρυπτογραφηθεί επειδή ένα αρχείο είναι κατεστραμμένο. Τα χρήματα και το κλειδί συνομιλίας σας είναι ασφαλή. Δεν είναι δυνατή η επαναφορά άλλων δεδομένων, όπως οι συζητήσεις και οι επαφές σας. Το κουμπί \"{{erase-multiaccounts-data-button-text}}\", θα καταργήσει όλα τα άλλα δεδομένα και σας επιτρέπει να έχετε πρόσβαση στα χρήματά σας και να στέλνετε μηνύματα", + "invalid-number": "Μη έγκυρος αριθμός", + "invalid-pairing-password": "Μη έγκυρος κωδικός σύζευξης", + "invalid-public-chat-topic": "Μη έγκυρο θέμα δημόσιας συνομιλίας", + "invalid-range": "Μη έγκυρη μορφή, πρέπει να είναι μεταξύ {{min}} και {{max}}", + "invite": "Προσκαλέστε", + "invite-button": "Προσκαλέστε", + "invite-chat-accept": "Αποδέχομαι", + "invite-chat-intro": "Σας παρέπεμψε ένας φίλος για να συμμετάσχετε στο Status. Εδώ είναι μερικά crypto για να ξεκινήσετε! Χρησιμοποιήστε τα για να καταχωρήσετε ένα όνομα ENS ή να αγοράσετε ένα πακέτο αυτοκόλλητων", + "invite-chat-name": "Παραπομπή φίλου", + "invite-chat-pending": "Εκκρεμούν", + "invite-chat-rule": "Η αποδοχή θα ανταμείψει επίσης το φίλο σας με ένα μπόνους παραπομπής κρυπτογράφησης", + "invite-chat-starter-pack": "Πακέτο εκκίνησης", + "invite-friends": "Πρόσκληση φίλων", + "invite-instruction-fifth": "Μπορείτε να επιλέξετε να εξαργυρώσετε το μπόνους παραπομπής σας ανά πάσα στιγμή.", + "invite-instruction-first": "Στέλνετε έναν μοναδικό σύνδεσμο πρόσκλησης στον φίλο σας για λήψη και συμμετοχή στο Status", + "invite-instruction-fourth": "Λαμβάνετε το μπόνους παραπομπής και ο φίλος σας το Πακέτο Εκκίνησης", + "invite-instruction-second": "Ο φίλος σας κατεβάζει το Status και δημιουργεί έναν λογαριασμό (σε Android)", + "invite-instruction-third": "Ξεκινά μια συνομιλία με τον φίλο σας, όπου επιβεβαιώνουν την παραπομπή σας", + "invite-privacy-policy1": "Με την αποδοχή συμφωνείτε με το πρόγραμμα παραπομπής", + "invite-privacy-policy2": "Όροι και Προϋποθέσεις.", + "invite-receive-account": "Λογαριασμός για να λάβετε το μπόνους παραπομπής σας", + "invite-reward": "Κερδίστε crypto για κάθε φίλο που προσκαλείτε!", + "invite-reward-friend": "Φίλος: ", + "invite-reward-friend-description": "Ο φίλος σας θα λάβει ένα πακέτο εκκίνησης που αποτελείται από μερικά {{reward}} για να ξεκινήσει", + "invite-reward-friend-name": "Πακέτο εκκίνησης", + "invite-reward-you": "Εσείς: ", + "invite-reward-you-description": "Προσκαλέστε έναν φίλο και λάβετε {{reward}} ως μπόνους παραπομπής. Χρησιμοποιήστε το για να λάβετε αυτοκόλλητα, ένα όνομα ENS και να δοκιμάσετε dapps", + "invite-reward-you-name": "Μπόνους παραπομπής", + "invite-select-account": "Επιλέξτε έναν λογαριασμό για να λάβετε το μπόνους παραπομπής σας", + "invite-warning": "Αυτή η προσφορά ισχύει μόνο για χρήστες συσκευών Android, οι οποίοι δεν είναι κάτοικοι των ΗΠΑ. Ο φίλος πρέπει να επιβεβαιώσει την παραπομπή εντός 7 ημερών", + "invited": "προσκάλεσε", + "join": "Συμμετοχή", + "join-group-chat": "Συμμετοχή στην ομάδα", + "join-group-chat-description": "Ο χρήστης {{username}} σας προσκάλεσε να συμμετάσχετε στην ομάδα {{group-name}}", + "join-me": "Γεια έλα μαζί μου στο Status: {{url}}", + "join-new-private-chat": "Ξεκινήστε μια νέα ιδιωτική συνομιλία", + "join-new-public-chat": "Λάβετε μέρος σε μια δημόσια συνομιλία", + "joined-group-chat-description": "Έχετε ενταχθεί στην ομάδα {{group-name}} με πρόσκληση από {{username}}", + "key": "Κλειδί", + "keycard": "Keycard", + "keycard-access-reset": "Έχει γίνει επαναφορά πρόσβασης στην Keycard", + "keycard-applet-install-instructions": "Για να εγκαταστήσετε το applet ακολουθήστε τις οδηγίες στη διεύθυνση https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Δοκιμάστε να μετακινήσετε την κάρτα γύρω για να βρείτε τη λειτουργία ανάγνωσης NFC στη συσκευή σας", + "keycard-awaiting-title": "Συνεχίζεται η αναζήτηση...", + "keycard-blocked": "Η Keycard έχει αποκλειστεί.\n Πρέπει να επαναφέρετε την κάρτα για να συνεχίσετε να τη χρησιμοποιείτε.", + "keycard-can-use-with-new-passcode": "Μπορείτε να χρησιμοποιήσετε αυτήν την κάρτα με τον νέο κωδικό πρόσβασης", + "keycard-cancel-setup-text": "Αυτό θα ακυρώσει τη ρύθμιση της κάρτας. Συνιστάται ιδιαίτερα να ολοκληρώσετε τη ρύθμιση προκειμένου να χρησιμοποιήσετε την κάρτα-κλειδί. Θέλετε πραγματικά να ακυρώσετε;", + "keycard-cancel-setup-title": "Επικίνδυνη λειτουργία", + "keycard-connected-description": "Δοκιμάστε να κρατήσετε την κάρτα ακίνητη", + "keycard-connected-title": "Συνδεδεμένος", + "keycard-desc": "Έχετε Keycard; Αποθηκεύστε τα κλειδιά σας σε αυτήν· θα την χρειαστείτε για συναλλαγές", + "keycard-dont-ask-card": "Μη ζητήσετε κάρτα για σύνδεση", + "keycard-enter-new-passcode": "Εισαγάγετε νέο κωδικό πρόσβασης {{step}}\/2", + "keycard-error-description": "Συνδέστε ξανά την κάρτα για να συνεχίσετε", + "keycard-error-title": "Η σύνδεση χάθηκε", + "keycard-free-pairing-slots": "Η Keycard έχει {{n}} υποδοχές δωρεάν ζεύξης ", + "keycard-has-multiaccount-on-it": "Αυτή η κάρτα είναι γεμάτη. Κάθε κάρτα μπορεί να κρατήσει ένα κύριο keypair", + "keycard-init-description": "Βάλτε την κάρτα στο πίσω μέρος του τηλεφώνου σας για να συνεχίσετε", + "keycard-init-title": "Αναζήτηση καρτών...", + "keycard-is-blocked-details": "Δεν μπορείτε πλέον να χρησιμοποιήσετε αυτήν την κάρτα για πρόσβαση ή εγγραφή για αυτόν τον λογαριασμό. Υπήρξαν πάρα πολλές αποτυχημένες προσπάθειες κωδικού πρόσβασης και PUK.", + "keycard-is-blocked-instructions": "Για να αποκτήσετε πρόσβαση στον λογαριασμό σας, επανεγκαταστήστε το Status και χρησιμοποιήστε μια νέα Keycard, χρησιμοποιήστε ένα διαφορετικό πορτοφόλι ή επαναφέρετε την Keycard χειροκίνητα.", + "keycard-is-blocked-title": "Η Keycard έχει αποκλειστεί", + "keycard-is-frozen-details": "Για την προστασία των περιουσιακών σας στοιχείων, η κάρτα σας έχει παγώσει. Επαναφέρετε την πρόσβαση στην κάρτα για να ξεκλειδώσετε κλειδιά και να στείλετε συναλλαγές. Δημιουργήστε έναν νέο κωδικό πρόσβασης και εισαγάγετε το PUK για πρόσβαση στους λογαριασμούς σας σε αυτήν την κάρτα", + "keycard-is-frozen-reset": "Επαναφορά πρόσβασης στην κάρτα", + "keycard-is-frozen-title": "Η Keycard έχει παγώσει", + "keycard-onboarding-finishing-header": "Ολοκλήρωση", + "keycard-onboarding-intro-header": "Αποθηκεύστε τα κλειδιά σας στην Keycard", + "keycard-onboarding-intro-text": "Ετοιμαστείτε, αυτό μπορεί να διαρκέσει λίγα λεπτά, αλλά είναι σημαντικό να προστατέψετε τον λογαριασμό σας", + "keycard-onboarding-pairing-header": "Σύζευξη της κάρτας...", + "keycard-onboarding-preparing-header": "Προετοιμασία της κάρτας...", + "keycard-onboarding-puk-code-header": "Γράψτε τους κωδικούς\n και φυλάξτε τους με ασφάλεια", + "keycard-onboarding-recovery-phrase-description": "Χρειάζεστε αυτήν τη φράση seed για να πάρετε πίσω το κλειδί σας. Σημειώστε τη. Διατηρήστε την ασφαλή, εκτός σύνδεσης και διαχωρίστε την από αυτήν τη συσκευή.", + "keycard-onboarding-recovery-phrase-header": "Αντίγραφο ασφαλείας φράσης seed", + "keycard-onboarding-recovery-phrase-text": "Μόνο για τα μάτια σας . Αυτός είναι το μαγικό seed που χρησιμοποιείται για τη δημιουργία του κλειδιού σας.", + "keycard-onboarding-start-header": "Κρατήστε την κάρτα στο πίσω μέρος\n του τηλεφώνου σας για να ξεκινήσετε", + "keycard-onboarding-start-step1": "Δημιουργήστε έναν κωδικό πρόσβασης", + "keycard-onboarding-start-step1-text": "Περίπου 1 λεπτό. Δημιουργήστε έναν 6ψήφιο κωδικό πρόσβασης για κρυπτογράφηση των κλειδιών σας", + "keycard-onboarding-start-step2": "Σημειώστε το PUK και τον κωδικό σύζευξης", + "keycard-onboarding-start-step2-text": "Περίπου 1 λεπτό. Θα χρειαστείτε ένα κομμάτι χαρτί και ένα μολύβι για αυτό", + "keycard-onboarding-start-step3": "Δημιουργήστε αντίγραφα ασφαλείας για τη φράση seed", + "keycard-onboarding-start-step3-text": "Περίπου 1 λεπτό. Απαιτούνται επίσης ένα κομμάτι χαρτί και ένα μολύβι", + "keycard-onboarding-start-text": "Και διατηρήστε την κάρτα στην τηλεφωνική επαφή\n κατά τη διάρκεια της εγκατάστασης. Η εγκατάσταση θα διαρκέσει περίπου 4 λεπτά", + "keycard-processing-description": "Δοκιμάστε να κρατήσετε την κάρτα ακίνητη", + "keycard-processing-title": "Επεξεργασία...", + "keycard-recovery-intro-button-text": "Ξεκινήστε την ανάκτηση", + "keycard-recovery-intro-header": "Ανάκτηση κλειδιών που είναι αποθηκευμένα στην κάρτα-κλειδί", + "keycard-recovery-intro-text": "Εάν δημιουργήσατε κλειδιά χρησιμοποιώντας μια κάρτα-κλειδί πριν και τώρα θέλετε να χρησιμοποιήσετε αυτά τα κλειδιά σε αυτήν τη συσκευή", + "keycard-recovery-no-key-header": "Δεν υπάρχει τίποτα\nγια ανάκτηση εδώ", + "keycard-recovery-no-key-text": "Η Keycard σας δεν έχει αποθηκευμένο κλειδί σε αυτήν. Για να την χρησιμοποιήσετε, δημιουργήστε ένα νέο κλειδί και επιλέξτε την Keycard σας για να αποθηκεύσετε το κλειδί", + "keycard-recovery-phrase-confirm-header": "Επιβεβαιώστε τη φράση seed", + "keycard-recovery-phrase-confirmation-text": "Δεν θα έχετε δεύτερη ευκαιρία! Εάν χάσετε την πρόσβαση, χάνοντας για παράδειγμα την κάρτα-κλειδί σας, μπορείτε να αποκτήσετε πρόσβαση στα κλειδιά σας μόνο με τη φράση seed σας. Κανείς, εκτός από εσάς δεν έχει τη φράση seed σας. Σημειώστε τη. Κρατήστε την ΑΣΦΑΛΗ.", + "keycard-recovery-phrase-confirmation-title": "Σημειώσατε τη φράση seed;", + "keycard-recovery-success-header": "Τα κλειδιά σας έχουν ανακτηθεί με επιτυχία", + "keycard-redeem-title": "Εξαργύρωση σε", + "keycard-redeem-tx": "Εξαργύρωση περιουσιακών στοιχείων", + "keycard-redeem-tx-desc": "Πατήστε την κάρτα για να υπογράψετε και να λάβετε περιουσιακά στοιχεία", + "keycard-reset-passcode": "Επαναφορά κωδικού πρόσβασης", + "keycard-success-description": "Μπορείτε να αφαιρέσετε την κάρτα τώρα", + "keycard-success-title": "Επιτυχία", + "keycard-unauthorized-operation": "Δεν έχετε εξουσιοδότηση για την εκτέλεση αυτής της λειτουργίας.\n Πατήστε έγκυρη κάρτα και δοκιμάστε ξανά.", + "language": "Γλώσσα", + "learn-more": "Μάθετε περισσότερα", + "learn-more-about-keycard": "Μάθετε περισσότερα για την Keycard", + "leave": "Αποχώρηση", + "leave-chat": "Αποχώρηση από συνομιλία", + "leave-chat-confirmation": "Είστε βέβαιοι ότι θέλετε να αποχωρήσετε από τη συζήτηση;", + "leave-confirmation": "Αποχώρηση από συνομιλία", + "leave-group": "Αποχώρηση από την ομάδα", + "left": "αριστερά", + "les-ulc": "LES\/ULC", + "lets-go": "Πάμε", + "light": "Φωτεινό", + "linked-on": "Συνδέθηκε στις {{date}}", + "load-messages-before": "πριν από τις {{date}}", + "load-more-messages": "↓ Λήψη περισσότερων μηνυμάτων", + "load-more-timeline": "↓ Λήψη περισσότερων", + "loading": "Φόρτωση...", + "local-notifications": "Τοπικές ειδοποιήσεις", + "lock-app-with": "Κλείδωμα εφαρμογής με", + "log-level": "Επίπεδο καταγραφής", + "log-level-settings": "Ρυθμίσεις επιπέδου καταγραφής", + "logging": "Σύνδεση", + "logging-enabled": "Η σύνδεση ενεργοποιήθηκε;", + "login-pin-description": "Εισαγάγετε τον 6ψήφιο κωδικό πρόσβασης για να ξεκλειδώσετε τα κλειδιά σας", + "logout": "Αποσύνδεση", + "logout-app-content": "Ο λογαριασμός θα αποσυνδεθεί. Όταν το ξεκλειδώσετε ξανά, θα χρησιμοποιηθεί το επιλεγμένο δίκτυο", + "logout-are-you-sure": "Είστε σίγουροι ότι θέλετε\n να αποσυνδεθείτε;", + "logout-title": "Αποσύνδεση?", + "looking-for-cards": "Αναζήτηση καρτών...", + "lost-connection": "Χάθηκε η σύνδεση", + "mail-should-be-configured": "Ο πελάτης αλληλογραφίας πρέπει να ρυθμιστεί", + "mailserver-address": "Διεύθυνση κόμβου ιστορικού", + "mailserver-automatic": "Αυτόματη επιλογή", + "mailserver-automatic-switch-explanation": "Επιλέξτε τον ταχύτερο διαθέσιμο κόμβο ιστορικού", + "mailserver-connection-error": "Δεν ήταν δυνατή η σύνδεση στον κόμβο ιστορικού", + "mailserver-content": "Ένας κόμβος στο δίκτυο του Status που δρομολογεί και αποθηκεύει μηνύματα, για έως και 30 ημέρες.", + "mailserver-details": "Λεπτομέρειες κόμβου ιστορικού", + "mailserver-error-content": "Δεν ήταν δυνατή η πρόσβαση στον κόμβο ιστορικού που επιλέξατε.", + "mailserver-error-title": "Σφάλμα σύνδεσης με κόμβο ιστορικού", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Επιλέξτε έναν άλλο κόμβο ιστορικού", + "mailserver-reconnect": "Δεν ήταν δυνατή η σύνδεση στον κόμβο ιστορικού. Πατήστε για επανασύνδεση", + "mailserver-request-error-content": "Το ακόλουθο σφάλμα επιστράφηκε από τον κόμβο ιστορικού: {{error}}", + "mailserver-request-error-status": "Παρουσιάστηκε σφάλμα κατά την ανάκτηση ιστορικού, ελέγξτε τα αρχεία καταγραφής για λεπτομέρειες", + "mailserver-request-error-title": "Σφάλμα αιτήματος κόμβου ιστορικού", + "mailserver-request-retry": "Επανάληψη αιτήματος", + "mailserver-retry": "Επανάληψη", + "mailserver-title": "Κόμβος ιστορικού", + "main-currency": "Κύριο νόμισμα", + "main-networks": "Κύρια δίκτυα", + "main-wallet": "Κύριο πορτοφόλι", + "mainnet-network": "Κύριο δίκτυο", + "make-admin": "Κάντον διαχειριστή", + "mark-all-read": "Σήμανση όλων ως αναγνωσμένων", + "maybe-later": "Ίσως αργότερα.", + "members": { + "one": "1 μέλος", + "other": "{{count}} μέλη" + }, + "members-active": { + "one": "1 μέλος", + "other": "{{count}} μέλη" + }, + "members-active-none": "δεν υπάρχουν μέλη", + "members-count": "{{count}} μέλη", + "members-label": "Μέλη", + "members-limit-reached": "Συμπληρώθηκε το όριο των μελών", + "members-title": "Μέλη", + "membership-declined": "Το αίτημα ιδιότητας μέλους απορρίφθηκε", + "membership-description": "Η συμμετοχή στην ομάδα απαιτεί την αποδοχή από τον διαχειριστή της ομάδας", + "membership-none": "Κανένα", + "message": "Μήνυμα", + "message-not-sent": "Το μήνυμα δεν εστάλη", + "message-options-cancel": "Ακύρωση", + "message-reply": "Απάντηση", + "messages": "Μηνύματα", + "might-break": "Ίσως σπάσει μερικά ÐApps", + "migrations-failed-content": "{{message}}\n έκδοση διαγράμματος: αρχική {{initial-version}} , τρέχουσα {{current-version}} , τελευταία {{last-version}} \n\n Παρουσιάστηκε σφάλμα βάσης δεδομένων. Τα χρήματα και το κλειδί συνομιλίας σας είναι ασφαλή. Δεν είναι δυνατή η επαναφορά άλλων δεδομένων, όπως οι συζητήσεις και οι επαφές σας. Το κουμπί \"{{erase-multiaccounts-data-button-text}}\", θα καταργήσει όλα τα άλλα δεδομένα και σας επιτρέπει να έχετε πρόσβαση στα χρήματά σας και να στέλνετε μηνύματα.", + "mobile-network-ask-me": "Να ενημερώνομαι όταν βρίσκομαι σε δίκτυο κινητής τηλεφωνίας", + "mobile-network-continue-syncing": "Συνέχιση συγχρονισμού", + "mobile-network-continue-syncing-details": "Μπορείτε να το αλλάξετε αργότερα στις ρυθμίσεις", + "mobile-network-go-to-settings": "Μεταβείτε στις ρυθμίσεις", + "mobile-network-settings": "Δεδομένα κινητής τηλεφωνίας", + "mobile-network-sheet-configure": "Μπορείτε να ρυθμίσετε το συγχρονισμό σε περισσότερη\n λεπτομέρεια στο", + "mobile-network-sheet-offline": "Δεν υπάρχει Wi-Fi, ο συγχρονισμός μηνυμάτων απενεργοποιήθηκε.", + "mobile-network-sheet-offline-details": "Ο συγχρονισμός με χρήση δικτύου κινητής τηλεφωνίας είναι απενεργοποιημένος", + "mobile-network-sheet-remember-choice": "Θυμήσου την επιλογή μου", + "mobile-network-sheet-settings": "ρυθμίσεις", + "mobile-network-start-syncing": "Έναρξη συγχρονισμού", + "mobile-network-stop-syncing": "Διακοπή συγχρονισμού", + "mobile-network-stop-syncing-details": "Μέχρι να συνδεθείτε στο Wi-Fi;", + "mobile-network-use-mobile": "Χρήση δεδομένων κινητής τηλεφωνίας", + "mobile-network-use-mobile-data": "Το Status χρησιμοποιεί πολλά δεδομένα κατά το συγχρονισμό των συνομιλιών και του πορτοφολιού.", + "mobile-network-use-wifi": "Μόνο Wi-Fi", + "mobile-syncing-sheet-details": "Το Status χρησιμοποιεί πολλά δεδομένα κατά το συγχρονισμό των συνομιλιών και του πορτοφολιού.", + "mobile-syncing-sheet-title": "Συγχρονισμός με χρήση δεδομένων κινητής τηλεφωνίας;", + "more": "περισσότερα", + "multiaccount-exists-content": "Τα κλειδιά για αυτόν τον λογαριασμό υπάρχουν ήδη και δεν μπορούν να προστεθούν ξανά. Εάν έχετε χάσει τον κωδικό πρόσβασής σας ή την Keycard, απεγκαταστήστε την εφαρμογή, εγκαταστήστε ξανά και αποκτήστε πρόσβαση στα κλειδιά σας εισάγοντας τη φράση seed σας", + "multiaccount-exists-title": "Υπάρχουν ήδη κλειδιά για αυτόν τον λογαριασμό", + "multiaccounts-recover-enter-phrase-text": "Εισαγάγετε 12, 15, 18, 21 ή 24 λέξεις.\n Διαχωρίστε τις λέξεις με ένα μόνο διάστημα.", + "multiaccounts-recover-enter-phrase-title": "Εισαγάγετε τη φράση seed σας", + "mute": "Σίγαση", + "my-accounts": "Οι λογαριασμοί μου", + "my-accounts-empty": "Οι διαθέσιμοι λογαριασμοί σας θα εμφανίζονται εδώ", + "my-status": "Η κατάστασή μου", + "name": "Όνομα", + "name-of-token": "Το όνομα του token σας", + "name-optional": "Όνομα (προαιρετικό)", + "need-help": "Χρειάζεστε βοήθεια?", + "network": "Δίκτυο", + "network-chain": "Αλυσίδα δικτύου", + "network-details": "Λεπτομέρειες δικτύου", + "network-fee": "Χρέωση δικτύου", + "network-id": "Αναγνωριστικό δικτύου", + "network-info": "Πληροφορίες δικτύου", + "network-invalid-network-id": "Το καθορισμένο αναγνωριστικό δικτύου δεν αντιστοιχεί στο αναγνωριστικό δικτύου από τη διεύθυνση URL RPC", + "network-invalid-status-code": "Μη έγκυρος κωδικός κατάστασης: {{code}}", + "network-invalid-url": "Η διεύθυνση URL δικτύου δεν είναι έγκυρη", + "network-settings": "Ρυθμίσεις δικτύου", + "new": "Νέο", + "new-chat": "Νέα συνομιλία", + "new-contact": "Νέα επαφή", + "new-contract": "Νέο Συμβόλαιο", + "new-favourite": "Νέο αγαπημένο", + "new-group": "Νέα ομάδα", + "new-group-chat": "Νέα ομαδική συνομιλία", + "new-network": "Νέο δίκτυο", + "new-pin-description": "Εισαγάγετε νέο 6ψήφιο κωδικό πρόσβασης", + "new-public-group-chat": "Συμμετοχή σε δημόσια συνομιλία", + "new-status": "Νέα κατάσταση", + "new-tab": "Νέα καρτέλα", + "next": "Επόμενο", + "nickname": "Ψευδώνυμο", + "nickname-description": "Τα ψευδώνυμα σας βοηθούν να αναγνωρίσετε άλλους στο Status.\n Μόνο εσείς μπορείτε να δείτε τα ψευδώνυμα που έχετε προσθέσει", + "no": "Όχι", + "no-collectibles": "Δεν υπάρχουν διαθέσιμα συλλεκτικά αντικείμενα", + "no-contacts": "Δεν υπάρχουν επαφές ακόμη", + "no-keycard-applet-on-card": "Δεν υπάρχει εφαρμογή Keycard στην κάρτα", + "no-messages": "Δεν υπάρχουν μηνύματα", + "no-pairing-slots-available": "Έχει γίνει ήδη σύζευξη αυτής της κάρτα σε 5 συσκευές και δεν μπορεί να γίνει σε αυτήν. Χρησιμοποιήστε μία από τις συσκευές που έχει γίνει σύζευξη, συνδεθείτε με αυτήν την κάρτα και ελευθερώστε τις θέσεις σύζευξης στην κάρτα", + "no-result": "Δεν υπάρχουν αποτελέσματα", + "no-tokens-found": "Δεν βρέθηκαν tokens", + "node-info": "Πληροφορίες κόμβου", + "node-version": "Έκδοση κόμβου", + "nonce": "Όχι", + "none": "Κανένα", + "not-applicable": "Δεν ισχύει για συναλλαγές χωρίς υπογραφή", + "not-enough-snt": "Δεν υπάρχει αρκετό SNT", + "not-keycard-text": "Η κάρτα που χρησιμοποιήσατε δεν είναι Keycard. Πρέπει να αγοράσετε μια Keycard για να τη χρησιμοποιήσετε", + "not-keycard-title": "Δεν είναι Keycard", + "not-registered": "μη εγγεγραμμένος", + "notification-settings": "Ειδοποιήσεις", + "notifications": "Ειδοποιήσεις", + "notifications-non-contacts": "Ειδοποιήσεις από όλους", + "notifications-preferences": "Προτιμήσεις ειδοποιήσεων", + "notifications-servers": "Διακομιστές ειδοποιήσεων", + "notifications-switch": "Εμφάνιση ειδοποιήσεων", + "notifications-transactions": "Συναλλαγές πορτοφολιού", + "notify": "Ειδοποίηση", + "now": "Τώρα", + "off": "Ανενεργό", + "off-status-tree": "Δέντρο εκτός Status", + "offline": "Εκτός σύνδεσης", + "offline-messaging-use-history-explanation": "Ενεργοποίηση κόμβων ιστορικού για τη λήψη μηνυμάτων που στάλθηκαν ενώ η εφαρμογή ήταν κλειστή. Όταν ενεργοποιηθεί, ένας κόμβος ιστορικού λαμβάνει τη διεύθυνση IP σας. Όταν απενεργοποιηθεί, δεν θα λαμβάνετε μηνύματα όταν η εφαρμογή είναι κλειστή και δεν θα τα βλέπετε όταν ανοίγετε την εφαρμογή αργότερα.", + "offline-messaging-use-history-nodes": "Χρήση κόμβων ιστορικού", + "ok": "Εντάξει", + "ok-continue": "Εντάξει, συνεχίστε", + "ok-got-it": "Εντάξει, το κατάλαβα", + "ok-save-pass": "Εντάξει, αποθήκευση κωδικού πρόσβασης", + "okay": "Εντάξει", + "on": "Ενεργό", + "on-status-tree": "Δέντρο εντός Status", + "once-enabled-share-metadata": "Μόλις ενεργοποιηθεί, οι σύνδεσμοι που δημοσιεύονται στη συνομιλία ενδέχεται να μοιράζονται τα μεταδεδομένα σας με την τοποθεσία", + "open": "Άνοιγμα", + "open-chat": "Άνοιγμα συνομιλίας", + "open-dapp": "Άνοιγμα ÐApp", + "open-dapp-store": "Ανακαλύψτε ÐApps", + "open-home": "Ανοίξτε...", + "open-in-new-tab": "Άνοιγμα σε νέα καρτέλα", + "open-nfc-settings": "Ανοίξτε τις ρυθμίσεις NFC", + "optional": "προαιρετικό", + "or": "Ή", + "outgoing": "Εξερχόμενα", + "outgoing-transaction": "Εξερχόμενη συναλλαγή", + "page-camera-request-blocked": "τα αιτήματα κάμερας αποκλείστηκαν. Για να ενεργοποιήσετε τα αιτήματα κάμερας, μεταβείτε στις Ρυθμίσεις", + "page-would-like-to-use-camera": "θα ήθελε να χρησιμοποιήσει την κάμερα σας", + "pair": "Σύζευξη συσκευών", + "pair-card": "Σύζευξη με αυτήν τη συσκευής", + "pair-code": "Κωδικός σύζευξης", + "pair-code-explanation": "Σύζευξη κάρτας σε διαφορετική συσκευή (έως 5) για να ξεκλειδώσετε κλειδιά και να υπογράψετε συναλλαγές με την ίδια Keycard", + "pair-code-placeholder": "Κωδικός ζεύγους...", + "pair-this-card": "Σύζευξη αυτής της κάρτας", + "pair-this-device": "Διαφήμιση συσκευής", + "pair-this-device-description": "Σύζευξη των συσκευών σας για συγχρονισμό επαφών και συνομιλιών μεταξύ τους", + "paired-devices": "Σύζευξη συσκευών", + "pairing": "Σύζευξη", + "pairing-card": "Κάρτα σύζευξης", + "pairing-go-to-installation": "Μεταβείτε στις ρυθμίσεις σύζευξης", + "pairing-maximum-number-reached-content": "Απενεργοποιήστε μία από τις συσκευές σας πριν ενεργοποιήσετε μια νέα.", + "pairing-maximum-number-reached-title": "Συμπληρώθηκε ο μέγιστος αριθμός συσκευών", + "pairing-new-installation-detected-content": "Εντοπίστηκε μια νέα συσκευή.\n Για να χρησιμοποιήσετε σωστά τις συσκευές σας, είναι σημαντική η σύζευξη και η ενεργοποίηση προτού τις χρησιμοποιήσετε.\n Μεταβείτε στην ενότητα της συσκευής κάτω από τις ρυθμίσεις για να γίνει σύζευξη των συσκευών σας.", + "pairing-new-installation-detected-title": "Εντοπίστηκε νέα συσκευή", + "pairing-no-info": "Δεν υπάρχουν πληροφορίες", + "pairing-please-set-a-name": "Ορίστε ένα όνομα για τη συσκευή σας.", + "passphrase": "Φράση πρόσβασης", + "password": "Κωδικός πρόσβασης", + "password-description": "Τουλάχιστον 6 χαρακτήρες. Ο κωδικός πρόσβασης σας προστατεύει τα κλειδιά σας. Τον χρειάζεστε για να ξεκλειδώσετε το Status και να κάνετε συναλλαγές.", + "password-placeholder": "Κωδικός πρόσβασης...", + "password-placeholder2": "Επιβεβαίωση του κωδικού πρόσβασής σας", + "password_error1": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.", + "paste": "Επικόλληση", + "paste-json": "Επικόλληση JSON", + "pay-to-chat": "Πληρωμή για συνομιλία", + "peer-content": "Μια συσκευή συνδεδεμένη στο δίκτυο συνομιλίας του Status. Κάθε χρήστης μπορεί να αντιπροσωπεύει έναν ή περισσότερους ομότιμους, ανάλογα με τον αριθμό των συσκευών τους.", + "peer-title": "Ομότιμος", + "peers": "Ομότιμοι", + "pending": "Εκκρεμούν", + "pending-confirmation": "Εκκρεμεί επιβεβαίωση...", + "pending-invitations": "Εκκρεμείς αιτήσεις μελών", + "permissions": "Άδειες", + "phone-e164": "Διεθνές 1", + "photos": "Φωτογραφίες", + "photos-access-error": "Για να παραχωρήσετε την άδεια των απαιτούμενων φωτογραφιών, μεταβείτε στις ρυθμίσεις του συστήματός σας και βεβαιωθείτε ότι το Status > Φωτογραφίες είναι επιλεγμένο.", + "pin-changed": "Ο 6ψήφιος κωδικός πρόσβασης άλλαξε", + "pin-code": "6ψήφιος κωδικός πρόσβασης", + "pin-mismatch": "Λανθασμένος κωδικός πρόσβασης", + "pin-one-attempt": " μία προσπάθεια ", + "pin-one-attempt-blocked-after": "πριν μπλοκαριστεί η Keycard σας", + "pin-one-attempt-blocked-before": "Προσέξτε, έχετε μόνο", + "pin-one-attempt-frozen-after": "προτού παγώσει η Keycard σας", + "pin-one-attempt-frozen-before": "Προσέξτε, έχετε μόνο", + "pin-retries-left": "Απομένουν {{number}}", + "preference": "Προτίμηση", + "preview-privacy": "Προεπισκόπηση της λειτουργίας απορρήτου", + "previewing-may-share-metadata": "Η προεπισκόπηση συνδέσμων από αυτούς τους ιστότοπους ενδέχεται να κοινοποιεί τα μεταδεδομένα σας στους κατόχους τους", + "privacy": "Απόρρητο", + "privacy-and-security": "Απόρρητο και ασφάλεια", + "privacy-policy": "Πολιτική απορρήτου", + "private-key": "Ιδιωτικό κλειδί", + "private-notifications": "Ιδιωτικές ειδοποιήσεις", + "private-notifications-descr": "Το Status θα σας ειδοποιήσει για νέα μηνύματα. Μπορείτε να επεξεργαστείτε τις προτιμήσεις ειδοποιήσεων αργότερα στις ρυθμίσεις.", + "processing": "Μια στιγμή", + "product-information": "Πληροφορίες Προϊόντος", + "profile": "Προφίλ", + "profile-deleted-content": "Το προφίλ σας διαγράφηκε με επιτυχία", + "profile-deleted-title": "Το προφίλ διαγράφηκε", + "profile-details": "Λεπτομέρειες προφίλ", + "profile-pic-pick": "Επιλέξτε από τη συλλογή", + "profile-pic-remove": "Κατάργηση φωτογραφίας", + "profile-pic-take": "Βγάλε φωτογραφία", + "public-chat": "Δημόσια συνομιλία", + "public-chat-description": "Λάβετε μέρος σε δημόσιες συνομιλίες για τα ενδιαφέροντά σας! Ο καθένας μπορεί να ξεκινήσει μια νέα.", + "public-chats": "Δημόσιες συνομιλίες", + "public-group-status": "Δημόσιο", + "public-group-topic": "Θέμα", + "public-key": "Δημόσιο κλειδί", + "puk-and-pairing-codes-displayed": "Εμφάνιση κωδικών PUK και ζεύξης", + "puk-code": "Κωδικός PUK", + "puk-code-explanation": "Εάν ξεχάσετε τον 6ψήφιο κωδικό πρόσβασης ή τον εισαγάγετε εσφαλμένα 3 φορές, θα χρειαστείτε αυτόν τον κωδικό για να ξεκλειδώσετε την κάρτα σας.", + "puk-mismatch": "Λανθασμένος κωδικός PUK", + "push-failed-transaction": "Η συναλλαγή σας απέτυχε", + "push-failed-transaction-body": "{{value}} {{currency}} στην {{to}}", + "push-inbound-transaction": "Λάβατε {{value}} {{currency}}", + "push-inbound-transaction-body": "Από {{from}} στον {{to}}", + "push-notifications-server-enabled": "Ο διακομιστής ενεργοποιήθηκε", + "push-notifications-servers": "Διακομιστές ειδοποιήσεων προώθησης", + "push-outbound-transaction": "Στείλατε {{value}} {{currency}}", + "push-outbound-transaction-body": "Από {{from}} έως {{to}}", + "quiet-days": "{{quiet-days}} ημέρες", + "quiet-hours": "{{quiet-hours}} ώρες", + "re-encrypt-key": "Ξανακρυπτογραφήστε τα κλειδιά σας", + "receive": "Λήψη", + "receive-transaction": "Λήψη συναλλαγής", + "recent": "Πρόσφατα", + "recent-empty": "Οι διευθύνσεις που χρησιμοποιήθηκαν πρόσφατα θα εμφανίζονται εδώ", + "recent-recipients": "Επαφές", + "recently-used-stickers": "Τα αυτοκόλλητα που χρησιμοποιήθηκαν πρόσφατα θα εμφανίζονται εδώ", + "recipient": "Παραλήπτης", + "recipient-code": "Εισαγάγετε τη διεύθυνση παραλήπτη", + "recipient-code-placeholder": "0x... ή username.domain.eth", + "recover": "Ανάκτηση", + "recover-key": "Πρόσβαση στα υπάρχοντα κλειδιά", + "recover-keycard-multiaccount-not-supported": "Τα κλειδιά για αυτόν τον λογαριασμό υπάρχουν ήδη και δεν μπορούν να προστεθούν ξανά. Εάν έχετε χάσει τον κωδικό πρόσβασής σας ή την Keycard, απεγκαταστήστε την εφαρμογή, εγκαταστήστε ξανά και αποκτήστε πρόσβαση στα κλειδιά σας εισάγοντας τη φράση seed σας", + "recover-with-keycard": "Ανάκτηση με Keycard", + "recovering-key": "Πρόσβαση σε κλειδιά...", + "recovery-confirm-phrase": "Επιβεβαιώστε τη φράση seed", + "recovery-phrase": "Φράση Seed", + "recovery-success-text": "Θα πρέπει να δημιουργήσετε έναν νέο κωδικό ή κωδικό πρόσβασης για να κρυπτογραφήσετε ξανά τα κλειδιά σας", + "recovery-typo-dialog-description": "Λάβετε υπόψη ότι η φράση seed σας πρέπει να χρησιμοποιεί τις ίδιες ακριβώς λέξεις και σειρά όπως την λάβατε", + "recovery-typo-dialog-title": "Είναι σωστή η φράση seed;", + "redeem-amount": "{{quantity}} διαθέσιμα μπόνους", + "redeem-now": "Εξαργυρώστε τώρα", + "redeem-success": "Εξαργυρώστε το μπόνους επιτυχίας!", + "refresh": "Ανανέωση", + "registered": "εγγεγραμμένος", + "remember-me": "Θυμήσου με", + "remind-me-later": "Δείξε μου ξανά", + "remove": "Κατάργηση", + "remove-favourite": "Κατάργηση αγαπημένου", + "remove-from-chat": "Κατάργηση από τη συνομιλία", + "remove-from-contacts": "Κατάργηση από επαφές", + "remove-from-contacts-text": "Αφαιρώντας έναν χρήστη από τη λίστα επαφών σας, δεν αποκρύπτετε τη διεύθυνση του πορτοφολιού σας από αυτόν", + "remove-group": "Κατάργηση ομάδας", + "remove-network": "Κατάργηση δικτύου", + "remove-token": "Κατάργηση token", + "removed": "αφαιρέθηκε", + "repeat-pin": "Επαναλάβετε νέο 6ψήφιο κωδικό πρόσβασης", + "report-bug-email-template": "1. Περιγραφή ζητήματος\n (Περιγράψτε τη λειτουργία που θα σας άρεσε ή συνοψίστε εν συντομία το σφάλμα και τι κάνατε, τι περιμένατε να συμβεί και τι πραγματικά συμβαίνει. Ενότητες παρακάτω) \n\n\n 2. Βήματα αναπαραγωγής\n (Περιγράψτε πώς μπορούμε να επαναλάβουμε το σφάλμα βήμα προς βήμα.)\n -Ανοιγμα Status\n -...\n - Βήμα 3 κ.λπ. \n\n\n 3. Αναμενόμενη συμπεριφορά\n (Περιγράψτε τι περιμένατε να συμβεί.) \n\n\n 4. Πραγματική συμπεριφορά\n (Περιγράψτε τι πραγματικά συνέβη.) \n\n\n 5. Επισυνάψτε στιγμιότυπα οθόνης που μπορούν να επιδείξουν το πρόβλημα, παρακαλώ\n", + "request-feature": "Ζητήστε ένα χαρακτηριστικό", + "request-membership": "Αίτηση ιδιότητας μέλους", + "request-pending": "Το αίτημά σας είναι σε αναμονή…", + "request-transaction": "Αίτημα συναλλαγής", + "required-field": "Υποχρεωτικό πεδίο", + "resend-message": "Στείλτε ξανά", + "reset-card": "Επαναφορά κάρτας", + "reset-card-description": "Αυτή η λειτουργία θα επαναφέρει την κάρτα στην αρχική κατάσταση. Θα διαγράψει όλα τα δεδομένα της κάρτας, συμπεριλαμβανομένων των ιδιωτικών κλειδιών. Η λειτουργία δεν είναι αναστρέψιμη.", + "retry": "Επανάληψη", + "revoke-access": "Ανάκληση πρόσβασης", + "rpc-url": "Διεύθυνση URL RPC", + "rpc-usage-copy": "Αντιγραφή", + "rpc-usage-get-stats": "Ανανέωση", + "save": "Αποθήκευση", + "save-password": "Αποθήκευση κωδικού", + "save-password-unavailable": "Ορίστε τον κωδικό πρόσβασης της συσκευής για να αποθηκεύσετε τον κωδικό σας", + "save-password-unavailable-android": "Η αποθήκευση κωδικού πρόσβασης δεν είναι διαθέσιμη: η συσκευή σας ενδέχεται να είναι rooted ή να μην διαθέτει τις απαραίτητες λειτουργίες ασφαλείας.", + "scan-qr": "Σάρωση κωδικού QR", + "scan-qr-code": "Σάρωση κωδικού QR με διεύθυνση πορτοφολιού", + "scan-tokens": "Σάρωση tokens", + "search": "Αναζήτηση", + "search-no-chat-found": "Δεν υπάρχουν αποτελέσματα αναζήτησης. Μήπως εννοείτε", + "secret-keys-confirmation-text": "Θα τους χρειαστείτε για να συνεχίσετε να χρησιμοποιείτε την Keycard σας σε περίπτωση που χάσετε το τηλέφωνό σας.", + "secret-keys-confirmation-title": "Σημειώσατε τους κωδικούς;", + "security": "Ασφάλεια", + "see-details": "Δείτε λεπτομέρειες", + "see-it-again": "ΝΑ ΤΟ ΞΑΝΑΔΩ", + "seed-phrase-content": "Ένα σύνολο λέξεων φιλικών προς ανάγνωση, που επιλέχθηκαν τυχαία από την καθιερωμένη λίστα BIP39 και χρησιμοποιούνται για ανάκτηση ή πρόσβαση στον Ethereum λογαριασμό σας σε άλλα πορτοφόλια και συσκευές. Αναφέρεται επίσης ως «μνημονική φράση», «φράση ανάκτησης» ή «αντίγραφο ασφαλείας πορτοφολιού» σε ολόκληρο το οικοσύστημα crypto. Οι περισσότερες εφαρμογές crypto χρησιμοποιούν το ίδιο πρότυπο για τη δημιουργία λογαριασμών.", + "seed-phrase-placeholder": "Φράση Seed", + "seed-phrase-title": "Φράση Seed", + "select": "Επιλογή", + "select-account": "Επιλογή λογαριασμού", + "select-account-dapp": "Επιλέξτε τον λογαριασμό που θέλετε να χρησιμοποιήσετε με τα Dapps", + "select-account-first": "Επιλέξτε πρώτα έναν λογαριασμό", + "select-chat": "Επιλέξτε συνομιλία για να ξεκινήσετε την αποστολή μηνυμάτων", + "selected": "Επιλεγμένο", + "send-logs": "Αναφορά σφάλματος", + "send-logs-to": "Αναφορά σφάλματος στο {{email}}", + "send-message": "Αποστολή μηνύματος", + "send-push-notifications-description": "Όταν απενεργοποιηθεί, το άτομο που λαμβάνει τα μηνύματά σας δεν θα ειδοποιηθεί για την άφιξή τους", + "send-request": "Αποστολή αιτήματος", + "send-request-amount": "Ποσό", + "send-request-amount-max-decimals": "Ο μέγιστος αριθμός δεκαδικών είναι {{asset-decimals}}", + "send-request-unknown-token": "Άγνωστο token - {{asset}}", + "send-sending-to": "στον {{recipient-name}}", + "send-transaction": "Αποστολή συναλλαγής", + "sending": "Αποστολή", + "sent-at": "Στάλθηκε στις", + "server": "Διακομιστής", + "set-a-topic": "Δημιουργία θέματος", + "set-currency": "Ορίστε νόμισμα", + "set-custom-fee": "Ορίστε προσαρμοσμένη χρέωση", + "set-dapp-access-permissions": "Ορίστε δικαιώματα πρόσβασης DApp", + "set-max": "Ορισμός μέγιστου", + "settings": "Ρυθμίσεις", + "share": "Κοινοποίηση", + "share-address": "Κοινοποίηση διεύθυνσης", + "share-chat": "Κοινοποίηση συνομιλίας", + "share-contact-code": "Κοινοποίηση του κλειδιού συνομιλίας μου", + "share-dapp-text": "Δείτε αυτό το DApp που χρησιμοποιώ στο Status: {{link}}", + "share-link": "Κοινοποίηση συνδέσμου", + "share-my-profile": "Κοινοποίηση του προφίλ μου", + "share-profile": "Κοινή χρήση προφίλ", + "share-profile-link": "Κοινή χρήση συνδέσμου προφίλ", + "share-public-chat-text": "Δείτε αυτήν τη δημόσια συνομιλία στην εφαρμογή του Status: {{link}}", + "shared": "Κοινόχρηστο", + "sharing-copied-to-clipboard": "Αντιγράφηκε", + "sharing-copy-to-clipboard": "Αντιγραφή", + "sharing-share": "Κοινοποίηση", + "show-less": "Δείξε λιγότερα", + "show-more": "Δείτε περισσότερα", + "show-notifications": "Εμφάνιση ειδοποιήσεων", + "show-qr": "Εμφάνιση κωδικού QR", + "show-transaction-data": "Εμφάνιση δεδομένων συναλλαγής", + "sign-and-send": "Υπογραφή και αποστολή", + "sign-anyway": "Υπογράψτε ούτως ή άλλως", + "sign-in": "Ξεκλείδωμα", + "sign-message": "Υπογραφή μηνύματος", + "sign-out": "Αποσύνδεση", + "sign-request-failed": "Δεν ήταν δυνατή η υπογραφή μηνύματος", + "sign-with": "Συνδεθείτε με", + "sign-with-password": "Υπογράψτε με κωδικό πρόσβασης", + "sign-you-in": "Σύνδεση…", + "signing": "Υπογραφή", + "signing-a-message": "Υπογραφή μηνύματος", + "signing-phrase": "Φράση υπογραφής", + "something-went-wrong": "Κάτι πήγε στραβά", + "soon": "Σύντομα", + "specify-address": "Καθορισμός διεύθυνσης", + "specify-name": "Καθορίστε ένα όνομα", + "specify-network-id": "Καθορίστε το αναγνωριστικό δικτύου", + "specify-rpc-url": "Καθορίστε μια διεύθυνση URL RPC", + "specify-server-public-key": "Εισαγάγετε δημόσιο κλειδί διακομιστή", + "start-chat": "Έναρξη συνομιλίας", + "start-conversation": "Έναρξη συνομιλίας", + "start-group-chat": "Έναρξη ομαδικής συνομιλίας", + "start-new-chat": "Έναρξη νέας συνομιλίας", + "starter-pack-received": "Το Πακέτο Εκκίνησης ελήφθη", + "starter-pack-received-description": "Εδώ είναι μερικά crypto για να ξεκινήσετε! Χρησιμοποιήστε τα για να πάρετε αυτοκόλλητα, ένα όνομα ENS και να δοκιμάσετε dapps", + "status": "Status", + "status-confirmed": "Επιβεβαιωμένα", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Status Keycard", + "status-not-sent-click": "Δεν έχει επιβεβαιωθεί. Κάντε κλικ για επιλογές", + "status-not-sent-tap": "Δεν έχει επιβεβαιωθεί. Πατήστε για επιλογές", + "status-pending": "Εκκρεμούν", + "status-sent": "Απεσταλμένα", + "status-tx-not-found": "Το TX δεν βρέθηκε", + "status-updates-descr": "Οι ενημερώσεις κατάστασης θα εμφανίζονται εδώ. Προσθέστε το προφίλ ως επαφή για να λαμβάνετε ενημερώσεις στο χρονολόγιo σας.", + "statuses-descr": "Μοιραστείτε ό,τι έχετε στο μυαλό σας και παραμείνετε ενημερωμένοι με τις επαφές σας", + "statuses-my-status-descr": "Μοιραστείτε ό,τι έχετε στο μυαλό σας. Όποιος επισκέπτεται το προφίλ σας θα μπορεί να δει την κατάστασή σας. Τα άτομα που σας προσθέτουν ως επαφή θα λαμβάνουν τις ενημερώσεις σας στο χρονολόγιo τους", + "step-i-of-n": "Βήμα {{step}} από {{number}}", + "sticker-market": "Αγορά αυτοκόλλητων", + "storage": "Αποθήκευση", + "submit": "Υποβολή", + "submit-bug": "Υποβάλετε ένα σφάλμα", + "success": "Επιτυχία", + "symbol": "Σύμβολο", + "sync-all-devices": "Συγχρονισμός όλων των συσκευών", + "sync-in-progress": "Συγχρονισμός...", + "sync-settings": "Ρυθμίσεις συγχρονισμού", + "sync-synced": "Σε συγχρονισμό", + "syncing-devices": "Συγχρονισμός...", + "system": "Σύστημα", + "tabs": "Καρτέλες", + "tag-was-lost": "Η ετικέτα χάθηκε", + "tap-card-again": "Βάλτε ξανά την κάρτα στο πίσω μέρος του τηλεφώνου σας", + "test-networks": "Δοκιμαστικά δίκτυα", + "text-input-disabled": "Παρακαλώ περιμένετε μια στιγμή...", + "this-device": "Αυτή η συσκευή", + "this-device-desc": "Τα κλειδιά σας θα κρυπτογραφηθούν και θα αποθηκευτούν με ασφάλεια στη συσκευή σας", + "this-is-you-signing": "Αυτή είναι η φράση υπογραφής σας", + "this-will-take-few-seconds": "Αυτό θα διαρκέσει μερικά δευτερόλεπτα", + "three-words-description": "Θα πρέπει να δείτε αυτές τις 3 λέξεις πριν υπογράψετε κάθε συναλλαγή", + "three-words-description-2": "Εάν δείτε διαφορετικό συνδυασμό, ακυρώστε τη συναλλαγή και αποσυνδεθείτε", + "timeline": "Χρονοδιάγραμμα", + "to": "Προς", + "to-block": "Αποκλεισμός", + "to-enable-biometric": "Για να ενεργοποιήσετε το {{bio-type-label}}, πρέπει να αποθηκεύσετε τον κωδικό πρόσβασής σας στην οθόνη ξεκλειδώματος", + "to-encrypt-enter-password": "Για να κρυπτογραφήσετε τον λογαριασμό εισάγετε τον κωδικό πρόσβασης σας", + "to-see-this-message": "Για να δείτε αυτό το μήνυμα,", + "token-auto-validate-decimals-error": "Λανθασμένα δεκαδικά ψηφία για το token {{symbol}} στη διεύθυνση {{address}} - ορίστηκε ως {{expected}} αλλά εντοπίστηκε ως {{actual}}", + "token-auto-validate-name-error": "Λάθος όνομα για το token {{symbol}} στη διεύθυνση {{address}} - ορίστηκε ως {{expected}} αλλά εντοπίστηκε ως {{actual}}", + "token-auto-validate-symbol-error": "Λάθος σύμβολο για το token {{symbol}} στη διεύθυνση {{address}} - ορίστηκε ως {{expected}} αλλά εντοπίστηκε ως {{actual}}", + "token-details": "Λεπτομέρειες token", + "topic-name-error": "Χρησιμοποιήστε μόνο πεζά γράμματα (a έως z), αριθμούς και παύλες (-). Μην χρησιμοποιείτε τα κλειδιά συνομιλίας", + "transaction": "Συναλλαγή", + "transaction-data": "Δεδομένα συναλλαγών", + "transaction-declined": "Η συναλλαγή απορρίφθηκε", + "transaction-description": "Θεωρήστε ότι ολοκληρώθηκε μετά από 12 επιβεβαιώσεις στο δίκτυο.", + "transaction-details": "Λεπτομέρειες Συναλλαγής", + "transaction-failed": "Η συναλλαγή απέτυχε", + "transaction-history": "Ιστορικό συναλλαγών", + "transaction-request": "Αίτημα Συναλλαγής", + "transaction-sent": "Η συναλλαγή εστάλη", + "transaction-signed": "Η συναλλαγή έχει υπογραφεί με επιτυχία", + "transactions": "Συναλλαγές", + "transactions-filter-select-all": "Επιλογή όλων", + "transactions-filter-title": "Ιστορικό φίλτρου", + "transactions-history": "Ιστορικό συναλλαγών", + "transactions-history-empty": "Δεν υπάρχουν ακόμη συναλλαγές στο ιστορικό σας", + "transactions-history-loading": "Φόρτωση ιστορικού συναλλαγών. Αυτό μπορεί να διαρκέσει λίγο.", + "transactions-load-more": "Φόρτωσε περισσότερα", + "transactions-sign": "Υπογραφή", + "tribute-required-by-multiaccount": "{{multiaccount-name}} απαιτεί το SNT για να ξεκινήσει μια συζήτηση.", + "tribute-state-paid": "Το αφιέρωμα πληρώθηκε", + "tribute-state-pending": "Το αφιέρωμα εκκρεμεί", + "tribute-state-required": "Απαιτείται αφιέρωμα {{snt-amount}} SNT", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Προσθέστε φίλους ως επαφή για να επιτρέψετε συνομιλίες χωρίς πληρωμή αφιερώματος.", + "tribute-to-talk-are-you-friends": "Είστε φίλοι?", + "tribute-to-talk-ask-to-be-added": "Ζητήστε να προστεθεί ως επαφή", + "tribute-to-talk-contact-received-your-tribute": " έλαβε το αφιέρωμά σας. Τώρα μπορείτε να συνομιλήσετε με ασφάλεια μεταξύ σας.", + "tribute-to-talk-desc": "Δημιουργήστε έσοδα από την προσοχή σας, απαιτώντας SNT για την έναρξη μιας συνομιλίας από νέα άτομα", + "tribute-to-talk-disabled": "Το Tribute to Talk απενεργοποιήθηκε", + "tribute-to-talk-disabled-note": "Από τώρα και στο εξής, τα νέα άτομα μπορούν να ξεκινήσουν μια συνομιλία μαζί σας χωρίς να στείλουν SNT.", + "tribute-to-talk-enabled": "Έχετε ενεργοποιήσει το Tribute to Talk.", + "tribute-to-talk-finish-desc": "Από τώρα και στο εξής, θα λαμβάνετε μόνο συνομιλίες από επαφές και άτομα που πληρώνουν ", + "tribute-to-talk-learn-more-1": "Ο χρόνος και η προσοχή σας είναι τα πιο πολύτιμα περιουσιακά σας στοιχεία. Το Tribute to Talk σας επιτρέπει να ορίσετε ένα ποσό SNT που απαιτείται για να ξεκινήσουν νέα άτομα μια συνομιλία μαζί σας.", + "tribute-to-talk-learn-more-2": "Όποιος δεν περιλαμβάνεται στη λίστα επαφών σας θα κληθεί να πληρώσει και μπορείτε να απαντήσετε μόλις το κάνει.", + "tribute-to-talk-learn-more-3": "Μπορείτε πάντα να στείλετε τα χρήματα πίσω, αλλά για να διασφαλίσετε ότι οι φίλοι σας μπορούν να επικοινωνήσουν μαζί σας ελεύθερα, προσθέστε τα πρώτα ως επαφή.", + "tribute-to-talk-paywall-learn-more-1": "Ο χρόνος και η προσοχή μας είναι τα πιο πολύτιμα περιουσιακά στοιχεία μας. Το Tribute to Talk σάς επιτρέπει να επικοινωνείτε με νέα άτομα με αντάλλαγμα μια πληρωμή SNT.", + "tribute-to-talk-paywall-learn-more-2": "Για να ξεκινήσετε μια συνομιλία με κάποιον που έχει ένα σύνολο αφιερωμάτων, απλώς πληρώστε το απαιτούμενο SNT και θα προστεθείτε ως επαφή.", + "tribute-to-talk-paywall-learn-more-3": "Εάν τους γνωρίζετε, μπορείτε να μοιραστείτε το προφίλ σας εκτός του Status για να προστεθούν δωρεάν.", + "tribute-to-talk-pending": "Εκκρεμεί επιβεβαίωση αφιερώματος", + "tribute-to-talk-pending-note": "Εκκρεμεί επιβεβαίωση της συναλλαγής αφιερώματος στο δίκτυο. Μπορείτε να ελέγξετε την κατάστασή του στο ιστορικό συναλλαγών", + "tribute-to-talk-removing-note": "Η κατάργηση του Tribute to Talk θα επιτρέψει στα νέα άτομα να ξεκινήσουν μια συζήτηση χωρίς να στείλουν SNT. Απαιτείται μια συναλλαγή.", + "tribute-to-talk-set-snt-amount": "Ορισμός του ποσού SNT που απαιτείται για την έναρξη μιας συνομιλίας από νέα άτομα", + "tribute-to-talk-signing": "Αναμονή για υπογραφή συναλλαγής", + "tribute-to-talk-transaction-failed-note": "Η συναλλαγή απέτυχε και οι ρυθμίσεις Tribute to Talk δεν έχουν αλλάξει", + "tribute-to-talk-tribute-received1": "Το αφιέρωμα ελήφθη. Εσύ και ", + "tribute-to-talk-tribute-received2": " είναι πλέον επαφές και μπορούν να συνομιλήσουν με ασφάλεια μεταξύ τους.", + "tribute-to-talk-you-require-snt": "Χρειάζεστε SNT για να ξεκινήσετε συνομιλία με νέα άτομα.", + "try-again": "Προσπάθησε ξανά", + "try-keeping-the-card-still": "Προσπαθήστε να κρατήσετε την κάρτα ακίνητη", + "turn-nfc-description": "Το NFC είναι απενεργοποιημένο στη συσκευή σας. Μπορείτε να το ενεργοποιήσετε στις ρυθμίσεις", + "turn-nfc-on": "Ενεργοποιήστε το NFC για να συνεχίσετε", + "tx-fail-description1": "Αυτή η συναλλαγή είναι πιθανό να αποτύχει. Υπογράψτε με δική σας ευθύνη χρησιμοποιώντας προσαρμοσμένη χρέωση δικτύου.", + "tx-fail-description2": "Αυτή η συναλλαγή είναι πιθανό να αποτύχει. Ορίστε μια προσαρμοσμένη χρέωση δικτύου για να υπογράψετε με δική σας ευθύνη.", + "type": "Πληκτρολογήστε", + "type-a-message": "Μήνυμα", + "ulc-enabled": "Το ULC ενεργοποιήθηκε", + "unable-to-read-this-code": "Δεν είναι δυνατή η ανάγνωση αυτού του κωδικού", + "unblock": "Ξεμπλοκάρετε", + "unblock-contact": "Κατάργηση αποκλεισμού αυτού του χρήστη", + "unknown-status-go-error": "Άγνωστο σφάλμα status-go", + "unlock": "Ξεκλείδωμα", + "unmute": "Κατάργηση σίγασης", + "unpair-card": "Αποσύνδεση κάρτας", + "unpair-card-confirmation": "Αυτή η λειτουργία θα αποσυνδέσει την κάρτα από την τρέχουσα συσκευή. Απαιτείται εξουσιοδότηση 6ψήφιου κωδικού πρόσβασης. Θέλετε να συνεχίσετε?", + "unpaired-keycard-text": "Η Keycard που πατήσατε δεν σχετίζεται με αυτό το τηλέφωνο", + "unpaired-keycard-title": "Φαίνεται ότι η κάρτα σας έχει αποσυνδεθεί", + "update": "Ενημέρωση", + "update-to-listen-audio": "Ενημερώστε την τελευταία έκδοση για να ακούσετε ένα ηχητικό μήνυμα εδώ!", + "update-to-see-image": "Ενημερώστε την τελευταία έκδοση για να δείτε μια ωραία εικόνα εδώ!", + "update-to-see-sticker": "Ενημερώστε την τελευταία έκδοση για να δείτε ένα ωραίο αυτοκόλλητο εδώ!", + "url": "Διεύθυνση URL", + "usd-currency": "Δολάριο ΗΠΑ", + "use-valid-contact-code": "Εισαγάγετε ή σαρώστε ένα έγκυρο κλειδί συνομιλίας ή όνομα χρήστη", + "validation-amount-invalid-number": "Το ποσό δεν είναι έγκυρος αριθμός", + "validation-amount-is-too-precise": "Το ποσό είναι πολύ ακριβές. Ο μέγιστος αριθμός δεκαδικών είναι {{decimals}}.", + "version": "Έκδοση εφαρμογής", + "view-cryptokitties": "Προβολή στο CryptoKitties", + "view-cryptostrikers": "Προβολή στο CryptoStrikers", + "view-details": "Δείτε λεπτομέρειες", + "view-etheremon": "Προβολή στο Etheremon", + "view-gitcoin": "Προβολή στο Gitcoin", + "view-profile": "Εμφάνιση προφίλ", + "view-signing": "Προβολή φράσης υπογραφής", + "view-superrare": "Προβολή στο SuperRare", + "waiting-for-wifi": "Δεν υπάρχει Wi-Fi, ο συγχρονισμός μηνυμάτων απενεργοποιήθηκε.", + "waiting-for-wifi-change": "Ρυθμίσεις", + "waiting-to-sign": "Αναμονή για υπογραφή συναλλαγής...", + "waku-bloom-filter-mode": "Λειτουργία φίλτρου άνθισης Waku", + "wallet": "Πορτοφόλι", + "wallet-address": "Διεύθυνση πορτοφολιού", + "wallet-asset": "Περιουσιακό στοιχείο", + "wallet-assets": "Περιουσιακά στοιχεία", + "wallet-backup-recovery-title": "Δημιουργήστε αντίγραφα ασφαλείας για τη φράση seed σας", + "wallet-choose-recipient": "Επιλέξτε Παραλήπτη", + "wallet-collectibles": "Συλλεκτικά", + "wallet-insufficient-funds": "Ανεπαρκή κεφάλαια", + "wallet-insufficient-gas": "Δεν υπάρχει αρκετό ETH για gas", + "wallet-invalid-address": "Μη έγκυρη διεύθυνση:\n {{data}}", + "wallet-invalid-address-checksum": "Σφάλμα στη διεύθυνση:\n {{data}}", + "wallet-invalid-chain-id": "Το δίκτυο δεν ταιριάζει:\n {{data}} αλλά η τρέχουσα αλυσίδα είναι {{chain}}", + "wallet-key-content": "Δεκαεξαδική διεύθυνση 64 χαρακτήρων με βάση την προδιαγραφή του Ethereum και ξεκινώντας με 0x. Δημόσια, η διεύθυνση του λογαριασμού σας κοινοποιείται σε άλλους όταν θέλετε να λάβετε χρήματα. Αναφέρεται επίσης ως «διεύθυνση Ethereum» ή «διεύθυνση πορτοφολιού».", + "wallet-key-title": "Διεύθυνση λογαριασμού", + "wallet-manage-assets": "Διαχείριση περιουσιακών στοιχείων", + "wallet-request": "Αίτημα", + "wallet-send": "Αποστολή", + "wallet-send-min-units": "Ελάχιστο 21000 μονάδες", + "wallet-send-min-wei": "Ελάχιστο 1 wei", + "wallet-settings": "Ρυθμίσεις πορτοφολιού", + "wallet-total-value": "Συνολική αξία", + "wallet-transaction-total-fee": "Συνολικό Τέλος", + "wants-to-access-profile": "θέλει να αποκτήσει πρόσβαση στο προφίλ σας", + "warning": "Προειδοποίηση", + "warning-message": "Λυπούμαστε, περιορίζουμε την γρήγορη αποστολή πολλών μηνυμάτων για την αποτροπή ανεπιθύμητων μηνυμάτων. Δοκιμάστε ξανά σε λίγο", + "warning-sending-to-contract-descr": "Η διεύθυνση που εισαγάγατε είναι ένα έξυπνο συμβόλαιο, η αποστολή χρημάτων σε αυτήν τη διεύθυνση ενδέχεται να οδηγήσει σε απώλεια χρημάτων. Για να αλληλεπιδράσετε με ένα DApp, ανοίξτε το DApp στο Status DApp Browser.", + "watch-only": "Μόνο για παρακολούθηση", + "web-view-error": "Δεν είναι δυνατή η φόρτωση της σελίδας", + "websites": "Ιστότοποι", + "webview-camera-permission-requests": "Αιτήματα άδειας κάμερας Webview", + "webview-camera-permission-requests-subtitle": "Όταν είναι ενεργοποιημένη, ιστότοποι και dapps μπορούν να ζητήσουν να χρησιμοποιήσουν την κάμερα σας", + "welcome-blank-message": "Οι συζητήσεις σας θα εμφανιστούν εδώ. Για να ξεκινήσετε νέες συνομιλίες, πατήστε το κουμπί ⊕", + "welcome-screen-text": "Ρυθμίστε το πορτοφόλι σας, προσκαλέστε φίλους να συνομιλήσουν\n και περιηγηθείτε στα δημοφιλή dapps!", + "welcome-to-status": "Καλώς ήλθατε στο Status!", + "welcome-to-status-description": "Ρυθμίστε το πορτοφόλι crypto, προσκαλέστε φίλους για συνομιλία και περιήγηση σε αποκεντρωμένες εφαρμογές", + "whats-on-your-mind": "Τι σκέφτεστε…", + "word-count": "Καταμέτρηση λέξεων", + "word-n": "Λέξη #{{number}}", + "word-n-description": "Για να ελέγξετε αν έχετε δημιουργήσει σωστά αντίγραφα ασφαλείας της φράσης seed σας, εισαγάγετε τη λέξη #{{number}} παραπάνω.", + "words-n": { + "one": "1 λέξη", + "other": "{{count}} λέξεις" + }, + "write-down-and-store-securely": "Σημειώστε τους κωδικούς\n & αποθηκεύστε τους με ασφάλεια", + "wrong-address": "Λάθος διεύθυνση", + "wrong-card": "Λάθος κάρτα", + "wrong-card-text": "Η επιλεγμένη κάρτα δεν αντιστοιχεί στα κλειδιά που επιλέξατε", + "wrong-contract": "Λάθος συμβόλαιο", + "wrong-keycard-text": "Η Keycard που πατήσατε δεν σχετίζεται με αυτό το τηλέφωνο", + "wrong-keycard-title": "Φαίνεται ότι έχετε πατήσει \nλανθασμένη κάρτα-κλειδί", + "wrong-password": "Λάθος κωδικός", + "wrong-word": "Λάθος λέξη", + "yes": "Ναι", + "you": "εσείς", + "you-already-have-an-asset": "Έχετε ήδη ένα περιουσιακό στοιχείο {{value}}", + "you-are-all-set": "Είστε έτοιμοι!", + "you-are-all-set-description": "Εάν χάσετε το τηλέφωνό σας, μπορείτε πλέον να αποκτήσετε πρόσβαση στα χρήματά σας και στο κλειδί συνομιλίας χρησιμοποιώντας τη φράση seed σας", + "you-can-change-account": "Μπορείτε να αλλάξετε το όνομα και το χρώμα του λογαριασμού σε αυτό που θέλετε", + "you-can-choose-preview-websites": "Μπορείτε να επιλέξετε ποιοι από τους παρακάτω ιστότοπους μπορούν να κάνουν προεπισκόπηση συνδέσμου περιγραφών και εικόνων σε συζητήσεις", + "you-dont-have-contacts": "Δεν έχετε ακόμα επαφές.", + "you-dont-have-stickers": "Δεν έχετε ακόμα αυτοκόλλητα", + "you-will-need-this-code": "Θα χρειαστείτε αυτόν τον κωδικό για να ανοίξετε το Status και να υπογράψετε συναλλαγές", + "you-will-start-from-scratch": "Θα ξεκινήσετε από το μηδέν με ένα νέο σετ κλειδιών", + "your-card-is-frozen": "Η Keycard σας έχει παγώσει. Επαναφορά πρόσβασης στην κάρτα", + "your-contact-code": "Η παραχώρηση πρόσβασης επιτρέπει σε αυτό το DApp την ανάκτηση του κλειδιού συνομιλίας σας", + "your-data-belongs-to-you": "Εάν χάσετε τη φράση seed, χάνετε τα δεδομένα και τα χρήματά σας", + "your-data-belongs-to-you-description": "Εάν χάσετε την πρόσβαση, χάνοντας για παράδειγμα το τηλέφωνό σας, μπορείτε να αποκτήσετε πρόσβαση στα κλειδιά σας μόνο με τη φράση seed σας. Κανείς, εκτός από εσάς δεν έχει τη φράση seed σας. Σημειώστε τη. Κρατησε τη ασφαλη", + "your-keys": "Τα κλειδιά σας", + "your-recovery-phrase": "Η φράση seed σας", + "your-recovery-phrase-description": "Αυτή είναι η φράση seed σας. Τη χρησιμοποιείτε για να αποδείξετε ότι αυτό είναι το πορτοφόλι σας. Θα τη δείτε μόνο μία φορά! Γράψτε τη σε χαρτί και φυλάξτε τη σε ασφαλές μέρος. Θα τη χρειαστείτε εάν χάσετε ή επανεγκαταστήσετε το πορτοφόλι σας." +} diff --git a/translations/en.json b/translations/en.json new file mode 100644 index 00000000000..04dd0f26d98 --- /dev/null +++ b/translations/en.json @@ -0,0 +1,3152 @@ +{ + "a-card-shaped-hardware-wallet": "A card-shaped hardware wallet", + "about": "About", + "about-app": "About", + "about-gas-amount": "AKA gas limit. Refers to the maximum number of computational steps (or units of gas) that a transaction can consume. It represents the complexity or amount of work required to execute a transaction or smart contract.\n\nThe gas limit is a cap on how much work the transaction can do on the blockchain. If the gas limit is set too low, the transaction may fail due to insufficient gas.", + "about-gas-price": "Gas price in blockchain refers to the fee users pay to process transactions on the network. It fluctuates based on network demand and affects how quickly transactions are confirmed.", + "about-key-storage-content": "Status will never access your private key. Be sure to backup your seed phrase. If you lose your phone it is the only way to access your keys.", + "about-key-storage-title": "About key storage", + "about-max-base-fee": "When your transaction gets included in the block, any difference between your max base fee and the actual base fee will be refunded.\n\nNote: the ETH amount shown for this value is calculated: max base fee (in GWEI) * max gas amount.", + "about-names-content": "No one can pretend to be you! You’re anonymous by default and never have to reveal your real name. You can register a custom name for a small fee.", + "about-names-title": "Names can’t be changed", + "about-nonce": "Transaction counter ensuring transactions from your account are processed in the correct order and can’t be replayed. Each new transaction increments the nonce by 1, ensuring uniqueness and preventing double-spending.\n\nIf a transaction with a lower nonce is pending, higher nonce transactions will remain in the queue until the earlier one is confirmed.", + "about-priority-fee": "AKA miner tip. A voluntary fee you can add to incentivise miners or validators to prioritise your transaction.\n\nThe higher the tip, the faster your transaction is likely to be processed, especially during periods of higher network congestion.\n\nNote: the ETH amount shown for this value is calculated: Priority fee (in GWEI) * Max gas amount", + "about-sharing-data": "About sharing data", + "accent-colour": "Accent colour", + "accent-colour-updated": "Accent colour updated", + "accept": "Accept", + "accept-and-add": "Accept and add", + "accept-and-continue": "Accept and continue", + "accept-and-share-address": "Accept and share address", + "accept-community-rules": "I agree with the community rules", + "accept-new-chats-from": "Accept new chats from", + "accept-status-tos-prefix": "By proceeding you agree with Status", + "accepted": "Accepted", + "access-existing-keys": "Access existing keys", + "access-key": "Access key", + "account": "Account", + "account-added": "Account added", + "account-already-exist-error": "The recovery phrase you entered is linked to a key pair already added to this device.", + "account-color": "Account color", + "account-content": "You can compare accounts in Status to bank accounts. Like a bank account, an account typically has an address and a balance; You use this account to transact on Ethereum. You can have multiple accounts in your wallet. All accessed by unlocking Status.", + "account-created": "{{name}} created", + "account-exists-title": "Account already exists", + "account-info": "Account info", + "account-is-used": "The account is being used with Dapps in the browser.", + "account-name": "Account name", + "account-origin-desc": "To create a new account, you can generate a key pair in the app or import an existing account.", + "account-origin-header": "Account origin", + "account-removed": "Account has been removed", + "account-settings": "Account settings", + "account-title": "Account", + "accounts": "Accounts", + "accounts-count": "{{count}} accounts", + "action-logs": "Logs of actions, including button presses and screen visits", + "actions": "Actions", + "activate": "Activate", + "active": "active", + "active-members": "Active members", + "active-networks": "Active networks", + "active-online": "Online", + "active-unknown": "Unknown", + "activity": "Activity", + "add": "Add", + "add-a-contact": "Add a contact", + "add-a-watch-account": "Add a watch-only address", + "add-account": "Add account", + "add-account-description": "Create new or import existing account", + "add-account-incorrect-password": "Password seems to be incorrect. Enter the password you use to unlock the app.", + "add-address": "Add address", + "add-address-to-save-description": "Paste, scan or type ETH address or ENS name", + "add-address-to-watch": "Add address to watch", + "add-address-to-watch-description": "Watch a public address or ENS name", + "add-an-account": "Add an account", + "add-assets": "Add assets", + "add-bootnode": "Add bootnode", + "add-contact": "Add contact", + "add-custom-token": "Add custom token", + "add-display-name-and-picture": "Add an optional display name and profile picture so others can easily recognize you", + "add-favourite": "Add favourite", + "add-mailserver": "Add Status node", + "add-me-to-your-contacts": "Please add me to your contacts", + "add-members": "Add members", + "add-network-preferences": "Add network preferences", + "add-networks-token-can-be-sent-to": "Add networks {{token-symbol}} can be sent to", + "add-new-contact": "Add new contact", + "add-nickname": "Add a nickname (optional)", + "add-nickname-title": "Add nickname", + "add-node": "Add node", + "add-preferences": "Add preferences", + "add-private-key-account": "Add account from private key", + "add-seed-account": "Add account with a seed phrase", + "add-text": "Add text", + "add-to-contacts": "Add to contacts", + "add-to-contacts-text": "By adding a user to your contact list, you share your wallet address", + "add-to-favourites": "Add to favourites", + "add-token": "Add {{token}}", + "add-watch-account": "Add a watch-only account", + "add-watched-address": "Add watched address", + "added": "added", + "added-to-group-chat": "Added to group chat", + "added-you-to": "added you to", + "address": "Address", + "address-activity": "This address has activity", + "address-already-in-use": "Address already being used", + "address-copied": "Address copied", + "address-count": { + "one": "1 address", + "other": "{{count}} addresses" + }, + "address-edited": "Address edited", + "address-name": "Address name", + "address-no-activity": "This address has no activity", + "address-or-ens-name": "Address or ENS name", + "address-placeholder": "0x123abc... or bob.eth", + "address-received": "Address received", + "address-request-accepted": "Address request accepted", + "address-requested": "Address requested", + "address-saved": "Address saved", + "address-to-share": "Addresses to share", + "addresses-dont-contain-tokens-needed": "These addresses don’t contain tokens needed to join", + "addresses-for-permissions": "Addresses for permissions", + "admin": "Admin", + "advanced": "Advanced", + "advanced-settings": "Advanced settings", + "advertiser-description": "You’ve discovered Status thanks to a partner. Do you mind if Status checks your IP address once so they get rewarded? This information will not be used for anything else and it will be removed completely after 7 days.", + "advertiser-starter-pack-accept": "Accept", + "advertiser-starter-pack-decline": "Decline", + "advertiser-starter-pack-description": "Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps", + "advertiser-starter-pack-title": "Starter Pack", + "advertiser-title": "Privacy by default", + "agree": "Agree", + "agree-by-continuing": "By continuing you agree\n to our ", + "airdrop-addresses": "Address for airdrops", + "album-images-count": "{{album-images-count}} photos", + "all": "All", + "all-addresses": "All addresses", + "all-changes-will-be-discarded": "All changes in shared addresses for permissions will be discarded.", + "all-connections": "All Connections", + "all-currencies": "All currencies", + "all-messages": "All messages", + "all-networks": "All networks", + "all-slots-occupied": "All slots occupied", + "all-time": "All time", + "allow": "Allow", + "allow-and-send": "Allow and send", + "allow-community-mentions-notifications-description": "Mentions and replies", + "allow-mention-notifications": "Show @ mentions", + "allow-messages-and-communities-notifications": "Messages and communities", + "allow-messages-and-communities-notifications-description": "1-1 and group messages, replies and mentions in communities. Possible high battery usage.", + "allow-messenger-notifications": "Show messenger notifications", + "allow-new-contact-requests": "Allow new contact requests", + "allow-news-notifications": "News from Status", + "allow-news-notifications-description": "Uses Google services, and works even when the app is closed.", + "allowing-authorizes-this-dapp": "Allowing authorizes this DApp to retrieve your wallet address and enable Web3", + "alphabetically": "Alphabetically", + "already-have-asset": "You already have this asset", + "already-logged-in-on-the-other-device": "Already logged in on the other device", + "amount": "Amount", + "amount-missing-keypairs": "{{amount} missing key pairs", + "amount-with-currency-symbol": "{{symbol}} {{amount}}", + "and": "and", + "and-go-to": "and go to", + "anyone": "Anyone", + "app-commit": "App commit", + "app-connections": "App connections", + "app-interactions": "App interactions", + "appearance": "Appearance", + "apply": "Apply", + "apply-changes": "Apply changes", + "approve": "Approve", + "approve-amount-symbol": "Approve {{token-amount}} {{token-symbol}}", + "approve-limit": "Approve limit", + "approve-token": "Approve token", + "approve-token-contract-desc": "Approving a token with a contract allows it to spend your token balance. If you feel that a project is untrustworthy, don’t approve the token with them, or approve only the amount you will use with them.", + "approved-amount-symbol": "Approved {{token-amount}} {{token-symbol}}", + "approving-amount-symbol": "Approving {{token-amount}} {{token-symbol}}...", + "apr": "Apr", + "are-not-allowed": "{{check} are not allowed", + "are-you-sure": "Are you sure?", + "are-you-sure-description": "You will not be able to see the whole seed phrase again", + "are-you-sure-to-cancel": "Are you sure you want to cancel?", + "are-you-sure?": "Are you sure?", + "ask-in-status": "Ask a question or report a bug", + "assets": "Assets", + "at": "at", + "at-least-one-network-must-be-activated": "At least 1 network must be activated", + "attribution-received": "{{attrib}} out of {{max}} bonuses received", + "audio": "Audio", + "audio-message": "Audio message", + "audio-recorder": "Recorder", + "audio-recorder-error": "Recorder error", + "audio-recorder-max-ms-reached": "Maximum recording time reached", + "audio-recorder-permissions-error": "You have to give permission to send audio messages", + "aug": "Aug", + "authorise-with-password": "Authorise with password", + "authorize": "Authorize", + "available": "Available", + "available-participants": { + "one": "You can select one more participant", + "other": "You can select {{count}} more participants" + }, + "back": "Back", + "back-up": "Back up", + "back-up-seed-phrase": "Backup recovery phrase", + "back-up-your-seed-phrase": "Backup your recovery phrase", + "backing-up": "Backing up...", + "backup-disabled": "Disabled", + "backup-empty-keycard-only": "You can only back up to an empty Keycard.", + "backup-enabled": "Enabled", + "backup-keycard": "Backup Keycard", + "backup-keycard-created": "Backup Keycard successfully created", + "backup-keycard-instructions": "You’ll need an empty Keycard to create backup. You’ll be able to create a different PIN for backup Keycard. It might make sense to mark your Keycards, so you don’t mix them up.", + "backup-recovery-phrase": "Backup recovery phrase", + "backup-recovery-phrase-description": "Save in a secure place that only you control, these 12 words give access to all of your funds.", + "backup-settings": "Backup settings", + "backup-step-1": "Find pen and paper", + "backup-step-2": "Write down your recovery phrase", + "backup-step-3": "Find a place to store it", + "backup-step-4": "I know I can only see it once", + "backup-through-waku": "Backup through waku", + "bad-fees-description": "Your priority fee is below our suggested parameters.", + "balance": "Balance", + "base-chain-available-info": "Base chain is now on Status - view your assets, interact with dApps and swap tokens", + "be-safe-with-secure-cold-wallet": "Be safe with secure cold wallet", + "begin-set-up": "Begin setup", + "below-base-fee": "max fee below base fee", + "beta": "Beta", + "bio": "Bio", + "bio-added": "Bio added", + "bio-is-too-long": "Bio is too long", + "bio-updated": "Bio updated", + "biometric": "Biometric", + "biometric-auth-android-sensor-desc": "Touch sensor", + "biometric-auth-android-sensor-error-desc": "Failed", + "biometric-auth-android-title": "Authentication Required", + "biometric-auth-confirm-logout": "Relogin", + "biometric-auth-confirm-message": "Biometric authentication is required to continue, if not possible please unlock your keys with your password or passcode", + "biometric-auth-confirm-title": "You must authenticate!", + "biometric-auth-confirm-try-again": "Try again", + "biometric-auth-error": "Unable perform biometric authentication ({{code}})", + "biometric-auth-login-error-title": "Biometric authentication error", + "biometric-auth-login-ios-fallback-label": "Enter Password", + "biometric-auth-reason-login": "Login in Status", + "biometric-auth-reason-verify": "Verify authentication", + "biometric-disable-bioauth": "disable {{bio-type-label}}", + "biometric-disable-password-description": "If you disable this, you will also ", + "biometric-disable-password-title": "Disable password saving", + "biometric-enable": "If you don't want to enter your password each time to access the app, enable {{bio-type-label}} sign in", + "biometric-enable-button": "Enable {{bio-type-label}}", + "biometric-enable-keycard": "If you don't want to use your Keycard each time to access the app, enable {{bio-type-label}} sign in", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Fingerprint", + "biometric-secure-with": "Secure with {{bio-type-label}}", + "biometric-too-many-attempts": "Too many attempts. Enter the password manually or try again after some time", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39 password", + "biu": "BIU", + "blank-contacts-text": "Your contacts will be here", + "blank-keycard-text": "You can proceed with your keycard once you've generated your keys and name", + "blank-keycard-title": "Looks like you’ve tapped \na blank keycard", + "blank-messages-text": "Your messages will be here", + "block": "Block", + "block-contact": "Block this user", + "block-contact-details": "Blocking will delete this user's previous messages and stop new ones from reaching you", + "block-user": "Block user", + "block-user-title-message": "You will not see {{username}}'s messages, but {{username}} still can see your messages in mutual group chats and communities. {{username}} will be unable to message you.", + "block-user?": "Block User?", + "blocked-users": "Blocked users", + "blocking-a-user-message": "Blocking a user purges the database of all messages that you’ve previously received from {{username}} in all contexts.", + "bold": "Bold", + "bootnode-address": "Bootnode address", + "bootnode-details": "Bootnode details", + "bootnode-format": "enode://{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes enabled", + "bootnodes-settings": "Bootnodes settings", + "bridge": "Bridge", + "bridge-from": "Bridge from {{bridge-name}}", + "bridge-to": "Bridge {{name}} to", + "bridged-to": "Bridged to {{network}}", + "browsed-websites": "Browser history will appear here", + "browser": "Browser", + "browser-not-secure": "Connection is not secure! Do not sign transactions or send personal data on this site.", + "browser-secure": "Connection is secure. Make sure you really trust this site before signing transactions or entering personal data.", + "browsers": "Browsers", + "browsing-cancel": "Cancel", + "browsing-open-in-android-web-browser": "Open in Android", + "browsing-open-in-ios-web-browser": "Open in iOS", + "browsing-open-in-status": "Open in Status", + "browsing-site-blocked-description1": "We detected potential malicious activity from this address. To protect you and your wallet, we're preventing further navigation.\n\nIf you think this is an error, let us know in the ", + "browsing-site-blocked-description2": " public chat.", + "browsing-site-blocked-go-back": "Go back", + "browsing-site-blocked-title": "This site is blocked", + "browsing-title": "Browse", + "bsc": "BNB Smart Chain", + "bsc-collectibles-not-supported": "Displaying collectibles on BNB Smart Chain is not currently supported by Status.", + "bug-report": "Report a bug", + "bug-report-description": "* Description", + "bug-report-description-placeholder": "Required, can't be empty", + "bug-report-steps": "Steps to reproduce", + "bug-report-steps-placeholder": "- open app\n- do something\n- and then somethig else...", + "bug-report-submit-email": "Submit by email with logs archive", + "bug-report-submit-gh-issue": "Submit a GitHub issue without logs", + "bug-report-too-short-description": "Description is too short", + "build-yourself": "To use the app without these Terms of Use, you can build your own version", + "buy": "Buy", + "buy-crypto": "Buy crypto", + "buy-crypto-choose-a-service": "Choose a service you'd like to use to buy crypto", + "buy-crypto-description": "Find a dapp to buy crypto now", + "buy-crypto-leaving": "You are leaving Status and entering a third party website to complete your purchase", + "buy-crypto-title": "Looks like your wallet is empty", + "buy-ethereum": "Buy Ethereum", + "buy-keycard": "Buy Keycard", + "by-continuing-you-accept": "By continuing you accept our ", + "camera-access-error": "To grant the required camera permission, please go to your system settings and make sure that Status > Camera is selected.", + "camera-permission-denied": "Permission denied", + "can-not-add-yourself": "That's you, to start a chat choose someone else", + "can-send-messages": "You can send and receive new messages", + "cancel": "Cancel", + "cancel-keycard-setup": "Cancel Keycard setup", + "cancel-request-to-join": "Cancel request to join", + "cancel-request?": "Cancel request?", + "cancelling": "Cancelling", + "cannot-pin-desc": "You can only pin a max of 3 messages.\nUnpin at least one to pin a new one.", + "cannot-pin-title": "You can't pin this message!", + "cannot-read-card": "Can't read card.\nPlease hold it to the back of your phone", + "cannot-use-default-pin": "Passcode 000000 is not allowed.\nPlease use another number", + "cant-fetch-info": "Can't fetch info", + "cant-open-public-chat": "Can't open public chat", + "cant-report-bug": "Can't report a bug", + "cant-store-new-keys": "You can’t use it to store new keys right now", + "cant-use-keycard-device": "You can’t use this Keycard on this device", + "cant-use-right-now": "You can’t use it right now", + "card-is-blank": "This card is blank", + "card-reseted": "Card has been reseted", + "card-unpaired": "Card has been unpaired from current device", + "category": "Category", + "category-title": "Category title", + "change-fleet": "Do you want to switch to the {{fleet}} fleet?\n\nThis will require you to log in again", + "change-group-privacy": "Change group privacy", + "change-logging-enabled": "Are you sure you want to {{enable}} logging?", + "change-pairing": "Change pairing code", + "change-pairing-description": "Changing the pairing code does not affect the current pairings. However, any new pairing will require the new code.", + "change-pairing-title": "Create a new pairing code", + "change-passcode": "Change Passcode", + "change-password": "Change password", + "change-password-confirm-description": "Your data must now be re-encrypted with your new password. Please do not quit the app or turn off your device.", + "change-password-confirm-warning": "Re-encrypting data after changing password may take up to 3 min. Closing the app or locking phone while re-encryption is in progress will lead to data corruption and loss of your Status profile.", + "change-password-description": "Change password used to log in to Status and sign transactions", + "change-password-done-description": "Please log out Status and log in using your new password", + "change-password-done-header": "Re-encryption complete!", + "change-password-loading-description": "Data is now being re-encrypted with your new password, this may take up to 3min.", + "change-password-loading-header": "Keep app open on screen!", + "change-password-loading-warning": "Do not quit the app or turn off your device while in-progress.\n \nClosing the app or locking your phone while re-encryption is taking place will lead to data corruption and the loss of your Status profile.", + "change-password-new-password-label": "New password", + "change-password-new-password-placeholder": "Enter new password", + "change-password-old-password-label": "Current password", + "change-password-old-password-placeholder": "Enter current password", + "change-password-repeat-password-placeholder": "Repeat new password", + "change-pin": "Change 6-digit passcode", + "change-pin-keycard": "Change PIN", + "change-pin-keycard-description": "Use different PIN for this Keycard", + "change-pin-keycard-message": "It’s very important that you will not forget new PIN. Status is unable to restore PIN. If you forget it, Keycard will be blocked and you will need to restore it via recovery phrase or PUK.", + "change-puk": "Change 12-digit PUK", + "change-testnet-mode-logout-info": "You’ll be logged out of the app", + "change-tip": "Change tip", + "changed-amount-warning": "Amount was changed from {{old}} to {{new}}", + "changed-asset-warning": "Asset was changed from {{old}} to {{new}}", + "channel-muted-for-1-hour": "Channel muted for 1 hour \n(until {{duration}})", + "channel-muted-for-1-week": "Channel muted for 1 week \n(until {{duration}})", + "channel-muted-for-15-minutes": "Channel muted for 15 minutes \n(until {{duration}})", + "channel-muted-for-8-hours": "Channel muted for 8 hours \n(until {{duration}})", + "channel-muted-till-unmuted": "Channel muted till unmuted \n(until {{duration}})", + "channel-on-status": "Channel on Status", + "channel-unmuted-successfully": "Channel unmuted successfully!", + "chaos-mode": "Chaos mode", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chat and transact privately with friends", + "chat-is-a-contact": "Contact", + "chat-is-not-a-contact": "Not a contact", + "chat-key": "Chat key", + "chat-key-content": "Messages on the Status chat protocol are sent and received using encryption keys. The public chat key is a string of characters you share with others so they can send you messages in Status.", + "chat-key-description": "Your unique public ID in Status. Others can use it to send you a contact request.", + "chat-key-title": "Chat Key", + "chat-link-previews": "Chat link previews", + "chat-muted-for-1-hour": "Chat muted for 1 hour \n(until {{duration}})", + "chat-muted-for-1-week": "Chat muted for 1 week \n(until {{duration}})", + "chat-muted-for-15-minutes": "Chat muted for 15 minutes \n(until {{duration}})", + "chat-muted-for-8-hours": "Chat muted for 8 hours \n(until {{duration}})", + "chat-muted-till-unmuted": "Chat muted till unmuted \n(until {{duration}})", + "chat-name": "Chat name", + "chat-name-content": "Three random words, derived algorithmically from your chat key and used as your default alias in chat. Chat names are completely unique; no other user can have the same three words.", + "chat-name-title": "Chat Name", + "chat-notification-preferences": "Notification settings", + "chat-settings": "Chat settings", + "chat-unmuted-successfully": "Chat unmuted successfully!", + "chat-with": "Chat with {{selected-user}}", + "chat-with-friends": "Chat privately with friends", + "chats": "Chats", + "check-before-syncing": "Check before syncing", + "check-before-syncing-doc-checkbox-1": "Connect both devices to the same network", + "check-before-syncing-doc-checkbox-2": "Make sure you are logged in on the other device", + "check-before-syncing-doc-checkbox-3": "Disable the firewall and VPN on your devices", + "check-before-syncing-doc-description": "To sync your devices successfully, make sure to check and complete these steps:", + "check-keycard": "Check your Keycard", + "check-on-block-explorer": "Check on block explorer", + "check-on-opensea": "Check on opensea", + "check-other-device-for-pairing": "Check your other device for a pairing request.", + "check-your-account-balance-and-activity": "Check your account balance and activity", + "check-your-recovery-phrase": "Check your seed phrase", + "choose-actions": "Choose actions", + "choose-authentication-method": "Choose an authentication method", + "choose-new-location-for-keystore": "Choose a new location to save your keystore file", + "choose-storage": "Choose storage", + "clear": "Clear", + "clear-all": "Clear all", + "clear-history": "Clear history", + "clear-history-action": "Clear", + "clear-history-confirmation": "Clear history?", + "clear-history-confirmation-content": "Are you sure you want to clear this chat history?", + "clear-history-title": "Clear history?", + "clear-history?": "Clear History?", + "cleared-chat-description-public": "It's been quiet here. Start the conversation or ", + "close": "Close", + "close-all": "Close all", + "close-app-button": "Confirm", + "close-app-content": "The app will stop and close. When you reopen it, the selected network will be used", + "close-app-title": "Warning!", + "close-chat": "Close chat", + "close-chat-confirmation": "This conversation will disappear from the list.\nIt will appear again if the contact sends a new message.", + "close-community": "Close community", + "close-contact-search": "Close contact search", + "code-snippet": "Code snippet", + "collectibles": "Collectibles", + "collectibles-leak-metadata": "You can display your NFTs here. If you do, you will share your wallet and IP address", + "collecting-usage-data": "Share basic usage and diagnostic data to improve Status. Opt out anytime in Settings.", + "colour": "Colour", + "command-button-send": "Send", + "common-names": "Common names", + "communities": "Communities", + "communities-alpha": "Communities (alpha)", + "communities-enabled": "Communities enabled", + "communities-only-available-in-desktop": "For now, you can only create communities on the Status desktop app.", + "communities-verified": "✓ Verified Status Community", + "community": "Community", + "community-channel": "Community channel", + "community-channel-read-requirements-met": "View only requirements met", + "community-channel-read-requirements-not-met": "View only requirements not met", + "community-channel-write-requirements-met": "View and post requirements met", + "community-channel-write-requirements-not-met": "View and post requirements not met", + "community-color": "Community colour", + "community-color-placeholder": "Pick a colour", + "community-edit-title": "Edit community", + "community-emoji-thumbnail-title": "Thumbnail", + "community-enter-channel-info": "Entering channel will reveal your public addresses to the node owner", + "community-image-delete": "", + "community-image-pick": "Pick an image", + "community-image-remove": "Remove", + "community-image-take": "Take a photo", + "community-info": "Community info", + "community-info-not-found": "Community information not found", + "community-invite-title": "Invite", + "community-join-requirements-changed": "Token requirements have changed", + "community-join-requirements-met": "Join requirements met", + "community-join-requirements-not-met": "Join requirements not met", + "community-join-requirements-tokens-lost": "You no longer have the tokens required", + "community-key": "Community private key", + "community-key-placeholder": "Type your community private key", + "community-kicked-body": "You were kicked from", + "community-kicked-heading": "Kicked from community", + "community-link": "Community link", + "community-members": { + "one": "{{count}} member", + "other": "{{count}} members" + }, + "community-members-title": "Members", + "community-message-preview": "Invitation to join {{community-name}}", + "community-on-status": "Community on Status", + "community-overview": "Community Overview", + "community-private-key": "Community private key", + "community-request-accepted": "Request accepted", + "community-request-accepted-body-text": "Now you are a member of", + "community-request-not-accepted": "Request hasn't been accepted", + "community-request-not-accepted-body-text-prefix": "Your request to join", + "community-request-not-accepted-body-text-suffix": "hasn't been accepted", + "community-request-pending": "Request pending", + "community-request-pending-body-text": "You requested to join", + "community-requests-to-join-title": "Membership requests", + "community-roles": "Roles", + "community-rules": "Community rules", + "community-share-title": "Share", + "community-thumbnail-image": "Thumbnail image", + "community-thumbnail-upload": "Upload", + "community-unmuted": "Community unmuted", + "complete-backup": "Complete backup", + "complete-hardwallet-setup": "This card is now linked. You need it to sign transactions and unlock your keys", + "completed": "Completed", + "confirm": "Confirm", + "confirm-account-origin": "Confirm account origin", + "confirm-and-leave": "Confirm and leave", + "confirm-backup": "Check your backup", + "confirm-changes": "Confirm changes", + "confirm-new-password": "Confirm new password", + "confirm-pairing-code-placeholder": "Confirm your pairing code...", + "confirm-password-placeholder": "Confirm your password...", + "confirm-selection": "Confirm selection", + "confirm-the-position": "Confirm the position of certain words in your recovery phrase", + "confirmation-request": "Confirmation request", + "confirmations": "Confirmations", + "confirmations-helper-text": "When the transaction has 12 confirmations you can consider it settled.", + "confirmed-on": "Confirmed on", + "connect": "Connect", + "connect-mailserver-content": "Connect to {{name}}?", + "connect-with-users": "Connect with users", + "connected": "Connected", + "connected-dapps": "Connected dApps", + "connected-dont-move": "Connected. Don’t move your card.", + "connected-peers": "Connected and discovered peers", + "connected-to": "Connected to", + "connecting": "Connecting...", + "connecting-requires-login": "Connecting to another network requires login", + "connection-request": "Connection Request", + "connection-status": "Connection status", + "connection-type": "Type of connection to peers", + "connection-with-the-card-lost": "Connection with the card\n has been lost", + "connection-with-the-card-lost-setup-text": "To resume the setup hold the card to\n the back of your phone and maintain\n card to phone contact", + "connection-with-the-card-lost-text": "To proceed hold the card to the back of your phone", + "contact-code": "Chat key", + "contact-profile-request-pending": "Contact request pending", + "contact-request": "Contact request", + "contact-request-accepted": "Accepted ✓", + "contact-request-accepted-toast": "{{name}} accepted your contact request", + "contact-request-chat-add": "Add {{name}} as contact to send a message", + "contact-request-chat-pending": "Your contact request is pending", + "contact-request-chat-received": "{{name}} sent you a contact request", + "contact-request-declined": "Declined ⓧ", + "contact-request-header": "👋 Contact requests", + "contact-request-is-now-a-contact": "is now a contact", + "contact-request-message-prompt": "Why should they accept your request?", + "contact-request-outgoing": "You’re trying to connect with", + "contact-request-pending": "Pending...", + "contact-request-removed-as-contact": "removed as a contact", + "contact-request-removed-you-as-contact": "removed you as a contact", + "contact-request-review": "Review contact request", + "contact-request-sent": "sent contact request", + "contact-request-sent-to": "Contact request sent to", + "contact-request-sent-toast": "{{name}} sent you a contact request", + "contact-request-was-accepted": "Contact request accepted", + "contact-request-was-ignored": "Contact request ignored", + "contact-request-was-sent": "Contact request sent", + "contact-requests": "Contact requests", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "contacts": "Contacts", + "contacts-descr": "Your contacts will appear here. You will receive status updates from anyone you add as a contact", + "contacts-empty": "Contacts with ENS names will appear here", + "continue": "Continue", + "continue-anyway": "Continue anyway", + "contract-address": "Contract address", + "contract-interaction": "Contract interaction", + "contract-isnt-supported": "Contract is not supported", + "copied-to-clipboard": "copied-to-clipboard", + "copy-address": "Copy address", + "copy-all-details": "Copy all details", + "copy-info": "Copy info", + "copy-keycard": "Create a copy of this Keycard", + "copy-message-id": "Copy message ID", + "copy-qr": "Copy code", + "copy-text": "Copy text", + "copy-to-clipboard": "Copy", + "copy-transaction-hash": "Copy transaction hash", + "correct-private-key": "Correct private key", + "cost-fee": "Cost/Fee", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Create", + "create-a-pin": "Create a 6-digit passcode", + "create-a-puk": "Create a 12-digit PUK", + "create-account": "Create account", + "create-backup-keycard": "Create backup Keycard", + "create-backup-profile-keycard": "Create backup for your profile Keycard", + "create-category": "Create category", + "create-channel": "Create a channel", + "create-channel-title": "New channel", + "create-community": "Create a community", + "create-group-chat": "Create group chat", + "create-keycard-pin": "Create Keycard PIN", + "create-multiaccount": "Generate keys", + "create-new-key": "Get new keys", + "create-new-keycard-pin": "Create new Keycard PIN", + "create-new-profile": "Create new profile", + "create-pin": "Create 6-digit passcode", + "create-pin-description": "You'll need your card + this 6-digit passcode to unlock Status and to confirm transactions", + "create-profile": "Create profile", + "create-profile-keycard": "Create profile on empty Keycard", + "create-profile-password-info-box-description": "Your Status keys are the foundation of your self-sovereign identity in Web3. You have complete control over these keys, which you can use to sign transactions, access your data, and interact with Web3 services.\n\nYour keys are always securely stored on your device and protected by your Status profile password. Status doesn't know your password and can't reset it for you. If you forget your password, you may lose access to your Status profile and wallet funds.\n\nRemember your Status password and don't share it with anyone.", + "create-profile-password-info-box-title": "About your profile password", + "created-group-chat-description": "You created the group {{group-name}}", + "crypto": "Crypto", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Currency", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghanistan Afghani", + "currency-display-name-ars": "Argentine Peso", + "currency-display-name-aud": "Australian Dollar", + "currency-display-name-bbd": "Barbados Dollar", + "currency-display-name-bdt": "Bangladeshi Taka", + "currency-display-name-bgn": "Bulgarian Lev", + "currency-display-name-bhd": "Bahraini Dinar", + "currency-display-name-bnd": "Brunei Darussalam Dollar", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Brazil Real", + "currency-display-name-btc": "Bitcoin", + "currency-display-name-btn": "Bhutanese Ngultrum", + "currency-display-name-cad": "Canada Dollar", + "currency-display-name-chf": "Switzerland Franc", + "currency-display-name-clp": "Chile Peso", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Colombia Peso", + "currency-display-name-crc": "Costa Rica Colon", + "currency-display-name-czk": "Czech Koruna", + "currency-display-name-dai": "DAI", + "currency-display-name-dkk": "Denmark Krone", + "currency-display-name-dop": "Dominican Republic Peso", + "currency-display-name-egp": "Egypt Pound", + "currency-display-name-etb": "Ethiopian Birr", + "currency-display-name-eth": "Ethereum", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "British Pound", + "currency-display-name-gel": "Georgian Lari", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Hong Kong Dollar", + "currency-display-name-hrk": "Croatia Kuna", + "currency-display-name-huf": "Hungary Forint", + "currency-display-name-idr": "Indonesia Rupiah", + "currency-display-name-ils": "Israel Shekel", + "currency-display-name-inr": "India Rupee", + "currency-display-name-isk": "Iceland Krona", + "currency-display-name-jmd": "Jamaica Dollar", + "currency-display-name-jpy": "Japanese Yen", + "currency-display-name-kes": "Kenyan Shilling", + "currency-display-name-krw": "Korea (South) Won", + "currency-display-name-kwd": "Kuwaiti Dinar", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Sri Lanka Rupee", + "currency-display-name-mad": "Moroccan Dirham", + "currency-display-name-mdl": "Moldovan Leu", + "currency-display-name-mur": "Mauritius Rupee", + "currency-display-name-mwk": "Malawian Kwacha", + "currency-display-name-mxn": "Mexico Peso", + "currency-display-name-myr": "Malaysia Ringgit", + "currency-display-name-mzn": "Mozambique Metical", + "currency-display-name-nad": "Namibia Dollar", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Norway Krone", + "currency-display-name-npr": "Nepal Rupee", + "currency-display-name-nzd": "New Zealand Dollar", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinean Kina", + "currency-display-name-php": "Philippines Peso", + "currency-display-name-pkr": "Pakistan Rupee", + "currency-display-name-pln": "Polish Zloty", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Serbia Dinar", + "currency-display-name-rub": "Russia Ruble", + "currency-display-name-sar": "Saudi Arabia Riyal", + "currency-display-name-sek": "Sweden Krona", + "currency-display-name-sgd": "Singapore Dollar", + "currency-display-name-snt": "Status Network Token", + "currency-display-name-thb": "Thailand Baht", + "currency-display-name-try": "Turkish Lira", + "currency-display-name-ttd": "Trinidad and Tobago Dollar", + "currency-display-name-twd": "Taiwan New Dollar", + "currency-display-name-tzs": "Tanzanian Shilling", + "currency-display-name-uah": "Ukraine Hryvnia", + "currency-display-name-ugx": "Ugandan Shilling", + "currency-display-name-usd": "United States Dollar", + "currency-display-name-uyu": "Uruguay Peso", + "currency-display-name-vef": "Venezuela Bolívar", + "currency-display-name-vnd": "Vietnam Dong", + "currency-display-name-zar": "South Africa Rand", + "current": "Current", + "current-average": "Current average", + "current-average-tip": "Current average tip", + "current-base": "Current base", + "current-base-fee": "Current base fee", + "current-minimum-tip": "Current minimum tip", + "current-network": "Current network", + "current-password": "Current password", + "current-pin": "Enter 6-digit passcode", + "current-pin-description": "Enter your 6-digit passcode to proceed", + "current-units": "Current: {{current}} UNITS", + "custom": "Custom", + "custom-node": "You are using custom RPC endpoint. Your local transfers history might be incomplete.", + "custom-seed-phrase": "Invalid seed phrase", + "custom-seed-phrase-text-1": "This seed phrase doesn't match our supported dictionary. Check for misspelled words.", + "cut": "Cut", + "dapp": "ÐApp", + "dapp-requests-network-access": "DApp requests access to a disabled network", + "dapp-requests-network-access-with-limit": "DApp requests access to a disabled network, but the limit of 5 active networks is reached. Please deactivate one.", + "dapp-starter-pack-accept": "Accept and Open", + "dapp-starter-pack-description": "Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps", + "dapp-starter-pack-title": "Starter Pack", + "dapp-will-be-able-to": "{{dapp-name}} will be able to:", + "dapp-would-like-to-connect-wallet": "would like to connect to", + "dapps": "dApps", + "dapps-permissions": "DApp permissions", + "dark": "Dark", + "data": "Data", + "data-collected": "Data collected", + "data-collected-subtitle": "The table below shows the exact data that is stored and will be sent. Data is validated against public rules to ensure no sensitive data is sent. Don’t trust, verify.", + "data-syncing": "Data syncing", + "data-usage": "Data usage", + "database-reset-content": "Chats, contacts and settings have been deleted. You can use your account with your Keycard", + "database-reset-title": "Database reset", + "database-reset-warning": "Database will be reset. Chats, contacts and settings will be deleted", + "datetime-ago": "ago", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "day", + "other": "days" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hour", + "other": "hours" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-hour-short-lowercase": { + "one": "h", + "other": "h" + }, + "datetime-minute": { + "one": "minute", + "other": "minutes" + }, + "datetime-minute-mid": { + "one": "min", + "other": "min" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "second", + "other": "seconds" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "today", + "datetime-yesterday": "Yesterday", + "days": "Days", + "debugging": "Debugging", + "dec": "Dec", + "decimals": "Decimals", + "decline": "Decline", + "declined": "Declined", + "decryption-failed-content": "An error occured decrypting your data. You might need to erase your old data and generate a new account. Tap “Apply” to erase or “Cancel” to try again", + "default": "Default", + "default-account-placeholder": "Account Name", + "default-assets": "Default ERC20 and ERC721", + "default-ethereum-format": "Default Ethereum format", + "default-format": "Default format", + "default-sync-period": "Sync history for", + "default-watched-address-placeholder": "Watched address", + "define-amount-sent-from-network": "Define amount sent from {{network}} network", + "delete": "Delete", + "delete-account": "Delete account", + "delete-and-leave-group": "Delete and leave group", + "delete-bootnode": "Delete bootnode", + "delete-bootnode-are-you-sure": "Are you sure you want to delete this bootnode?", + "delete-bootnode-title": "Delete bootnode", + "delete-category-confirmation": "Are you sure you want to delete this category?", + "delete-confirmation": "Delete?", + "delete-for-everyone": "Delete for everyone", + "delete-for-me": "Delete for me", + "delete-keys-keycard": "Delete keys from Keycard", + "delete-mailserver": "Delete Status node", + "delete-mailserver-are-you-sure": "Are you sure you want to delete this Status node?", + "delete-mailserver-title": "Delete Status node", + "delete-message": "Delete message", + "delete-my-account": "Delete my account", + "delete-my-profile": "Delete my profile", + "delete-network-confirmation": "Are you sure you want to delete this network?", + "delete-network-error": "Please connect to a different network before deleting this one", + "delete-network-title": "Delete network?", + "delete-node": "Delete node", + "delete-node-are-you-sure": "Are you sure you want to delete this node?", + "delete-node-title": "Delete node", + "delete-profile": "Delete profile", + "delete-profile-warning": "Warning: If you don’t have your seed phrase written down, you will lose access to your funds after you delete your profile", + "deleted-this-message": "deleted this message", + "delivered": "Delivered", + "deny": "Deny", + "deposit-to-your-wallet": "Deposit to your wallet", + "derivation-path": "Derivation path", + "derivation-path-copied": "Derivation path copied", + "derivation-path-desc": "Derivation paths are the routes your Status Wallet uses to generate addresses from your private key.", + "derivation-path-header": "Derivation path", + "derive-addresses": "Derive addresses", + "describe-channel": "Describe the channel", + "description": "Description", + "desktop": "Desktop", + "destroy": "Destroy", + "details": "Details", + "dev-mode": "Development mode", + "dev-mode-settings": "Development mode settings", + "device-syncing": "Device syncing", + "devices": "Devices", + "devices-count": "{{number}} devices", + "different-keycard": "This is a different Keycard", + "disable": "disable", + "disable-all": "Disable all", + "disable-later-in-settings": "You can disable this later in Settings", + "disable-light-client": "Disable Light Client?\n\nYou’ll need to log in again.", + "disable-privacy-mode": "Disable privacy mode", + "disable-store-confirmations": "Disable Store confirmations?\n\nYou’ll need to log in again.", + "disabled": "Disabled", + "disabled-2": "disabled", + "discard": "Discard", + "discard-changes?": "Discard changes?", + "disconnect": "Disconnect", + "disconnect-dapp": "Disconnect dApp", + "disconnect-dapp-confirmation": "Are you sure you want to disconnect {{dapp}}?", + "disconnect-dapp-fail": "Failed to disconnect {{dapp}} from {{account}}", + "disconnect-dapp-success": "{{dapp}} disconnected from {{account}}", + "disconnected": "Disconnected", + "discover": "Discover", + "discover-communities": "Discover communities", + "discover-web3": "Discover web3", + "dismiss": "Dismiss", + "display": "Display", + "display-collectibles": "Display collectibles", + "do-not-cheat": "Verify your backup", + "do-not-cheat-description": "Make sure you wrote down the words in the correct order.", + "do-not-quit": "Do not quit the application or turn off your device. Doing so will lead to data corruption, loss of your Status profile and the inability to use Status.", + "do-not-quit-the-application": "Do not quit the application", + "do-not-share": "Do not share", + "documents": "Documents", + "done": "Done", + "dont-ask": "Don't ask me again", + "dont-auto-recalculate-network": "Don't auto recalculate {{network}}", + "dont-have-statatus-on-another-device": "Don't have Status on another device?", + "dont-yell-at-me": "Don’t yell at me", + "duration-estimate": "Duration estimate", + "edit": "Edit", + "edit-account": "Edit account", + "edit-categories": "Edit Categories", + "edit-channel-title": "Edit channel", + "edit-chats": "Edit chats", + "edit-community": "Edit community", + "edit-derivation-path": "Edit derivation path", + "edit-details": "Edit details", + "edit-favourite": "Edit favourite", + "edit-group": "Edit group", + "edit-message": "Edit message", + "edit-name-and-image": "Edit name and image", + "edit-name-image": "Edit name and image", + "edit-nickname": "Edit nickname", + "edit-profile": "Edit Profile", + "edit-receiver-networks": "Edit receiver networks", + "edit-shared-addresses": "Edit shared addresses", + "edit-wallet-account-colour-updated-message": "Account colour has been updated", + "edit-wallet-account-emoji-updated-message": "Account emoji has been updated", + "edit-wallet-account-name-updated-message": "Account name has been updated", + "edit-wallet-network-preferences-updated-message": "Account network preferences has been updated", + "edited": "Edited", + "editing-message": "Editing message", + "eligible-to-join-as": "Eligible to join as", + "emoji-activity": "Activity", + "emoji-and-colors-unique-error": "Emoji and colour combination must be unique", + "emoji-flags": "Flags", + "emoji-food": "Food", + "emoji-hash": "Emoji Hash", + "emoji-hash-copied": "Emojihash copied to clipboard", + "emoji-nature": "Nature", + "emoji-no-results-description": "Try something like “rainbow”", + "emoji-no-results-title": "No emojis match your search", + "emoji-objects": "Objects", + "emoji-people": "People", + "emoji-recent": "Recent", + "emoji-search-placeholder": "Search emojis", + "emoji-symbols": "Symbols", + "emoji-travel": "Travel", + "emojihash": "Emojihash", + "emojihash-description": "A visual representation of your chat key. It will help other users recognize your profile.", + "emojis": "Emojis", + "empty-activity-center": "Your chat notifications\nwill appear here", + "empty-card-info": "To generate new key pair, or import existent non-profile keys to the Keycard, please use the Status desktop app. If you'd like these features on mobile, feel free to upvote them and discuss them in Status community.", + "empty-chat-description": "There are no messages \nin this chat yet", + "empty-chat-description-community": "It's been quiet here for the last {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Any messages you send here are encrypted and can only be read by you and ", + "empty-chat-description-public": "It's been quiet here for the last {{quiet-hours}}. Start the conversation or ", + "empty-chat-description-public-share-this": "share this chat.", + "empty-keycard-required": "Requires an empty Keycard", + "empty-notifications-admin-tab": "No unread admin notifications", + "empty-notifications-all-tab": "No unread notifications", + "empty-notifications-contact-requests-tab": "No contact requests notifications", + "empty-notifications-identity-verification-tab": "No identity verification requests", + "empty-notifications-membership-tab": "No membership notifications", + "empty-notifications-mentions-tab": "No unread mention notifications", + "empty-notifications-replies-tab": "No unread reply notifications to your messages", + "empty-notifications-subtitle-read": "Your notifications will be here", + "empty-notifications-subtitle-unread": "Unread notifications will be here", + "empty-notifications-system-tab": "No system notifications", + "empty-notifications-title-read": "No notifications", + "empty-notifications-title-unread": "You're up to date", + "empty-notifications-transactions-tab": "No transaction notifications", + "empty-pending-invitations-descr": "People who wish to join the group\nvia an invite link will appear here", + "empty-tab": "Empty tab", + "empty-tab-description": "C'mon do something...", + "enable": "Enable", + "enable-access-to-camera": "Enable access to camera", + "enable-access-to-local-network": "Enable access to local network", + "enable-all": "Enable all", + "enable-biometrics": "Enable biometrics", + "enable-camera": "Enable camera", + "enable-light-client": "Enable Light Client?\n\nYou’ll need to log in again.", + "enable-link-previews": "Enable link previews in chat?", + "enable-network-access": "Enable network access", + "enable-network-to-sign-requests": "to sign requests from", + "enable-news-notifications-third-party": "Include notifications delivered through third-party providers", + "enable-notifications": "Enable notifications", + "enable-notifications-info-description": "Describe how using Firebase affects privacy.", + "enable-notifications-sub-title": "Receive notifications about your new messages, wallet transactions and news", + "enable-privacy-mode": "Enable privacy mode", + "enable-store-confirmations": "Enable Store confirmations?\n\nYou’ll need to log in again.", + "enabled": "enabled", + "enabled-push-notifications": "Enable push notifications", + "encrypt-with-password": "Encrypt with password", + "encrypted-key-pairs": "Encrypted key pairs", + "encrypted-key-pairs-code": "Encrypted key pairs code", + "ending-not-allowed": "{{ending}} ending is not allowed", + "ends-with-space": "Cannot end with space", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Add username", + "ens-agree-to": "Agree to ", + "ens-chat-settings": "Chat settings", + "ens-custom-domain": "Custom domain", + "ens-custom-username-hints": "Type the entire username including the custom domain like username.domain.eth", + "ens-custom-username-taken": "Username doesn’t belong to you :(", + "ens-deposit": "Deposit", + "ens-dismiss-message": "Click here to dismiss", + "ens-displayed-with": "Your messages are displayed to others with", + "ens-get-name": "Get a universal username", + "ens-got-it": "Ok, got it", + "ens-locked": "Username locked. You won’t be able to release it until {{date}}", + "ens-name-content": "Custom alias for your chat key that you can register using the Ethereum Name Service. ENS names are decentralized usernames.", + "ens-name-not-found": "Cannot resolve ENS name", + "ens-name-title": "ENS Name", + "ens-network-restriction": "Only available on Ethereum", + "ens-no-usernames": "You don't have any username connected", + "ens-or-chat-key": "ENS or Chatkey", + "ens-powered-by": "Powered by Ethereum Name Services", + "ens-primary-username": "Primary username", + "ens-register": "Register", + "ens-registration-failed": "To register the username, please try again.", + "ens-registration-failed-title": "Transaction failed", + "ens-registration-failure": "Registration failed", + "ens-registration-in-progress": "Registration in progress...", + "ens-release-username": "Release username", + "ens-remove-hints": "Removing will detach the username from your key.", + "ens-remove-username": "Remove username", + "ens-saved": " is now connected with your chat key and can be used in Status.", + "ens-saved-title": "Username added", + "ens-show-username": "Show my ENS username in chats", + "ens-terms-header": "Terms of name registration", + "ens-terms-point-1": "Funds are deposited for 1 year. Your SNT will be locked, but not spent.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS Registry).", + "ens-terms-point-2": "After 1 year, you can release the name and get your deposit back, or take no action to keep the name.", + "ens-terms-point-3": "If terms of the contract change — e.g. Status makes contract upgrades — user has the right to release the username regardless of time held.", + "ens-terms-point-4": "The contract controller cannot access your deposited funds. They can only be moved back to the address that sent them.", + "ens-terms-point-5": "Your address(es) will be publicly associated with your ENS name.", + "ens-terms-point-6": "Usernames are created as subdomain nodes of stateofus.eth and are subject to the ENS smart contract terms.", + "ens-terms-point-7": "You authorize the contract to transfer SNT on your behalf. This can only occur when you approve a transaction to authorize the transfer.", + "ens-terms-point-8": "These terms are guaranteed by the smart contract logic at addresses:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "Terms of name registration.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Transaction pending...", + "ens-understand": "I understand that my wallet address will be publicly connected to my username.", + "ens-username": "ENS username", + "ens-username-already-added": "Username is already connected with your chat key and can be used inside Status.", + "ens-username-available": "✓ Username available!", + "ens-username-connected": "This user name is owned by you and connected with your chat key.", + "ens-username-connected-continue": "Continue to set `Show my ENS username in chats`.", + "ens-username-connected-with-different-key": "Continuing will require a transaction to connect the username with your current chat key.", + "ens-username-connection-confirmation": "{{username}} will be connected once the transaction is complete.", + "ens-username-hints": "At least 4 characters. Latin letters, numbers, and lowercase only.", + "ens-username-invalid": "Letters and numbers only.", + "ens-username-invalid-name-warning": "Registration process of one of your ens names has finished in invalid state. DO NOT USE the name for wallet transactions and reach out to our support at support@status.im", + "ens-username-owned": "✓ Username is owned by you. ", + "ens-username-owned-continue": "Continuing will connect this username with your chat key.", + "ens-username-registration-confirmation": "Nice! You own {{username}} once the transaction is complete.", + "ens-username-registration-invalid": "Warning! Registration process has finished in invalid state. DO NOT USE the name for wallet transactions and reach out to our support at support@status.im", + "ens-username-taken": "Username already taken :(", + "ens-username-you-can-follow-progress": "You can follow the progress in the Transaction History section of your wallet.", + "ens-usernames": "ENS usernames", + "ens-usernames-details": "Register a universal username to be easily recognized by other users", + "ens-want-custom-domain": "I own a name on another domain", + "ens-want-domain": "I want a stateofus.eth domain", + "ens-welcome-hints": "ENS names transform those crazy-long addresses into unique usernames.", + "ens-welcome-point-customize": "An ENS name can replace your random 3-word name in chat. Be @yourname instead of {{name}}.", + "ens-welcome-point-customize-title": "Customize your chat name", + "ens-welcome-point-receive": "Others can send you funds via chat in one simple step.", + "ens-welcome-point-receive-title": "Receive transactions in chat", + "ens-welcome-point-register": "Register once to keep the name forever. After 1 year you can release the name and get your SNT back.", + "ens-welcome-point-register-title": "10 SNT to register", + "ens-welcome-point-simplify": "You can receive funds to your easy-to-share ENS name rather than your hexadecimal hash (0x...).", + "ens-welcome-point-simplify-title": "Simplify your ETH address", + "ens-welcome-point-verify": "You can verify and add any usernames you own in the next steps.", + "ens-welcome-point-verify-title": "Already own a username?", + "ens-your-username": "Your username", + "ens-your-usernames": "Your usernames", + "ens-your-your-name": "Your ENS name", + "ensure-both-devices-are-on-the-same-network": "Ensure both devices are on the same network", + "ensure-qr-code-is-in-focus-to-scan": "Ensure that the QR code is in focus to scan", + "ensure-written-recovery": "Ensure you have written down your recovery phrase and have a safe place to keep it. Remember, anyone who has your recovery phrase has access to your funds.", + "enter-12-words": "Enter the 12 words of your seed phrase, separated by single spaces", + "enter-a-private-key": "Enter a private key", + "enter-a-seed-phrase": "Enter a seed phrase", + "enter-address": "Enter address", + "enter-another-recovery-phrase": "Enter another recovery phrase", + "enter-channel": "Enter channel", + "enter-chat-key": "Enter chat key or scan a QR", + "enter-contact-code": "ENS (vitalik94) or chat key (0x04…)", + "enter-current-keycard-pin": "Enter current Keycard PIN", + "enter-eth": "Enter any ETH address or ENS name.", + "enter-keycard-pin": "Enter Keycard PIN", + "enter-pair-code": "Enter your pairing code", + "enter-pair-code-description": "Pairing code can be set from an already paired Status client", + "enter-password": "Enter password", + "enter-password-migration-prompt": "Enter your password to move contacts, chats and settings along with your keys", + "enter-pin": "Enter 6-digit passcode", + "enter-private-key": "Enter the private key of an address", + "enter-private-key-placeholder": "Enter your private key", + "enter-puk-code": "Enter PUK code", + "enter-puk-code-description": "6-digit passcode has been blocked.\n Please enter PUK code to unblock passcode.", + "enter-recipient-address-or-username": "Enter address or username of the recipient", + "enter-recovery-phrase": "Enter recovery phrase", + "enter-sync-code": "Enter sync code", + "enter-url": "Enter URL", + "enter-user-pk": "Enter user public key", + "enter-watch-account-address": "Scan a QR code\nor\nenter the address to watch", + "enter-word": "Enter word", + "enter-your-code": "Enter your 6-digit passcode", + "enter-your-password": "Enter your password", + "epoch-number": "Epoch {{number}}", + "error": "Error", + "error-loading-audio": "Error while loading audio", + "error-syncing-connection-failed": "Oops! Connection failed. Try again", + "error-this-is-not-a-sync-qr-code": "Oops! This is not a sync QR code", + "error-unable-to-get-balance": "Unable to get balance", + "error-unable-to-get-prices": "Currency conversion error. Refresh your screen to try again.", + "error-unable-to-get-token-balance": "Unable to get token balance", + "errors": "Errors", + "est-time": "Est. time", + "eth": "ETH", + "eth-or-ens": "ETH address or ENS name.", + "ethereum-address": "Ethereum address", + "ethereum-node-started-incorrectly-description": "Ethereum node was started with incorrect configuration, application will be stopped to recover from that condition. Configured network id = {{network-id}}, actual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ethereum node started incorrectly", + "etherscan-lookup": "Look up on Etherscan", + "everyone": "Everyone", + "everyone-mention": "everyone", + "existing-saved-address": "Existing saved address", + "expand-all": "Expand all", + "experienced-web3": "Experienced in Web3?", + "explore-the-decentralized-web": "Explore and interact with the decentralized web", + "explore-the-new-status": "Explore the new Status", + "export-account": "Export account", + "export-key": "Export private key", + "external-link": "External link", + "external-storage-denied": "Access to external storage is denied", + "factory-reset": "Factory reset", + "factory-reset-keycard": "Factory reset this Keycard", + "factory-reset-warning": "Please ensure you have a backup of your recovery phrase before proceeding with the factory reset. If you want to switch to password authentication instead of Keycard, remove the profile from the device and log in with your recovery phrase.", + "failed": "Failed", + "failed-on": "Failed on", + "failed-to-fetch-community": "Failed to fetch community", + "failed-to-migrate-key-pair": "Failed to migrate key pair", + "faq": "Frequently asked questions", + "fast": "Fast", + "favorite-communities": "Your favourite communities", + "favourite": "Favourite", + "favourite-description": "Your favourite websites will appear here", + "favourites": "Favourites", + "favourites-empty": "Addresses added to favourites will appear here", + "feature-flags": "Feature Flags", + "feature-that-will-be-unavailable": "Features that will be unavailable:", + "feature-that-will-be-unavailable-item-1": "Wallet (Swap, Send, Token data, etc.)", + "feature-that-will-be-unavailable-item-2": "Market (Token data, prices, and news, etc.)", + "feature-that-will-be-unavailable-item-3": "Token-gated communities", + "feature-that-will-be-unavailable-item-4": "Mobile Push-notifications", + "feature-that-will-be-unavailable-item-5": "Status news, etc.", + "feature-unavailable": "Feature unavailable", + "feature-unavailable-for-keycard-description": "It’s not currently supported for Keycard users.", + "feature-unavailable-info": "If you'd like this feature on mobile, feel free to ", + "featured": "Featured", + "features-and-balances-disabled": "Balances and some features are unavailable", + "feb": "Feb", + "fee-cap": "Fee cap", + "fee-current-gwei": "Current: {{current}} GWEI", + "fee-explanation": "Maximum overall price for the transaction. If the block base fee exceeds this, it will be included in a following block with a lower base fee.", + "fee-options": "Suggested fee options", + "fees": "Fees", + "fetch-community": "Fetch community", + "fetch-messages": "Fetch messages", + "fetch-timeline": "↓ Fetch", + "fetching-community": "Fetching community...", + "fetching-the-price-took-longer-than-expected": "Fetching the price took longer than expected.\nPlease, try again later.", + "finalise-migration": "Finalise migration", + "finalise-migration-instructions": "Finalise migration to use this Keycard for signing in and authorising transactions on this device", + "finalized-on": "Finalized on", + "find": "Find", + "find-it-in-setting": "Find it in Settings on your other synced device", + "find-sync-code": "Find sync code", + "find-your-friends": "Find your friends with their ENS or Chatkey", + "finish": "Finish", + "finishing-card-setup": "Finishing card setup", + "fleet": "Fleet", + "fleet-settings": "Fleet settings", + "follow": "Follow", + "follow-your-interests": "Jump into a public chat and meet new people", + "for": "for", + "for-airdrops": "For airdrops", + "forgot-password": "Forgot password?", + "forgot-your-password-info-create-new-password": "Create a new password", + "forgot-your-password-info-create-new-password-description": "Enter a new password and you're all set! You will be able to use your new password.", + "forgot-your-password-info-description": "To recover your password follow these steps:", + "forgot-your-password-info-reinstall-app": "Reinstall the Status app", + "forgot-your-password-info-reinstall-app-description": "Re-download the app from your store.", + "forgot-your-password-info-remove-app": "Remove the Status app", + "forgot-your-password-info-remove-app-description": "This will erase all your data from the device, including your password.", + "forgot-your-password-info-signup-with-key": "with your existing keys", + "forgot-your-password-info-signup-with-key-description": "Access with your seed phrase or with your Keycard.", + "forgot-your-password-info-title": "Forgot your password?", + "fr": "Fr", + "free": "↓ Free", + "fri": "Fri", + "from": "from", + "from-all-profiles-on-device": "From all profiles on device", + "from-capitalized": "From", + "from-label": "From", + "gas-amount": "Gas amount", + "gas-amount-current": "Current: {{current}}", + "gas-amount-higher": "Too high. Maximum: {{high}}", + "gas-amount-higher-than": "Higher than necessary (current: {{current}})", + "gas-amount-limit": "Gas amount limit", + "gas-amount-lower": "Too low. Minimum: {{low}}", + "gas-amount-lower-than": "Lower than current (current: {{current}})", + "gas-limit": "Gas limit", + "gas-price": "Gas price", + "gas-price-current": "Current: {{current}} GWEI", + "gas-price-higher": "Too high. Maximum: {{high}}", + "gas-price-higher-than": "Higher than necessary (current: {{current}})", + "gas-price-lower": "Too low. Minimum: {{low}}", + "gas-price-lower-than": "Lower than current (current: {{current}})", + "gas-used": "Gas used", + "gated": "Gated", + "generate-a-key": "Generate keys", + "generate-a-new-account": "Generate an account", + "generate-a-new-key": "Generate a new key", + "generate-account": "Generate keys", + "generate-an-account": "Generate an account", + "generate-keys": "Generate keys", + "generate-new-key": "Generate keys", + "generate-new-keypair": "Generate new key pair", + "generate-scan-sync-code": "Generate Scan Sync Code", + "generating-codes-for-pairing": "> Downloading product software to card\n > Generating unlocking & pairing codes", + "generating-keypair": "Generating key pair...", + "generating-keys": "Generating keys...", + "generating-mnemonic": "Generating seed phrase", + "generic-error": "Error: {{generic-error}}", + "get-a-keycard": "Get a Keycard", + "get-keycard": "Get Keycard", + "get-started": "Get started", + "get-status-at": "Get Status at http://status.im", + "get-stickers": "Get Stickers", + "getting-started-description": "Status is a unique messaging app that combines decentralized technology, privacy-focused design, and Web3 capabilities to offer a unique and secure communication experience.\n\nYour Status keys are the foundation of your self-sovereign identity in Web3. They serve as a secure means of accessing and managing your personal information and identity. With Status, you own, control and manage your data and digital identity without relying on centralized organisations.\n\nChoose one of these options to create your Status profile:", + "getting-started-generate-keys-description": "Create a pair of cryptographic keys representing your Status identity. Unlike centralized apps, Status doesn't rely on your username or email address to identify your profile. Instead, it uses your private and public keys. This option creates a new Ethereum address.", + "getting-started-generate-keys-from-recovery-phrase": "Generate keys from recovery phrase", + "getting-started-generate-keys-from-recovery-phrase-description": "You can use your existing Ethereum address to create your Status profile. If you already use a non-custodial Ethereum wallet (like Metamask or Trust Wallet), you already have an Ethereum address and a recovery phrase.\n\nYour keys are always securely stored on your device and protected by your Status password.", + "getting-started-generate-keys-on-keycard": "Generate keys on a Keycard", + "getting-started-generate-keys-on-keycard-description": "A Keycard is a physical card (similar to a credit card) that securely stores your Status keys. Using a Keycard adds an extra layer of security to your digital assets and identity. This option creates a new Ethereum address.", + "getting-started-with-status": "Getting started with Status", + "gif": "GIF", + "github-repos": "GitHub repos", + "give-a-short-description": "Give a short description", + "give-a-short-description-community": "Give it a short description", + "give-permissions-camera": "Give permission\nto access camera", + "glossary": "Glossary", + "go-to": "Go to", + "go-to-settings": "Go to Settings...", + "got-it": "Got it", + "grant-face-id-permissions": "To grant the required Face ID permission, please go to your system settings and make sure that Status > Face ID is selected", + "grant-fingerprints-permissions": "To grant the required fingerprints permission, please go to your system settings and make sure that Status > Fingerprints is selected", + "group-chat": "Group chat", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** has been made admin", + "group-chat-all-contacts-invited": "All your contacts are already in the group", + "group-chat-created": "**{{member}}** created the group **{{name}}**", + "group-chat-decline-invitation": "Decline invitation", + "group-chat-member-added": "**{{member}}** has been invited", + "group-chat-member-joined": "**{{member}}** has joined the group", + "group-chat-member-removed": "**{{member}}** left the group", + "group-chat-members-count": "{{selected}}/{{max}} members", + "group-chat-name-changed": "**{{member}}** changed the group's name to **{{name}}**", + "group-chat-no-contacts": "You don't have any contacts yet.\nInvite your friends to start chatting", + "group-chat-not-member": "You are not a member of this group", + "group-details": "Group details", + "group-info": "Group info", + "group-invite": "Group invite", + "group-invite-link": "Group invite link", + "group-membership-request": "Group membership request", + "groups": "Groups", + "gwei": "Gwei", + "hang-in-there": "Hang in there! Just a few more seconds!", + "has-permissions": "has permission to access", + "hash": "Hash", + "have-a-sync-code?": "Have a sync code?", + "help": "help", + "help-capitalized": "Help", + "help-center": "Help Center", + "help-improve-status": "Help improve Status", + "help-us-improve-status": "Help us improve Status", + "help-us-improve-status-bullet-point-1": "Collect basic usage data like taps and page views", + "help-us-improve-status-bullet-point-2": "Collect core diagnostics, like bandwidth usage", + "help-us-improve-status-bullet-point-3": "Never collect your profile information or wallet address", + "help-us-improve-status-bullet-point-4": "Never collect information you input or send", + "help-us-improve-status-bullet-point-5": "Never sell your usage analytics data", + "help-us-improve-status-subtitle": "We’ll collect anonymous analytics and diagnostics from your app to enhance Status’s quality and performance.", + "here-is-a-cat-in-a-box-instead": "Here’s a cat in a box instead", + "hex": "Hex", + "hide": "Hide", + "hide-content-when-switching-apps": "Block screenshots", + "hide-content-when-switching-apps-ios": "Hide preview", + "history": "History", + "history-nodes": "History nodes", + "hit-photos-limit": "You can only add {{max-photos}} photos to your message", + "hold-card": "Hold card to the back\n of your phone", + "hold-phone-near-keycard": "Hold your Keycard near NFC sensor", + "hold-to-post-1": "Hold", + "hold-to-post-2": "to post", + "home": "Home", + "hooks": "Hooks", + "how-it-works": "How it works", + "how-to-backup": "How to backup your recovery phrase", + "how-to-pair": "How to pair", + "how-to-scan": "How to scan", + "http-gateway-error": "Oops, request failed!", + "i-dont-have-status-on-another-device": "I don’t have Status on another device", + "i-have-written": "I have written it down on paper", + "identicon-ring": "Identicon ring", + "identicon-ring-explanation": "This multicoloured ring around your profile picture represents your chat key.", + "identifier": "Identifier", + "identity-verification": "Identity verification", + "identity-verification-request": "Identity verification", + "identity-verification-request-sent": "asks", + "if-you-cancel": "If you cancel, you can request to join this community at any point.", + "if-you-have-status-on-another-device": "If you have Status on another device", + "ignore": "Ignore", + "im-new": "I'm new", + "image": "Image", + "image-remove-current": "Remove current photo", + "image-source-gallery": "Select from gallery", + "image-source-make-photo": "Capture", + "image-source-title": "Edit picture", + "images": "images", + "import": "Import", + "import-by-entering-private-key": "Import by entering private key", + "import-by-entering-recovery-phrase": "Import by entering recovery phrase", + "import-by-scanning-encrypted-qr": "Import by scanning encrypted QR", + "import-community": "Import a community", + "import-community-title": "Import a community", + "import-from-keycard": "Import from Keycard", + "import-key-pair": "Import key pair", + "import-key-pair-keycard": "Import profile key pair to Keycard", + "import-keypair-steps": "{{account-name}} was derived from your {{keypair-name}} key pair, which has not yet been imported to this device. To transact using this account, you will need to import the {{keypair-name}} key pair first.", + "import-keypair-to-use-account": "Import key pair to use this account", + "import-private-key": "Import private key", + "import-private-key-info": "New addresses cannot be derived from an account imported from a private key. Import using a seed phrase if you wish to derive addresses.", + "import-profile-key-pair": "Import profile key pair", + "import-recovery-phrase-to-keycard": "Import recovery phrase to Keycard", + "import-to-use-derived-accounts": "Import to use derived accounts", + "import-using-phrase": "Import using recovery phrase", + "in": "in", + "in-contacts": "In contacts", + "include": "Include", + "incoming": "Incoming", + "incoming-transaction": "Incoming transaction", + "incorrect-code": ["str", "Sorry the code was incorrect, please enter it again"], + "incorrect-private-key": "This is not the private key for this key pair", + "increase-gas": "Increase Gas", + "information-you-input-and-send": "Information you input and send", + "initialization": "Initialization", + "input-data": "Input data", + "install": "↓ Install", + "instruction-after-qr-generated": "On your other device, navigate to the Syncing screen and select “Scan sync”", + "insufficient-balance-to-cover-fee": "not enough balance to cover transaction fee", + "insufficient-funds-for-swaps": "Insufficient funds for swap", + "intro-message1": "Welcome to Status!\nTap this message to set your password and get started.", + "intro-privacy-policy": "Privacy Policy", + "intro-privacy-policy-note1": "Status does not collect or profit from your personal data. By continuing, you agree with the ", + "intro-privacy-policy-note2": "privacy policy", + "intro-privacy-statement": "Privacy Statement", + "intro-text": "Status is your gateway to the decentralized web", + "intro-text1": "Chat over a peer-to-peer, encrypted network where messages can’t be censored or hacked", + "intro-text2": "Send and receive digital assets anywhere in the world—no bank account required", + "intro-text3": "Explore games, exchanges and social networks where you alone own your data", + "intro-title1": "Truly private communication", + "intro-title2": "Secure crypto wallet", + "intro-title3": "Decentralized apps", + "intro-wizard-text1": "A set of keys controls your account. Your keys live on your phone, so only you can use them", + "intro-wizard-text2": "One key is for chat. It comes with a readable name that can’t be changed.", + "intro-wizard-text3": "If you own a Keycard, store your keys there for enhanced security.", + "intro-wizard-text4": "Secure and encrypt your keys", + "intro-wizard-text6": "Status will notify you about new messages. You can edit your notification preferences later in settings", + "intro-wizard-title-alt4": "Create a password", + "intro-wizard-title-alt5": "Confirm your password", + "intro-wizard-title1": "Get your keys", + "intro-wizard-title2": "Choose a chat name", + "intro-wizard-title3": "Choose key storage", + "intro-wizard-title4": "Create a 6-digit passcode", + "intro-wizard-title5": "Confirm the passcode", + "intro-wizard-title6": "Enable notifications", + "introduce-yourself": "Introduce yourself with a brief message", + "invalid-address": "It’s not Ethereum address or ENS name", + "invalid-address-qr-code": "Scanned QR code doesn't contain a valid address", + "invalid-characters-bio": "Invalid characters. Standard keyboard characters and emojis only.", + "invalid-ens-or-key": "Invalid ENS or Chat key", + "invalid-format": "Invalid format\nMust be {{format}}", + "invalid-key-confirm": "Apply", + "invalid-key-content": "Database can’t be encrypted because a file is corrupt. Your funds and chat key are safe. Other data, like your chats and contacts, cannot be restored. “{{erase-multiaccounts-data-button-text}}” button, will remove all other data and allows you to access your funds and send messages", + "invalid-key-pair-qr": "This does not look like a key pair QR code", + "invalid-number": "Invalid number", + "invalid-pairing-password": "Invalid pairing password", + "invalid-private-key": "It’s not a valid private key", + "invalid-public-chat-topic": "Invalid public chat topic", + "invalid-qr": "Oops! This QR doesn’t work with Status", + "invalid-range": "Invalid format, must be between {{min}} and {{max}}", + "invalid-username-or-key": "Invalid username or chat key", + "invite": "Invite", + "invite-1-user": "Invite 1 user", + "invite-button": "Invite", + "invite-chat-accept": "Accept", + "invite-chat-accept-join": "Accept and Join", + "invite-chat-intro": "You were referred by a friend to join Status. Here’s some crypto to get you started! Use it to register an ENS name or buy a sticker pack", + "invite-chat-name": "Friend referral", + "invite-chat-pending": "Pending", + "invite-chat-rule": "Accepting will also reward your friend with a crypto referral bonus", + "invite-chat-starter-pack": "Starter Pack", + "invite-contacts": "Invite people from contacts list", + "invite-friend-to-status": "Invite friends to Status", + "invite-friends": "Invite friends", + "invite-friends-and-family": "Invite your friends and family to Status", + "invite-friends-to-status": "Invite friends to Status", + "invite-instruction-fifth": "You can choose to redeem your referral bonus anytime.", + "invite-instruction-first": "You send a unique invite link to your friend to download and join Status", + "invite-instruction-fourth": "You receive your referral bonus and your friend the Starter Pack", + "invite-instruction-second": "Your friend downloads Status and creates an account (on Android)", + "invite-instruction-third": "A chat with your friend is started, where they confirm your referral", + "invite-n-users": "Invite {{count}} users", + "invite-people": "Invite people", + "invite-people-from-contacts": "Invite people from contact list", + "invite-privacy-policy-public": "You installed Status through a referral link. By joining this chat you attribute your referrer and agree to the", + "invite-privacy-policy1": "By accepting you agree to the referral program", + "invite-privacy-policy2": "Terms and Conditions.", + "invite-public-chat-home": "Referral invitation", + "invite-public-chat-intro": "Here’s some crypto to get you started! Use it to register an ENS name or buy a sticker pack", + "invite-receive-account": "Account to receive your referral bonus", + "invite-reward": "Earn crypto for every friend you invite!", + "invite-reward-friend": "Friend: ", + "invite-reward-friend-description": "Your friend will receive a Starter Pack consisting of some {{reward}} to get started", + "invite-reward-friend-name": "Starter Pack", + "invite-reward-you": "You: ", + "invite-reward-you-description": "Invite a friend and receive {{reward}} as referral bonus. Use it to get stickers, an ENS name and try dapps", + "invite-reward-you-name": "Referral bonus", + "invite-select-account": "Select an account to receive your referral bonus", + "invite-to-community": "Invite to community", + "invite-warning": "This promotion is only valid for users of an Android device, who aren't residents of US. Friend needs to confirm referral within 7 days", + "invited": "invited", + "ip-address": "IP address", + "ip-addresses-uuid": "IP addresses and UUID", + "italic": "Italic", + "jan": "Jan", + "join": "Join", + "join-a-community": "or join a community", + "join-as": "Join as {{role}}", + "join-community-to-post": "Join community to post", + "join-group-chat": "Join group", + "join-group-chat-description": "{{username}} invited you to join the group {{group-name}}", + "join-me": "Hey join me on Status: {{url}}", + "join-more-users": "Join {{user1}}, {{user2}} and {{left-count}} more", + "join-new-private-chat": "Start a new private chat", + "join-new-public-chat": "Join a public chat", + "join-one-user": "Join {{user}}", + "join-open-community": "Join Community", + "join-request": "Join request", + "join-two-users": "Join {{user1}} and {{user2}}", + "joined": "Joined", + "joined-community": "You joined “{{community}}”", + "joined-group-chat-description": "You've joined {{group-name}} from invitation by {{username}}", + "joining-token-gated-communities-disabled": "Joining token-gated communities is disabled.", + "jul": "Jul", + "jun": "Jun", + "just-introduce-yourself": "Introduce yourself", + "K": "K", + "keep-card-steady": "Keep the card steady under the phone", + "keep-key": "KeepKey", + "key": "Key", + "key-managment": "Key management", + "key-name-error-emoji": "Emojis are not allowed", + "key-name-error-length": "Key name too long", + "key-name-error-special-char": "Special characters are not allowed", + "key-name-error-taken": "Key pair name already in use", + "key-name-error-too-short": "Key pair name must be at least {{count}} characters", + "key-on-device": "Private key is saved on this device", + "key-pair-erased": "Key pair will be erased from Keycard", + "key-pair-imported-successfully": "{{name}} key pair imported successfully", + "key-pair-migrated-successfully": "Profile key pair successfully migrated", + "key-pair-name-updated": "Key pair name updated", + "key-pair-removed": "Key pair and derived accounts has been removed", + "key-pairs-successfully-imported": "{{count}} key pairs successfully imported", + "keycard": "Keycard", + "keycard-access-reset": "Keycard access is reset", + "keycard-applet-install-instructions": "To install the applet please follow the instructions on https://github.com/status-im/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Try moving the card around to find the NFC reader on your device", + "keycard-awaiting-title": "Still looking...", + "keycard-backup": "Create a backup for your profile Keycard", + "keycard-backup-success-body": "Backup card created successfully. You can now use it with your account just like the primary card.", + "keycard-backup-success-title": "Backup successful", + "keycard-blocked": "Keycard is blocked", + "keycard-can-use-with-new-passcode": "You can use this card with your new passcode", + "keycard-cancel-setup-text": "This will cancel keycard setup. It's highly recommended to finish the setup in order to use keycard. Do you really want to cancel?", + "keycard-cancel-setup-title": "Dangerous operation", + "keycard-connected-description": "Try keeping the card still", + "keycard-connected-title": "Connected", + "keycard-contains-key-pair": "Keycard contains your profile key pair", + "keycard-desc": "Own a Keycard? Store your keys on it; you’ll need it for transactions", + "keycard-documentation": "Keycard is a hardware wallet in a credit-card sized smartcard that works with the Status app. You can store your Status keys and sign transactions securely with it.\n\nKeycard is designed to be mobile-friendly and uses contactless NFC technology to communicate with your phone, so you can sign transactions with just a tap of the card. It is lightweight, convenient, and can fit in your wallet, pocket, or phone case.\n\nProtect your assets and accounts with the Keycard, a cold storage hardware wallet that provides a contactless and convenient experience.", + "keycard-dont-ask-card": "Don't ask for card to sign in", + "keycard-empty": "Keycard is empty", + "keycard-empty-ready": "Keycard is empty and ready to be used", + "keycard-enter-new-passcode": "Enter new passcode {{step}}/2", + "keycard-error-description": "Connect the card again to continue", + "keycard-error-title": "Connection lost", + "keycard-factory-reset": "Return card to factory settings", + "keycard-factory-reset-text": "Performing this will delete any mnemonic phrase stored on the card. Make sure you have a backup of the mnemonic phrase you've been using with this Keycard.", + "keycard-factory-reset-title": "Are you sure you want to perform a factory reset?", + "keycard-free-pairing-slots": "Keycard has {{n}} free pairing slots", + "keycard-full": "Keycard is full", + "keycard-has-keypair": "If Keycard has a profile key pair on it", + "keycard-has-multiaccount-on-it": "This card is full. Each card can hold one main key pair", + "keycard-init-description": "Put the card to the back of your phone to continue", + "keycard-init-title": "Looking for cards...", + "keycard-is-blocked-details": "You can no longer use this card to access or sign for this account. There have been too many failed passcode and PUK attempts.", + "keycard-is-blocked-instructions": "To access your account you will need to factory reset your card. Tap the button below to start the procedure, you will need your mnemonic.", + "keycard-is-blocked-title": "Keycard is blocked", + "keycard-is-frozen-details": "To protect your assets, your card is frozen. Reset your card to unfreeze it and be able to send transactions. You can do this with your PUK or your mnemonic.", + "keycard-is-frozen-factory-reset": "Reset with mnemonic", + "keycard-is-frozen-reset": "Reset with PUK", + "keycard-is-frozen-title": "Keycard is frozen", + "keycard-migration-failed-instruction-1": "Try logging out and logging back in with Keycard; everything might work fine.", + "keycard-migration-failed-instruction-2": "If the key pair hasn’t migrated to Keycard, remove your profile, and recover it using your recovery phrase.", + "keycard-not-empty": "Keycard is not empty", + "keycard-onboarding-finishing-header": "Finishing up", + "keycard-onboarding-intro-header": "Store your keys on Keycard", + "keycard-onboarding-intro-text": "Get ready, this might take a few minutes, but it's important to secure your account", + "keycard-onboarding-mnemonic-text": "You will also need a piece of paper and a pencil to write down your seed phrase.", + "keycard-onboarding-pairing-header": "Pairing the card...", + "keycard-onboarding-pin-text": "You will need to create a 6-digit passcode which will be used to protect access to your Keycard.", + "keycard-onboarding-preparing-header": "Preparing the card...", + "keycard-onboarding-puk-code-header": "Write codes down\n and store them securely", + "keycard-onboarding-recovery-phrase-description": "You need this seed phrase to get your key back. Write it down. Keep it safe, offline, and separate from this device.", + "keycard-onboarding-recovery-phrase-header": "Back up seed phrase", + "keycard-onboarding-recovery-phrase-text": "For your eyes only. This is the magical seed used to generate your key.", + "keycard-onboarding-start-header": "Hold card to the back\n of your phone to start", + "keycard-onboarding-start-step1": "Create a passcode", + "keycard-onboarding-start-step1-text": "Around 1 minute. Create a 6-digit passcode to encrypt your keys", + "keycard-onboarding-start-step2": "Write down PUK and the pairing code", + "keycard-onboarding-start-step2-text": "Around 1 minute. You are going to need a piece of paper and a pencil for that", + "keycard-onboarding-start-step3": "Back up the seed phrase", + "keycard-onboarding-start-step3-text": "Around 1 minute. Also a piece of paper and a pencil are necessary", + "keycard-onboarding-start-text": "And maintain card to phone contact\n during the setup. The setup will take around 4 minutes", + "keycard-pin-change-failed": "Failed to change Keycard PIN", + "keycard-pin-change-failed-description": "Keycard PIN was not updated", + "keycard-pin-changed": "Keycard PIN changed successfully", + "keycard-pin-changed-description": "Now you required to use new PIN for this Keycard", + "keycard-processing-description": "Try keeping the card still", + "keycard-processing-title": "Processing...", + "keycard-recover": "lost or frozen card?", + "keycard-recover-text": "If you have your mnemonic phrase you can create a new Keycard associated with this account. You can use either a new Keycard or perform factory reset on a frozen one.", + "keycard-recover-title": "Create a new card for this account?", + "keycard-recovery-intro-button-text": "Begin recovery", + "keycard-recovery-intro-header": "Recover keys stored on keycard", + "keycard-recovery-intro-text": "If you generated keys using a keycard before and now want to use these keys on this device", + "keycard-recovery-no-key-header": "There’s nothing to \nrecover here", + "keycard-recovery-no-key-text": "Your Keycard has no key stored on it. In order to use it, generate a new key and choose your Keycard to store the key", + "keycard-recovery-phrase-confirm-header": "Confirm seed phrase", + "keycard-recovery-phrase-confirmation-text": "You won’t have a second chance! If you lose access, for example by losing your keycard, you can only access your keys with your seed phrase. No one, but you has your seed phrase. Write it down. Keep it safe.", + "keycard-recovery-phrase-confirmation-title": "Written the seed phrase down?", + "keycard-recovery-success-header": "Your keys have been\n successfully recovered", + "keycard-redeem-title": "Redeem to", + "keycard-redeem-tx": "Redeem assets", + "keycard-redeem-tx-desc": "Tap the card to sign and receive assets", + "keycard-reset-failed": "Failed to reset Keycard", + "keycard-reset-passcode": "Reset passcode", + "keycard-reset-success": "Keycard has been reset", + "keycard-success-description": "You may remove the card now", + "keycard-success-title": "Success", + "keycard-unauthorized-operation": "You're unauthorized to perform this operation.\n Please tap valid card and try again.", + "keycard-unblocked": "Keycard unblocked", + "keycard-unblocked-description": "You’ll need this Keycard to login to Status and transact with derived accounts.", + "keycard-upsell-subtitle": "Enhanced security and convenience", + "keypair-name": "Key pair name", + "keypair-name-description": "Name key pair for your own personal reference", + "keypair-name-input-placeholder": "Collectibles key pair, Old vault....", + "keypair-title": "{{name}}'s default key pair", + "keypairs": "Key pairs", + "keypairs-accounts-and-addresses": "Key pairs, accounts and addresses", + "keypairs-and-accounts": "Key pairs and accounts", + "keypairs-description": "Select key pair to derive your new account from", + "keys-saved": "Keys saved!", + "kicked": "Kicked", + "language": "Language", + "language-and-currency": "Language and currency", + "last-backup-performed": "Last backup performed:", + "last-transaction": "Last transaction", + "last-transaction-is": "Last transaction: {{number}}", + "latest": "Latest:", + "layer-2": "Layer 2", + "learn-more": "Learn more", + "learn-more-about-keycard": "Learn more about Keycard", + "learn-more-keycard": "Learn more about Keycard", + "leave": "Leave", + "leave-chat": "Leave chat", + "leave-chat-confirmation": "Chat history will be removed from your device. After rejoining you won't be able to retrieve any of your history.", + "leave-community": "Leave community", + "leave-community-farewell": "We’ll be sad to see you go but remember, you can come back at any time! All shared addresses will be unshared.", + "leave-community-message": "We’ll be sad to see you go but remember, you can come back at any time!", + "leave-community?": "Leave community?", + "leave-confirmation": "Leave {{chat-name}}", + "leave-group": "Leave group", + "leave-group?": "Leave Group?", + "ledger": "Ledger", + "ledger-live": "Ledger live", + "left": "left", + "left-community": "You left “{{community}}”", + "legacy": "Legacy", + "les-ulc": "LES/ULC", + "lets-go": "Let's go!", + "lifestyle": "Lifestyle", + "light": "Light", + "light-client-enabled": "Light client", + "limit": "Limit", + "link-preview-loading-message": "Generating preview", + "link-to-community": "Link to community", + "link-to-profile": "Link to profile", + "link-to-profile-copied": "Link to Profile copied to clipboard", + "linked-on": "Linked on {{date}}", + "links": "Links", + "load-messages-before": "before {{date}}", + "load-more-messages": "↓ Fetch more messages", + "load-more-timeline": "↓ Fetch more", + "loading": "Loading...", + "local-notifications": "Local notifications", + "local-notifications-subtitle": "Enable background service", + "local-pairing-experimental-mode": "Local Pairing Mode (alpha)", + "lock-app-with": "Lock app with", + "log-in": "Log in", + "log-in-by-syncing": "Log in by syncing", + "log-in-by-syncing-subtitle": "If you have your profile on another device", + "log-in-with-keycard": "Log in with Keycard", + "log-in-with-keycard-subtitle": "If your profile keys are stored on a Keycard", + "log-in-with-recovery-phrase": "Log in with recovery phrase", + "log-in-with-recovery-phrase-subtitle": "If you have your Status recovery phrase", + "log-level": "Log level", + "log-level-settings": "Log level settings", + "log-out-remove": "Log out & Remove profile", + "log-out-remove-profile": "Log out and remove profile from this device", + "logged-in": "Logged in", + "logging": "Logging", + "logging-enabled": "Logging enabled?", + "login-pin-description": "Enter your 6-digit passcode to unlock your keys", + "login-with-keycard": "Log in with this Keycard", + "logout": "Log out", + "logout-app-content": "The account will be logged out. When you unlock it again, the selected network will be used", + "logout-are-you-sure": "Are you sure you want\nto log out?", + "logout-key-management": "You need to log out to access key management.", + "logout-login-keycard": "Log out and login with this Keycard", + "logout-title": "Log out?", + "logs-of-actions-withing-the-app": "Logs of actions within the app, including button presses and screen visits", + "looking-for-cards": "Looking for cards...", + "lost-connection": "Lost connection", + "low-tip": "tip is too low", + "lower-than-average-tip": "lower than average tip", + "M": "M", + "mail-should-be-configured": "Mail client should be configured", + "mailserver-address": "Status node address", + "mailserver-automatic": "Automatic selection", + "mailserver-automatic-switch-explanation": "Choose the fastest Status node available", + "mailserver-connection-error": "Could not connect to Status node", + "mailserver-content": "A node in the Status network that routes and stores messages, for up to 30 days.", + "mailserver-details": "Status node details", + "mailserver-error-content": "The Status node you selected couldn't be reached.", + "mailserver-error-title": "Error connecting to Status node", + "mailserver-format": "enode://{enode-id}@{ip-address}:{port}", + "mailserver-pick-another": "Pick another Status node", + "mailserver-reconnect": "Could not connect to Status node. Tap to reconnect", + "mailserver-request-error-content": "The following error was returned by the Status node: {{error}}", + "mailserver-request-error-status": "An error occured while fetching history, check the logs for details", + "mailserver-request-error-title": "Status node request error", + "mailserver-request-retry": "Retry request", + "mailserver-retry": "Retry", + "mailserver-title": "Status node", + "main-account": "Main account", + "main-currency": "Main currency", + "main-networks": "Main networks", + "main-wallet": "Main Wallet", + "mainnet": "“Ethereum", + "make-admin": "Make admin", + "make-moderator": "Make moderator", + "make-one-it-is-easy-we-promise": "Make one, it’s easy, we promise!", + "make-sure-keycard": "Make sure the card you scanned is a Keycard.", + "make-sure-no-camera-warning": "Make sure no camera or person can see this screen before revealing", + "manage-connections": "Manage connections from within Application Connections", + "manage-keycard": "Manage Keycard", + "manage-keys-and-storage": "Manage keys and storage", + "manage-members": "Manage members", + "manage-networks": "Manage networks", + "manage-tokens": "Manage tokens", + "mar": "Mar", + "mark-all-notifications-as-read": "Mark all notifications as read", + "mark-all-read": "Mark all read", + "mark-as-read": "Mark as read", + "mark-untrustworthy": "Mark as Untrustworthy", + "mark-user-untrustworthy": "Mark {{username}} as untrustworthy", + "market": "Market", + "market-cap": "Market cap", + "master-account": "Master account", + "max": "Max: {{number}}", + "max-2-decimals": "Max. 2 decimals", + "max-active-networks-message": "Disable one of the networks to enable this one", + "max-active-networks-title": "A maximum of {{count}} networks can be enabled simultaneously", + "max-base-fee": "Max base fee", + "max-base-fee-current": "Current: {{current}}", + "max-base-fee-higher": "Higher than necessary (current: {{current}})", + "max-base-fee-lower": "Lower than priority fee: {{priority-fee}}", + "max-base-fee-lower-recommended": "Lower than recommended (current: {{current}})", + "max-fee": "Max fee", + "max-fees": "Max fees", + "max-gas-amount": "Max gas amount", + "max-priority-fee": "Max priority fee", + "max-slippage": "Max slippage", + "max-token": "Max: {{number}} {{token-symbol}}", + "maximum-fee": "Maximum fee", + "maximum-fee-desc": "Maximum overall price for the transaction. If the current block base fee exceeds this, your transaction will be included in a following block with a lower base fee.", + "may": "May", + "maybe-later": "Maybe later", + "member": "Member", + "member-ban": "Ban member", + "member-kick": "Kick member", + "members": { + "one": "1 member", + "other": "{{count}} members" + }, + "members-active": { + "one": "1 member", + "other": "{{count}} members" + }, + "members-active-none": "no members", + "members-count": "{{count}} members", + "members-label": "Members", + "members-limit-reached": "Members limit reached", + "members-title": "Members", + "membership": "Membership", + "membership-approval": "Require approval", + "membership-approval-description": "Your community is free to join, but new members are required to be approved by the community creator first", + "membership-button": "Membership requirement", + "membership-declined": "Membership request was declined", + "membership-description": "Group membership requires you to be accepted by the group admin", + "membership-ens": "Require ENS username", + "membership-ens-description": "Your community requires an ENS username to be able to join", + "membership-free": "No requirement", + "membership-free-description": "Your community is free for anyone to join", + "membership-invite": "Require invite from another member", + "membership-invite-description": "Your community can only be joined by an invitation from existing community members", + "membership-none": "None", + "membership-none-placeholder": "You can require new members to meet certain criteria before they can join. This can be changed at any time", + "membership-request-denied": "Membership request denied", + "membership-request-pending": "Membership request pending", + "membership-requests": "Membership requests", + "membership-requirements-not-met": "Membership requirements not met", + "membership-title": "Membership requirement", + "mention": "Mention", + "mentions": "Mentions", + "message": "Message", + "message-deleted": "Message deleted", + "message-deleted-for-everyone": "Message deleted for everyone", + "message-deleted-for-everyone-count": { + "one": "1 message deleted for everyone", + "other": "{{count}} messages deleted for everyone" + }, + "message-deleted-for-you": "Message deleted for you", + "message-deleted-for-you-count": { + "one": "1 message deleted for you", + "other": "{{count}} messages deleted for you" + }, + "message-not-sent": "Message not sent", + "message-options-cancel": "Cancel", + "message-reply": "Reply", + "messages": "Messages", + "messages-from-contacts-only-subtitle": "Only people you added as contacts can start a new chat with you or invite you to a group", + "messages-gap-warning": "Some messages might be missing", + "might-break": "Might break some ÐApps", + "migrate-key-pair-authorise": "To migrate profile key pair to Keycard you need to authorise with profile password.", + "migrate-key-pair-keycard": "Migrate profile key pair to Keycard", + "migrate-key-pair-keycard-default-key": "{{name}} is your default Status key pair. Migrating this key pair to Keycard will require you to use your Keycard to login to Status and to transact with the key pair’s derived accounts.\n\nKey pair will be removed from device and stored on Keycard.", + "migrate-key-pair-keycard-info": "Re-encrypting your data with your new Keycard login method may take some time, during which you won’t be able to use the app.", + "migration-successful": "Migration successful", + "migration-successful-text": "Account succesfully migrated to Keycard", + "migrations-failed-content": "{{message}}\nschema version: initial {{initial-version}}, current {{current-version}}, last {{last-version}}\n\nA database error occured. Your funds and chat key are safe. Other data, like your chats and contacts, cannot be restored. \"{{erase-multiaccounts-data-button-text}}\" button, will remove all other data and allows you to access your funds and send messages.", + "miners-higher-fee": "Miners will likely inlcude your transaction earlier if you pay a higher fee.", + "minimum-characters": "Minimum {{min-chars}} characters", + "minimum-received": "Minimum received", + "mint": "Mint", + "mo": "Mo", + "mobile": "Mobile", + "mobile-and-wifi": "Mobile and Wi-Fi", + "mobile-data-and-wifi": "Mobile data and Wi-Fi", + "mobile-network-ask-me": "Ask me when on mobile network", + "mobile-network-continue-syncing": "Continue syncing", + "mobile-network-continue-syncing-details": "You can change this later in settings", + "mobile-network-go-to-settings": "Go to settings", + "mobile-network-settings": "Mobile data", + "mobile-network-sheet-configure": "You can configure syncing in more \ndetail in", + "mobile-network-sheet-offline": "No Wi-fi, message syncing disabled.", + "mobile-network-sheet-offline-details": "Syncing using mobile network is off", + "mobile-network-sheet-remember-choice": "Remember my choice", + "mobile-network-sheet-settings": "settings", + "mobile-network-start-syncing": "Start syncing", + "mobile-network-stop-syncing": "Stop syncing", + "mobile-network-stop-syncing-details": "Until connected to Wi-Fi?", + "mobile-network-use-mobile": "Use mobile data", + "mobile-network-use-mobile-data": "Status uses a lot of data when syncing chats and wallet.", + "mobile-network-use-wifi": "Wi-Fi only", + "mobile-syncing-sheet-details": "Status uses a lot of data when syncing chats and wallet.", + "mobile-syncing-sheet-title": "Sync using mobile data?", + "mon": "Mon", + "more": "more", + "more-details": "More details", + "more-details-in-privacy-policy-1": "For more details refer to our ", + "more-details-in-privacy-policy-1-onboarding": "For more details and other cases where we handle your data, refer to our ", + "more-details-in-privacy-policy-2": "Privacy Policy", + "more-details-in-privacy-policy-settings-1": "For details on this and other potential limited data processing by Status, see our ", + "move-and-reset": "Move and Reset", + "move-keystore-file": "Move keystore file", + "move-keystore-file-to-keycard": "Move keystore file to keycard?", + "multiaccount-exists-content": "Keys for this account already exist and can’t be added again. If you’ve lost your password, passcode or Keycard, uninstall the app, reinstall and access your keys by entering your seed phrase", + "multiaccount-exists-title": "Keys for this account already exist", + "multiaccounts-recover-enter-phrase-text": "Enter 12, 15, 18, 21 or 24 words.\nSeparate words by a single space.", + "multiaccounts-recover-enter-phrase-title": "Enter your seed phrase", + "multichain": "Multichain", + "music": "Music", + "mutal-contacts": "Mutual contacts", + "mute": "Mute", + "mute-channel": "Mute channel", + "mute-chat": "Mute chat", + "mute-chat-capitialized": "Mute Chat", + "mute-community": "Mute community", + "mute-for-1-hour": "For 1 hour", + "mute-for-1-week": "For 7 days", + "mute-for-15-mins": "For 15 min", + "mute-for-8-hours": "For 8 hours", + "mute-group": "Mute group", + "mute-till-unmute": "Until you turn it back on", + "muted-until": "Muted until {{duration}}", + "mutual-contact-requests": "Mutual contact requests", + "my-accounts": "My accounts", + "my-accounts-empty": "Your available accounts will appear here", + "my-albums": "My albums", + "my-profile": "My profile", + "my-status": "My status", + "n-m-people": "{{n}}/{{m}} people", + "n-photos": "{{count}} photos", + "n-users-were-invited": "{{count}} users were invited", + "name": "Name", + "name-ens-or-address": "Name, ENS, or address", + "name-must-differ-error": "Name must differ from other accounts", + "name-of-token": "The name of your token", + "name-optional": "Name (optional)", + "name-updated": "Name updated", + "name-your-channel": "Name your channel", + "name-your-channel-placeholder": "Channel name", + "name-your-community": "Name your community", + "name-your-community-placeholder": "A catchy name", + "name-your-group": "Name your group", + "need-help": "Need help?", + "negative": "Negative", + "network": "Network", + "network-activated": "{{network}} activated.", + "network-activated-and-deactivated": "{{network-activated}} activated. {{network-deactivated}} deactivated.", + "network-behavior": "Network behavior", + "network-chain": "Network chain", + "network-fee": "Network fee", + "network-id": "Network ID", + "network-invalid-network-id": "Specified network id doesn't correspond to network id by RPC url", + "network-invalid-status-code": "Invalid status code: {{code}}", + "network-invalid-url": "Network URL is invalid", + "network-not-supported": "Networks not supported", + "network-preferences": "Network preferences", + "network-preferences-desc-1": "Select which networks this address is happy to receive funds on", + "network-preferences-desc-2": "Select which networks to receive funds on", + "network-settings": "Networks", + "networks": "Networks", + "never": "Never", + "new": "New", + "new-category": "New category", + "new-chat": "New chat", + "new-community-title": "New community", + "new-contact": "New contact", + "new-contract": "New Contract", + "new-device-detected": "New device detected", + "new-device-detected-other-device-message": "Check your other device for a pairing request. Ensure that the this device ID displayed on your other device. Only proceed with pairing and syncing if the IDs are identical.", + "new-device-detected-recovered-device-message": "A new device has been detected. You can see device ID below and on your other device. Only confirm the request if device ID matches.", + "new-favourite": "New favourite", + "new-group": "New group", + "new-group-chat": "New group chat", + "new-group-limit": "You can only add {{max-contacts}} contacts to the group chat", + "new-key-pair-keycard": "New key pair will be stored on Keycard", + "new-messages-header": "New Messages", + "new-network": "New network", + "new-network-info": "{{network}} is now on Status - view your assets, interact with dApps and swap tokens", + "new-password": "New password", + "new-pin-description": "Enter new 6-digit passcode", + "new-public-group-chat": "Join public chat", + "new-puk-description": "Enter new 12-digit PUK", + "new-status": "New status", + "new-tab": "New tab", + "new-to-status": "I’m new to Status", + "new-ui": "New UI", + "news": "News", + "next": "Next", + "next-you-will": "Next, you will be asked to confirm the position of certain words in your recovery phrase", + "NFT": "NFT", + "nickname": "Nickname", + "nickname-added": "Nickname for {{primary-name}} added", + "nickname-description": "Nicknames help you identify others in Status.\nOnly you can see the nicknames you’ve added", + "nickname-is-too-long": "Nickname is too long", + "nickname-removed": "Nickname removed", + "nickname-updated": "Nickname for {{primary-name}} updated", + "nickname-visible-to-you": "Nickname will only be visible to you", + "nine-days": "Nine days", + "no": "No", + "no-activity": "No activity", + "no-addresses-selected": "At least 1 address must be shared with community", + "no-collectibles": "No collectibles", + "no-collectibles-description": "Don't be a bored ape", + "no-communities": "No communities", + "no-communities-description": "go full nyan, find your community", + "no-communities-description-strikethrough": "Never", + "no-contacts": "No contacts", + "no-contacts-description": "This is fine, just invite your mother", + "no-dapps": "No connected dApps", + "no-dapps-description": "We want dApps!", + "no-fees": "No fees", + "no-group-chats": "No group chats", + "no-group-chats-description": "Much fun. Have friends. Wow!", + "no-key-pair-keycard": "There is no key pair on this Keycard", + "no-keycard-applet-on-card": "No Keycard applet on card", + "no-messages": "No messages", + "no-messages-description": "Here’s a cat in a box instead", + "no-one": "No one", + "no-opened-communities": "No opened communities", + "no-opened-communities-description": "But... feels good man", + "no-other-accounts": "No other accounts", + "no-pairing-slots-available": "This card is already paired to 5 devices and cannot pair to this one. Please use one of the paired devices, log in with this card and free up pairing slots on the card", + "no-pending-communities": "No pending communities", + "no-pending-communities-description": "It's toaster", + "no-permissions": "No permissions", + "no-permissions-to-post": "Sorry, you don't have permissions to post in this channel", + "no-pinned-messages": "No pinned messages", + "no-pinned-messages-desc": "Just keep pinning, just keep pinning\nWhat do we do? We pin, pin, pin", + "no-recent-transactions": "No recent transactions", + "no-relevant-tokens": "No relevant tokens", + "no-result": "No results", + "no-routes-found": "No routes found", + "no-routes-found-confirmation": "No routes found. Token type may not be supported or you may don't have enough ETH to cover gas.", + "no-saved-addresses": "No saved addresses", + "no-thanks": "No thanks", + "no-tokens-found": "No tokens found", + "node-address": "Node address", + "node-details": "Node details", + "node-info": "Node info", + "node-version": "Node version", + "nodes-disabled": "Status nodes disabled", + "non-archival-node": "RPC endpoint doesn't support archival requests. Your local transfers history might be incomplete.", + "non-contacts": "Non contacts", + "nonce": "Nonce", + "nonce-higher": "Higher than suggested nonce of {{number}}", + "none": "None", + "normal": "Normal", + "not-a-chatkey": "This is not a chatkey", + "not-applicable": "Not applicable for unsigned transactions", + "not-available": "Not available", + "not-connected-nodes": "Not connected to a status node", + "not-connected-to-peers": "Not connected to any peers", + "not-enough-assets": "Not enough assets to complete transaction", + "not-enough-assets-for-transaction": "Not enough assets for transaction", + "not-enough-assets-to-pay-gas-fees": "Not enough assets to pay gas fees", + "not-enough-liquidity": "Not enough liquidity. Lower token amount or try again later.", + "not-enough-snt": "Not enough SNT", + "not-found": "Not found", + "not-keycard-text": "The card you used is not a Keycard. You need to purchase a Keycard to use it", + "not-keycard-title": "Not a Keycard", + "not-now": "Not now", + "not-paired-with-this-device": "Not paired with this device", + "not-preferred-by-receiver": "Not preferred by receiver", + "not-registered": "not registered", + "nothing-found": "Nothing found", + "notification-settings": "Notification settings", + "notifications": "Notifications", + "notifications-marked-as-read": "{{count}} notifications marked as read", + "notifications-non-contacts": "From non-contacts", + "notifications-non-contacts-description": "Contact requests and group messages", + "notifications-preferences": "Notification preferences", + "notifications-servers": "Notification servers", + "notifications-switch": "Show notifications", + "notifications-transactions": "Wallet transactions", + "notify": "Notify", + "nov": "Nov", + "now": "Now", + "number-of-messages-sent": "Number of messages sent to you", + "oct": "Oct", + "off": "Off", + "off-status-tree": "Off Status tree", + "offline": "Offline", + "offline-community-member": "Offline", + "offline-messaging-use-history-explanation": "Enable Status nodes to fetch messages that were sent while the app was closed. When enabled, a Status node gets your IP address. When disabled you will not receive messages when the app is closed and will not see them when you open the app later.", + "offline-messaging-use-history-nodes": "Use Status nodes", + "ok": "OK", + "ok-continue": "Okay, continue", + "ok-got-it": "Okay, got it", + "ok-save-pass": "OK, save password", + "okay": "Okay", + "on": "on", + "on-capitalized": "On", + "on-device": "On device", + "on-keycard": "On Keycard", + "on-status-tree": "On Status tree", + "on-the-web": "On the web", + "once-enabled-share-metadata": "Once enabled, links posted in the chat may share your metadata with the site", + "one-day": "One day", + "one-month": "One month", + "one-month-int": "1 month", + "one-photo": "1 photo", + "one-time": "One time", + "one-user-was-invited": "1 user was invited", + "one-week": "One week", + "one-week-int": "1 week", + "one-year": "1 year", + "online": "Online", + "online-community-member": "Online", + "online-now": "Online now", + "only-mentions": "Only @mentions", + "oops-not-keycard": "Oops, this isn’t a Keycard", + "oops-this-qr-does-not-contain-an-address": "Oops! This QR does not contain an address", + "oops-wrong-password": "Oops, wrong password!", + "oops-wrong-word": "Oops! Wrong word", + "op-explorer": "OP Explorer", + "open": "Open", + "open-chat": "Open chat", + "open-dapp": "Open ÐApp", + "open-dapp-store": "Discover ÐApps", + "open-home": "Open...", + "open-in-new-tab": "Open in new tab", + "open-membership": "Open membership", + "open-nfc-settings": "Open NFC settings", + "open-on-block-explorer": "Open on block explorer", + "open-status-on-your-other-device": "Open Status on your other device", + "open-your": "Open your", + "opened": "Opened", + "opening-buy-crypto": "Opening {{site}}...", + "opensea": "OpenSea", + "optimal": "Optimal", + "optional": "optional", + "or": "OR", + "or-tap": "or tap", + "origin": "Origin", + "origin-desc": "Origin is where your key pair (your private and public key) comes from. You can generate a new key pair or import an existing private key.", + "origin-header": "Origin", + "os-app-version-bandwidth": "OS, app version and bandwidth usage", + "other": "Other", + "other-options": "Other options", + "outgoing": "Outgoing", + "outgoing-transaction": "Outgoing transaction", + "overview": "Overview", + "own-keycard": "Already own a Keycard?", + "own-your-crypto": "Own your crypto", + "owner": "Owner", + "page-camera-request-blocked": "camera requests blocked. To enable camera requests go to Settings", + "page-would-like-to-use-camera": "would like to use your camera", + "pair": "Pair", + "pair-and-sync": "Pair and Sync", + "pair-card": "Pair to this device", + "pair-code": "Pair code", + "pair-code-explanation": "Pairs card to a different device (up to 5) to unlock keys and sign transactions with the same Keycard", + "pair-code-placeholder": "Pair code...", + "pair-device-toast": "Device successfully paired", + "pair-devices": "Pair devices", + "pair-new-device-and-sync": "Pair new device and sync profile", + "pair-this-card": "Pair this card", + "pair-this-device": "Advertise device", + "pair-this-device-and-sync": "Pair this device and sync profile", + "pair-this-device-description": "Pair your devices to sync contacts and chats between them", + "paired-devices": "Paired devices", + "paired-with-this-device": "Paired with this device", + "pairing": "Pairing", + "pairing-card": "Pairing card", + "pairing-changed": "Pairing code has been changed", + "pairing-code-placeholder": "Pairing code...", + "pairing-code_error1": "Pairing codes don't match.", + "pairing-go-to-installation": "Go to pairing settings", + "pairing-maximum-number-reached-content": "Please disable one of your devices before enabling a new one.", + "pairing-maximum-number-reached-title": "Max number of devices reached", + "pairing-new-installation-detected-content": "A new device has been detected.\nIn order to use your devices correctly, it's important to pair and enable them before using them.\nPlease go to the device section under settings to pair your devices.", + "pairing-new-installation-detected-title": "New device detected", + "pairing-no-info": "No info", + "pairing-please-set-a-name": "Please set a name for your device.", + "pairing-slots-occupied": "All pairing slots are occupied", + "paraswap-error": "Paraswap error: {{paraswap-error}}", + "passphrase": "Passphrase", + "password": "Password", + "password-creation-confirm": "Confirm password", + "password-creation-disclaimer": "I understand my password can't be recovered", + "password-creation-dont-match": "Passwords do not match", + "password-creation-hint": "Minimum 10 characters", + "password-creation-match": "Passwords match", + "password-creation-max-length-hint": "Maximum 100 characters", + "password-creation-placeholder-1": "Type password", + "password-creation-placeholder-2": "Repeat password", + "password-creation-subtitle": "This password can't be recovered", + "password-creation-tips-1": "Lower case", + "password-creation-tips-2": "Upper case", + "password-creation-tips-3": "Numbers", + "password-creation-tips-4": "Symbols", + "password-creation-tips-title": "Tips to improve", + "password-creation-title": "Create profile password", + "password-description": "At least 6 characters. Your password protects your keys. You need it to unlock Status and transact.", + "password-mismatch": "New password and confirmation does not match", + "password-placeholder": "Password...", + "password-placeholder2": "Confirm your password", + "password-reset-in-progress": "Changing password...", + "password-reset-success": "Password changed", + "password-reset-success-message": "You will need to sign in again", + "password_error1": "Passwords don't match.", + "paste": "Paste", + "paste-json": "Paste JSON", + "path-format": "Path format", + "pay": "Pay", + "pay-to-chat": "Pay to chat", + "peer-content": "A device connected to the Status chat network. Each user can represent one or more peers, depending on their number of devices.", + "peer-syncing": "Peer syncing", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Peers", + "peers-count": "Peers count", + "peers-stats": "Peers stats", + "pending": "Pending", + "pending-confirmation": "Pending confirmation...", + "pending-invitations": "Pending membership requests", + "pending-on": "Pending on", + "pending-requests": "Pending requests", + "per-gas-price-limit": "Per-gas price limit", + "per-gas-tip-limit": "Per-gas tip limit", + "perform-backup": "Perform backup", + "permissions": "Permissions", + "phone-e164": "International 1", + "photo": "Photo", + "photo-caps": "PHOTO", + "photo-saved": "Photo saved to your device", + "photos": "Photos", + "photos-access-error": "To grant the required photos permission, please go to your system settings and make sure that Status > Photos is selected.", + "pin": "Pin", + "pin-changed": "6-digit passcode has been changed", + "pin-code": "6-digit passcode", + "pin-limit-reached": "Pin limit reached. Unpin a previous message first.", + "pin-mismatch": "Wrong passcode", + "pin-needed-login-sign": "You’ll need this PIN to login and sign transactions", + "pin-not-match": "PIN do not match", + "pin-one-attempt": " one attempt ", + "pin-one-attempt-blocked-after": "before your Keycard gets blocked", + "pin-one-attempt-blocked-before": "Be careful, you have only", + "pin-one-attempt-frozen-after": "before your Keycard gets frozen", + "pin-one-attempt-frozen-before": "Be careful, you have only", + "pin-retries-left": { + "one": "Wrong PIN, 1 attempt left", + "other": "Wrong PIN, {{count}} attempts left" + }, + "pin-to-channel": "Pin to the channel", + "pin-to-chat": "Pin to the chat", + "Pinned-a-message": "Pinned a message", + "pinned-a-message": "pinned a message", + "pinned-by": "Pinned by", + "pinned-messages": "Pinned messages", + "pinned-messages-2": "Pinned \nmessages", + "pinned-messages-count": { + "one": "1 pinned message", + "other": "{{count}} pinned messages" + }, + "pinned-messages-empty": "Pinned messages will appear here. To pin a message, press and hold it and tap `Pin`", + "podcasts": "Podcasts", + "popular-assets-on-network": "Popular assets on {{network}}", + "popular-currencies": "Popular currencies", + "positive": "Positive", + "powered-by-paraswap": "Powered by Paraswap", + "preference": "Preference", + "preferred-by-receiver": "Preferred by receiver", + "preparing-status-for-you": "Preparing Status for you", + "press": "Press", + "preview-privacy": "Preview privacy mode", + "previewing-may-share-metadata": "Previewing links from these websites may share your metadata with their owners", + "price-impact": "Price impact", + "price-impact-desc": "Estimated price impact for this transaction. If the current block base fee exceeds this, your transaction will be included in a following block with a lower base fee.", + "price-impact-too-high": "Price impact too high. Lower token amount or try again later.", + "principles": "Principles", + "priority": "Priority", + "priority-fee": "Priority fee", + "priority-fee-current": "Current: {{low}} - {{high}}", + "priority-fee-higher": "Higher than necessary: {{low}} - {{high}}", + "priority-fee-higher-max-base": "Higher than max base fee: {{max-base-fee}}", + "priority-fee-lower": "Lower than suggested: {{low}} - {{high}}", + "privacy": "Privacy", + "privacy-and-security": "Privacy and security", + "privacy-mode": "Privacy mode", + "privacy-mode-message-1": "Status uses essential third-party services to make your experience more convenient, efficient, and engaging. While only necessary integrations are included, users who prefer to avoid any external services can disable them entirely - though this may limit functionality and affect usability.", + "privacy-mode-message-2": "Only disable third-party services if you're aware of the trade-offs. Re-enable them anytime in Settings.", + "privacy-mode-more-details": "More details about third-party services", + "privacy-photos": "Profile Photo Privacy", + "privacy-policy": "Privacy policy", + "privacy-show-to-warning": "People who have already seen your profile picture will continue to do so", + "private-key": "Private key", + "private-key-public-address": "Public address of private key", + "private-notifications": "Private notifications", + "private-notifications-descr": "Status will notify you about new messages. You can edit your notification preferences later in settings.", + "proceed-anyway": "Proceed anyway", + "processing": "Just a moment", + "product-information": "Product Information", + "profile": "Profile", + "profile-already-added": "Profile already added", + "profile-bio": "Profile bio", + "profile-deleted-content": "Your profile was successfully deleted", + "profile-deleted-keycard": "You can now restore another key pair on your Keycard", + "profile-deleted-title": "Profile deleted", + "profile-details": "Profile details", + "profile-keys-on-keycard": "If your profile keys are stored on a Keycard", + "profile-linked-keycard": "Profile linked with the key pair on this Keycard has already been added to the device", + "profile-name": "Profile name", + "profile-name-is-too-long": "Profile name is too long", + "profile-not-found": "Profile not found", + "profile-password": "Profile password", + "profile-pic-pick": "Select from gallery", + "profile-pic-remove": "Remove photo", + "profile-pic-take": "Take photo", + "profile-picture-added": "Profile picture added", + "profile-picture-removed": "Profile picture removed", + "profile-picture-updated": "Profile picture updated", + "profiles-on-device": "Profiles on device", + "provider-is-down": "The provider for the following chain(s) is down: {{chains}}", + "public": "Public", + "public-channel": "Public channel", + "public-chat": "Public chat", + "public-chat-description": "Join public chats for your interests! Anyone can start a new one.", + "public-chats": "Public chats", + "public-group-status": "Public", + "public-group-topic": "Topic", + "public-key": "Public key", + "puk-and-pairing-codes-displayed": "PUK and pairing codes displayed", + "puk-changed": "12-digit PUK has been changed", + "puk-code": "PUK code", + "puk-code-explanation": "If you forget your 6-digit passcode or enter it incorrectly 3 times, you'll need this code to unlock your card.", + "puk-mismatch": "Wrong PUK code", + "push-failed-transaction": "Your transaction failed", + "push-failed-transaction-body": "{{value}} {{currency}} to {{to}}", + "push-inbound-transaction": "You received {{value}} {{currency}}", + "push-inbound-transaction-body": "From {{from}} to {{to}}", + "push-notifications-blocked-android": "Android push notifications are disabled.", + "push-notifications-blocked-ios": "iOS push notifications are disabled.", + "push-notifications-server-enabled": "Server enabled", + "push-notifications-servers": "Push notification servers", + "push-outbound-transaction": "You sent {{value}} {{currency}}", + "push-outbound-transaction-body": "From {{from}} to {{to}}", + "quiet-days": "{{quiet-days}} days", + "quiet-hours": "{{quiet-hours}} hours", + "re-encrypt": "Re-encrypt", + "re-encrypt-data": "Re-encrypt your data", + "re-encrypt-key": "Re-encrypt your keys", + "re-encrypting-data": "Re-encrypting data", + "read": "Read", + "read-more": "Read more", + "ready-add-keypair-keycard": "Ready to add key pair to Keycard", + "ready-add-keypair-keycard-documentation": "When you create a Status profile, the Status app generates cryptographic keys for your profile authentication and authorization.\n\nYour Keycard stores the cryptographic keys for your Status profile, permanently offline and isolated from the internet, and also secures your Wallet accounts.", + "ready-generate-keypair": "Ready to generate key pair on Keycard", + "ready-keycard": "Get your Keycard ready", + "ready-to-change-pin": "Ready to change PIN", + "ready-to-import-keypair-keycard": "Ready to import key pair to the Keycard", + "ready-to-migrate-key-pair": "Ready to migrate profile key pair to the Keycard", + "ready-to-scan": "Ready to Scan", + "ready-to-unblock-keycard": "Ready to unblock Keycard", + "rearrange-categories": "Rearrange Categories", + "receive": "Receive", + "receive-at-least": "Receive at least", + "receive-transaction": "Receive transaction", + "received": "Received", + "receiver-networks-warning": "Changing these settings may result in sending tokens to networks the recipient doesn't use", + "recent": "Recent", + "recent-empty": "Recently used addresses will appear here", + "recent-recipients": "Contacts", + "recently-used-stickers": "Recently used stickers will appear here", + "recipient": "Recipient", + "recipient-code": "Enter recipient address", + "recipient-code-placeholder": "0x... or username.domain.eth", + "recipient-gets": "Recipient gets", + "recover": "Recover", + "recover-key": "Access existing keys", + "recover-keycard-multiaccount-not-supported": "Keys for this account already exist and can't be added again. If you've lost your password, passcode or Keycard, uninstall the app, reinstall and access your keys by entering your seed phrase", + "recover-status-profile": "Recover your Status profile with recovery phrase", + "recover-with-keycard": "Recover with Keycard", + "recover-with-seed-phrase": "Recover with seed phrase", + "recovering-key": "Accessing keys...", + "recovery-confirm-phrase": "Confirm seed phrase", + "recovery-phrase": "Recovery phrase", + "recovery-success-text": "You will have to create a new code or password to re-encrypt your keys", + "recovery-typo-dialog-description": "Please note, your seed phrase must use the exact same words and order as you received it", + "recovery-typo-dialog-title": "Is the seed phrase correct?", + "recurrent": "Recurrent", + "redeem-amount": "{{quantity}} bonuses available", + "redeem-now": "Redeem now", + "redeem-success": "Redeem bonus success!", + "reduced-tip": "priority tip will be reduced", + "refresh": "Refresh", + "registered": "registered", + "registered-keycards": "Registered Keycards", + "reject": "Reject", + "reject-and-delete": "Reject and delete", + "remember-me": "Remember me", + "remind-me-later": "Show me this again", + "remote-notifications": "Remote notifications", + "remote-notifications-subtitle": "Enable google push notifications", + "remove": "Remove", + "remove-account": "Remove account", + "remove-account-confirmation": "I have taken note of the derivation path", + "remove-account-desc": "The account will be removed from all of your synced devices. Make sure you have a backup of your key pair or recovery phrase and derivation path (if it’s not default).", + "remove-account-title": "Remove account", + "remove-address": "Remove address", + "remove-contact": "Remove contact", + "remove-favourite": "Remove favourite", + "remove-from-chat": "Remove from chat", + "remove-from-contacts": "Remove from contacts", + "remove-from-contacts-text": "By removing a user from your contact list you do not hide your wallet address from them", + "remove-group": "Remove group", + "remove-key-pair-and-derived-accounts": "Remove key pair and derived accounts", + "remove-keycard-content": "Remove all content from this Keycard", + "remove-network": "Remove network", + "remove-nickname": "Remove nickname", + "remove-nickname-toast": "You have removed {{secondary-name}}'s nickname", + "remove-phone-case": "Remove your phone case if you have one", + "remove-private-key-address-desc": "The account will be removed from all of your synced devices. Make sure you have a backup of your key pair or recovery phrase.", + "remove-profile-confirm-message": "All profile data will removed from device.", + "remove-profile-message": "Remove profile from this device", + "remove-profile?": "Remove profile?", + "remove-saved-address": "Remove saved address", + "remove-saved-address-description": "Transaction history relating to this address will no longer be labelled ‘{{name}}’.", + "remove-token": "Remove token", + "remove-user-from-group": "Remove {{username}} from the group", + "remove-watched-address-desc": "The watched address will be removed from all of your synced devices.", + "remove-watched-address-title": "Remove watched address", + "removed": "removed", + "removed-from-contacts": "Removed from contacts", + "rename": "Rename", + "rename-key-pair": "Rename key pair", + "repeat-keycard-pin": "Repeat Keycard PIN", + "repeat-new-keycard-pin": "Repeat new Keycard PIN", + "repeat-pin": "Repeat new 6-digit passcode", + "repeat-puk": "Repeat new 12-digit PUK", + "replied": "Replied", + "replies": "Replies", + "replying-to": "Replying to {{author}}", + "report-bug-email-template": "1. Issue Description\n{{description}}\n\n\n2. Steps to reproduce\n{{steps}}\n\n\n3. Attach screenshots that can demo the problem, please\n", + "request-access": "Request access", + "request-feature": "Request a feature", + "request-membership": "Request membership", + "request-pending": "Request pending…", + "request-processed-after-node-online": "Community control node is offline. Request will be processed once it's back online.", + "request-to-join": "Request to join", + "request-to-join-community": "Request to join community", + "request-to-join-community-pending": "Request to join community pending", + "request-to-join-disclaimer": "Joining the community will reveal your public addresses to the owner", + "request-transaction": "Request transaction", + "request-txns-and-message-signing": "Request transactions and message signing", + "requested-to-join-community": "You requested to join “{{community}}”", + "requesting": "Requesting", + "required-field": "Required field", + "resend-message": "Resend", + "reset": "Reset", + "reset-card": "Reset card", + "reset-card-description": "This operation will reset card to initial state. It will erase all card data including private keys. Operation is not reversible.", + "reset-database": "Reset database", + "reset-database-warning": "Delete chats, contacts and settings. Required when you’ve lost your password", + "reset-database-warning-keycard": "Delete chats, contacts and settings.", + "reset-password": "Reset password", + "restore-defaults": "Restore Defaults", + "retake": "Retake", + "retry": "Retry", + "reveal-address": "Reveal address", + "reveal-phrase": "Reveal phrase", + "reveal-qr-code": "Reveal QR code", + "reveal-sync-code": "Reveal sync code", + "review-bridge": "Review bridge", + "review-pairing-request": "Review pairing request", + "review-send": "Review send", + "review-swap": "Review swap", + "revoke-access": "Revoke access", + "ropsten-testnet": "Ropsten Testnet", + "rpc-usage-copy": "Copy", + "rpc-usage-filter": "Filter", + "rpc-usage-filter-methods": "Filter methods", + "rpc-usage-filtered-total": "{{filtered-total}} of {{total}}", + "rpc-usage-get-stats": "Refresh", + "rpc-usage-info": "RPC usage stats", + "rpc-usage-reset": "Reset", + "rpc-usage-total": "Total", + "rss-privacy-warning": "Fetches news from external sites which may expose your IP", + "sa": "Sa", + "safe-estimate": "Safe estimate", + "sat": "Sat", + "save": "Save", + "save-address": "Save address", + "save-bio": "Save bio", + "save-changes": "Save changes", + "save-colour": "Save colour", + "save-image-library": "Save image to library", + "save-image-to-photos": "Save image to Photos", + "save-name": "Save name", + "save-password": "Save password", + "save-password-unavailable": "Set device passcode to save password", + "save-password-unavailable-android": "Save password is unavailable: your device may be rooted or lacks necessary security features.", + "saved": "Saved", + "saved-address-network-preference-selection-description": "Only change if you know which networks the address owner is happy to to receive funds on", + "saved-address-removed": "Saved address removed", + "saved-addresses": "Saved addresses", + "saved-addresses-limit-reached-toast": "Limit of 20 saved addresses reached. Remove a saved address to add a new one.", + "saving-keys-to-device": "Saving keys to device...", + "say-hi": "Say hi", + "scan-an-account-qr-code": "Scan an account QR code", + "scan-an-address-qr-code": "Scan an address QR code", + "scan-empty-keycard": "Scan empty Keycard", + "scan-key-pairs-qr-code": "Scan key pairs QR code", + "scan-keycard": "Scan Keycard", + "scan-keycard-actions": "Scan Keycard to see available actions", + "scan-or-enter-a-sync-code": "Scan or enter a sync code", + "scan-or-enter-sync-code": "Scan or enter sync code", + "scan-or-enter-sync-code-seen-on-this-device": "Scan or enter sync code seen on this device", + "scan-previous-keycard": "Please scan Keycard you previously scanned", + "scan-qr": "Scan QR", + "scan-qr-code": "Scan QR code", + "scan-sync-code": "Scan Sync Code", + "scan-sync-code-placeholder": "cs2:4FH...", + "scan-sync-qr-code": "Scan QR code", + "scan-the-qr-code-or-copy-the-sync-code": "Scan the QR code or copy the sync code", + "scan-tokens": "Scan tokens", + "scan-with-status-app": "Scan with the Status app on another device", + "scanning": "Scanning...", + "scanning-for-activity": "Scanning for activity...", + "search": "Search", + "search-assets": "Search assets", + "search-contacts": "Search contacts", + "search-currencies": "Search currencies", + "search-discover-communities": "Search communities or categories", + "search-no-chat-found": "No search results. Do you mean", + "searching-for-activity": "Searching for activity...", + "secret-keys-confirmation-text": "You will need them to continue to use your Keycard in case you ever lose your phone.", + "secret-keys-confirmation-title": "Written the codes down?", + "secure-wallet-card": "A secure and private cold wallet in a card format", + "security": "Security", + "see-details": "See details", + "see-it-again": "SEE IT AGAIN", + "see-keycard-ready": "Let’s see what’s on your Keycard. Ready?", + "see-recovery-phrase-again": "View recovery phrase", + "see-sticker-set": "See the full sticker set", + "see-suggestions": "See suggestions", + "seed-key-uid-mismatch": "Seed doesn't match", + "seed-key-uid-mismatch-desc-1": "The seed phrase you entered does not match {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "To manage keys for this account verify your seed phrase and try again.", + "seed-phrase-content": "A set of friendly-to-read words, randomly selected from the BIP39 standard list and used to recover or access your Ethereum account on other wallets and devices. Also referred to as a “mnemonic phrase,” “recovery phrase” or “wallet backup” across the crypto ecosystem. Most crypto apps use this same standard to generate accounts.", + "seed-phrase-dont-match": "The phrase you’ve entered not matching key pair that you want to back up", + "seed-phrase-dont-match-migrate-flow": "The phrase you’ve entered does not match your Status profile key pair", + "seed-phrase-error": "Recovery phrase contains invalid words", + "seed-phrase-incorrect": "Recovery phrase does not match key pair", + "seed-phrase-info": "Enter 12, 18 or 24 words separated by spaces", + "seed-phrase-invalid": "Invalid recovery phrase", + "seed-phrase-placeholder": "Type or paste your recovery phrase", + "seed-phrase-title": "Seed Phrase", + "seed-phrase-words-exceeded": "Recovery phrase cannot exceed 24 words", + "seed-phrase-words-uppercase": "Recovery phrase cannot contain uppercase characters", + "select": "Select", + "select-account": "Select account", + "select-account-dapp": "Select the account you wish to use with Dapps", + "select-account-first": "Select an account first", + "select-another-account": "Select another account", + "select-asset": "Select asset", + "select-asset-on": "On", + "select-asset-to-buy": "Select asset to buy", + "select-asset-to-pay": "Select asset to pay", + "select-asset-to-receive": "Select asset to receive", + "select-asset-via": "via", + "select-chat": "Select chat to start messaging", + "select-network": "Select network", + "select-network-for-buying": "Select network for buying", + "select-network-to-bridge-from": "Select network to bridge from", + "select-network-to-receive": "Select network to receive", + "select-networks": "Select networks", + "select-new-location-for-keys": "Select a new location to save your private key(s)", + "select-profile": "Select profile", + "select-token": "Select token", + "select-token-to-receive": "Select token to receive", + "select-token-to-swap": "Select token to Swap", + "selected": "Selected", + "selected-count-from-max": "{{selected}}/{{max}}", + "send": "Send", + "send-community-link": "Send community link", + "send-contact-request": "Send contact request", + "send-contact-request-message": "To start a chat you need to become contacts", + "send-from-network": "Send from {{network}}", + "send-limit": "Max: {{limit}}", + "send-logs": "Report a bug", + "send-logs-to": "Report a bug to {{email}}", + "send-message": "Send message", + "send-push-notifications": "Send Push Notifications", + "send-push-notifications-description": "When disabled, the person receiving your messages won't be notified of their arrival", + "send-reply": "Send reply", + "send-request": "Send request", + "send-request-amount": "Amount", + "send-request-amount-max-decimals": "Max number of decimals is {{asset-decimals}}", + "send-request-unknown-token": "Unknown token - {{asset}}", + "send-sending-to": "to {{recipient-name}}", + "send-to": "Send to", + "send-to-this-address": "Send to this address", + "send-to-user": "Send to {{user}}", + "send-transaction": "Send transaction", + "sending": "Sending", + "sending-to-networks-the-receiver-does-not-prefer": "Sending to networks the receiver does not prefer may result in recipient having difficulty accessing the sent tokens.", + "sending-to-unpreferred-networks": "Sending to unpreferred networks", + "sending-with-elipsis": "Sending...", + "sending-with-ellipsis": "Sending...", + "sent": "Sent", + "sent-a-gif": "Sent a GIF", + "sent-a-photo": "Sent a photo", + "sent-a-sticker": "Sent a Sticker", + "sent-at": "Sent at", + "sent-audio-message": "Sent audio message", + "sent-n-photos": "Sent {{number}} photos", + "sep": "Sep", + "sepolia-active": "Sepolia active", + "server": "Server", + "set-a-topic": "Create a topic", + "set-currency": "Set currency", + "set-custom-fee": "Set custom fee", + "set-dapp-access-permissions": "Set DApp access permissions", + "set-max": "Set max", + "set-nickname-toast": "You have renamed {{primary-name}} as {{nickname}}", + "set-pre-login-log-level": "Set pre-login log", + "set-spending-cap": "Set spending cap", + "set-spending-cap-of": "Set spending cap of", + "set-up-sync": "Set up sync", + "set-your-own-fees-and-nonce": "Set your own fees and nonce", + "settings": "Settings", + "setup-group-chat": "Setup group chat", + "setup-keycard": "Setup Keycard", + "setup-keycard-description": "Set up your Keycard to log in, sign transactions, create backups and much more.", + "setup-syncing": "Pair devices to sync", + "share": "Share", + "share-account": "Share account", + "share-address": "Share address", + "share-address-title": "{{address}} address", + "share-all-current-and-future-addresses": "Share all current and future addresses", + "share-channel": "Share channel", + "share-chat": "Share chat", + "share-collectible": "Share collectible", + "share-community": "Share community", + "share-contact-code": "Share my chat key", + "share-dapp-text": "Check out this DApp I'm using on Status: {{link}}", + "share-details": "Share details", + "share-image": "Share image", + "share-invite-link": "Share an invite link", + "share-link": "Share link", + "share-link-to-block-explorer": "Share link to {{block-explorer-name}}", + "share-logs": "Share logs", + "share-my-profile": "Share my profile", + "share-opensea-link": "Share OpenSea link", + "share-profile": "Share profile", + "share-profile-link": "Share profile link", + "share-public-chat-text": "Check out this public chat on the Status app: {{link}}", + "share-usage-data": "Share usage data", + "share-usage-data-with-status": "Share usage data with Status", + "shared": "Shared", + "shared-a-community": "Shared a community", + "sharing-copied-to-clipboard": "Copied", + "sharing-copy-to-clipboard": "Copy", + "sharing-data-desc-1": "Data is validated against public rules to ensure no sensitive data is sent. Don’t trust, verify.", + "sharing-data-desc-2": "Usage data is sent end-to-end encrypted over Status’ peer-to-peer network", + "sharing-data-desc-3": "Instead of your regular chat key, a single use key is used", + "sharing-data-desc-4": "Usage data cannot be associated with your IP address", + "sharing-data-desc-5": "Cumulative data of all users is publicaly available", + "sharing-data-desc-6": "The data is removed from your phone after they are sent", + "sharing-share": "Share", + "sharing-usage-data-can-be-turned-off": "Sharing usage data can be turned off anytime in Settings / Privacy and Security.", + "shell-placeholder-subtitle": "Jump between your communities, messages,\nwallet accounts and browser tabs", + "shell-placeholder-title": "Your open tabs will be here", + "show-address-qr": "Show address QR", + "show-encrypted-qr-of-key-pair": "Show encrypted QR of key pair", + "show-existing-keys": "Show Existing Keys", + "show-less": "Show less", + "show-more": "Show more", + "show-network-balances": "Show network balances", + "show-notifications": "Show notifications", + "show-profile-pictures": "See profile pictures from", + "show-profile-pictures-to": "Show your profile picture to", + "show-qr": "Show QR code", + "show-transaction-data": "Show transaction data", + "showcase": "Showcase", + "sign transactions": "sign transactions", + "sign-and-send": "Sign and send", + "sign-anyway": "Sign anyway", + "sign-in": "Sign in", + "sign-in-by-syncing": "Sign in by syncing", + "sign-message": "Sign Message", + "sign-out": "Sign out", + "sign-request-failed": "Could not sign message", + "sign-up": "Sign up", + "sign-with": "Sign with", + "sign-with-password": "Sign with password", + "sign-you-in": "Signing you in…", + "signing": "Signing", + "signing-a-message": "Signing a message", + "signing-in-from-another-device": "Signing in from the other device", + "signing-phrase": "Signing phrase", + "simple": "Simple", + "skip": "Skip", + "slide-to-authorise": "Slide to authorise", + "slide-to-bridge": "Slide to bridge", + "slide-to-create-account": "Slide to create account", + "slide-to-import": "Slide to import", + "slide-to-remove-key-pair": "Slide to remove key pair", + "slide-to-request-to-join": "Slide to request to join", + "slide-to-reveal-code": "Slide to reveal code", + "slide-to-reveal-qr-code": "Slide to reveal QR code", + "slide-to-send": "Slide to send", + "slide-to-sign": "Slide to sign", + "slide-to-swap": "Slide to swap", + "slippage": "Slippage", + "slippage-cant-be-more-than-30": "Slippage can't be more than 30", + "slippage-may-be-higher-than-necessary": "Slippage may be higher than necessary", + "slippage-settings": "Slippage settings", + "slippage-settings-description": "Your transaction will revert if the price changes more than the slippage percentage", + "slippage-should-be-more-than-0": "Slippage should be more than 0", + "slow": "Slow", + "something-about-you": "Something about you", + "something-didnt-go-as-planned": "Something didn't go as planned", + "something-went-wrong": "Something went wrong", + "something-went-wrong-please-try-again-later": "Something went wrong. Modify swap parameters or try again later.", + "soon": "Soon", + "sort-communities": "Sort communities", + "special-characters": "Special characters", + "specify-address": "Specify address", + "specify-name": "Specify a name", + "specify-network-id": "Specify network id", + "specify-server-public-key": "Enter server public key", + "specify-symbol": "Specify a symbol", + "spender-contract": "Spender contract", + "spending-cap": "Spending cap", + "spending-cap-failed": "Spending cap failed: {{token-amount}} {{token-symbol}} for {{provider-name}} in {{account-name}}", + "spending-cap-set": "Spending cap set: {{token-amount}} {{token-symbol}} for {{provider-name}} in {{account-name}}", + "start-chat": "Start chat", + "start-conversation": "Start conversation", + "start-fresh": "Start fresh", + "start-fresh-subtitle": "Create a new profile from scratch", + "start-group-chat": "Start group chat", + "start-new-chat": "Start new chat", + "start-using-status": "Start using Status", + "start-with-space": "Cannot start with space", + "starter-pack-coming": "Starter Pack coming your way", + "starter-pack-coming-description": "Can take a few minutes to hours", + "starter-pack-received": "Starter Pack received", + "starter-pack-received-description": "Here’s some crypto to get you started! Use it to get stickers, an ENS name and try dapps", + "status": "Status", + "status-always-online": "Always Online", + "status-automatic": "Automatic", + "status-automatic-subtitle": "Set status automatically", + "status-confirmed": "Confirmed", + "status-dnd": "Do not disturb", + "status-dnd-subtitle": "Mutes all notifications", + "status-hardwallet": "Status hardwallet", + "status-help": "Status Help", + "status-inactive": "Inactive", + "status-inactive-subtitle": "Hides your online status", + "status-is-a-secure-messaging-app": "Status is a secure messaging app, crypto wallet and web3 browser built with the state of the art technology", + "status-is-open-source": "Status is open-source", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status tends to use a lot of data when syncing chats. You can choose not to sync when on mobile network", + "status-news-rss": "Receive Status News via RSS", + "status-not-sent-click": "Not confirmed. Click for options", + "status-not-sent-tap": "Not confirmed. Tap for options", + "status-pending": "Pending", + "status-sent": "Sent", + "status-tx-not-found": "TX not found", + "status-updates-descr": "Status updates will appear here. Add the profile as a contact to receive updates on your timeline.", + "statuses-descr": "Share what’s on your mind and stay updated with your contacts", + "statuses-my-status-descr": "Share what’s on your mind. Anyone visiting your profile will be able to see your status. People who add you as their contact will receive your updates on their timeline", + "step-i-of-n": "Step {{step}} of {{number}}", + "sticker": "Sticker", + "sticker-market": "Sticker market", + "storage": "Storage", + "store-confirmations": "Store confirmations", + "store-key-pair-on-keycard": "Store your existing key pair on Keycard", + "store-your-asets-on-keycard": "Store your assets on Keycard", + "strength-divider-okay-label": "Okay", + "strength-divider-strong-label": "Strong", + "strength-divider-very-strong-label": "Very strong", + "strength-divider-very-weak-label": "Very weak", + "strength-divider-weak-label": "Weak", + "strikethrough": "Strikethrough", + "su": "Su", + "submit": "Submit", + "submit-bug": "Submit a bug", + "success": "Success", + "successful-connection": "Successful Connection", + "successful-messages-rate": "Rate of successfully sent messages", + "suggested-min-tip": "Suggested min. tip", + "suggested-price-limit": "Suggested price limit", + "sun": "Sun", + "swap": "Swap", + "swap-details": "Swap details", + "swap-exchange-rate-in-crypto": "1 {{pay-token-symbol}} ≈ {{exchange-rate}} {{receive-token-symbol}}", + "swap-failed": "Swap failed", + "swapped-to": "Swapped {{pay-amount}} {{pay-token-symbol}} to {{receive-amount}} {{receive-token-symbol}}", + "swapping-to": "Swapping {{pay-amount}} {{pay-token-symbol}} to {{receive-amount}} {{receive-token-symbol}}", + "swaps-powered-by": "Powered by {{provider}}", + "switch-to-simple-interface": "Switch to simple interface", + "symbol": "Symbol", + "sync-all-devices": "Sync all devices", + "sync-and-backup": "Sync and backup", + "sync-code": "Sync Code", + "sync-code-generated": "Sync code generated", + "sync-devices-complete-sub-title": "Your devices are now in sync", + "sync-devices-complete-title": "Device sync complete!", + "sync-devices-error-sub-title": "Try again and double-check the instructions", + "sync-devices-error-title": "Oops, something’s wrong!", + "sync-devices-result-sub-title": "Your devices are now in sync", + "sync-devices-sub-title": "Please keep both devices switched on and connected to the same network until sync is complete.", + "sync-devices-title": "Syncing devices...", + "sync-in-progress": "Syncing...", + "sync-new-device": "Sync new device", + "sync-or-recover-profile": "Sync or recover profile", + "sync-profile-title": "Syncing profile...", + "sync-settings": "Sync settings", + "sync-synced": "In sync", + "sync-your-profile": "Sync your profile", + "synced-devices": "Synced Devices", + "synced-with": "Synced with", + "synchronise-your-data-across-your-devices": "Synchronise your data across your devices", + "syncing": "Syncing", + "syncing-connection-message": "App uses a lot of data when syncing and making backups. If you have a limited data plan, consider syncing over Wi-Fi only. ", + "syncing-devices": "Syncing...", + "syncing-wifi-connection-warning": "If you choose to sync over Wi-Fi only, messages sent to you while you are offline will be delivered once you connect to Wi-Fi.", + "system": "System", + "tabs": "Tabs", + "tag-was-lost": "Tag was lost", + "tap": "Tap", + "tap-card-again": "Tap the card to the back of your phone again", + "tap-on": "Tap on", + "terms-and-conditions": "Terms and Conditions", + "terms-of-service": "Terms of Use", + "testnet-mode": "Testnet mode", + "testnet-mode-disable-description": "Are you sure you want to turn off Testnet mode? All future transactions will be performed on live networks with real funds.", + "testnet-mode-enable-description": "In this mode, all blockchain data displayed will come from testnets and all blockchain interactions will be with testnets.\nTestnet mode switches the entire app to using testnets only. Please switch this mode on only if you know exactly why you need to use it.", + "testnet-mode-enabled": "Testnet mode enabled", + "testnet-mode-prompt-content": "You are about to switch the network mode. This will log you out and you will have to login again.", + "testnet-mode-prompt-title": "Warning!", + "testnet-not-available": "Testnet not available", + "text-input-disabled": "Please wait a moment...", + "th": "Th", + "thank-you": "Thank you", + "the-key-pair-and-derived-accounts-will-be-removed": "The key pair and derived accounts will be removed from all of your synced devices. Make sure you have a backup of your keys or seed phrase before proceeding.", + "third-party-services": "Third-party services ", + "this-account-has-no-activity": "This account has no activity", + "this-address-has-activity": "This address has activity", + "this-address-has-no-activity": "This address has no activity", + "this-address-is-already-saved": "This address is already saved", + "this-device": "This device", + "this-device-desc": "Your keys will be encrypted and securely stored on your device", + "this-ens-name-is-not-registered-yet": "This ENS name is not registered yet", + "this-is-not-an-eth-address-or-ens-name": "This is not an Ethereum address or ENS name", + "this-is-you-signing": "This is your signing phrase", + "this-message-was-deleted": "This message was deleted", + "this-qr-does-not-contain-any-missing-key-pair": "This QR does not contain any missing key pairs", + "this-qr-does-not-contain-key-pair": "This QR does not contain {{name}} key pair", + "this-will-take-few-seconds": "This will take a few seconds", + "three-days": "Three days", + "three-months-int": "3 months", + "three-words-description": "You should see these 3 words before signing each transaction", + "three-words-description-2": "If you see a different combination, cancel the transaction and sign out", + "thu": "Thu", + "time-24h": "24h", + "time-in-sec": "{{seconds}} sec", + "timeline": "Timeline", + "tip-cap": "Tip cap", + "tips-scan-keycard": "Tips to scan your Keycard", + "to": "to", + "to-block": "Block", + "to-capitalized": "To", + "to-enable-biometric": "To enable {{bio-type-label}}, you must save your password on the unlock screen", + "to-encrypt-enter-password": "To encrypt the account please enter your password", + "to-label": "To", + "to-pair-with-your-other-device-in-the-network": "To pair with your other device in the network", + "to-scan-a-qr-enable-your-camera": "To scan a QR, enable your camera", + "to-see-this-message": "To see this message,", + "token": "Token", + "token-auto-validate-decimals-error": "Wrong decimals for token {{symbol}} at address {{address}} - set to {{expected}} but detected as {{actual}}", + "token-auto-validate-name-error": "Wrong name for token {{symbol}} at address {{address}} - set to {{expected}} but detected as {{actual}}", + "token-auto-validate-symbol-error": "Wrong symbol for token {{symbol}} at address {{address}} - set to {{expected}} but detected as {{actual}}", + "token-details": "Token details", + "token-gated-communities": "Token-gated communities", + "token-gated-communities-info": "If you want to join a token-gated community, you need to meet the token requirements set by the community Owner.\n\nThe Status app automatically checks if you meet the community requirements. If you meet the requirements, the option to join the community is available.", + "token-master": "Token Master", + "token-not-available-on-networks": "{{token-symbol}} is not available on {{networks}}.", + "token-not-available-on-receiver-networks": "{{token-symbol}} is not available on the recipient’s desired networks. Proceed with caution.", + "token-owner": "Token Owner", + "token-price": "Token Price", + "topic-name-error": "Use only lowercase letters (a to z), numbers & dashes (-). Do not use chat keys", + "total-gas": "Total gas", + "total-members": "Total members", + "traits": "Traits", + "transacation-finalised": "Transaction finalised!", + "transaction": "Transaction", + "transaction-confirmed": "Transaction confirmed!", + "transaction-data": "Transaction data", + "transaction-declined": "Transaction declined", + "transaction-description": "Consider it complete after 12 confirmations on the network.", + "transaction-details": "Transaction details", + "transaction-failed": "Transaction failed", + "transaction-fee": "Transaction fee", + "transaction-hash-copied-to-clipboard": "Transaction hash copied to clipboard", + "transaction-history": "Transaction history", + "transaction-request": "Transaction Request", + "transaction-sent": "Transaction sent", + "transaction-settings": "Transaction settings", + "transaction-signed": "The transaction has been successfully signed", + "transactions": "Transactions", + "transactions-filter-select-all": "Select all", + "transactions-filter-title": "Filter history", + "transactions-history": "Transaction history", + "transactions-history-empty": "No transactions in your history yet", + "transactions-history-loading": "Loading transaction history. This might take a while.", + "transactions-load-more": "Load more", + "transactions-management-enabled": "Transaction management (alpha)", + "transactions-sign": "Sign", + "transfer-ma-unknown-error-desc-1": "It looks like your multiaccount was not deleted. Database may have been reset", + "transfer-ma-unknown-error-desc-2": "Please check your account list and try again. If the account is not listed go to Access existing keys to recover with seed phrase", + "transfers-fetching-failure": "Transfers history could not be updated. Check your connection and pull down to try again", + "tribute-required-by-multiaccount": "{{multiaccount-name}} requires SNT to start a chat.", + "tribute-state-paid": "Tribute paid", + "tribute-state-pending": "Tribute pending", + "tribute-state-required": "Requires {{snt-amount}} SNT tribute", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Add friends as a contact to allow chats without tribute payment.", + "tribute-to-talk-are-you-friends": "Are you friends?", + "tribute-to-talk-ask-to-be-added": "Ask to be added as a contact", + "tribute-to-talk-contact-received-your-tribute": " received your tribute. You can now securely chat with each other.", + "tribute-to-talk-desc": "Monetize your attention by requiring SNT for new people to start a chat", + "tribute-to-talk-disabled": "Tribute to Talk disabled", + "tribute-to-talk-disabled-note": "From now on, new people can start a chat with you without sending SNT.", + "tribute-to-talk-enabled": "You have Tribute to Talk enabled.", + "tribute-to-talk-finish-desc": "From now on, you will only receive chats from contacts, and people who paid ", + "tribute-to-talk-learn-more-1": "Your time and attention are your most valuable assets. Tribute to Talk lets you set an amount of SNT required for new people to start a chat with you.", + "tribute-to-talk-learn-more-2": "Anyone who is not in your contact list will be asked to pay, and you can respond once they have.", + "tribute-to-talk-learn-more-3": "You can always send the money back, but to ensure that friends can reach you freely, add them as a contact first.", + "tribute-to-talk-paywall-learn-more-1": "Our time and attention are our most valuable assets. Tribute to Talk lets you contact new people in exchange for an SNT payment.", + "tribute-to-talk-paywall-learn-more-2": "To start a chat with someone who has a tribute set, simply pay the required SNT and you will be added as a contact.", + "tribute-to-talk-paywall-learn-more-3": "If you know them, you can share your profile outside of Status to be added for free.", + "tribute-to-talk-pending": "Tribute pending confirmation", + "tribute-to-talk-pending-note": "Tribute transaction is pending confirmation on the network. You can check its status in transaction history", + "tribute-to-talk-removing-note": "Removing Tribute to Talk will allow new people to start a chat without sending SNT. Requires a transaction to be made.", + "tribute-to-talk-set-snt-amount": "Set the amount of SNT required for new people to start a chat", + "tribute-to-talk-signing": "Waiting to sign transaction", + "tribute-to-talk-transaction-failed-note": "Transaction has failed and your Tribute to Talk settings have not been changed", + "tribute-to-talk-tribute-received1": "Tribute received. You and ", + "tribute-to-talk-tribute-received2": " are now contacts and can securely chat with each other.", + "tribute-to-talk-you-require-snt": "You require SNT for new people to start a chat.", + "trip-accounts": "Trip accounts", + "try-again": "Try again", + "try-keeping-the-card-still": "Try keeping the card still", + "try-to-search-something-else": "Try to search something else", + "try-with-different-currency": "Try with a different currency", + "try-your-luck-again": "Try your luck again!", + "tu": "Tu", + "tue": "Tue", + "turn-nfc-description": "NFC is disabled on yor device. You can enable it in settings", + "turn-nfc-on": "Turn NFC on to continue", + "turn-off-testnet-mode": "Turn off testnet mode", + "turn-on-testnet-mode": "Turn on testnet mode", + "two-minutes": "two minutes", + "tx-fail-description1": "This transaction is likely to fail. Sign at your own risk using custom network fee.", + "tx-fail-description2": "This transaction is likely to fail. Set a custom network fee to sign at your own risk.", + "type": "Type", + "type-a-message": "Message", + "type-nickname": "Type nickname", + "type-nonce": "Type nonce", + "type-pairing-code": "Type or paste pairing code", + "type-slippage": "Type slippage", + "type-some-chat-key": "zQ3...1sgt5N", + "type-something": "Type something", + "type-your-password": "Type your password", + "type-your-path": "Type your own derivation path", + "ulc-enabled": "ULC enabled", + "unable-to-fetch": "Unable to fetch chat history", + "unable-to-read-this-code": "Unable to read this code", + "unable-to-send-messages": "Unable to send and receive messages", + "unblock": "Unblock", + "unblock-contact": "Unblock this user", + "unblock-keycard": "Unblock Keycard", + "unblock-keycard-instructions": "You’ll be asked for recovery phrase. After unblocking you’ll be able to continue using Keycard to log in to Status and sign transactions on key pair derived accounts.", + "unblock-keycard-recovery": "Unblock Keycard with recovery phrase", + "unblocking-a-user-message": "After unblocking {{username}}, you will be able to connect with them as a contact and see their messages in group chats and communities.", + "understanding-bonder-fees-description": "The bridged amount can be lower than the amount you send due to Bonder fees. These fees cover the cost of providing liquidity and managing risks associated with your transfer. The fee ranges from 0.05% to 0.30%, depending on factors such as transaction volume and route specifics.", + "understanding-bonder-fees-title": "Understanding Bonder fees", + "undo": "Undo", + "unique-identifiers": "Unique profile identifiers", + "universally-unique-identifiers-of-device": "Universally Unique Identifiers of device", + "unknown": "Unknown", + "unknown-status-go-error": "Unknown status-go error", + "unlimited": "Unlimited", + "unlock": "Unlock", + "unlock-reset-instructions": "To unlock or factory reset the Keycard, please use the Status desktop app. If you'd like this feature on mobile, feel free to upvote them and discuss in the Status community.", + "unmute": "Unmute", + "unmute-channel": "Unmute channel", + "unmute-chat": "Unmute chat", + "unmute-community": "Unmute community", + "unmute-group": "Unmute group", + "unpair": "Unpair", + "unpair-card": "Unpair card", + "unpair-card-confirmation": "This operation will unpair card from current device. Requires 6-digit passcode authorization. Do you want to proceed?", + "unpair-device": "Unpair device?", + "unpair-device-description": "This device will no longer synchronize with {{name}} until you pair them again.", + "unpair-device-toast": "Device successfully unpaired", + "unpair-keycard": "Unpair Keycard from this phone", + "unpair-keycard-warning": "Your pairing code/PUK & PIN remain unchanged", + "unpaired-keycard-text": "The Keycard you tapped is not associated with this phone", + "unpaired-keycard-title": "Looks like your card has been unpaired", + "unpin": "Unpin", + "unpin-from-channel": "Unpin from the channel", + "unpin-from-chat": "Unpin from the chat", + "unread": "Unread", + "unsupported-file": "Unsupported file", + "until": "until", + "until-you-turn-it-back-on": "you turn it back on", + "untrustworthy": "Untrustworthy", + "update": "Update", + "update-account-name": "Update account name", + "update-group-chat": "Update group chat", + "update-nickname-title": "Update nickname", + "update-to-listen-audio": "Update to latest version to listen to an audio message here!", + "update-to-see-image": "Update to latest version to see a nice image here!", + "update-to-see-sticker": "Update to latest version to see a nice sticker here!", + "updates-to-tos": "Updates to Terms of Use", + "updates-to-tos-desc": "Before you continue, please review the Terms of Use and confirm you take full responsibility for how you use the app.", + "upvote-it": "upvote it", + "urgent": "Urgent", + "url": "URL", + "usage-data-shared-from-all-profiles": "Usage data will be shared from all profiles added to device. ", + "usd-currency": "USD", + "use-a-recovery-phrase": "Use a recovery phrase", + "use-a-recovery-phrase-subtitle": "If you already have an Ethereum wallet", + "use-an-empty-keycard": "Use an empty Keycard", + "use-an-empty-keycard-subtitle": "Store your new profile keys on Keycard", + "use-as-profile-picture": "Use as profile picture", + "use-backup-keycard": "Use as backup Keycard", + "use-biometrics": "Use biometrics to fill in your password", + "use-keycard": "Use Keycard", + "use-keycard-for-status": "From now on, use this Keycard to login to Status and transact with derived accounts. To start using it, logout and log back in with this Keycard.", + "use-keycard-instead-password": "Start using Keycard instead of password", + "use-keycard-login-sign": "Use this Keycard to sign in and authorize transactions", + "use-keycard-subtitle": "Keys will be stored on your Keycard", + "use-keypair-keycard": "Use the key pair stored on Keycard", + "use-photo": "Use Photo", + "use-recovery-phrase": "Use recovery phrase", + "use-the-multichain-wallet": "Multi-chain wallet for swaps and buys", + "use-valid-contact-code": "Please enter or scan a valid chat key or username", + "user-blocked": "{{username}} blocked", + "user-deleted-a-message": "{{user}} deleted a message", + "user-found": "User found", + "user-keycard": "{{name}} Card", + "user-keypair": "{{name}}'s Key pair", + "user-pinned-a-message": "{{user}} pinned a message", + "user-replied": "{{user}} replied", + "user-sent-a-gif": "{{user}} sent a GIF", + "user-sent-a-photo": "{{user}} sent a photo", + "user-sent-a-sticker": "{{user}} sent a Sticker", + "user-sent-audio-message": "{{user}} sent audio message", + "user-sent-n-photos": "{{user}} sent {{number}} photos", + "user-shared-a-community": "{{user}} shared a community", + "user-unblocked": "{{username}} unblocked", + "valid-for-time": "Valid for {{valid-for}}", + "validation-amount-invalid-number": "Amount is not a valid number", + "validation-amount-is-too-precise": "Amount is too precise. Max number of decimals is {{decimals}}.", + "value-higher-than-send-amount": "This value is higher than entered amount to send", + "verified-community": "✓ Verified community", + "version": "App version", + "via": "via", + "via-card-or-bank": "Via card or bank", + "view": "View", + "view-address-on-block-explorer": "View address on {{block-explorer-name}}", + "view-channel-members-and-details": "View channel members and details", + "view-community-rules": "View Community Rules", + "view-cryptokitties": "View in CryptoKitties", + "view-cryptostrikers": "View in CryptoStrikers", + "view-data": "View data", + "view-details": "View Details", + "view-etheremon": "View in Etheremon", + "view-gitcoin": "View in Gitcoin", + "view-members": "View members", + "view-on-block-explorer": "View on {{block-explorer-name}}", + "view-on-opensea": "View on OpenSea", + "view-on-status-explorer": "View on Status Explorer", + "view-pinned-messages": "View pinned messages", + "view-profile": "View profile", + "view-public-dashboard": "View public dashboard", + "view-rules": "View rules", + "view-signing": "View signing phrase", + "view-superrare": "View in SuperRare", + "view-token-gating": "View token requirements", + "visit-dapp": "Visit dApp", + "vote-to-feature": "Vote to feature this community", + "waiting-for-wifi": "No Wi-fi, message syncing disabled.", + "waiting-for-wifi-change": "Settings", + "waiting-to-sign": "Waiting to sign transaction...", + "waiting-wi-fi": "Waiting for Wi-Fi…", + "waku-backup": "Waku backup", + "waku-backup-enabled": "Backup enabled", + "waku-bloom-filter-mode": "Waku bloom filter mode", + "wakuv2-change-nodes": "Are you sure you want to change Wakuv2 nodes?", + "wakuv2-node-format": "/ip4/{node-ip}/tcp/{port}/p2p/{id}", + "wakuv2-settings": "Waku v2 settings", + "wallet": "Wallet", + "wallet-activity-beta-message": "Activity is in beta. If transactions are missing, check", + "wallet-address": "Wallet address", + "wallet-asset": "Asset", + "wallet-assets": "Assets", + "wallet-backup-recovery-title": "Back up your seed phrase", + "wallet-choose-recipient": "Choose Recipient", + "wallet-collectibles": "Collectibles", + "wallet-connect": "Wallet Connect", + "wallet-connect-2.0": "Wallet Connect 2.0", + "wallet-connect-app-connected": "is connected", + "wallet-connect-connections-error": "Failed to get dApps connections", + "wallet-connect-go-back": "Go back to your browser or dapp", + "wallet-connect-label": "WalletConnect", + "wallet-connect-message-request-success-toast": "Message signed, go back to the dApp", + "wallet-connect-networks-not-supported": "{{dapp}} requires an unsupported network.", + "wallet-connect-no-internet-warning": "Oops, you have no internet. Try again later!", + "wallet-connect-proposal-approved-toast": "Connected to {{dapp}}, go back to the dApp", + "wallet-connect-proposal-description": "By connecting you allow {{name}} to retrieve your account address and enable Web3", + "wallet-connect-proposal-expired": "WalletConnect proposal has expired", + "wallet-connect-proposal-rejected-toast": "Connection request from {{dapp}} declined", + "wallet-connect-proposal-title": "Would like to connect with your wallet", + "wallet-connect-qr-expired": "WalletConnect QR has expired", + "wallet-connect-request-expired": "WalletConnect request has expired", + "wallet-connect-send-transaction-header": "wants you to send this transaction with", + "wallet-connect-send-transaction-warning": "Send transactions only if you trust the dApp", + "wallet-connect-sign-message-header": "wants you to sign the message with", + "wallet-connect-sign-message-warning": "Sign messages only if you trust the dApp", + "wallet-connect-sign-request-rejected-toast": "{{dapp}} sign request rejected", + "wallet-connect-sign-transaction-header": "wants you to sign this transaction with", + "wallet-connect-sign-transaction-warning": "Sign transactions only if you trust the dApp", + "wallet-connect-sign-warning": "Sign only if you trust the dApp", + "wallet-connect-something-went-wrong": "Oops, something went wrong with this request", + "wallet-connect-transaction-request-success-toast": "Transaction signed, go back to the dApp", + "wallet-connect-typed-data-wrong-chain-id-warning": "Wrong network in the request data. Expected '{{expected-chain}}', but got '{{wrong-chain}}'", + "wallet-connect-version-not-supported": "WalletConnect version {{version}} is not supported", + "wallet-connect-via": "via", + "wallet-connect-wrong-qr": "It’s not a WalletConnect QR", + "wallet-insufficient-funds": "Insufficient funds", + "wallet-insufficient-gas": "Not enough ETH for gas", + "wallet-invalid-address": "Invalid address: \n {{data}}", + "wallet-invalid-address-checksum": "Error in address: \n {{data}}", + "wallet-invalid-chain-id": "Network does not match: \n {{data}} but current chain is {{chain}}", + "wallet-key-content": "A 64 character hex address based on the Ethereum standard and beginning with 0x. Public-facing, your account address is shared with others when you want to receive funds. Also referred to as an “Ethereum address” or “wallet address.”", + "wallet-key-title": "Account address", + "wallet-manage-accounts": "Manage accounts", + "wallet-manage-app-connections": "Manage app connections", + "wallet-manage-assets": "Manage assets", + "wallet-request": "Request", + "wallet-send": "Send", + "wallet-send-min-units": "Min 21000 units", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Wallet settings", + "wallet-total-value": "Total value", + "wallet-transaction-total-fee": "Total Fee", + "wallet-updated-at": "Updated {{at}}", + "want-to-create-community": "Want to create your own community?", + "wants-to-access-profile": "wants to access to your profile", + "wants-to-join": "wants to join", + "warning": "Warning", + "warning-message": "Sorry, we limit sending several messages in quick succession to prevent spam. Please try again in a moment", + "warning-sending-to-contract-descr": "The address you entered is a smart contract, sending funds to this address may result in loss of funds. To interact with a DApp, open the DApp in the Status DApp Browser.", + "watch-only": "Watch-only", + "watched-account-removed": "Watched address has been removed", + "watched-address": "Watched address", + "watched-addresses-limit-reached-toast": "Limit of 20 watched addresses reached: remove a watched address to add a new one.", + "ways-to-buy": "Ways to buy", + "ways-to-buy-assets": "Ways to buy assets", + "wc-brand-guide": "Guidance on using branding such as trademarks and logos", + "wc-disclaimer": "Disclaimers (including third party providers), warranties, and legal releases", + "wc-dispute": "Dispute resolution provisions", + "wc-how-to-use-status-app": "How to use the Status app including privacy and security", + "wc-new-tos-based-on-principles-prefix": "New Terms of Use designed based on our", + "we": "We", + "we-will-receive-from-all-profiles": "We will receive from all profiles:", + "we-will-receive-from-the-current-profile": "We will receive from the current profile:", + "web-view-error": "Unable to load page", + "website": "Website", + "websites": "Websites", + "webview-camera-permission-requests": "Webview camera permission requests", + "webview-camera-permission-requests-subtitle": "When enabled, websites and dapps can ask to use your camera", + "wed": "Wed", + "welcome-back": "Welcome back!", + "welcome-blank-community-message": "Your communities will appear here.", + "welcome-blank-message": "Your chats will appear here. To start new chats press the ⊕ button", + "welcome-community-blank-message": "Your channels will appear here. To create a new channel, click on the ⊕ button and select \"Create a channel\"", + "welcome-community-blank-message-edit-chats": "Your channels will appear here. To create a new channel, go back to the community screen, click on the ⊕ button and select \"Create a channel\"", + "welcome-screen-text": "Set up your wallet, invite friends to chat\n and browse popular dapps!", + "welcome-to-status": "Welcome to Status!", + "welcome-to-status-description": "Set up your crypto wallet, invite friends to chat and browse decentralized apps", + "welcome-to-web3": "Welcome to web3!", + "welcome-to-web3-sub-title": "What are you waiting for? Go explore!", + "what-are-you-waiting-for": "What are you waiting for?", + "what-changed": "What changed", + "what-is-shared": "What is shared", + "what-to-do": "What you would like to do?", + "what-we-will-receive": "What we will receive:", + "what-we-wont-receive": "What we won't receive:", + "what-you-can-do": "What can you do?", + "whats-on-your-mind": "What’s on your mind…", + "which-connection-to-use": "Which connection to use for syncing?", + "who-are-you-looking-for": "Who are you looking for ?", + "wifi-and-mobile-data": "Wi-Fi and mobile data", + "wifi-only": "Wi-Fi only", + "will-be-shared-from-all-profiles": "Will be shared from all profiles on device", + "will-be-shared-from-the-current-profile": "Will be shared from the current profile", + "will-be-shared-from-the-current-profile": "Will be shared from the current profile", + "with-full-encryption": "With full metadata privacy and e2e encryption", + "with-recovery-phrase": "With recovery phrase", + "word-count": "Word count", + "word-n": "Word #{{number}}", + "word-n-description": "In order to check if you have backed up your seed phrase correctly, enter the word #{{number}} above.", + "words-n": { + "one": "1 word", + "other": "{{count}} words" + }, + "write-down-and-store-securely": "Write codes down\n & store them securely", + "written-seed-ready": "I have written down my recovery phrase and ready to complete backup and remove it from device", + "wrong-address": "Wrong address", + "wrong-card": "Wrong card", + "wrong-card-text": "Tapped card does not correspond to the keys you selected", + "wrong-contract": "Wrong contract", + "wrong-keycard-text": "The Keycard you tapped is not associated with this phone", + "wrong-keycard-title": "Looks like you’ve tapped \na wrong keycard", + "wrong-password": "Wrong password", + "wrong-word": "Wrong word", + "x-counter": "x{{counter}}", + "yes": "Yes", + "You": "You", + "you": "you", + "you-already-have-an-asset": "You already have an asset {{value}}", + "you-already-use-status": "You already use Status", + "you-are-a": "You’re a", + "you-are-a-role": "You’re a {{role}}", + "you-are-all-set": "You’re all set!", + "you-are-all-set-description": "If you lose your phone, you can now access your funds and chat key using your seed phrase", + "you-can-change-account": "You can change the account name and color to what you wish", + "you-can-change-later-in-settings": "You can always change it later in Settings", + "you-can-choose-preview-websites": "You can choose which of the following websites can preview link of descriptions and pictures in chats", + "you-can-fetch": "You can fetch chat history", + "you-canceled-the-request": "You canceled the request to join", + "you-cannot-add-your-own-account-as-a-saved-address": "You cannot add your own account as a saved address", + "you-colon": "You:", + "you-deleted-a-message": "You deleted a message", + "you-dont-have-contacts": "You don’t have any contacts yet.", + "you-dont-have-contacts-invite-friends": "You don’t have any contacts yet.\nInvite your friends to start chatting.", + "you-dont-have-stickers": "You don’t have any stickers yet", + "you-eligible-to-join": "You’re eligible to join", + "you-eligible-to-join-as": "You’re eligible to join as {{role}}", + "you-have-no-contacts": "You have no contacts", + "you-hodl": "You hodl:", + "you-hold-number-of-hold-tokens-of-these": "You hold {{number-of-hold-tokens}} of these:", + "you-like-to-type-43-characters": "Do you like to type 43 characters?", + "you-may-also-experience": "You may also experience:", + "you-may-also-experience-item-1": "Missing or invalid data", + "you-may-also-experience-item-2": "Errors and unexpected behavior", + "you-must-always-hold": "You must always hold:", + "you-must-hold": "You must hodl:", + "you-must-now-hold": "You must now hold:", + "you-not-eligible-to-join": "You’re not eligible to join", + "you-not-eligible-to-join-as": "You’re not eligible to join as {{role}}", + "you-pinned-a-message": "You pinned a message", + "you-replied": "You replied", + "you-sent-a-gif": "You sent a GIF", + "you-sent-a-photo": "You sent a photo", + "you-sent-a-sticker": "You sent a Sticker", + "you-sent-audio-message": "You sent audio message", + "you-sent-n-photos": "You sent {{number}} photos", + "you-shared-a-community": "You shared a community", + "you-will-be-a": "You’ll be a", + "you-will-need-this-code": "You'll need this code to open Status and sign transactions", + "you-will-start-from-scratch": "You will start from scratch with a new set of keys", + "your-addresses": "Your addresses", + "your-answer": "Your answer", + "your-assets-on-network": "Your assets on {{network}}", + "your-card-is-frozen": "Your Keycard is frozen. Reset card access", + "your-contact-code": "Granting access authorizes this DApp to retrieve your chat key", + "your-data-belongs-to-you": "If you lose your seed phrase you lose your data and funds", + "your-data-belongs-to-you-description": "If you lose access, for example by losing your phone, you can only access your keys with your seed phrase. No one, but you has your seed phrase. Write it down. Keep it safe", + "your-identifiers": "Your identicon ring, chat key and emojihash will help others tell you from impersonators", + "your-key-pair-name-is-too-long": "Your key pair name is too long", + "your-key-pair-name-is-too-short": "Your key pair name is too short", + "your-keys": "Your keys", + "your-name": "Your name", + "your-price-limit": "Your price limit", + "your-profile-information": "Your profile information", + "your-recovery-phrase": "Your seed phrase", + "your-recovery-phrase-description": "This is your seed phrase. You use it to prove that this is your wallet. You only get to see it once! Write it on paper and keep it in a secure place. You will need it if you lose or reinstall your wallet.", + "your-tip-limit": "Your tip limit", + "youre-on-mobile-network": "You’re on mobile network" +} diff --git a/translations/es.json b/translations/es.json new file mode 100644 index 00000000000..7db8bd92447 --- /dev/null +++ b/translations/es.json @@ -0,0 +1,1499 @@ +{ + "You": "Tú", + "about-app": "Acerca de", + "about-key-storage-content": "Status nunca accederá a tu clave privada. Asegúrate de respaldar tu frase semilla. Si pierdes el teléfono es la única manera de acceder a tus claves.", + "about-key-storage-title": "Acerca del almacenamiento de claves", + "about-names-content": "¡Nadie puede fingir ser tú! Eres anónimo por defecto y no tienes que revelar tu nombre real. Puedes registrar un nombre personalizado por una pequeña tarifa.", + "about-names-title": "Los nombres no se pueden cambiar", + "accept": "Aceptar", + "accept-and-add": "Aceptar y añadir", + "accept-and-continue": "Aceptar y continuar", + "accept-and-share-address": "Aceptar y compartir dirección", + "access-existing-keys": "Ingresar claves existentes", + "access-key": "Clave de acceso", + "account-added": "Cuenta agregada", + "account-color": "Color de la cuenta", + "account-content": "Puedes comparar las cuentas en Status con las cuentas bancarias. Al igual que una cuenta bancaria, una cuenta suele tener una dirección y un saldo. Eta cuenta se utiliza para realizar transacciones con Ethereum. Puedes tener varias cuentas en tu billetera y acceder a ellas mediante Status.", + "account-exists-title": "Esta cuenta ya existe", + "account-name": "Nombre de la cuenta", + "account-settings": "Ajustes de la cuenta", + "account-title": "Cuenta", + "accounts": "Cuentas", + "actions": "Acciones", + "active-online": "En línea", + "active-unknown": "Desconocido", + "add": "Agregar", + "add-a-watch-account": "Agregar una dirección de solo observación", + "add-account": "Agregar una cuenta", + "add-account-description": "Puedes importar cualquier tipo de cuenta de Ethereum para agregarla a tu billetera de Status", + "add-account-incorrect-password": "La contraseña parece ser incorrecta. Ingresa la contraseña que usas para desbloquear la app.", + "add-an-account": "Agregar una cuenta", + "add-bootnode": "Agregar bootnode", + "add-contact": "Agregar contacto", + "add-custom-token": "Agregar un token personalizado", + "add-favourite": "Agregar favorito", + "add-mailserver": "Agregar nodo de Status", + "add-members": "Agregar miembros", + "add-network": "Agregar red", + "add-new-contact": "Agregar nuevo contacto", + "add-nickname": "Agregar un apodo (opcional)", + "add-private-key-account": "Agregar una cuenta desde una clave privada", + "add-seed-account": "Agregar una cuenta con una frase semilla", + "add-to-contacts": "Agregar a contactos", + "add-to-contacts-text": "Al agregar un usuario a tu lista de contactos, compartes la dirección de tu billetera", + "add-to-favourites": "Agregar a favoritos", + "add-watch-account": "Agregar una cuenta sólo para mirar", + "address": "Dirección", + "address-or-ens-name": "Dirección o nombre ENS", + "address-received": "Dirección recibida", + "address-request-accepted": "Solicitud de dirección aceptada", + "address-requested": "Dirección solicitada", + "advanced": "Avanzado", + "advanced-settings": "Ajustes avanzados", + "advertiser-description": "Descubriste Status gracias a un socio nuestro. ¿Podemos chequear tu IP para poder recompensarlo? Esta información no será usada para nada más, y será removida completamente después de 7 días", + "advertiser-starter-pack-accept": "Aceptar", + "advertiser-starter-pack-decline": "Rechazar", + "advertiser-starter-pack-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "advertiser-starter-pack-title": "Paquete de Bienvenida", + "advertiser-title": "Privacidad por defecto", + "agree-by-continuing": "Al continuar, aceptas \n nuestras", + "all": "Todos", + "allow": "Permitir", + "allow-and-send": "Permitir y enviar", + "allow-mention-notifications": "Mostrar @ menciones", + "allowing-authorizes-this-dapp": "Permitir autoriza a esta DApp a recuperar la dirección de tu billetera y habilitar Web3", + "already-have-asset": "Ya tienes este activo", + "amount": "Cantidad", + "appearance": "Apariencia", + "apply": "Aplicar", + "are-you-sure": "¿Estás seguro\/a?", + "are-you-sure-description": "No podrás volver a ver toda la frase semilla", + "are-you-sure-to-cancel": "¿Seguro que quieres cancelar?", + "are-you-sure?": "¿Estás seguro\/a?", + "ask-in-status": "Haz una pregunta o reporta un error", + "at": "en", + "attribution-received": "{{attrib}} de {{max}} bonos recibidos", + "audio": "Audio", + "audio-recorder": "Grabadora", + "audio-recorder-error": "Error de la grabadora", + "audio-recorder-max-ms-reached": "Tiempo máximo de grabación alcanzado", + "audio-recorder-permissions-error": "Tenés que dar permiso para enviar mensajes de audio", + "authorize": "Autorizar", + "available": "Disponible", + "available-participants": { + "one": "Puedes seleccionar un participante más", + "other": "Puedes seleccionar {{count}} participantes más" + }, + "back": "Atrás", + "back-up": "Respaldo", + "back-up-seed-phrase": "Respaldar la frase semilla", + "back-up-your-seed-phrase": "Respalda tu frase semilla", + "backup-disabled": "Deshabilitado", + "backup-recovery-phrase": "Respaldar la frase semilla", + "balance": "Saldo", + "begin-set-up": "Empezar la configuración", + "biometric-auth-android-sensor-desc": "Sensor táctil", + "biometric-auth-android-sensor-error-desc": "Fallido", + "biometric-auth-android-title": "Autenticación requerida", + "biometric-auth-confirm-logout": "Volver a iniciar sesión", + "biometric-auth-confirm-message": "La autentificación biométrica es necesaria para continuar, si no es posible, desbloquea tus claves con tu contraseña o código de acceso.", + "biometric-auth-confirm-title": "¡Debes autenticarte!", + "biometric-auth-confirm-try-again": "Inténtalo de nuevo", + "biometric-auth-error": "No se puede realizar la autenticación biométrica ({{code}})", + "biometric-auth-login-error-title": "Error de autenticación biométrica", + "biometric-auth-login-ios-fallback-label": "Ingresa la contraseña", + "biometric-auth-reason-login": "Iniciar sesión en Status", + "biometric-auth-reason-verify": "Verificar autenticación", + "biometric-disable-bioauth": "deshabilitar {{bio-type-label}}", + "biometric-disable-password-description": "Si deshabilitas esto, también ", + "biometric-disable-password-title": "Deshabilitar guardar contraseña", + "biometric-enable": "Si no deseas ingresar tu contraseña cada vez que accedes a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-enable-button": "Habilitar {{bio-type-label}}", + "biometric-enable-keycard": "Si no deseas usar la Keycard cada vez que accedes a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Huella dactilar", + "biometric-secure-with": "Asegurar con {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "blank-keycard-text": "Puedes continuar con tu keycard una vez que hayas generado tus claves y tu nombre", + "blank-keycard-title": "Parece que has pulsado \nuna keycard vacía", + "block": "Bloquear", + "block-contact": "Bloquear a este usuario", + "block-contact-details": "El bloqueo eliminará los mensajes anteriores de este usuario y evitará que recibas otros nuevos", + "blocked-users": "Usuarios bloqueados", + "bootnode-address": "Dirección de bootnode", + "bootnode-details": "Detalles de Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes habilitados", + "bootnodes-settings": "Ajustes de bootnode", + "browsed-websites": "El historial del navegador aparecerá aquí", + "browser": "Navegador", + "browser-not-secure": "¡La conexión no es segura! No firmes transacciones o envíes datos personales en este sitio.", + "browser-secure": "La conexión es segura. Asegúrate de que realmente confías en este sitio antes de firmar transacciones o ingresar datos personales.", + "browsers": "Navegadores", + "browsing-cancel": "Cancelar", + "browsing-open-in-android-web-browser": "Abrir en Android", + "browsing-open-in-ios-web-browser": "Abrir en iOS", + "browsing-open-in-status": "Abrir en Status", + "browsing-site-blocked-description1": "Hemos detectado posibles actividades maliciosas desde esta dirección. Para protegerte a ti y a tu billetera, prevenimos la navegación.\n\nSi crees que esto es un error, háznoslo saber en el", + "browsing-site-blocked-description2": "chat público", + "browsing-site-blocked-go-back": "Regresar", + "browsing-site-blocked-title": "Este sitio está bloqueado", + "browsing-title": "Navegar", + "bug-report": "Reportar un error", + "build-yourself": "Para usar esta aplicación sin estos Términos y Condiciones, puedes construir tu propia versión", + "buy-crypto": "Comprar criptomonedas", + "buy-crypto-choose-a-service": "Elige un servicio que quieras usar para comprar criptomonedas", + "buy-crypto-description": "Encuentra una dapp para comprar cripto ahora", + "buy-crypto-leaving": "Estás saliendo de Status y entrando en un sitio web de terceros para completar tu compra", + "buy-crypto-title": "Parece que tu billetera está vacía", + "camera-access-error": "Para permitir el acceso a la cámara, por favor, ve a los ajustes del sistema y asegúrate de que esté seleccionada la opción Status > Cámara.", + "can-not-add-yourself": "Ese eres tú. Para iniciar un chat, elige a alguien más", + "can-send-messages": "Puedes enviar y recibir mensajes nuevos", + "cancel": "Cancelar", + "cancel-keycard-setup": "Cancelar la configuración de Keycard", + "cancelling": "Cancelando", + "cannot-read-card": "No se puede leer la tarjeta.\nPor favor, mantenla en la parte posterior de tu teléfono", + "cannot-use-default-pin": "No está permitido el código de acceso 000000. \nPor favor, utiliza otro número", + "cant-open-public-chat": "No se puede abrir el chat público", + "cant-report-bug": "No puedo reportar un error", + "card-is-blank": "Esta tarjeta está en blanco", + "card-reseted": "La tarjeta ha sido restablecida", + "card-unpaired": "La tarjeta se ha desvinculado del dispositivo actual", + "change-fleet": "Cambiar fleet a {{fleet}}", + "change-logging-enabled": "¿Está seguro\/a de que deseas {{enable}} iniciar sesión?", + "change-passcode": "Cambiar código de acceso", + "change-password": "Cambiar contraseña", + "change-pin": "Cambiar el código de acceso de 6 dígitos", + "changed-amount-warning": "La cantidad se cambió de {{old}} a {{new}}", + "changed-asset-warning": "El activo se cambió de {{old}} a {{new}}.", + "chaos-mode": "Modo caos", + "chaos-unicorn-day": "Día del Unicornio del Caos", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chatea y realiza transacciones privadas con amigos", + "chat-is-a-contact": "Contacto", + "chat-is-not-a-contact": "No es contacto", + "chat-key": "Clave de chat", + "chat-key-content": "Los mensajes en el protocolo de chat de Status se envían y reciben utilizando claves de encriptación. La clave pública de chat es una cadena de caracteres que compartes con otros para que puedan enviarte mensajes en Status.", + "chat-key-title": "Clave de chat", + "chat-link-previews": "Vistas previas de enlaces de chat", + "chat-name": "Nombre del chat", + "chat-name-content": "Tres palabras aleatorias, derivadas algorítmicamente de tu clave de chat y utilizadas como tu alias predeterminado en el chat. Los nombres de los chats son completamente únicos; ningún otro usuario puede tener las mismas tres palabras.", + "chat-name-title": "Nombre del chat", + "chat-notification-preferences": "Ajustes de las notificaciones", + "chat-settings": "Ajustes de chat", + "chats": "Chats", + "check-on-opensea": "Comprobar en opensea", + "check-your-recovery-phrase": "Comprueba tu frase semilla", + "choose-actions": "Elige acciones", + "choose-authentication-method": "Elije un método de autenticación", + "choose-new-location-for-keystore": "Selecciona una nueva ubicación para guardar el archivo keystore", + "choose-storage": "Elegir almacenamiento", + "clear": "Limpiar", + "clear-all": "Borrar todo", + "clear-history": "Borrar historial", + "clear-history-action": "Limpiar", + "clear-history-confirmation": "¿Borrar historial?", + "clear-history-confirmation-content": "¿Seguro que quieres limpiar este historial de chat?", + "clear-history-title": "¿Borrar historial?", + "close": "Cerrar", + "close-all": "Cerrar todo", + "close-app-button": "Confirmar", + "close-app-content": "La aplicación se detendrá y cerrará. Cuando la vuelvas a abrir, se utilizará la red seleccionada", + "close-app-title": "¡Advertencia!", + "command-button-send": "Enviar", + "communities": "Comunidades", + "communities-alpha": "Comunidades (alfa)", + "communities-verified": "✓ Comunidad Status verificada", + "community-color": "Color de la comunidad", + "community-color-placeholder": "Elige un color", + "community-edit-title": "Editar comunidad", + "community-image-pick": "Elige una imagen", + "community-image-remove": "Eliminar", + "community-image-take": "Tomar una foto", + "community-invite-title": "Invitar", + "community-key": "Clave privada de la comunidad", + "community-key-placeholder": "Escribe la clave privada de la comunidad", + "community-members": { + "one": "miembro", + "other": "miembros" + }, + "community-members-title": "Miembros", + "community-private-key": "Clave privada comunitaria", + "community-requests-to-join-title": "Solicitudes de membresía", + "community-roles": "Rol", + "community-share-title": "Compartir...", + "community-thumbnail-image": "Imagen en miniatura", + "community-thumbnail-upload": "Subir", + "complete-hardwallet-setup": "Esta tarjeta ahora está vinculada. La necesitarás para firmar transacciones y desbloquear tus claves", + "completed": "Completado", + "confirm": "Confirmar", + "confirm-password-placeholder": "Confirma tu contraseña", + "confirmation-request": "Solicitud de confirmación", + "confirmations": "Confirmaciones", + "confirmations-helper-text": "Cuando la transacción tenga 12 confirmaciones, puede considerarla resuelta.", + "connect": "Conectar", + "connect-mailserver-content": "¿Conectar con {{name}}?", + "connect-wallet": "Conectar billetera", + "connected": "Conectado", + "connected-to": "Conectado a", + "connecting": "Conectando...", + "connecting-requires-login": "Para conectarse a otra red es necesario iniciar sesión", + "connection-status": "Estado de conexión", + "connection-with-the-card-lost": "La conexión con la tarjeta\nse ha perdido", + "connection-with-the-card-lost-setup-text": "Para reanudar la configuración, sostén la tarjeta en\n la parte trasera del teléfono y mantén la\n tarjeta en contacto con el teléfono", + "connection-with-the-card-lost-text": "Para proceder, mantén la tarjeta en la parte posterior de tu teléfono", + "contact-code": "Clave de chat", + "contact-s": { + "one": "contacto", + "other": "contactos" + }, + "contacts": "Contactos", + "contacts-descr": "Tus contactos aparecerán aquí. Recibirá actualizaciones de estado de cualquier persona que agregue como contacto", + "contacts-empty": "Contactos con nombres ENS aparecerán aquí", + "continue": "Continuar", + "continue-anyway": "Continuar de todas maneras", + "contract-address": "Dirección del contrato", + "contract-interaction": "Interacción con el contrato", + "copy-info": "Copiar información", + "copy-qr": "Copiar código", + "copy-to-clipboard": "Copiar", + "copy-transaction-hash": "Copiar ID de transacción", + "cost-fee": "Costo\/Tarifa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Crear", + "create-a-pin": "Crear un código de acceso de 6 dígitos", + "create-channel": "Crea un canal", + "create-channel-title": "Nuevo canal", + "create-community": "Crea una comunidad", + "create-group-chat": "Crear chat grupal", + "create-multiaccount": "Generar claves", + "create-new-key": "Obtener nuevas claves", + "create-pin": "Crea un código de acceso de 6 dígitos", + "create-pin-description": "Necesitarás tu tarjeta y este código de 6 dígitos para desbloquear Status y confirmar las transacciones", + "created-group-chat-description": "Creaste el grupo {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Moneda", + "currency-display-name-aed": "Dírham de los Emiratos Árabes Unidos", + "currency-display-name-afn": "Afgani afgano", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dólar australiano", + "currency-display-name-bbd": "Dólar de Barbados", + "currency-display-name-bdt": "Taka bangladeshí", + "currency-display-name-bgn": "Lev búlgaro", + "currency-display-name-bhd": "Dinar bahreiní", + "currency-display-name-bnd": "Dólar de Brunéi", + "currency-display-name-bob": "Boliviano de Bolivia", + "currency-display-name-brl": "Real brasileño", + "currency-display-name-btn": "Ngultrum butanés", + "currency-display-name-cad": "Dólar canadiense", + "currency-display-name-chf": "Franco suizo", + "currency-display-name-clp": "Peso chileno", + "currency-display-name-cny": "Yuan chino", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Colón costarricense", + "currency-display-name-czk": "Corona checa", + "currency-display-name-dkk": "Corona danesa", + "currency-display-name-dop": "Peso dominicano", + "currency-display-name-egp": "Libra egipcia", + "currency-display-name-etb": "Birr etíope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Libra esterlina", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Cedi ghanés", + "currency-display-name-hkd": "Dólar hongkonés", + "currency-display-name-hrk": "Kuna croata", + "currency-display-name-huf": "Forinto húngaro", + "currency-display-name-idr": "Rupia indonesia", + "currency-display-name-ils": "Nuevo séquel israelí", + "currency-display-name-inr": "Rupia india", + "currency-display-name-isk": "Corona islandesa", + "currency-display-name-jmd": "Dólar jamaiquino", + "currency-display-name-jpy": "Yen japonés", + "currency-display-name-kes": "Chelín keniano", + "currency-display-name-krw": "Won surcoreano", + "currency-display-name-kwd": "Dinar kuwaití", + "currency-display-name-kzt": "Tenge kazajo", + "currency-display-name-lkr": "Rupia de Sri Lanka", + "currency-display-name-mad": "Dírham marroquí", + "currency-display-name-mdl": "Leu moldavo", + "currency-display-name-mur": "Rupia mauriciana", + "currency-display-name-mwk": "Kwacha malauí", + "currency-display-name-mxn": "Peso mexicano", + "currency-display-name-myr": "Ringgit malayo", + "currency-display-name-mzn": "Metical mozambiqueño", + "currency-display-name-nad": "Dólar namibio", + "currency-display-name-ngn": "Naira nigeriana", + "currency-display-name-nok": "Corona noruega", + "currency-display-name-npr": "Rupia nepalí", + "currency-display-name-nzd": "Dólar neozelandés", + "currency-display-name-omr": "Rial omaní", + "currency-display-name-pen": "Sol peruano", + "currency-display-name-pgk": "Kina (Papúa Nueva Guinea)", + "currency-display-name-php": "Peso filipino", + "currency-display-name-pkr": "Rupia pakistaní", + "currency-display-name-pln": "Esloti polaco", + "currency-display-name-pyg": "Guaraní paraguayo", + "currency-display-name-qar": "Riyal qatarí", + "currency-display-name-ron": "Leu rumano", + "currency-display-name-rsd": "Dinar serbio", + "currency-display-name-rub": "Rublo ruso", + "currency-display-name-sar": "Riyal saudí", + "currency-display-name-sek": "Corona sueca", + "currency-display-name-sgd": "Dólar singapurense", + "currency-display-name-thb": "Baht tailandés", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dólar de Trinidad y Tobago", + "currency-display-name-twd": "Nuevo dólar taiwanés", + "currency-display-name-tzs": "Chelín tanzano", + "currency-display-name-uah": "Grivna ucraniana", + "currency-display-name-ugx": "Chelín ugandés", + "currency-display-name-usd": "Dólar estadounidense", + "currency-display-name-uyu": "Peso uruguayo", + "currency-display-name-vef": "Bolívar venezolano", + "currency-display-name-vnd": "Dong vietnamita", + "currency-display-name-zar": "Rand sudafricano", + "current": "Actual", + "current-network": "Red actual", + "current-pin": "Ingresa el código de acceso de 6 dígitos", + "current-pin-description": "Ingresa tu código de acceso de 6 dígitos para continuar", + "custom": "Personalizado", + "custom-networks": "Redes personalizadas", + "custom-node": "Estás utilizando un punto de conexión RPC personalizado. Es posible que el historial de transferencias locales esté incompleto.", + "custom-seed-phrase": "Frase semilla inválida", + "custom-seed-phrase-text-1": "Esta frase semilla no coincide con nuestro diccionario compatible. Revisa si hay palabras mal escritas.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Aceptar y Abrir", + "dapp-starter-pack-description": "¡Aquí tienes algunas criptomonedas para comenzar! Úsalas para obtener pegatinas, un nombre ENS y probar dapps", + "dapp-starter-pack-title": "Paquete de Bienvenida", + "dapp-would-like-to-connect-wallet": "quisiera conectarse a", + "dapps": "ÐApps", + "dapps-permissions": "Permisos de DApp", + "dark": "Oscuro", + "data": "Datos", + "data-syncing": "Sincronización de datos", + "database-reset-content": "Los chats, contactos y ajustes han sido eliminados. Puedes usar tu cuenta con tu Keycard", + "database-reset-title": "Base de datos reestablecida", + "database-reset-warning": "La base de datos se restablecerá. Se borrarán los chats, los contactos y los ajustes.", + "datetime-ago": "hace", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "día", + "other": "días" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "hoy", + "datetime-yesterday": "ayer", + "decimals": "Decimales", + "decline": "Rechazar", + "decryption-failed-content": "Ha ocurrido un error al desencriptar tus datos. Es posible que tengas que generar unas nuevas claves y borrar tus datos antiguos. Pulsa \"Aplicar\" para borrar o \"Cancelar\" para volver a intentarlo", + "default": "Predeterminados", + "default-assets": "Por defecto ERC20 y ERC721", + "delete": "Eliminar", + "delete-account": "Borrar cuenta", + "delete-and-leave-group": "Eliminar y salir del grupo", + "delete-bootnode": "Eliminar bootnode", + "delete-bootnode-are-you-sure": "¿Seguro que quieres eliminar este bootnode?", + "delete-bootnode-title": "Eliminar bootnode", + "close-chat": "Eliminar chat", + "close-chat-confirmation": "¿Estás seguro de que quieres eliminar este chat?", + "delete-confirmation": "¿Eliminar?", + "delete-keys-keycard": "Borrar claves de Keycard", + "delete-mailserver": "Eliminar nodo de Status", + "delete-mailserver-are-you-sure": "¿Está seguro de que desea eliminar este nodo de Status?", + "delete-mailserver-title": "Eliminar nodo de Status", + "delete-message": "Eliminar mensaje", + "delete-my-account": "Borrar mi cuenta", + "delete-my-profile": "Eliminar mi perfil", + "delete-network-confirmation": "¿Seguro que quieres eliminar esta red?", + "delete-network-error": "Por favor, conéctate a una red diferente antes de eliminar esta", + "delete-network-title": "¿Eliminar red?", + "delete-profile": "Eliminar perfil", + "delete-profile-warning": "Advertencia: Si no tiene tu frase de semilla escrita, perderá el acceso a sus fondos después de eliminar su perfil", + "deny": "Negar", + "derivation-path": "Ruta de derivación", + "describe-channel": "Describa el canal", + "description": "Descripción", + "dev-mode": "Modo de desarrollo", + "dev-mode-settings": "Ajustes del modo de desarrollo", + "device-syncing": "Sincronización de dispositivos", + "devices": "Dispositivos", + "disable": "deshabilitar", + "disable-all": "Deshabilitar todo", + "disabled": "Deshabilitado", + "disconnected": "Chat sin conexión", + "discover": "Descubrir", + "dismiss": "Descartar", + "done": "Listo", + "dont-ask": "No me vuelvas a preguntar", + "edit": "Editar", + "edit-channel-title": "Editar el canal", + "edit-chats": "Editar chats", + "edit-community": "Editar comunidad", + "edit-favourite": "Editar favorito", + "edit-group": "Editar grupo", + "edit-profile": "Editar perfil", + "empty-activity-center": "Tus notificaciones de chat aparecerán aquí", + "empty-chat-description": "No hay mensajes \nen este chat todavía", + "empty-chat-description-community": "Ha estado tranquilo aquí durante {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Cualquier mensaje que envíes aquí está encriptado y solo puedes leerlo tú y", + "empty-chat-description-public": "Ha estado tranquilo aquí durante las últimas {{quiet-hours}}. Inicia la conversación o ", + "empty-chat-description-public-share-this": "comparte este chat", + "empty-keycard-required": "Requiere una Keycard vacía", + "empty-pending-invitations-descr": "Las personas que deseen unirse al grupo\na través de un enlace de invitación aparecerán aquí", + "empty-tab": "Pestaña vacía", + "enable": "Habilitar", + "enable-all": "Habilitar todos", + "enable-link-previews": "¿Habilitar vistas previas de enlaces en el chat?", + "encrypt-with-password": "Encriptar con contraseña", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Agregar nombre de usuario", + "ens-agree-to": "Acepto", + "ens-chat-settings": "Ajustes de chat", + "ens-custom-domain": "Dominio personalizado", + "ens-custom-username-hints": "Escribe el nombre de usuario completo, incluido el dominio personalizado como username.domain.eth", + "ens-custom-username-taken": "El nombre de usuario no te pertenece :(", + "ens-deposit": "Depósito", + "ens-dismiss-message": "Pulsa aquí para descartar", + "ens-displayed-with": "Tus mensajes se muestran a otros con", + "ens-get-name": "Obtén un nombre de usuario universal", + "ens-got-it": "Entendido", + "ens-locked": "Nombre de usuario bloqueado. No lo podrás liberar hasta el {{date}}", + "ens-name-content": "Alias personalizado para tu clave de chat que puedes registrar utilizando Ethereum Name Service. Los nombres ENS son nombres de usuario descentralizados.", + "ens-name-not-found": "No se puede resolver el nombre ENS", + "ens-name-title": "Nombre ENS", + "ens-network-restriction": "Solo disponible en Mainnet", + "ens-no-usernames": "No tienes ningún nombre de usuario conectado", + "ens-powered-by": "Propulsado por Ethereum Name Services", + "ens-primary-username": "Nombre de usuario principal", + "ens-register": "Registrar", + "ens-registration-failed": "Por favor, inténtalo de nuevo para registrar el nombre de usuario.", + "ens-registration-failed-title": "La transacción ha fallado", + "ens-registration-failure": "Registro fallido", + "ens-registration-in-progress": "Registro en curso...", + "ens-release-username": "Liberar nombre de usuario", + "ens-remove-hints": "La eliminación separará el nombre de usuario de tu clave.", + "ens-remove-username": "Eliminar nombre de usuario", + "ens-saved": "ahora está conectado con tu clave de chat y se puede usar en Status.", + "ens-saved-title": "Nombre de usuario agregado", + "ens-show-username": "Mostrar mi nombre de usuario ENS en los chats", + "ens-terms-header": "Términos de registro de nombre", + "ens-terms-point-1": "Los fondos se depositan por 1 año. Tu SNT se bloqueará, pero no se gastará.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Registro ENS).", + "ens-terms-point-2": "Después de 1 año, puedes liberar el nombre y recuperar tu depósito, o no tomar ninguna acción para mantener el nombre.", + "ens-terms-point-3": "Si los términos del contrato cambian —por ejemplo, Status actualiza el contrato— el usuario tiene derecho a liberar el nombre de usuario independientemente del tiempo retenido.", + "ens-terms-point-4": "El controlador del contrato no puede acceder a tus fondos depositados. Sólo pueden ser devueltos a la dirección que los envió.", + "ens-terms-point-5": "Tu(s) dirección(es) se asociará(n) públicamente con tu nombre ENS.", + "ens-terms-point-6": "Los nombres de usuario se crean como nodos de subdominio de stateofus.eth y están sujetos a los términos del contrato inteligente de ENS.", + "ens-terms-point-7": "Autorizas el contrato para transferir SNT en tu nombre. Esto solo puede ocurrir cuando apruebas una transacción para autorizar la transferencia.", + "ens-terms-point-8": "Estos términos están garantizados por la lógica del contrato inteligente en las direcciones:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Términos de registro de nombre.", + "ens-test-message": "Hola", + "ens-transaction-pending": "Transacción pendiente...", + "ens-understand": "Entiendo que la dirección de mi billetera estará conectada públicamente a mi nombre de usuario.", + "ens-username": "Nombre de usuario ENS", + "ens-username-already-added": "El nombre de usuario ya está conectado con tu clave de chat y se puede usar dentro de Status.", + "ens-username-available": "✓ ¡Nombre de usuario disponible!", + "ens-username-connected": "Este nombre de usuario es de tu propiedad y está conectado con tu clave de chat.", + "ens-username-connected-continue": "Continuar configurando «Mostrar mi nombre de usuario ENS en los chats».", + "ens-username-connected-with-different-key": "Continuar requerirá una transacción para conectar el nombre de usuario con tu clave de chat actual.", + "ens-username-connection-confirmation": "{{username}} se conectará una vez que se complete la transacción.", + "ens-username-hints": "Al menos 4 caracteres. Letras latinas, números y sólo minúsculas.", + "ens-username-invalid": "Sólo letras y números.", + "ens-username-owned": "✓ El nombre de usuario es tuyo.", + "ens-username-owned-continue": "Continuar conectará este nombre de usuario con tu clave de chat.", + "ens-username-registration-confirmation": "¡Bien! Eres el propietario de {{username}} una vez completada la transacción.", + "ens-username-taken": "Nombre de usuario ya está tomado :(", + "ens-username-you-can-follow-progress": "Puedes seguir el progreso en la sección de Historial de transacciones de tu billetera.", + "ens-usernames": "Nombres de usuario ENS", + "ens-usernames-details": "Registra un nombre de usuario universal para que otros usuarios te reconozcan fácilmente", + "ens-want-custom-domain": "Tengo un nombre en otro dominio", + "ens-want-domain": "Quiero un dominio stateofus.eth", + "ens-welcome-hints": "Los nombres ENS transforman esas direcciones larguísimas en nombres de usuario únicos.", + "ens-welcome-point-customize": "Un nombre ENS puede reemplazar tu nombre aleatorio de 3 palabras en el chat. Sé @yourname en lugar de {{name}}.", + "ens-welcome-point-customize-title": "Personaliza tu nombre de chat", + "ens-welcome-point-receive": "Otros pueden enviarte fondos desde el chat en un simple paso.", + "ens-welcome-point-receive-title": "Recibe transacciones en el chat", + "ens-welcome-point-register": "Regístrate una vez para mantener el nombre para siempre. Después de 1 año, podrás liberar el nombre y recuperar tus SNT.", + "ens-welcome-point-register-title": "10 SNT para registrar", + "ens-welcome-point-simplify": "Puedes recibir fondos a tu ENS fácil de compartir, en vez de tu hash hexadecimal (0x...)", + "ens-welcome-point-simplify-title": "Simplifica tu dirección ETH", + "ens-welcome-point-verify": "Puedes verificar y agregar cualquier nombre de usuario que poseas en los siguientes pasos.", + "ens-welcome-point-verify-title": "¿Ya tienes un nombre de usuario?", + "ens-your-username": "Tu nombre de usuario", + "ens-your-usernames": "Tus nombres de usuario", + "ens-your-your-name": "Tu nombre ENS", + "enter-12-words": "Ingresa las 12 palabras de tu frase semilla separadas por espacios", + "enter-a-private-key": "Ingresa una clave privada", + "enter-a-seed-phrase": "Ingresa una frase semilla", + "enter-address": "Ingresar dirección", + "enter-contact-code": "ENS (juanca94) o clave de chat (0x04…)", + "enter-pair-code": "Ingresa tu código de vinculación", + "enter-pair-code-description": "El código de vinculación puede establecerse desde un cliente Status ya vinculado", + "enter-password": "Ingresa la contraseña", + "enter-pin": "Ingresa el código de acceso de 6 dígitos", + "enter-puk-code": "Ingresa el código PUK", + "enter-puk-code-description": "El código de acceso de 6 dígitos ha sido bloqueado. \n Ingresa el código PUK para desbloquear el código de acceso.", + "enter-recipient-address-or-username": "Ingresa la dirección o nombre de usuario del destinatario", + "enter-seed-phrase": "Ingresar la frase semilla", + "enter-url": "Ingresa una URL", + "enter-user-pk": "Ingresa la clave pública de usuario", + "enter-watch-account-address": "Escanea un código QR \n o \n ingresa la dirección para observar", + "enter-word": "Ingresa la palabra", + "enter-your-code": "Ingresa tu código de acceso de 6 dígitos", + "enter-your-password": "Ingresa tu contraseña", + "error": "Error", + "error-unable-to-get-balance": "No se puede obtener el saldo", + "error-unable-to-get-prices": "Error de conversión de moneda. Refresca tu pantalla para intentarlo de nuevo.", + "error-unable-to-get-token-balance": "No se puede obtener el saldo del token", + "errors": "Errores", + "eth": "ETH", + "ethereum-account": "Cuenta Ethereum", + "ethereum-address": "Dirección de Ethereum", + "ethereum-node-started-incorrectly-description": "El nodo Ethereum se inició con una configuración incorrecta. La aplicación se detendrá para recuperarse de esa condición. ID de red configurada = {{network-id}}, actual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "El nodo Ethereum se inició incorrectamente", + "etherscan-lookup": "Ver en Etherscan", + "everyone": "Todos", + "export-account": "Exportar la cuenta", + "export-key": "Exportar clave privada", + "external-storage-denied": "Se niega el acceso al almacenamiento externo", + "failed": "Fallido", + "faq": "Preguntas frecuentes", + "favourite": "Favorito", + "favourite-description": "Tus sitios web favoritos aparecerán aquí", + "favourites": "Favoritos", + "favourites-empty": "Las direcciones agregadas a favoritos aparecerán aquí", + "fetch-messages": "↓ Recuperar mensajes", + "fetch-timeline": "↓ Obtener", + "find": "Encontrar", + "finish": "Finalizar", + "finishing-card-setup": "Finalizando la configuración de la tarjeta", + "fleet": "Fleet", + "fleet-settings": "Ajustes de fleet", + "follow": "Seguir", + "follow-your-interests": "Entra en un chat público y conoce gente nueva", + "free": "↓ Gratis", + "from": "De", + "gas-limit": "Límite de gas", + "gas-price": "Precio del gas", + "gas-used": "Gas utilizado", + "generate-a-key": "Generar claves", + "generate-a-new-account": "Generar una cuenta", + "generate-a-new-key": "Generar una nueva clave", + "generate-account": "Generar claves", + "generate-an-account": "Generar una cuenta", + "generate-new-key": "Generar claves", + "generating-codes-for-pairing": "> Descargando el software del producto a la tarjeta \n > Generando códigos de desbloqueo y vinculación", + "generating-keys": "Generando claves...", + "generating-mnemonic": "Generando frase semilla", + "get-a-keycard": "Obtén una Keycard", + "get-started": "Iniciar", + "get-status-at": "Descarga Status en http:\/\/status.im\/es", + "get-stickers": "Obtener pegatinas", + "give-a-short-description": "Haz una breve descripción", + "give-a-short-description-community": "Descríbelo brevemente", + "give-permissions-camera": "Dar permiso\npara acceder a la cámara", + "glossary": "Glosario", + "go-to-settings": "Ir a Ajustes", + "got-it": "Entendido", + "grant-face-id-permissions": "Para conceder el permiso de Face ID requerido, ve a los ajustes de tu sistema y asegúrate de que esté seleccionado Status > Face ID", + "group-chat": "Chat grupal", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** se ha convertido en admin", + "group-chat-all-contacts-invited": "Todos tus contactos ya están en el grupo", + "group-chat-created": "**{{member}}** creó el grupo **{{name}}**", + "group-chat-decline-invitation": "Rechazar invitación", + "group-chat-member-added": "**{{member}}** ha sido invitado", + "group-chat-member-joined": "**{{member}}** se ha unido al grupo", + "group-chat-member-removed": "**{{member}}** abandonó el grupo", + "group-chat-members-count": "{{selected}}\/{{max}} miembros", + "group-chat-name-changed": "**{{member}}** cambió el nombre del grupo a **{{name}}**", + "group-chat-no-contacts": "Aún no tienes contactos. \nInvita a tus amigos a comenzar a chatear", + "group-info": "Información del grupo", + "group-invite": "Invitación de grupo", + "group-invite-link": "Enlace de invitación de grupo", + "group-membership-request": "Solicitud de membresía grupal", + "gwei": "Gwei", + "has-permissions": "tiene permiso para acceder", + "hash": "Hash", + "help": "ayuda", + "help-capitalized": "Ayuda", + "help-center": "Centro de ayuda", + "help-improve-status": "Ayuda a mejorar Status", + "hide-content-when-switching-apps": "Bloquear capturas de pantalla", + "hide-content-when-switching-apps-ios": "Ocultar vista previa", + "history": "Historial", + "history-nodes": "Nodos de Status", + "hold-card": "Sostén la tarjeta en la parte posterior de tu teléfono", + "home": "Inicio", + "hooks": "Hooks", + "how-it-works": "Cómo funciona", + "http-gateway-error": "¡Oops, la solicitud falló!", + "identifier": "Identificador", + "image": "Imagen", + "image-remove-current": "Eliminar la foto actual", + "image-source-gallery": "Seleccionar de la galería", + "image-source-make-photo": "Tomar foto", + "image-source-title": "Editar imagen", + "import": "Importar", + "import-community": "Importar una comunidad", + "import-community-title": "Importar una comunidad", + "in-contacts": "En contactos", + "incoming": "Entrante", + "incoming-transaction": "Transacción entrante", + "incorrect-code": [ + "str", + "Lo sentimos, el código es incorrecto. Por favor, escríbelo de nuevo" + ], + "increase-gas": "Aumentar el gas", + "initialization": "Inicialización", + "install": "↓ Instalar", + "intro-message1": "¡Bienvenid@ a Status!\nToca este mensaje para establecer tu contraseña y empezar.", + "intro-privacy-policy-note1": "Status no recopila ni se beneficia de tus datos personales. Al continuar, aceptas la ", + "intro-privacy-policy-note2": "política de privacidad", + "intro-text": "Status es tu puerta de enlace a la web descentralizada", + "intro-text1": "Chatea a través de una red encriptada peer-to-peer donde los mensajes no pueden ser censurados o pirateados", + "intro-text2": "Envía y recibe activos digitales en cualquier parte del mundo. No se requiere cuenta bancaria", + "intro-text3": "Explora juegos, plataformas de intercambio y redes sociales en las que solo tú eres propietario de tus datos", + "intro-title1": "Comunicación verdaderamente privada", + "intro-title2": "Criptobilletera segura", + "intro-title3": "Apps descentralizadas", + "intro-wizard-text1": "Un set de claves controla tu cuenta. Las claves se almacenan en tu teléfono, por lo que solo tú puedes usarlas.", + "intro-wizard-text2": "Una clave es para chatear. Viene con un nombre legible que no se puede cambiar.", + "intro-wizard-text3": "¿Tienes una Keycard? Guarda tus claves en ella; la necesitarás para las transacciones", + "intro-wizard-text4": "Asegura y encripta tus claves", + "intro-wizard-text6": "Status te notificará sobre los nuevos mensajes. Puedes editar tus preferencias de notificación más adelante en los ajustes", + "intro-wizard-title-alt4": "Crea una contraseña", + "intro-wizard-title-alt5": "Confirma tu contraseña", + "intro-wizard-title1": "Obtener las claves", + "intro-wizard-title2": "Elige un nombre de chat", + "intro-wizard-title3": "Elegir almacenamiento de claves", + "intro-wizard-title4": "Crear un código de acceso de 6 dígitos", + "intro-wizard-title5": "Confirma la clave de acceso", + "intro-wizard-title6": "Habilitar notificaciones", + "introduce-yourself": "Preséntate con un breve mensaje", + "invalid-address-qr-code": "El código QR escaneado no contiene una dirección válida", + "invalid-format": "Formato inválido \n Debe ser {{format}}", + "invalid-key-confirm": "Aplicar", + "invalid-key-content": "La base de datos no se puede encriptar porque un archivo está dañado. Tus fondos y claves de chat están a salvo. Otros datos, como chats y contactos, no se podrán restaurar. Presionar el botón \"{{erase-multiaccounts-data-button-text}}\" eliminará otros datos y te permitirá acceder a tus fondos y enviar mensajes", + "invalid-number": "Número inválido", + "invalid-pairing-password": "Contraseña de vinculación inválida", + "invalid-public-chat-topic": "Tema de chat público no válido", + "invalid-range": "Formato inválido, debe estar entre {{min}} y {{max}}", + "invite": "Invitar", + "invite-button": "Invitá", + "invite-chat-accept": "Aceptar", + "invite-chat-accept-join": "Aceptar y Unirse", + "invite-chat-intro": "Fuiste referido por un amigo para unirte a Status. Acá tenés algunas criptomonedas para empezar! Usalas para registrar un nombre ENS o comprar un paquete de stickers", + "invite-chat-name": "Referencia de amigos", + "invite-chat-pending": "Pendiente", + "invite-chat-rule": "Si aceptás también recompensarás a tu amigo con un bono de referencia criptográfica", + "invite-chat-starter-pack": "Paquete de Bienvenida", + "invite-friends": "Invitar a amigos", + "invite-instruction-fifth": "Puede elegir canjear su bono de referencia en cualquier momento.", + "invite-instruction-first": "Envías un enlace de invitación único a tu amigo para descargar y unirse a Status", + "invite-instruction-fourth": "Tú recibes el bono de referencia y tu amigo, el Paquete de Bienvenida", + "invite-instruction-second": "Tu amigo descarga Status y crea una cuenta (en Android)", + "invite-instruction-third": "Se inicia un chat con tu amigo, donde confirman tu referencia", + "invite-people": "Invitar a otros", + "invite-privacy-policy-public": "Instalaste Status a través de un enlace de referido. Al unirte a este chat, atribuyes su referencia y aceptas las", + "invite-privacy-policy1": "Al aceptar, estás de acuerdo con el programa de referidos", + "invite-privacy-policy2": "Términos y Condiciones.", + "invite-public-chat-home": "Invitación de referencia", + "invite-public-chat-intro": "¡Aquí tienes algunas criptomonedas para comenzar! Úsalas para registrar un nombre ENS o comprar un paquete de pegatinas", + "invite-receive-account": "Cuenta para recibir tu bono de referencia", + "invite-reward": "¡Gana criptomonedas por cada amigo que invites!", + "invite-reward-friend": "Amigo:", + "invite-reward-friend-description": "Tu amigo recibirá un Paquete de Bienvenida que consta de {{reward}} para comenzar", + "invite-reward-friend-name": "Paquete de Bienvenida", + "invite-reward-you": "Vos:", + "invite-reward-you-description": "Invitá a un amigo y recibí {{reward}} como bono de referencia. Usalo para obtener stickers, un nombre ENS y probar dapps", + "invite-reward-you-name": "Bono de referencia", + "invite-select-account": "Seleccioná una cuenta para recibir tu bono de referencia", + "invite-warning": "Esta promoción solo es válida para usuarios de un dispositivo Android que no sean residentes de EE. UU. Un amigo debe confirmar la referencia en un plazo de 7 días.", + "invited": "invitado", + "join": "Unirse", + "join-a-community": "o únete a una comunidad", + "join-group-chat": "Unirse al grupo", + "join-group-chat-description": "{{username}} te invitó a unirte al grupo {{group-name}}", + "join-me": "Hola, unite a Status: {{url}}", + "join-new-private-chat": "Iniciar un nuevo chat privado", + "join-new-public-chat": "Unirse a un chat público", + "joined": "Unido", + "joined-group-chat-description": "Te has unido a {{group-name}} desde la invitación de {{username}}", + "key": "Clave", + "key-managment": "Administración de claves", + "key-on-device": "La clave privada está guardada en este dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "Acceso a Keycard restablecido", + "keycard-applet-install-instructions": "Para instalar el applet, sigue las instrucciones en https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Intenta mover la tarjeta para encontrar el lector NFC en el dispositivo", + "keycard-awaiting-title": "Todavía buscando...", + "keycard-blocked": "Keycard ha sido bloqueada. \n Necesitas reiniciar la tarjeta para continuar usándola.", + "keycard-can-use-with-new-passcode": "Puedes usar esta tarjeta con tu nuevo código de acceso", + "keycard-cancel-setup-text": "Esto cancelará la configuración de keycard. Se recomienda encarecidamente finalizar la configuración para usar keycard. ¿De verdad quieres cancelar?", + "keycard-cancel-setup-title": "Operación peligrosa", + "keycard-connected-description": "Intenta no mover la tarjeta", + "keycard-connected-title": "Conectado", + "keycard-desc": "¿Tienes una Keycard? Guarda tus claves allí; la necesitarás para las transacciones", + "keycard-dont-ask-card": "No pedir tarjeta para iniciar sesión", + "keycard-enter-new-passcode": "Ingresa el nuevo código de acceso {{step}}\/2", + "keycard-error-description": "Vuelva a conectar la tarjeta para continuar", + "keycard-error-title": "Conexión perdida", + "keycard-free-pairing-slots": "Keycard tiene {{n}} espacios de vinculación libres", + "keycard-has-multiaccount-on-it": "Esta tarjeta está llena. Cada tarjeta puede mantener un par de claves principales", + "keycard-init-description": "Coloca la tarjeta en la parte posterior del teléfono para continuar", + "keycard-init-title": "Buscando tarjetas...", + "keycard-is-blocked-details": "Ya no puedes usar esta tarjeta para acceder o firmar en esta cuenta. Ha habido demasiados intentos fallidos de código de acceso y PUK.", + "keycard-is-blocked-instructions": "Para acceder a tu cuenta tendrás que restablecer de fábrica tu tarjeta. Pulsa el botón de abajo para iniciar el procedimiento. Necesitarás tu mnemónico.", + "keycard-is-blocked-title": "La Keycard está bloqueada", + "keycard-is-frozen-details": "Para proteger tus activos, tu tarjeta está congelada. Restablece tu tarjeta para desbloquearla y enviar transacciones. Puedes hacerlo con tu PUK o mnemónico.", + "keycard-is-frozen-reset": "Restablecer con PUK", + "keycard-is-frozen-title": "La Keycard está congelada", + "keycard-onboarding-finishing-header": "Terminando", + "keycard-onboarding-intro-header": "Guarda tus claves en Keycard", + "keycard-onboarding-intro-text": "Prepárate, esto puede tomar unos minutos, pero es importante para asegurar tu cuenta", + "keycard-onboarding-pairing-header": "Vinculando la tarjeta...", + "keycard-onboarding-preparing-header": "Preparando la tarjeta...", + "keycard-onboarding-puk-code-header": "Escribe los códigos\n y guárdalos de forma segura", + "keycard-onboarding-recovery-phrase-description": "Necesitas esta frase semilla para obtener de nuevo tu clave. Anótala y guárdala de forma segura, en físico y separada de este dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Respalda tu frase semilla", + "keycard-onboarding-recovery-phrase-text": "Sólo para tus ojos. Esta es la semilla mágica usada para generar tu clave.", + "keycard-onboarding-start-header": "Mantén la tarjeta en la parte posterior\n de tu teléfono para iniciar", + "keycard-onboarding-start-step1": "Crea un código de acceso", + "keycard-onboarding-start-step1-text": "Alrededor de 1 minuto. Crea un código de acceso de 6 dígitos para encriptar tus claves", + "keycard-onboarding-start-step2": "Anota el código de vinculación y PUK", + "keycard-onboarding-start-step2-text": "Alrededor de 1 minuto. Vas a necesitar un papel y un lápiz para eso", + "keycard-onboarding-start-step3": "Respalda la frase semilla", + "keycard-onboarding-start-step3-text": "Alrededor de 1 minuto. También vas a necesitar un papel y un lápiz para eso", + "keycard-onboarding-start-text": "Y mantén el contacto entre la tarjeta y el teléfono\n durante la configuración. La configuración tomará alrededor de 4 minutos", + "keycard-processing-description": "Intenta no mover la tarjeta", + "keycard-processing-title": "Procesando...", + "keycard-recovery-intro-button-text": "Iniciar la recuperación", + "keycard-recovery-intro-header": "Recuperar claves almacenadas en Keycard", + "keycard-recovery-intro-text": "Si antes generaste claves con keycard y ahora deseas utilizarlas en este dispositivo", + "keycard-recovery-no-key-header": "No hay nada que \nrecuperar aquí", + "keycard-recovery-no-key-text": "Tu Keycard no tiene ninguna clave almacenada. Para usarla, genera una nueva clave y elige tu Keycard para almacenar la clave", + "keycard-recovery-phrase-confirm-header": "Confirmar frase semilla", + "keycard-recovery-phrase-confirmation-text": "¡No tendrás una segunda oportunidad! Si pierdes acceso, por ejemplo, al extraviar tu Keycard, solo podrás acceder a tus claves con tu frase semilla. Nadie aparte de ti tiene tu frase semilla. Anótala y guárdala de forma segura.", + "keycard-recovery-phrase-confirmation-title": "¿Has anotado la frase semilla?", + "keycard-recovery-success-header": "Tus claves han sido \n recuperadas con éxito", + "keycard-redeem-title": "Canjear a", + "keycard-redeem-tx": "Canjea activos", + "keycard-redeem-tx-desc": "Toca la tarjeta para firmar y recibir activos", + "keycard-reset-passcode": "Restablecer código de acceso", + "keycard-success-description": "Puedes quitar la tarjeta ahora", + "keycard-success-title": "Éxito", + "keycard-unauthorized-operation": "No estás autorizado a realizar esta operación.\n Por favor, toca la tarjeta válida e inténtalo de nuevo.", + "keycard-upsell-subtitle": "Mayor seguridad y conveniencia", + "language": "Idioma", + "learn-more": "Más información", + "learn-more-about-keycard": "Más información sobre Keycard", + "leave": "Salir", + "leave-chat": "Abandonar chat", + "leave-chat-confirmation": "¿Estás seguro de que quieres abandonar el chat?", + "leave-community": "Salir de la comunidad", + "leave-confirmation": "Abandonar chat", + "leave-group": "Abandonar grupo", + "left": "salió", + "les-ulc": "LES\/ULC", + "lets-go": "Vamos", + "light": "Claro", + "linked-on": "Vinculado en {{date}}", + "load-messages-before": "antes del {{date}}", + "load-more-messages": "↓ Recuperar más mensajes", + "load-more-timeline": "↓ Obtener más", + "loading": "Cargando...", + "local-notifications": "Notificaciones locales", + "lock-app-with": "Bloquear app con", + "log-level": "Nivel de registro", + "log-level-settings": "Ajustes del nivel de registro", + "logging": "Registro", + "logging-enabled": "¿Registro habilitado?", + "login-pin-description": "Ingresa tu código de acceso de 6 dígitos para desbloquear tus claves", + "logout": "Cerrar sesión", + "logout-app-content": "Se cerrará la sesión de la cuenta. Cuando la desbloquees de nuevo, se utilizará la red seleccionada", + "logout-are-you-sure": "¿Seguro que quieres cerrar la sesión?", + "logout-title": "¿Cerrar sesión?", + "looking-for-cards": "Buscando tarjetas...", + "lost-connection": "Conexión perdida", + "mail-should-be-configured": "El cliente de correo debe ser configurado", + "mailserver-address": "Dirección del nodo de Status", + "mailserver-automatic": "Selección automática", + "mailserver-automatic-switch-explanation": "Elija el nodo de Status más rápido disponible", + "mailserver-connection-error": "No se pudo conectar al nodo de Status", + "mailserver-content": "Un nodo en la red de Status que envía y almacena mensajes, hasta por 30 días.", + "mailserver-details": "Detalles del nodo de Status", + "mailserver-error-content": "No se pudo acceder al nodo de Status que seleccionó.", + "mailserver-error-title": "Error al conectarse al nodo de Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Elija otro nodo de Status", + "mailserver-reconnect": "No se pudo conectar con el nodo de Status. Pulse para reconectar", + "mailserver-request-error-content": "El siguiente error fue devuelto por el nodo de Status: {{error}}", + "mailserver-request-error-status": "Se produjo un error al recuperar el historial. Por favor, verifica los registros para obtener más detalles", + "mailserver-request-error-title": "Error de solicitud del nodo de Status", + "mailserver-request-retry": "Solicitud de reintento", + "mailserver-retry": "Reintentar", + "mailserver-title": "Nodo de Status", + "main-currency": "Moneda principal", + "main-networks": "Redes principales", + "main-wallet": "Billetera Principal", + "mainnet-network": "Red principal", + "make-admin": "Hacer admin", + "manage-keys-and-storage": "Administrar las claves y el almacenamiento", + "mark-all-read": "Marcar todo como leído", + "master-account": "Cuenta principal", + "maybe-later": "Quizás más tarde", + "member-kick": "Eliminar miembro", + "members": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active-none": "no hay miembros", + "members-count": "{{count}} miembros", + "members-label": "Miembros", + "members-limit-reached": "Límite de miembros alcanzado", + "members-title": "Miembros", + "membership-approval": "Requiere aprobación", + "membership-approval-description": "Puedes unirte de manera gratuita, pero el creador de la comunidad deberá aprobar primero a los nuevos miembros", + "membership-button": "Requisito de membresía", + "membership-declined": "Se rechazó la solicitud de membresía", + "membership-description": "La membresía grupal requiere que seas aceptado por el administrador del grupo", + "membership-ens": "Requiere un nombre de usuario ENS", + "membership-ens-description": "Tu comunidad requiere que tengas un nombre usuario ENS para unirte", + "membership-free": "Sin requisitos", + "membership-free-description": "Cualquier persona puede unirse a tu comunidad", + "membership-invite": "Necesitas invitación de otro miembro", + "membership-invite-description": "Únicamente puedes unirte a la comunidad mediante invitación de un miembro existente", + "membership-none": "Ninguno", + "membership-none-placeholder": "Puedes exigir que los nuevos miembros cumplan con ciertos criterios antes de poder unirse. Esto se puede cambiar en cualquier momento.", + "membership-request-pending": "Solicitud de membresía pendiente", + "membership-requests": "Solicitudes de membresía", + "membership-title": "Requisito de membresía", + "message": "Mensaje", + "message-not-sent": "Mensaje no enviado", + "message-options-cancel": "Cancelar", + "message-reply": "Responder", + "messages": "Mensajes", + "might-break": "Puede que se rompan algunas ÐApps", + "migrations-failed-content": "{{message}} \n versión del esquema: inicial {{initial-version}}, actual {{current-version}}, último {{last-version}} \n\nOcurrió un problema de base de datos. Tus fondos y la clave de chat están a salvo. Otros datos, como chats y contactos, no se podrán recuperar. Presionar el botón \"{{erase-multiaccounts-data-button-text}}\" eliminará el resto de datos y te permitirá acceder a tus fondos y enviar mensajes.", + "mobile-network-ask-me": "Preguntarme cuando esté en la red móvil", + "mobile-network-continue-syncing": "Continuar sincronizando", + "mobile-network-continue-syncing-details": "Puedes cambiarlo más adelante en los ajustes", + "mobile-network-go-to-settings": "Ir a ajustes", + "mobile-network-settings": "Datos móviles", + "mobile-network-sheet-configure": "Puedes configurar la sincronización en más \ndetalle en", + "mobile-network-sheet-offline": "Sin wifi, la sincronización de mensajes está deshabilitada.", + "mobile-network-sheet-offline-details": "La sincronización mediante la red móvil está desactivada", + "mobile-network-sheet-remember-choice": "Recordar mi elección", + "mobile-network-sheet-settings": "ajustes", + "mobile-network-start-syncing": "Iniciar la sincronización", + "mobile-network-stop-syncing": "Detener la sincronización", + "mobile-network-stop-syncing-details": "¿Hasta que te conectes a wifi?", + "mobile-network-use-mobile": "Usar datos móviles", + "mobile-network-use-mobile-data": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-network-use-wifi": "Sólo wifi", + "mobile-syncing-sheet-details": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-syncing-sheet-title": "¿Sincronizar usando los datos móviles?", + "more": "más", + "move-and-reset": "Mover y restablecer", + "move-keystore-file": "Mover el archivo keystore", + "move-keystore-file-to-keycard": "¿Mover el archivo keystore a la keycard?", + "multiaccount-exists-content": "Las claves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "multiaccount-exists-title": "Las claves para esta cuenta ya existen", + "multiaccounts-recover-enter-phrase-text": "Ingresa 12, 15, 18, 21 o 24 palabras. \n Separa las palabras por un solo espacio.", + "multiaccounts-recover-enter-phrase-title": "Ingresa tu frase semilla", + "mute": "Silenciar", + "my-accounts": "Mis cuentas", + "my-accounts-empty": "Tus cuentas disponibles aparecerán aquí", + "my-status": "Mi estado", + "name": "Nombre", + "name-of-token": "El nombre de tu token", + "name-optional": "Nombre (opcional)", + "name-your-channel": "Asigna un nombre a tu canal", + "name-your-channel-placeholder": "Nombre del canal", + "name-your-community": "Asigna un nombre a tu comunidad", + "name-your-community-placeholder": "Elige un nombre memorable", + "need-help": "¿Necesitas ayuda?", + "network": "Red", + "network-chain": "Cadena de la red", + "network-details": "Detalles de red", + "network-fee": "Tarifa de la red", + "network-id": "ID de red", + "network-info": "Información de la red", + "network-invalid-network-id": "El id de red especificado no corresponde al id de red por el URL de RPC", + "network-invalid-status-code": "Código de estado inválido: {{code}}", + "network-invalid-url": "La URL de la red no es válida", + "network-settings": "Ajustes de la red", + "new": "Nuevo", + "new-chat": "Nuevo chat", + "new-community-title": "Nueva comunidad", + "new-contact": "Nuevo contacto", + "new-contract": "Nuevo contrato", + "new-favourite": "Nuevo favorito", + "new-group": "Nuevo grupo", + "new-group-chat": "Nuevo grupo de chat", + "new-network": "Nueva red", + "new-pin-description": "Ingresa el nuevo código de acceso de 6 dígitos", + "new-public-group-chat": "Unirte a chat público", + "new-status": "Nuevo estado", + "new-tab": "Nueva pestaña", + "next": "Siguiente", + "nickname": "Apodo", + "nickname-description": "Los apodos te ayudan a identificar a otras personas en Status. \n Solo tú puedes ver los apodos que agregaste", + "no": "No", + "no-collectibles": "No hay coleccionables disponibles", + "no-contacts": "Aún no hay contactos", + "no-keycard-applet-on-card": "No hay applet de Keycard en la tarjeta", + "no-messages": "No hay mensajes", + "no-pairing-slots-available": "Esta tarjeta ya está vinculada con 5 dispositivos y no puede ser vinculada con este dispositivo. Por favor, utiliza uno de los dispositivos vinculados, inicia sesión con esta tarjeta y libera los espacios de vinculación en la tarjeta", + "no-result": "Sin resultados", + "no-thanks": "No gracias", + "no-tokens-found": "No se encontraron tokens", + "node-info": "Información del nodo", + "node-version": "Versión de nodo", + "nodes-disabled": "Nodos de Status deshabilitados", + "non-archival-node": "El punto de conexión de RPC no admite solicitudes de archivado. Es posible que el historial de transferencias locales esté incompleto.", + "nonce": "Nonce", + "none": "Ninguno", + "not-applicable": "No aplicable para transacciones no firmadas", + "not-connected-nodes": "Sin conexión a un nodo de Status", + "not-connected-to-peers": "Sin conexión a ningún nodo", + "not-enough-snt": "No hay suficiente SNT", + "not-keycard-text": "La tarjeta que usaste no es una Keycard. Necesitas comprar una Keycard para usarla", + "not-keycard-title": "No es una Keycard", + "not-registered": "no registrado", + "notification-settings": "Notificaciones", + "notifications": "Notificaciones", + "notifications-non-contacts": "Notificaciones de no contactos", + "notifications-preferences": "Preferencias de notificación", + "notifications-servers": "Servidores de notificaciones", + "notifications-switch": "Mostrar notificaciones", + "notifications-transactions": "Transacciones de billetera", + "notify": "Notificar", + "now": "Ahora", + "off": "Apagado", + "off-status-tree": "Derivado fuera de Status", + "offline": "Desconectado", + "offline-messaging-use-history-explanation": "Habilite los nodos del historial para recuperar los mensajes que se enviaron mientras la aplicación estaba cerrada. Cuando está habilitado, un nodo de historial obtiene su dirección IP. Cuando está deshabilitado, no recibirá mensajes cuando la aplicación esté cerrada y no los verá cuando abra la aplicación más tarde.", + "offline-messaging-use-history-nodes": "Usar nodos de Status", + "ok": "OK", + "ok-continue": "Vale, continuar", + "ok-got-it": "Entendido", + "ok-save-pass": "OK, guardar contraseña", + "okay": "Vale", + "on": "En", + "on-status-tree": "En el árbol de Status", + "once-enabled-share-metadata": "Una vez habilitados, los enlaces publicados en el chat pueden compartir sus metadatos con el sitio.", + "open": "Abrir", + "open-chat": "Abrir chat", + "open-dapp": "Abrir ÐApp", + "open-dapp-store": "Descubre ÐApps", + "open-home": "Abrir...", + "open-in-new-tab": "Abrir en una pestaña nueva", + "open-membership": "Abrir membresía", + "open-nfc-settings": "Abrir ajustes de NFC", + "opening-buy-crypto": "Abriendo {{site}} ...", + "optional": "opcional", + "or": "O", + "outgoing": "Saliente", + "outgoing-transaction": "Transacción saliente", + "page-camera-request-blocked": "solicitudes de cámara bloqueadas. Para habilitar las solicitudes de la cámara, ve a Ajustes", + "page-would-like-to-use-camera": "quisiera usar la cámara", + "pair": "Vincular dispositivos", + "pair-card": "Vincular a este dispositivo", + "pair-code": "Vincular código", + "pair-code-explanation": "Vincula la tarjeta a un dispositivo diferente (hasta 5) para desbloquear claves y firmar transacciones con la misma Keycard", + "pair-code-placeholder": "Código de vinculación...", + "pair-this-card": "Vincula esta tarjeta", + "pair-this-device": "Publicar el dispositivo", + "pair-this-device-description": "Vincula tus dispositivos para sincronizar los contactos y chats entre ellos", + "paired-devices": "Dispositivos vinculados", + "pairing": "Vinculando", + "pairing-card": "Vinculando la tarjeta", + "pairing-go-to-installation": "Ir a los ajustes de vinculación", + "pairing-maximum-number-reached-content": "Por favor, deshabilita uno de tus dispositivos antes de habilitar uno nuevo.", + "pairing-maximum-number-reached-title": "Número máximo de dispositivos alcanzados", + "pairing-new-installation-detected-content": "Se ha detectado un nuevo dispositivo. \nPara usar tus dispositivos correctamente, es importante vincularlos y habilitarlos antes de usarlos. \nVe a la sección de dispositivos en los ajustes para vincular tus dispositivos.", + "pairing-new-installation-detected-title": "Nuevo dispositivo detectado", + "pairing-no-info": "Sin información", + "pairing-please-set-a-name": "Por favor, establece un nombre para tu dispositivo.", + "passphrase": "Frase de contraseña", + "password": "Contraseña", + "password-description": "Al menos 6 caracteres. Tu contraseña protege tus claves. La necesitas para desbloquear Status y realizar transacciones.", + "password-placeholder": "Contraseña...", + "password-placeholder2": "Confirma tu contraseña", + "password-reset-in-progress": "Cambiando contraseña...", + "password_error1": "Las contraseñas no coinciden.", + "paste": "Pegar", + "paste-json": "Pegar JSON", + "pay-to-chat": "Pagar para chatear", + "peer-content": "Un dispositivo conectado a la red de chat de Status. Cada usuario puede representar uno o más peers, dependiendo de su número de dispositivos.", + "peer-title": "Pares", + "peer-to-peer": "Peer to peer", + "peers": "Pares", + "pending": "Pendiente", + "pending-confirmation": "Confirmación pendiente...", + "pending-invitations": "Solicitudes de membresía pendientes", + "permissions": "Permisos", + "phone-e164": "Internacional 1", + "photos": "Fotos", + "photos-access-error": "Para permitir el acceso a fotos, por favor, ve a los ajustes del sistema y asegúrate de que esté seleccionada la opción Status > Fotos", + "pin-changed": "Se ha cambiado el código de acceso de 6 dígitos", + "pin-code": "Código de acceso de 6 dígitos", + "pin-mismatch": "Código de acceso incorrecto", + "pin-one-attempt": "un intento", + "pin-one-attempt-blocked-after": "antes de que tu Keycard se bloquee", + "pin-one-attempt-blocked-before": "Ten cuidado, solo tienes", + "pin-one-attempt-frozen-after": "antes de que tu Keycard se congele", + "pin-one-attempt-frozen-before": "Ten cuidado, solo tienes", + "pin-retries-left": "Te quedan {{number}} reintentos", + "preference": "Preferencia", + "preview-privacy": "Vista previa del modo de privacidad", + "previewing-may-share-metadata": "La vista previa de los enlaces de estos sitios web puede compartir sus metadatos con sus propietarios.", + "privacy": "Privacidad", + "privacy-and-security": "Privacidad y seguridad", + "privacy-policy": "Política de privacidad", + "private-key": "Clave privada", + "private-notifications": "Notificaciones privadas", + "private-notifications-descr": "Status te notificará sobre los nuevos mensajes. Puedes editar tus preferencias de notificación más adelante en los ajustes.", + "processing": "Un momento", + "product-information": "Información del producto", + "profile": "Perfil", + "profile-deleted-content": "Tu perfil fue eliminado con éxito", + "profile-deleted-keycard": "Ahora puedes restaurar otro par de claves en tu Keypair", + "profile-deleted-title": "Perfil eliminado", + "profile-details": "Detalles del perfil", + "profile-pic-pick": "Seleccionar de la galería", + "profile-pic-remove": "Eliminar foto", + "profile-pic-take": "Tomar foto", + "public-channel": "Canal público", + "public-chat": "Chat público", + "public-chat-description": "¡Únete a chats públicos de tu interés! Cualquiera puede comenzar uno nuevo.", + "public-chats": "Chats públicos", + "public-group-status": "Público", + "public-group-topic": "Tema", + "public-key": "Clave pública", + "puk-and-pairing-codes-displayed": "PUK y códigos de vinculación mostrados", + "puk-code": "Código PUK", + "puk-code-explanation": "Si olvidas tu código de acceso de 6 dígitos o lo ingresas incorrectamente 3 veces, necesitarás este código para desbloquear tu tarjeta.", + "puk-mismatch": "El código PUK no coincide", + "push-failed-transaction": "Su transacción falló", + "push-failed-transaction-body": "{{value}} {{currency}} a {{to}}", + "push-inbound-transaction": "Recibiste {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} a {{to}}", + "push-notifications-server-enabled": "Servidor habilitado", + "push-notifications-servers": "Servidores de notificaciones push", + "push-outbound-transaction": "Enviaste {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} a {{to}}", + "quiet-days": "{{quiet-days}} días", + "quiet-hours": "{{quiet-hours}} horas", + "re-encrypt-key": "Vuelve a encriptar tus claves", + "receive": "Recibir", + "receive-transaction": "Recibir transacción", + "recent": "Recientes", + "recent-empty": "Las direcciones utilizadas recientemente aparecerán aquí", + "recent-recipients": "Contactos", + "recently-used-stickers": "Las pegatinas usadas recientemente aparecerán aquí", + "recipient": "Receptor", + "recipient-code": "Ingresa la dirección del destinatario", + "recipient-code-placeholder": "0x... o username.domain.eth", + "recover": "Recuperar", + "recover-key": "Ingresar claves existentes", + "recover-keycard-multiaccount-not-supported": "Las claves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "recover-with-keycard": "Recuperar con Keycard", + "recover-with-seed-phrase": "Recuperar con frase semilla", + "recovering-key": "Ingresando las claves...", + "recovery-confirm-phrase": "Confirmar frase semilla", + "recovery-phrase": "Frase semilla", + "recovery-success-text": "Deberás crear un nuevo código o contraseña para volver a encriptar tus claves", + "recovery-typo-dialog-description": "Recuerda, tu frase semilla deben ser exactamente las mismas palabras y el orden en que recibiste", + "recovery-typo-dialog-title": "¿Es correcta la frase semilla?", + "redeem-amount": "{{quantity}} bonos disponibles", + "redeem-now": "Canjear ahora", + "redeem-success": "¡Canje del bono exitoso!", + "refresh": "Actualizar", + "registered": "registrado", + "remember-me": "Recuérdame", + "remind-me-later": "Verlo de nuevo", + "remove": "Eliminar", + "remove-favourite": "Quitar favorito", + "remove-from-chat": "Eliminar del chat", + "remove-from-contacts": "Eliminar de contactos", + "remove-from-contacts-text": "Al eliminar a un usuario de tu lista de contactos, no ocultas la dirección de tu billetera de ellos", + "remove-group": "Eliminar grupo", + "remove-network": "Eliminar red", + "remove-token": "Eliminar token", + "removed": "eliminado", + "repeat-pin": "Repite el nuevo código de acceso de 6 dígitos", + "replying-to": "Respondiendo a {{author}}", + "report-bug-email-template": "1. Descripción del problema \n (Describe la función que deseas, o resume brevemente el error y lo que hiciste, lo que esperabas que sucediera y lo que realmente sucede. Secciones a continuación) \n\n\n 2. Pasos para reproducir \n (Describe cómo podemos replicar el error paso a paso). \n -Abre Status \n -... \n -Paso 3, etc. \n\n\n 3. Resultado esperado \n (Describe lo que esperabas que sucediera). \n\n\n 4. Resultado real \n (Describe lo que realmente sucedió). \n\n\n 5. Adjunta capturas de pantalla que puedan demostrar el problema\n", + "request-access": "Solicitar acceso", + "request-feature": "Solicitar una funcionalidad", + "request-membership": "Solicitar membresía", + "request-pending": "Pedido pendiente…", + "request-transaction": "Solicitar transacción", + "required-field": "Campo obligatorio", + "resend-message": "Reenviar", + "reset-card": "Reiniciar tarjeta", + "reset-card-description": "Esta operación restablecerá la tarjeta al estado inicial. Borrará todos los datos de la tarjeta, incluidas las claves privadas. La operación no es reversible.", + "reset-database": "Restablecer base de datos", + "reset-database-warning": "Elimina chats, contactos y ajustes. Se requiere cuando has perdido tu contraseña", + "reset-database-warning-keycard": "Borrar chats, contactos y ajustes", + "restore-defaults": "Restaurar los valores predeterminados", + "retry": "Reintentar", + "revoke-access": "Revocar el acceso", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Copiar", + "rpc-usage-get-stats": "Actualizar", + "save": "Guardar", + "save-password": "Guardar contraseña", + "save-password-unavailable": "Establece el código de acceso del dispositivo para guardar la contraseña", + "save-password-unavailable-android": "Guardar la contraseña no está disponible: tu dispositivo puede estar rooteado o carecer de las características de seguridad necesarias.", + "scan-qr": "Escanear QR", + "scan-qr-code": "Escanea un código QR con una dirección de billetera", + "scan-tokens": "Escanear tokens", + "search": "Buscar", + "search-no-chat-found": "No hay resultados de búsqueda. ¿Querés decir", + "secret-keys-confirmation-text": "Los necesitará para seguir usando su Keycard en caso de que alguna vez pierda su teléfono.", + "secret-keys-confirmation-title": "¿Escribiste los códigos?", + "security": "Seguridad", + "see-details": "Ver detalles", + "see-it-again": "VERLO OTRA VEZ", + "seed-key-uid-mismatch": "La frase semilla no coincide", + "seed-key-uid-mismatch-desc-1": "La frase semilla que ingresaste no coincide con {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Para administrar claves para esta cuenta verifica tu frase semilla e inténtalo de nuevo", + "seed-phrase-content": "Un set de palabras fáciles de leer, seleccionadas al azar de la lista estándar BIP39 y utilizadas para recuperar o acceder a tu cuenta de Ethereum en otras billeteras y dispositivos. También se conoce como «frase mnemónica»,«frase de recuperación» o «copia de seguridad de billetera» en todo el cripto ecosistema. La mayoría de las cripto apps usan este mismo estándar para generar cuentas.", + "seed-phrase-placeholder": "Frase semilla...", + "seed-phrase-title": "Frase semilla", + "select": "Seleccionar", + "select-account": "Seleccionar cuenta", + "select-account-dapp": "Selecciona la cuenta que deseas usar con Dapps", + "select-account-first": "Selecciona una cuenta primero", + "select-chat": "Selecciona el chat para comenzar a enviar mensajes", + "select-new-location-for-keys": "Selecciona una nueva ubicación para guardar las claves privadas", + "selected": "Seleccionado", + "send-logs": "Reportar un error", + "send-logs-to": "Reportar un error a {{email}}", + "send-message": "Enviar mensaje", + "send-push-notifications-description": "Cuando está deshabilitado, la persona que recibe tus mensajes no será notificada de su llegada.", + "send-request": "Enviar solicitud", + "send-request-amount": "Cantidad", + "send-request-amount-max-decimals": "El número máximo de decimales es {{asset-decimals}}", + "send-request-unknown-token": "Token desconocido: {{asset}}", + "send-sending-to": "para {{recipient-name}}", + "send-transaction": "Enviar transacción", + "sending": "Enviando", + "sent-at": "Enviado a", + "server": "Servidor", + "set-a-topic": "Crear un tema", + "set-currency": "Establecer moneda", + "set-custom-fee": "Establecer tarifa personalizada", + "set-dapp-access-permissions": "Establecer permisos de acceso de DApp", + "set-max": "Establecer máximo", + "settings": "Ajustes", + "share": "Compartir", + "share-address": "Compartir dirección", + "share-chat": "Compartir chat", + "share-contact-code": "Compartir mi clave de chat", + "share-dapp-text": "Echa un vistazo a esta DApp que utilizo en Status: {{link}}", + "share-link": "Compartir enlace", + "share-my-profile": "Compartir mi perfil", + "share-profile": "Compartir perfil", + "share-profile-link": "Compartir enlace del perfil", + "share-public-chat-text": "Echa un vistazo a este chat público en la app de Status: {{link}}", + "shared": "Compartido", + "sharing-copied-to-clipboard": "Copiado", + "sharing-copy-to-clipboard": "Copiar", + "sharing-data-desc-6": "La información es removida de tu teléfono después de ser enviada", + "sharing-share": "Compartir", + "show-less": "Mostrar menos", + "show-more": "Mostrar más", + "show-notifications": "Mostrar notificaciones", + "show-profile-pictures": "Mostrar fotos de perfil de", + "show-qr": "Mostrar código QR", + "show-transaction-data": "Mostrar los datos de la transacción", + "sign-and-send": "Firmar y enviar", + "sign-anyway": "Firmar de todas maneras", + "sign-in": "Registrarse", + "sign-message": "Firmar mensaje", + "sign-out": "Cerrar sesión", + "sign-request-failed": "No se pudo firmar el mensaje", + "sign-with": "Firmar con", + "sign-with-password": "Firmar con contraseña", + "sign-you-in": "Iniciando sesión...", + "signing": "Firma", + "signing-a-message": "Firmando un mensaje", + "signing-phrase": "Frase de firma", + "something-went-wrong": "Algo salió mal", + "soon": "Pronto", + "specify-address": "Especifica la dirección", + "specify-name": "Especifica un nombre", + "specify-network-id": "Especifica ID de la red", + "specify-rpc-url": "Especifica una URL RPC", + "specify-server-public-key": "Ingresa la clave pública del servidor", + "start-chat": "Iniciar chat", + "start-conversation": "Empezar conversación", + "start-group-chat": "Iniciar chat grupal", + "start-new-chat": "Iniciar nuevo chat", + "starter-pack-coming": "El Paquete de Bienvenida viene en camino", + "starter-pack-coming-description": "Puede tomar de unos minutos a horas", + "starter-pack-received": "Paquete de Bienvenida", + "starter-pack-received-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "status": "Status", + "status-confirmed": "Confirmado", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status tiende a usar una gran cantidad de datos al sincronizar chats. Puedes optar por no sincronizar cuando estás en la red móvil", + "status-not-sent-click": "No está confirmado. Haz clic para ver las opciones", + "status-not-sent-tap": "No confirmado. Toca para ver las opciones", + "status-pending": "Pendiente", + "status-sent": "Enviado", + "status-tx-not-found": "TX no encontrada", + "status-updates-descr": "Las actualizaciones de estado aparecerán aquí. Agregue el perfil como un contacto para recibir actualizaciones en su línea de tiempo.", + "statuses-descr": "Comparte lo que tienes en mente y mantente al día con tus contactos", + "statuses-my-status-descr": "Comparte lo que tienes en mente. Cualquiera que visite su perfil podrá ver su estado. Las personas que te agreguen como contacto recibirán tus actualizaciones en su línea de tiempo.", + "step-i-of-n": "Paso {{step}} de {{number}}", + "sticker-market": "Tienda de pegatinas", + "storage": "Almacenamiento", + "submit": "Enviar", + "submit-bug": "Reportar un error", + "success": "Éxito", + "symbol": "Símbolo", + "sync-all-devices": "Sincronizar todos los dispositivos", + "sync-in-progress": "Sincronizando...", + "sync-settings": "Ajustes de sincronización", + "sync-synced": "Sincronizado", + "syncing-devices": "Sincronizando...", + "system": "Sistema", + "tabs": "Pestañas", + "tag-was-lost": "La etiqueta se perdió", + "tap-card-again": "Vuelve a tocar la tarjeta con la parte trasera de tu teléfono.", + "terms-of-service": "Condiciones de uso", + "test-networks": "Redes de prueba", + "text-input-disabled": "Por favor, espera un momento...", + "thank-you": "Gracias", + "this-device": "Este dispositivo", + "this-device-desc": "Tus claves serán encriptadas y almacenadas de forma segura en tu dispositivo", + "this-is-you-signing": "Esta es tu frase de firma", + "this-will-take-few-seconds": "Esto tomará unos segundos", + "three-words-description": "Deberías ver estas tres palabras antes de firmar cada transacción", + "three-words-description-2": "Si ves una combinación diferente, cancela la transacción y cierra sesión", + "timeline": "Línea de tiempo", + "to": "Para", + "to-block": "Bloquear", + "to-enable-biometric": "Para habilitar {{bio-type-label}}, debes guardar tu contraseña en la pantalla de desbloqueo", + "to-encrypt-enter-password": "Para encriptar la cuenta, por favor, ingresa tu contraseña", + "to-see-this-message": "Para ver este mensaje,", + "token-auto-validate-decimals-error": "Decimales incorrectos para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-name-error": "Nombre incorrecto para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-symbol-error": "Símbolo incorrecto para el token {{symbol}} en la dirección {{address}} - configurado en {{expected}} pero detectado como {{actual}}", + "token-details": "Detalles del token", + "topic-name-error": "Utiliza solo letras minúsculas (a-z), números y guiones (-). No uses las claves de chat", + "transaction": "Transacción", + "transaction-data": "Transaction data", + "transaction-declined": "Transacción rechazada", + "transaction-description": "Transacciones con 12 confirmaciones pueden considerarse irreversibles", + "transaction-details": "Detalles de la transacción", + "transaction-failed": "Transacción fallida", + "transaction-history": "Historial de transacciones", + "transaction-request": "Solicitud de transacción", + "transaction-sent": "Transacción enviada", + "transaction-signed": "La transacción se ha firmado con éxito", + "transactions": "Transacciones", + "transactions-filter-select-all": "Seleccionar todo", + "transactions-filter-title": "Filtrar historial", + "transactions-history": "Historial de transacciones", + "transactions-history-empty": "Aún no hay transacciones en tu historial", + "transactions-history-loading": "Cargando historial de transacciones. Esto podrá tomar un tiempo.", + "transactions-load-more": "Mostrar más", + "transactions-sign": "Firmar", + "transfer-ma-unknown-error-desc-1": "Parece que tu multicuenta no se eliminó. Es posible que la base de datos se haya restablecido", + "transfer-ma-unknown-error-desc-2": "Por favor, comprueba tu lista de cuentas e inténtalo de nuevo. Si la cuenta no aparece en la lista, ve a Acceder a las claves existentes para recuperarlas con la frase semilla", + "transfers-fetching-failure": "No se ha podido actualizar el historial de transferencias. Comprueba la conexión y refresca la página para intentarlo de nuevo", + "tribute-required-by-multiaccount": "{{multiaccount-name}} requiere SNT para iniciar un chat.", + "tribute-state-paid": "Tributo pagado", + "tribute-state-pending": "Tributo pendiente", + "tribute-state-required": "Requiere {{snt-amount}} tributo de SNT", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Agregar amigos como contacto para permitir chats sin pago de tributo.", + "tribute-to-talk-are-you-friends": "¿Sois amigos?", + "tribute-to-talk-ask-to-be-added": "Pide añadirlo como contacto", + "tribute-to-talk-contact-received-your-tribute": "recibió tu tributo. Ahora podéis conversar con seguridad.", + "tribute-to-talk-desc": "Monetiza tu atención requiriendo SNT para que la gente nueva inicie un chat", + "tribute-to-talk-disabled": "Tribute to Talk deshabilitado", + "tribute-to-talk-disabled-note": "A partir de ahora, las personas nuevas pueden iniciar un chat contigo sin enviar SNT.", + "tribute-to-talk-enabled": "Tienes Tribute to Talk habilitado.", + "tribute-to-talk-finish-desc": "A partir de ahora, sólo recibirás chats de los contactos, y de la gente que pagó ", + "tribute-to-talk-learn-more-1": "Tu tiempo y atención son tus activos más valiosos. Tribute to Talk te permite configurar la cantidad de SNT requerida para que nuevas personas inicien un chat contigo.", + "tribute-to-talk-learn-more-2": "Cualquier persona que no esté en tu lista de contactos deberá pagar y tú podrás responder una vez que lo hayan hecho.", + "tribute-to-talk-learn-more-3": "Siempre puedes devolver el dinero, pero para asegurarte de que tus amigos puedan contactarte libremente, añádelos primero como contacto.", + "tribute-to-talk-paywall-learn-more-1": "Nuestro tiempo y atención son nuestros activos más valiosos. Tribute to Talk te permite contactar a nuevas personas a cambio de un pago de SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para iniciar un chat con alguien que tiene configurado tributos, simplemente paga el SNT requerido y serás agregado como contacto.", + "tribute-to-talk-paywall-learn-more-3": "Si los conoces, puedes compartir tu perfil fuera de Status para ser agregado de forma gratuita.", + "tribute-to-talk-pending": "Tributo pendiente de confirmación", + "tribute-to-talk-pending-note": "La transacción de tributo está pendiente de confirmación en la red. Puedes verificar el status en el historial de transacciones", + "tribute-to-talk-removing-note": "Eliminar Tribute to Talk permitirá que nuevas personas inicien un chat sin enviar SNT. Requiere que se realice una transacción.", + "tribute-to-talk-set-snt-amount": "Establece la cantidad de SNT requerida para que nuevas personas inicien un chat", + "tribute-to-talk-signing": "Esperando para firmar la transacción", + "tribute-to-talk-transaction-failed-note": "La transacción ha fallado y tu configuración de Tribute to Talk no ha cambiado", + "tribute-to-talk-tribute-received1": "Tributo recibido. Tú y ", + "tribute-to-talk-tribute-received2": "ahora sois contactos y podéis chatear de forma segura.", + "tribute-to-talk-you-require-snt": "Se necesita SNT para que las personas nuevas inicien un chat.", + "try-again": "Inténtalo de nuevo", + "try-keeping-the-card-still": "Intenta no mover la tarjeta", + "turn-nfc-description": "NFC está deshabilitado en tu dispositivo. Puedes habilitarlo en los ajustes", + "turn-nfc-on": "Activa NFC para continuar", + "tx-fail-description1": "Es probable que esta transacción falle. Firma bajo tu propio riesgo utilizando una tarifa de red personalizada.", + "tx-fail-description2": "Es probable que esta transacción falle. Establece una tarifa de red personalizada para firmar bajo tu propio riesgo.", + "type": "Tipo", + "type-a-message": "Mensaje", + "ulc-enabled": "ULC habilitado", + "unable-to-fetch": "No es posible recuperar el historial de chat", + "unable-to-read-this-code": "No se puede leer este código", + "unable-to-send-messages": "No es posible enviar o recibir mensajes", + "unblock": "Desbloquear", + "unblock-contact": "Desbloquear a este usuario", + "unknown-status-go-error": "Error de status-go desconocido", + "unlock": "Desbloquear", + "unmute": "Activar sonido", + "unpair-card": "Desvincular tarjeta", + "unpair-card-confirmation": "Esta operación desvinculará la tarjeta del dispositivo actual. Requiere autorización del código de acceso de 6 dígitos. ¿Quieres continuar?", + "unpair-keycard": "Desvincular la tarjeta de acceso de este teléfono", + "unpair-keycard-warning": "Tu código de vinculación\/ PUK y PIN permanecen sin cambios", + "unpaired-keycard-text": "La Keycard que pulsaste no está asociada con este teléfono", + "unpaired-keycard-title": "Parece que tu tarjeta ha sido desvinculada", + "update": "Actualizar", + "update-to-listen-audio": "¡Actualizá a la última versión para escuchar un mensaje de audio aquí!", + "update-to-see-image": "¡Actualizá a la última versión para ver una buena imagen aquí!", + "update-to-see-sticker": "¡Actualizá a la última versión para ver una bonita pegatina aquí!", + "url": "URL", + "usd-currency": "Dólar estadounidense", + "use-valid-contact-code": "Por favor, ingresa o escanea una clave de contacto o nombre de usuario válido", + "validation-amount-invalid-number": "La cantidad no es un número válido", + "validation-amount-is-too-precise": "La cantidad es muy precisa. El número máximo de decimales es {{decimals}}.", + "version": "Versión de la app", + "view": "Ver", + "view-cryptokitties": "Ver en CryptoKitties", + "view-cryptostrikers": "Ver en CryptoStrikers", + "view-details": "Ver detalles", + "view-etheremon": "Ver en Etheremon", + "view-gitcoin": "Ver en Gitcoin", + "view-profile": "Ver perfil", + "view-signing": "Ver la frase de firma", + "view-superrare": "Ver en SuperRare", + "waiting-for-wifi": "Sin wifi, la sincronización de mensajes está deshabilitada.", + "waiting-for-wifi-change": "Ajustes", + "waiting-to-sign": "Esperando para firmar la transacción...", + "waiting-wi-fi": "Esperando wifi…", + "waku-bloom-filter-mode": "Modo de filtro Waku bloom", + "wallet": "Billetera", + "wallet-address": "Dirección de la billetera", + "wallet-asset": "Activo", + "wallet-assets": "Activos", + "wallet-backup-recovery-title": "Respalda tu frase semilla", + "wallet-choose-recipient": "Elegir destinatario", + "wallet-collectibles": "Coleccionables", + "wallet-insufficient-funds": "Fondos insuficientes", + "wallet-insufficient-gas": "No hay suficiente ETH para el gas", + "wallet-invalid-address": "Dirección inválida: \n {{data}}", + "wallet-invalid-address-checksum": "Error en la dirección: \n {{data}}", + "wallet-invalid-chain-id": "La red no coincide: \n {{data}} pero la cadena actual es {{chain}}", + "wallet-key-content": "Una dirección hexadecimal de 64 caracteres basada en el estándar Ethereum y que comienza con 0x. De cara al público, tu clave de billetera se comparte con otros cuando deseas recibir fondos. También se conoce como «dirección de Ethereum» o «dirección de billetera».", + "wallet-key-title": "Dirección de la cuenta", + "wallet-manage-assets": "Administrar activos", + "wallet-request": "Solicitud", + "wallet-send": "Enviar", + "wallet-send-min-units": "Mínimo 21 000 unidades", + "wallet-send-min-wei": "Mín. 1 wei", + "wallet-settings": "Ajustes de billetera", + "wallet-total-value": "Valor total", + "wallet-transaction-total-fee": "Costo total", + "wants-to-access-profile": "quiere acceder a tu perfil", + "warning": "Advertencia", + "warning-message": "Lo sentimos, limitamos el envío de varios mensajes en rápida sucesión para evitar el spam. Por favor, inténtalo de nuevo en un momento.", + "warning-sending-to-contract-descr": "La dirección que ingresó es un contrato inteligente, enviar fondos a esta dirección puede resultar en la pérdida de fondos. Para interactuar con una DApp, abra la DApp en el navegador de Status.", + "watch-only": "Sólo para ver", + "web-view-error": "No se puede cargar la página", + "websites": "Sitios web", + "webview-camera-permission-requests": "Solicitudes de permisos de la cámara Webview", + "webview-camera-permission-requests-subtitle": "Cuando está habilitado, los sitios web y las dapps pueden solicitar el uso de la cámara", + "welcome-blank-community-message": "Tus comunidades aparecerán aquí.", + "welcome-blank-message": "Tus chats aparecerán aquí. Para iniciar nuevos chats, presiona el botón ⊕", + "welcome-community-blank-message": "Tus chats aparecerán aquí. Para iniciar nuevos chats, pulsa en los 3 puntos de arriba y selecciona «Crear un canal».", + "welcome-screen-text": "¡Configura tu billetera, invita a amigos a chatear \n y busca dapps populares!", + "welcome-to-status": "¡Bienvenidos a Status!", + "welcome-to-status-description": "Configura tu criptobilletera, invita a tus amigos a chatear y busca apps descentralizadas", + "whats-on-your-mind": "Lo que tienes en mente...", + "word-count": "Número de palabras", + "word-n": "Palabra #{{number}}", + "word-n-description": "Para comprobar si has realizado una copia de seguridad de la frase semilla correctamente, escribe arriba la palabra #{{number}}.", + "words-n": { + "one": "1 palabra", + "other": "{{count}} palabras" + }, + "write-down-and-store-securely": "Anota los códigos\n y guárdalos de forma segura", + "wrong-address": "Dirección incorrecta", + "wrong-card": "Tarjeta incorrecta", + "wrong-card-text": "Has tocado una tarjeta que no corresponde a las claves seleccionadas", + "wrong-contract": "Contrato incorrecto", + "wrong-keycard-text": "La Keycard que pulsaste no está asociada con este teléfono", + "wrong-keycard-title": "Parece que has pulsado \nuna keycard incorrecta", + "wrong-password": "Contraseña incorrecta", + "wrong-word": "Palabra incorrecta", + "yes": "Sí", + "you": "tú", + "you-already-have-an-asset": "Ya tienes un activo {{value}}", + "you-are-all-set": "¡Está todo listo!", + "you-are-all-set-description": "Ahora, si pierdes tu teléfono, puedes acceder a tus fondos y clave de chat usando la frase semilla", + "you-can-change-account": "Puedes cambiar el nombre y el color de la cuenta a lo que deseas", + "you-can-choose-preview-websites": "Puede elegir cuál de los siguientes sitios web puede previsualizar el enlace de las descripciones e imágenes en los chats", + "you-can-fetch": "Puedes recuperar el historial de chat", + "you-dont-have-contacts": "Todavía no tenés ningún contacto.", + "you-dont-have-stickers": "Todavía no tienes pegatinas", + "you-will-need-this-code": "Necesitarás este código para abrir Status y firmar transacciones", + "you-will-start-from-scratch": "Comenzarás desde cero con un nuevo set de claves", + "your-card-is-frozen": "Tu Keycard está congelada. Restablece el acceso a la tarjeta", + "your-contact-code": "Conceder acceso autoriza a esta DApp a obtener tu clave de chat", + "your-data-belongs-to-you": "Si pierdes la frase semilla, pierdes tus datos y fondos", + "your-data-belongs-to-you-description": "Si pierdes acceso, por ejemplo, al perder tu teléfono, solo puedes acceder a tus claves con tu frase semilla. Nadie aparte de ti tiene tu frase semilla. Anótala y guárdala de forma segura.", + "your-keys": "Tus claves", + "your-recovery-phrase": "Tu frase semilla", + "your-recovery-phrase-description": "Esta es tu frase semilla. La usas para comprobar que esta es tu billetera. ¡Sólo la verás una vez! Escríbela en un papel y guárdala en un lugar seguro. La necesitarás si pierdes o reinstalas tu billetera.", + "youre-on-mobile-network": "Estás en una red móvil" +} diff --git a/translations/es_419.json b/translations/es_419.json new file mode 100644 index 00000000000..1bc4b9ac681 --- /dev/null +++ b/translations/es_419.json @@ -0,0 +1,1814 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "You": "Tú", + "about-app": "Acerca de", + "about-key-storage-content": "Status nunca accederá a tu clave privada. Asegúrate de respaldar tu frase semilla. Si pierdes tu teléfono es la única manera de acceder a tus claves.", + "about-key-storage-title": "Acerca del almacenamiento de claves", + "about-names-content": "¡Nadie puede pretender ser tú! Eres anónimo por defecto y nunca tienes que revelar tu nombre real. Puedes registrar un nombre personalizado por una pequeña tarifa.", + "about-names-title": "Los nombres no se pueden cambiar", + "about-sharing-data": "Sobre compartir datos", + "accept": "Aceptar", + "accept-and-add": "Aceptar y agregar", + "accept-and-continue": "Aceptar y continuar", + "accept-and-share-address": "Aceptar y compartir dirección", + "accept-community-rules": "Acepto las reglas de la comunidad", + "accept-new-chats-from": "Aceptar nuevos mensajes de", + "accept-status-tos-prefix": "Acepto Status", + "access-existing-keys": "Ingresar claves existentes", + "access-key": "Clave de acceso", + "account-added": "Cuenta agregada", + "account-color": "Color de la cuenta", + "account-content": "Puedes comparar las cuentas en Status con las cuentas bancarias. Al igual que una cuenta bancaria, una cuenta suele tener una dirección y un saldo; se utiliza esta cuenta para realizar transacciones con Ethereum. Puedes tener varias cuentas en tu billetera. Todas accedidas en Status.", + "account-exists-title": "Cuenta ya existe", + "account-is-used": "La cuenta se está usando con Dapps en el navegador.", + "account-name": "Nombre de la cuenta", + "account-settings": "Ajustes de la cuenta", + "account-title": "Cuenta", + "accounts": "Cuentas", + "actions": "Acciones", + "active-members": "Miembros activos", + "active-online": "En línea", + "active-unknown": "Desconocido", + "activity": "Actividad", + "add": "Agregar", + "add-a-watch-account": "Agregar una dirección de solo observación", + "add-account": "Agregar una cuenta", + "add-account-description": "Puedes importar cualquier tipo de cuenta de Ethereum para agregarla a tu billetera de Status", + "add-account-incorrect-password": "La contraseña parece ser incorrecta. Ingresa la contraseña que usas para desbloquear la app.", + "add-an-account": "Agregar una cuenta", + "add-bootnode": "Agregar bootnode", + "add-contact": "Agregar contacto", + "add-custom-token": "Agregar un token personalizado", + "add-favourite": "Agregar favorito", + "add-mailserver": "Agregar nodo de Status", + "add-members": "Agregar miembros", + "add-network": "Agregar red", + "add-new-contact": "Agregar nuevo contacto", + "add-nickname": "Agregar un apodo (opcional)", + "add-node": "Agregar nodo", + "add-private-key-account": "Ingresa una cuenta de una llave privada", + "add-seed-account": "Agrega una cuenta con una frase semilla", + "add-to-contacts": "Agregar a contactos", + "add-to-contacts-text": "Al agregar un usuario a tu lista de contactos, compartes la dirección de tu billetera", + "add-to-favourites": "Agregar a favoritos", + "add-watch-account": "Agrega una cuenta sólo para mirar", + "added": "añadido", + "address": "Dirección", + "address-or-ens-name": "Dirección o nombre ENS", + "address-received": "Dirección recibida", + "address-request-accepted": "Solicitud de dirección aceptada", + "address-requested": "Dirección solicitada", + "admin": "Admin", + "advanced": "Avanzado", + "advanced-settings": "Ajustes avanzados", + "advertiser-description": "Descubriste Status gracias a un socio nuestro. ¿Podemos chequear tu IP para poder recompensarlo? Esta información no será usada para nada más, y será removida completamente después de 7 días", + "advertiser-starter-pack-accept": "Aceptar", + "advertiser-starter-pack-decline": "Rechazar", + "advertiser-starter-pack-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "advertiser-starter-pack-title": "Paquete de Bienvenida", + "advertiser-title": "Privacidad por defecto", + "agree-by-continuing": "Al continuar, aceptas \n nuestras", + "all": "Todos", + "all-connections": "Todas las conexiones", + "allow": "Permitir", + "allow-and-send": "Permitir y enviar", + "allow-mention-notifications": "Mostrar @ menciones", + "allowing-authorizes-this-dapp": "Permitir autoriza a esta DApp a recuperar la dirección de tu billetera y habilitar Web3", + "alphabetically": "Alfabéticamente", + "already-have-asset": "Ya tienes este activo", + "amount": "Cantidad", + "and": "y", + "anyone": "Cualquiera", + "app-connections": "Conexiones de la App", + "appearance": "Apariencia", + "apply": "Aplicar", + "approve": "Aprobar", + "approve-limit": "Aprobar el límite", + "approve-token": "Aprobar el token", + "approve-token-contract-desc": "Aprobar un token con un contrato te permite gastar tu saldo de tokens. Si sientes que un proyecto no es confiable, no apruebes el token con ellos, o aprueba sólo la cantidad que vas a utilizar con ellos.\n", + "are-you-sure": "¿Estás seguro\/a?", + "are-you-sure-description": "No podrás volver a ver toda la frase semilla de nuevo", + "are-you-sure-to-cancel": "¿Estas seguro que quieres cancelar?", + "are-you-sure?": "¿Estás seguro\/a?", + "ask-in-status": "Haz una pregunta o reporta un error", + "at": "en", + "attribution-received": "{{attrib}} de {{max}} bonos recibidos", + "audio": "Audio", + "audio-message": "Mensaje de audio", + "audio-recorder": "Grabadora", + "audio-recorder-error": "Error de la grabadora", + "audio-recorder-max-ms-reached": "Tiempo máximo de grabación alcanzado", + "audio-recorder-permissions-error": "Tenés que dar permiso para enviar mensajes de audio", + "authorize": "Autorizar", + "available": "Disponible", + "available-participants": { + "one": "Puedes seleccionar un participante más", + "other": "Puedes seleccionar {{count}} participantes más" + }, + "back": "Atrás", + "back-up": "Respaldo", + "back-up-seed-phrase": "Respalda la frase semilla", + "back-up-your-seed-phrase": "Respalda tu frase semilla", + "backing-up": "Creando copia de seguridad ...", + "backup-disabled": "Deshabilitado", + "backup-enabled": "Activado", + "backup-recovery-phrase": "Copia de seguridad de frase semilla", + "backup-settings": "Ajustes de copia de seguridad", + "backup-through-waku": "Copia de seguridad a través de waku", + "bad-fees-description": "Tu tarifa de prioridad está por debajo de nuestros parámetros sugeridos.", + "balance": "Saldo", + "begin-set-up": "empezar la configuración", + "below-base-fee": "tarifa máxima por debajo de la tarifa base", + "biometric-auth-android-sensor-desc": "Sensor táctil", + "biometric-auth-android-sensor-error-desc": "Fallido", + "biometric-auth-android-title": "Autenticación requerida", + "biometric-auth-confirm-logout": "Volver a iniciar sesión", + "biometric-auth-confirm-message": "Para continuar, la autenticación biométrica es necesaria, si no es posible inicia sesión de nuevo usando la contraseña de las llaves.", + "biometric-auth-confirm-title": "¡Debes autenticarte!", + "biometric-auth-confirm-try-again": "Inténtalo de nuevo", + "biometric-auth-error": "No se puede realizar la autenticación biométrica ({{code}})", + "biometric-auth-login-error-title": "Error de autenticación biométrica", + "biometric-auth-login-ios-fallback-label": "Ingresa la contraseña", + "biometric-auth-reason-login": "Iniciar sesión en Status", + "biometric-auth-reason-verify": "Verificar autenticación", + "biometric-disable-bioauth": "deshabilitar {{bio-type-label}}", + "biometric-disable-password-description": "Si deshabilitas esto, también", + "biometric-disable-password-title": "Deshabilitar guardar contraseña", + "biometric-enable": "Si no deseas ingresar tu contraseña cada vez para acceder a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-enable-button": "Habilitar {{bio-type-label}}", + "biometric-enable-keycard": "Si no deseas usar tu Keycard cada vez para acceder a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Huella dactilar", + "biometric-secure-with": "Asegurar con {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "Contraseña BIP39", + "blank-keycard-text": "Puedes continuar con tu keycard una vez que hayas generado tus claves y tu nombre", + "blank-keycard-title": "Parece que has hecho tapping \nuna keycard en blanco", + "blank-messages-text": "Tus mensajes estarán aquí", + "block": "Bloque", + "block-contact": "Bloquear este usuario", + "block-contact-details": "El bloqueo eliminará los mensajes anteriores de este usuario y evitará que otros nuevos lleguen a ti", + "block-user": "Bloquear usuario", + "blocked-users": "Usuarios bloqueados", + "bold": "Negrita", + "bootnode-address": "Dirección de bootnode", + "bootnode-details": "Detalles de Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes habilitados", + "bootnodes-settings": "Ajustes de bootnode", + "browsed-websites": "El historial del navegador aparecerá aquí", + "browser": "Navegador", + "browser-not-secure": "¡La conexión no es segura! No firmes transacciones o envíes datos personales en este sitio.", + "browser-secure": "La conexión es segura. Asegúrate de que realmente confías en este sitio antes de firmar transacciones o ingresar datos personales.", + "browsers": "Navegadores", + "browsing-cancel": "Cancelar", + "browsing-open-in-android-web-browser": "Abrir en Android", + "browsing-open-in-ios-web-browser": "Abrir en iOS", + "browsing-open-in-status": "Abrir en Status", + "browsing-site-blocked-description1": "Hemos detectado posibles actividades maliciosas desde esta dirección. Para protegerte a ti y a tu billetera, prevenimos la navegación.\n\nSi crees que esto es un error, haznoslo saber en la", + "browsing-site-blocked-description2": "chat público", + "browsing-site-blocked-go-back": "Regresar", + "browsing-site-blocked-title": "Este sitio está bloqueado", + "browsing-title": "Navegar", + "bug-report": "Reportar un error", + "bug-report-description": "*Descripción", + "bug-report-description-placeholder": "Requerido, no puede estar vacío", + "bug-report-steps": "Pasos para la reproducir", + "bug-report-steps-placeholder": "- abrir la app\n- hacer algo\n- y luego algo más...", + "bug-report-submit-email": "Enviar por correo electrónico con el archivo de registros", + "bug-report-submit-gh-issue": "Enviar un problema de GitHub sin registros", + "bug-report-too-short-description": "La descripción es muy corta", + "build-yourself": "Para utilizar la aplicación sin estas Condiciones de Uso, puede crear su propia versión", + "buy-crypto": "Comprar criptomonedas", + "buy-crypto-choose-a-service": "Elige un servicio que quieras usar para comprar criptomonedas", + "buy-crypto-description": "Encuentre una dapp para comprar cripto ahora", + "buy-crypto-leaving": "Estás saliendo de Status y entrando en un sitio web de terceros para completar tu compra", + "buy-crypto-title": "Parece que tu billetera está vacía", + "camera-access-error": "Para permitir el acceso a la cámara, por favor ve a ajustes de sistema y asegúrate que la opción Status > Cámara está seleccionada.", + "can-not-add-yourself": "Ese eres tú, para iniciar un chat elige a alguien más", + "can-send-messages": "Puedes enviar y recibir mensajes nuevos", + "cancel": "Cancelar", + "cancel-keycard-setup": "Cancelar la configuración de Keycard", + "cancelling": "Cancelando", + "cannot-pin-desc": "Solo puedes anclar un máximo de 3 mensajes.\nDesancla al menos uno para anclar uno nuevo.", + "cannot-pin-title": "¡No puedes anclar este mensaje!", + "cannot-read-card": "No puede leer la tarjeta.\nPor favor, mantenla en la parte posterior de tu teléfono", + "cannot-use-default-pin": "No está permitido el código de acceso 000000. \nPor favor utiliza otro número", + "cant-open-public-chat": "No se puede abrir el chat público", + "cant-report-bug": "No puedo reportar un error", + "card-is-blank": "Esta tarjeta esta en blanco", + "card-reseted": "La tarjeta ha sido reseteada", + "card-unpaired": "La tarjeta se ha desvinculado del dispositivo actual", + "category": "Categoría", + "category-title": "Título de la categoría", + "change-fleet": "Cambiar fleet a {{fleet}}", + "change-logging-enabled": "¿Está seguro\/a de que deseas {{enable}} iniciar sesión?", + "change-pairing": "Cambiar el código de emparejamiento", + "change-pairing-description": "Cambiar el código de emparejamiento no afecta a los emparejamientos actuales. Sin embargo, cualquier nuevo emparejamiento requerirá el nuevo código.", + "change-pairing-title": "Crea un nuevo código de emparejamiento", + "change-passcode": "Cambiar código de acceso", + "change-password": "Cambiar contraseña", + "change-pin": "Cambiar el código de acceso de 6 dígitos", + "change-puk": "Cambiar PUK de 12 dígitos", + "change-tip": "Cambiar propina", + "changed-amount-warning": "La cantidad se cambió de {{old}} a {{new}}", + "changed-asset-warning": "El activo se cambió de {{old}} a {{new}}", + "chaos-mode": "Modo caos", + "chaos-unicorn-day": "Día del Unicornio del Caos", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chatea y realiza transacciones privadas con amigos", + "chat-is-a-contact": "Contacto", + "chat-is-not-a-contact": "No es contacto", + "chat-key": "Clave de chat", + "chat-key-content": "Los mensajes en el protocolo de chat de Status se envían y reciben utilizando claves de encriptación. La clave pública de chat es una cadena de caracteres que compartes con otros para que puedan enviarte mensajes en Status.", + "chat-key-title": "Clave de chat", + "chat-link-previews": "Vistas previas de enlaces de chat", + "chat-name": "nombre de chat", + "chat-name-content": "Tres palabras aleatorias, derivadas algorítmicamente de tu clave de chat y utilizadas como tu alias predeterminado en el chat. Los nombres de los chats son completamente únicos; ningún otro usuario puede tener las mismas tres palabras.", + "chat-name-title": "Nombre del chat", + "chat-notification-preferences": "Configuración de las notificaciones", + "chat-settings": "Ajustes de chat", + "chats": "Chats", + "check-on-opensea": "Comprobar en opensea", + "check-your-recovery-phrase": "Comprueba tu frase semilla", + "choose-actions": "Elige acciones", + "choose-authentication-method": "Elije un método de autenticación", + "choose-new-location-for-keystore": "Seleccione una nueva ubicación para guardar su archivo keystore", + "choose-storage": "Elegir almacenamiento", + "clear": "Limpiar", + "clear-all": "Borrar todo", + "clear-history": "Borrar historial", + "clear-history-action": "Limpiar", + "clear-history-confirmation": "¿Borrar historial?", + "clear-history-confirmation-content": "¿Seguro que quieres limpiar este historial de chat?", + "clear-history-title": "¿Borrar historial?", + "close": "Cerrar", + "close-all": "Cerrar todo", + "close-app-button": "Confirmar", + "close-app-content": "La aplicación se detendrá y cerrará. Cuando la vuelvas a abrir, se utilizará la red seleccionada", + "close-app-title": "¡Advertencia!", + "collectibles-leak-metadata": "Puedes mostrar tus NFTs aquí. Si lo haces, compartirás tu billetera y tu dirección IP", + "command-button-send": "Enviar", + "communities": "Comunidades", + "communities-alpha": "Comunidades (alfa)", + "communities-enabled": "Comunidades habilitadas", + "communities-verified": "Comunidad de Status verificada", + "community": "Comunidad", + "community-channel": "Canal de comunidad", + "community-color": "Color de la comunidad", + "community-color-placeholder": "Elige un color", + "community-edit-title": "Editar comunidad", + "community-emoji-thumbnail-title": "Miniatura", + "community-image-pick": "Elige una imagen", + "community-image-remove": "Remover", + "community-image-take": "Toma una foto", + "community-info": "Información sobre la Comunidad", + "community-info-not-found": "No se encontró la información de la comunidad", + "community-invite-title": "Invitá", + "community-key": "Llave privada de la comunidad", + "community-key-placeholder": "Escribe la llave privada de la comunidad", + "community-link": "Link de comunidad", + "community-members": { + "one": "miembro", + "other": "miembros" + }, + "community-members-title": "Miembros", + "community-message-preview": "Invitación para unirse a {{community-name}}", + "community-notification-settings": "Configuración de notificaciones", + "community-private-key": "Clave privada comunitaria", + "community-requests-to-join-title": "Solicitudes de membresía", + "community-roles": "Rol", + "community-rules": "Reglas de la comunidad", + "community-share-title": "Compartir...", + "community-thumbnail-image": "Imagen en miniatura", + "community-thumbnail-upload": "Subir", + "complete-hardwallet-setup": "Esta tarjeta ahora está vinculada. La necesitarás para firmar transacciones y desbloquear tus llaves", + "completed": "Completado", + "confirm": "Confirmar", + "confirm-new-password": "Confirmar nueva contraseña", + "confirm-pairing-code-placeholder": "Confirma tu código de emparejamiento ...", + "confirm-password-placeholder": "Confirmá tu contraseña...", + "confirmation-request": "Solicitud de confirmación", + "confirmations": "Confirmaciones", + "confirmations-helper-text": "Cuando la transacción tenga 12 confirmaciones, puede considerarla resuelta.", + "connect": "Conectar", + "connect-mailserver-content": "¿Conectar con {{name}}?", + "connect-wallet": "Conectar billetera", + "connected": "Conectado", + "connected-to": "Conectado a", + "connecting": "Conectando...", + "connecting-requires-login": "Para conectarse a otra red es necesario iniciar sesión", + "connection-status": "Estado de conexión", + "connection-with-the-card-lost": "La conexión con la tarjeta\nse ha perdido", + "connection-with-the-card-lost-setup-text": "Para reanudar la configuración, manten la tarjeta en\n la parte trasera de tu teléfono y mantener la\n tarjeta en contacto con el teléfono", + "connection-with-the-card-lost-text": "Para proceder, manten la tarjeta en la parte posterior de tu teléfono", + "contact-code": "Clave de chat", + "contact-request-sent": "solicitud de contacto enviada", + "contact-requests": "Solicitudes de contacto", + "contact-s": { + "one": "contacto", + "other": "contactos" + }, + "contacts": "Contactos", + "contacts-descr": "Tus contactos aparecerán aquí. Recibirá actualizaciones de estado de cualquier persona que agregue como contacto", + "contacts-empty": "Contactos con nombres ENS aparecerán aquí", + "continue": "Continuar", + "continue-anyway": "Continuar de todas maneras", + "contract-address": "Dirección del contrato", + "contract-interaction": "Interacción con el contrato", + "contract-isnt-supported": "El contrato no es compatible", + "copy-info": "Copiar información", + "copy-qr": "Copiar código", + "copy-text": "Copiar texto", + "copy-to-clipboard": "Copiar", + "copy-transaction-hash": "Copiar ID de transacción", + "cost-fee": "Costo\/Tarifa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Crear", + "create-a-pin": "Crear un código de acceso de 6 dígitos", + "create-a-puk": "Crea un PUK de 12 dígitos", + "create-category": "Crear categoría", + "create-channel": "Crea un canal", + "create-channel-title": "Nuevo canal", + "create-community": "Crea una comunidad", + "create-group-chat": "Crear chat grupal", + "create-multiaccount": "Generar llaves", + "create-new-key": "Obtener nuevas claves", + "create-pin": "Crea un código de acceso de 6 dígitos", + "create-pin-description": "Necesitarás tu tarjeta + este código de 6 dígitos para desbloquear Status y confirmar las transacciones", + "created-group-chat-description": "Creaste el grupo {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Moneda", + "currency-display-name-aed": "Dirham de los Emiratos Árabes Unidos", + "currency-display-name-afn": "Afgani afgano", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dólar australiano", + "currency-display-name-bbd": "Dólar de Barbados", + "currency-display-name-bdt": "Taka bangladeshí", + "currency-display-name-bgn": "Lev búlgaro", + "currency-display-name-bhd": "Dinar bahreiní", + "currency-display-name-bnd": "Dólar de Brunéi", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Real brasilero", + "currency-display-name-btn": "Ngultrum butanés", + "currency-display-name-cad": "Dólar canadiense", + "currency-display-name-chf": "Franco suizo", + "currency-display-name-clp": "Peso chileno", + "currency-display-name-cny": "Yuan chino", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Colón costarricense", + "currency-display-name-czk": "Corona checa", + "currency-display-name-dkk": "Corona danesa", + "currency-display-name-dop": "Peso de la República Dominicana", + "currency-display-name-egp": "Libra egipcia", + "currency-display-name-etb": "Birr etíope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Libra esterlina", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Cedi ghanés", + "currency-display-name-hkd": "Dólar de Hong Kong", + "currency-display-name-hrk": "Croacia Kuna", + "currency-display-name-huf": "Forinto húngaro", + "currency-display-name-idr": "Rupia Indonesia", + "currency-display-name-ils": "Nuevo séquel (Israel)", + "currency-display-name-inr": "Rupia india", + "currency-display-name-isk": "Corona islandesa", + "currency-display-name-jmd": "Dólar jamaiquino", + "currency-display-name-jpy": "Yen japonés", + "currency-display-name-kes": "Chelín keniano", + "currency-display-name-krw": "Won surcoreano", + "currency-display-name-kwd": "Dinar kuwaití", + "currency-display-name-kzt": "Tenge kazajo", + "currency-display-name-lkr": "Rupia de Sri Lanka", + "currency-display-name-mad": "Dirham marroquí", + "currency-display-name-mdl": "Leu moldavo", + "currency-display-name-mur": "Rupia de Mauricio", + "currency-display-name-mwk": "Kwacha malauí", + "currency-display-name-mxn": "Peso mexicano", + "currency-display-name-myr": "Ringgit malayo", + "currency-display-name-mzn": "Metical mozambiqueño", + "currency-display-name-nad": "Dólar namibio", + "currency-display-name-ngn": "Naira nigeriana", + "currency-display-name-nok": "Corona noruega", + "currency-display-name-npr": "Rupia nepalí", + "currency-display-name-nzd": "Dólar neozelandés", + "currency-display-name-omr": "Rial omaní", + "currency-display-name-pen": "Sol peruano", + "currency-display-name-pgk": "Kina de Papúa Nueva Guinea", + "currency-display-name-php": "Peso filipino", + "currency-display-name-pkr": "Rupia pakistaní", + "currency-display-name-pln": "Zloty de Polonia", + "currency-display-name-pyg": "Guaraní paraguayo", + "currency-display-name-qar": "Riyal qatarí", + "currency-display-name-ron": "Leu de Rumanía", + "currency-display-name-rsd": "Dinar serbio", + "currency-display-name-rub": "Rublo ruso", + "currency-display-name-sar": "Arabia Saudita Riyal", + "currency-display-name-sek": "Corona sueca", + "currency-display-name-sgd": "Dólar de Singapur", + "currency-display-name-thb": "Baht tailandés", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dólar de Trinidad y Tobago", + "currency-display-name-twd": "Nuevo dólar taiwanés", + "currency-display-name-tzs": "Chelín tanzano", + "currency-display-name-uah": "Grivna (Ucrania)", + "currency-display-name-ugx": "Chelín ugandés", + "currency-display-name-usd": "Dólar estadounidense", + "currency-display-name-uyu": "Peso uruguayo", + "currency-display-name-vef": "Bolívar venezolano", + "currency-display-name-vnd": "Dong vietnamita", + "currency-display-name-zar": "Rand sudafricano", + "current": "Actual", + "current-average": "Promedio actual", + "current-average-tip": "Promedio de propina actual", + "current-base": "Base actual", + "current-base-fee": "Tarifa básica actual", + "current-minimum-tip": "Propina mínima actual", + "current-network": "Red actual", + "current-password": "Contraseña actual", + "current-pin": "Ingresa el código de acceso de 6 dígitos", + "current-pin-description": "Ingresa tu código de acceso de 6 dígitos para continuar", + "custom": "Personalizado", + "custom-networks": "Redes personalizadas", + "custom-node": "Está utilizando un punto de conexión RPC personalizado. Es posible que el historial de transferencias locales esté incompleto.", + "custom-seed-phrase": "Frase semilla inválida", + "custom-seed-phrase-text-1": "Esta frase semilla no coincide con nuestro diccionario compatible. Revisa si hay palabras mal escritas.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Aceptar y Abrir", + "dapp-starter-pack-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "dapp-starter-pack-title": "Paquete de Bienvenida", + "dapp-would-like-to-connect-wallet": "quisiera conectarse a", + "dapps": "ÐApps", + "dapps-permissions": "Permisos de DApp", + "dark": "Oscuro", + "data": "Datos", + "data-collected": "Datos recogidos", + "data-collected-subtitle": "La siguiente tabla muestra los datos exactos que se almacenan y se enviarán. Los datos se validan contra las normas públicas para garantizar que ningún dato sensible sea enviado. No confíes, verifica.", + "data-syncing": "Sincronización de datos", + "database-reset-content": "Se han eliminado los chats, los contactos y la configuración. Ahora puedes usar tu cuenta con tu Keycard", + "database-reset-title": "Reiniciar la base de datos", + "database-reset-warning": "La base de datos se restablecerá. Se borrarán los chats, los contactos y la configuración.", + "datetime-ago": "hace", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "día", + "other": "días" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "hoy", + "datetime-yesterday": "Ayer", + "decimals": "Decimales", + "decline": "Rechazar", + "decryption-failed-content": "Ocurrió un error desencriptando tus datos. Es posible que tengas que generar unas nuevas llaves y borrar tus datos antiguos pulsando \"Aplicar\", o haz clic en \"Cancelar\" para volver a intentarlo", + "default": "Predeterminados", + "default-assets": "Por defecto ERC20 y ERC721", + "default-sync-period": "Sincronizar historial para", + "delete": "Eliminar", + "delete-account": "Borrar cuenta", + "delete-and-leave-group": "Eliminar y salir del grupo", + "delete-bootnode": "Eliminar bootnode", + "delete-bootnode-are-you-sure": "¿Seguro que quieres eliminar este bootnode?", + "delete-bootnode-title": "Eliminar bootnode", + "delete-category-confirmation": "¿Estás seguro que deseas eliminar esta categoría?", + "close-chat": "Eliminar chat", + "close-chat-confirmation": "¿Estás seguro de que quieres eliminar este chat?", + "delete-confirmation": "¿Eliminar?", + "delete-for-everyone": "Borrar para todos", + "delete-for-me": "Eliminar para mi", + "delete-keys-keycard": "Eliminar llaves de Keycard", + "delete-mailserver": "Eliminar nodo de Status", + "delete-mailserver-are-you-sure": "¿Está seguro de que desea eliminar este nodo de Status?", + "delete-mailserver-title": "Eliminar nodo de Status", + "delete-message": "Eliminar mensaje", + "delete-my-account": "Borrar mi cuenta", + "delete-my-profile": "Eliminar mi perfil", + "delete-network-confirmation": "¿Seguro que quieres eliminar esta red?", + "delete-network-error": "Por favor, conéctate a una red diferente antes de eliminar esta", + "delete-network-title": "¿Eliminar red?", + "delete-node": "Eliminar nodo", + "delete-node-are-you-sure": "¿Estás seguro de que quieres eliminar este nodo?", + "delete-node-title": "Eliminar nodo", + "delete-profile": "Eliminar perfil", + "delete-profile-warning": "Advertencia: Si no tiene tu frase de semilla escrita, perderá el acceso a sus fondos después de eliminar su perfil", + "deny": "Negar", + "derivation-path": "Ruta de derivación", + "describe-channel": "Describir el canal", + "description": "Descripción", + "dev-mode": "Modo de desarrollo", + "dev-mode-settings": "Ajustes del modo de desarrollo", + "device-syncing": "Sincronización de dispositivos", + "devices": "Dispositivos", + "disable": "deshabilitar", + "disable-all": "Desactivar todo", + "disable-later-in-settings": "Puedes desactivar esto luego en los Ajustes", + "disabled": "Deshabilitado", + "disconnected": "Chat sin conexión", + "discover": "Descubrir", + "discover-communities": "Descubre comunidades", + "dismiss": "Descartar", + "display-collectibles": "Mostrar coleccionables", + "done": "Listo", + "dont-ask": "No me vuelvas a preguntar", + "edit": "Editar", + "edit-channel-title": "Editar canal", + "edit-chats": "Editar conversaciones", + "edit-community": "Editar comunidad", + "edit-favourite": "Editar favorito", + "edit-group": "Editar grupo", + "edit-message": "Editar mensaje", + "edit-name-and-image": "Editar nombre e imagen", + "edit-name-image": "Editar nombre e imagen", + "edit-nickname": "Editar apodo", + "edit-profile": "Editar perfil", + "edited": "Editado", + "editing-message": "Editando mensaje", + "empty-activity-center": "Sus notificaciones de chat\naparecerán acá", + "empty-chat-description": "No hay mensajes \nen este chat todavía", + "empty-chat-description-community": "Ha estado tranquilo aquí durante {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Cualquier mensaje que envíes aquí está encriptado y solo puedes leerlo tú y", + "empty-chat-description-public": "Ha estado tranquilo aquí durante las últimas {{quiet-hours}}. Inicia la conversación o", + "empty-chat-description-public-share-this": "comparte este chat", + "empty-keycard-required": "Requiere una Keycard vacía", + "empty-pending-invitations-descr": "Las personas que deseen unirse al grupo\na través de un enlace de invitación aparecerá aquí", + "empty-tab": "Pestaña vacía", + "enable": "Habilitar", + "enable-all": "Habilitar todos", + "enable-link-previews": "¿Habilitar vistas previas de enlaces en el chat?", + "encrypt-with-password": "Encriptar con contraseña", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Agregar nombre de usuario", + "ens-agree-to": "De acuerdo con", + "ens-chat-settings": "Ajustes de chat", + "ens-custom-domain": "Dominio personalizado", + "ens-custom-username-hints": "Escribe el nombre de usuario completo, incluido el dominio personalizado como username.domain.eth", + "ens-custom-username-taken": "El nombre de usuario no te pertenece :(", + "ens-deposit": "Depósito", + "ens-dismiss-message": "Haga clic para descartar", + "ens-displayed-with": "Tus mensajes se muestran a otros con", + "ens-get-name": "Obtén un nombre de usuario universal", + "ens-got-it": "Ok, lo tengo.", + "ens-locked": "Nombre de usuario bloqueado. No lo podrás liberar hasta el {{date}}", + "ens-name-content": "Alias personalizado para tu clave de chat que puedes registrar utilizando Ethereum Name Service. Los nombres ENS son nombres de usuario descentralizados.", + "ens-name-not-found": "No se puede resolver el nombre ENS", + "ens-name-title": "Nombre ENS", + "ens-network-restriction": "Solo disponible en Mainnet", + "ens-no-usernames": "No tienes ningún nombre de usuario conectado", + "ens-powered-by": "Propulsado por Ethereum Name Services", + "ens-primary-username": "Nombre de usuario principal", + "ens-register": "Registrar", + "ens-registration-failed": "Para registrar el nombre de usuario, por favor, intenta de nuevo.", + "ens-registration-failed-title": "La transacción ha fallado", + "ens-registration-failure": "Registro fallido", + "ens-registration-in-progress": "Registro en curso...", + "ens-release-username": "Liberar nombre de usuario", + "ens-remove-hints": "La eliminación separará el nombre de usuario de tu clave.", + "ens-remove-username": "Eliminar nombre de usuario", + "ens-saved": "ahora está conectado con tu clave de chat y se puede usar en Status.", + "ens-saved-title": "Nombre de usuario agregado", + "ens-show-username": "Mostrar mi nombre de usuario ENS en los chats", + "ens-terms-header": "Términos de registro de nombre", + "ens-terms-point-1": "Los fondos se depositan por 1 año. Tu SNT se bloqueará, pero no se gastará.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Registro ENS).", + "ens-terms-point-2": "Después de 1 año, puedes liberar el nombre y recuperar tu depósito, o no tomar ninguna acción para mantener el nombre.", + "ens-terms-point-3": "Si los términos del contrato cambian – por ejemplo, Status realiza actualizaciones del contrato – el usuario tiene derecho a liberar el nombre de usuario independientemente del tiempo retenido.", + "ens-terms-point-4": "El controlador del contrato no puede acceder a tus fondos depositados. Sólo pueden ser devueltos a la dirección que los envió.", + "ens-terms-point-5": "Tu(s) dirección(es) se asociará(n) públicamente con tu nombre ENS.", + "ens-terms-point-6": "Los nombres de usuario se crean como nodos de subdominio de stateofus.eth y están sujetos a los términos del contrato inteligente de ENS.", + "ens-terms-point-7": "Autorizas el contrato para transferir SNT en tu nombre. Esto solo puede ocurrir cuando apruebas una transacción para autorizar la transferencia.", + "ens-terms-point-8": "Estos términos están garantizados por la lógica del contrato inteligente en las direcciones:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Términos de registro de nombre.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Transacción pendiente...", + "ens-understand": "Entiendo que la dirección de mi billetera estará conectada públicamente a mi nombre de usuario.", + "ens-username": "Nombre de usuario ENS", + "ens-username-already-added": "El nombre de usuario ya está conectado con tu clave de chat y se puede usar dentro de Status.", + "ens-username-available": "✓ ¡Nombre de usuario disponible!", + "ens-username-connected": "Este nombre de usuario es de tu propiedad y está conectado con tu clave de chat.", + "ens-username-connected-continue": "Continuar configurando `Mostrar mi nombre de usuario ENS en los chats`.", + "ens-username-connected-with-different-key": "Continuar requerirá una transacción para conectar el nombre de usuario con tu clave de chat actual.", + "ens-username-connection-confirmation": "{{username}} se conectará una vez que se complete la transacción.", + "ens-username-hints": "Al menos 4 caracteres. Letras latinas, números y sólo minúsculas.", + "ens-username-invalid": "Sólo letras y números.", + "ens-username-owned": "✓ El nombre de usuario es tuyo.", + "ens-username-owned-continue": "Continuar conectará este nombre de usuario con tu clave de chat.", + "ens-username-registration-confirmation": "¡Bien! Eres el propietario de {{username}} una vez completada la transacción.", + "ens-username-taken": "Nombre de usuario ya está tomado :(", + "ens-username-you-can-follow-progress": "Puedes seguir el progreso en la sección de Historial de transacciones de tu billetera.", + "ens-usernames": "Nombres de usuario ENS", + "ens-usernames-details": "Registra un nombre de usuario universal para ser reconocido fácilmente por otros usuarios", + "ens-want-custom-domain": "Tengo un nombre en otro dominio", + "ens-want-domain": "Quiero un dominio stateofus.eth", + "ens-welcome-hints": "Los nombres ENS transforman esas locas direcciones largas en nombres de usuario únicos.", + "ens-welcome-point-customize": "Un nombre ENS puede reemplazar tu nombre aleatorio de 3 palabras en el chat. Sea @yourname en lugar de {{name}}.", + "ens-welcome-point-customize-title": "Personaliza tu nombre de chat", + "ens-welcome-point-receive": "Otros pueden enviarte fondos desde el chat en un simple paso.", + "ens-welcome-point-receive-title": "Recibe transacciones en el chat", + "ens-welcome-point-register": "Regístrate una vez para mantener el nombre para siempre. Después de 1 año, podrás liberar el nombre y recuperar tus SNT.", + "ens-welcome-point-register-title": "10 SNT a registrar", + "ens-welcome-point-simplify": "Puedes recibir fondos a tu ENS fácil de compartir, en vez de tu hash hexadecimal (0x...)", + "ens-welcome-point-simplify-title": "Simplifica tu dirección ETH", + "ens-welcome-point-verify": "Puedes verificar y agregar cualquier nombre de usuario que poseas en los siguientes pasos.", + "ens-welcome-point-verify-title": "¿Ya tienes un nombre de usuario?", + "ens-your-username": "Tu nombre de usuario", + "ens-your-usernames": "Tus nombres de usuario", + "ens-your-your-name": "Tu nombre ENS", + "enter-12-words": "Ingresa las 12 palabras de tu frase semilla, separadas por espacios", + "enter-a-private-key": "Ingresa una clave privada", + "enter-a-seed-phrase": "Ingresa una frase semilla", + "enter-address": "Ingresar dirección", + "enter-contact-code": "ENS (vitalik94) o clave de chat (0x04...)", + "enter-pair-code": "Ingrese tu código de vinculación", + "enter-pair-code-description": "Se te mostró el código de vinculación durante la configuración de Keycard", + "enter-password": "Ingresa la contraseña", + "enter-password-migration-prompt": "Ingresa tu contraseña para mover contactos, chats y ajustes junto con sus claves", + "enter-pin": "Ingresa el código de acceso de 6 dígitos", + "enter-puk-code": "Ingresa el código PUK", + "enter-puk-code-description": "El código de acceso de 6 dígitos ha sido bloqueado. \n Ingresa el código PUK para desbloquear el código de acceso.", + "enter-recipient-address-or-username": "Ingresá la dirección o nombre de usuario del destinatario", + "enter-seed-phrase": "Ingresa la frase semilla", + "enter-url": "Ingresa una URL", + "enter-user-pk": "Ingrese la clave pública del usuario", + "enter-watch-account-address": "Escanea un código QR \n o \n ingrese la dirección para observar", + "enter-word": "Ingresar palabra", + "enter-your-code": "Ingresa tu código de acceso de 6 dígitos", + "enter-your-password": "Ingresa tu contraseña", + "error": "Error", + "error-unable-to-get-balance": "No se puede obtener el saldo", + "error-unable-to-get-prices": "Error de conversión de moneda. Refresca tu pantalla para intentarlo de nuevo.", + "error-unable-to-get-token-balance": "No se puede obtener el saldo del token", + "errors": "Errores", + "eth": "ETH", + "ethereum-address": "Dirección de Ethereum", + "ethereum-node-started-incorrectly-description": "El nodo Ethereum se inició con una configuración incorrecta, la aplicación se detendrá para recuperarse de esa condición. ID de red configurado = {{network-id}}, actual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "El nodo Ethereum se inició incorrectamente", + "etherscan-lookup": "Ver en Etherscan", + "everyone": "Todos", + "expand-all": "Ver todo", + "export-account": "Exportar la cuenta", + "export-key": "Exportar llave privada", + "external-link": "Link externo", + "external-storage-denied": "Se niega el acceso al almacenamiento externo", + "failed": "Fallido", + "faq": "Preguntas frecuentes", + "fast": "Rápida", + "favourite": "Favorito", + "favourite-description": "Tus sitios web favoritos aparecerán aquí", + "favourites": "Favoritos", + "favourites-empty": "Las direcciones agregadas a favoritos aparecerán aquí", + "featured": "Destacado", + "fee-cap": "Tope de tarifa", + "fee-explanation": "Precio total máximo por la transacción. Si la tarifa base del bloque supera este, se incluirá en un bloque siguiente con una tarifa base más baja.", + "fee-options": "Opciones de tarifas sugeridas", + "fetch-community": "Buscar la comunidad", + "fetch-messages": "recuperar-mensajes", + "fetch-timeline": "↓ Obtener", + "fetching-community": "Buscando comunidad...", + "find": "Encontrar", + "finish": "Finalizar", + "finishing-card-setup": "Finalizando la configuración de la tarjeta", + "fleet": "Fleet", + "fleet-settings": "Ajustes de fleet", + "follow": "Seguir", + "follow-your-interests": "Entra en un chat público y conoce gente nueva", + "free": "↓ Gratis", + "from": "De", + "gas-amount-limit": "Límite de cantidad de gas", + "gas-limit": "Límite de gas", + "gas-price": "Precio del gas", + "gas-used": "Gas utilizado", + "gated": "Vinculado", + "generate-a-key": "Generar claves", + "generate-a-new-account": "Genera una Cuenta", + "generate-a-new-key": "Generar una nueva clave", + "generate-account": "Generar claves", + "generate-an-account": "Genera una Cuenta", + "generate-new-key": "Generar claves", + "generating-codes-for-pairing": "> Descargando el software del producto a la tarjeta \n > Generando códigos de desbloqueo y vinculación", + "generating-keys": "Generando claves...", + "generating-mnemonic": "Generando frase semilla", + "get-a-keycard": "Obtenga una Keycard", + "get-started": "Iniciar", + "get-status-at": "Obtén Status en http:\/\/status.im\/es", + "get-stickers": "Obtén Stickers", + "gif": "GIF", + "give-a-short-description": "Dale una breve descripción", + "give-a-short-description-community": "Dale una breve descripción", + "give-permissions-camera": "Da permiso\npara acceder a la cámara", + "glossary": "Glosario", + "go-to-settings": "Ir a Configuración", + "got-it": "Entendido", + "grant-face-id-permissions": "Para conceder el permiso de Face ID requerido, ve a los ajustes de tu sistema y asegúrate de que esté seleccionado Status > Face ID", + "group-chat": "Chat grupal", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** se ha convertido en admin", + "group-chat-all-contacts-invited": "Todos tus contactos ya están en el grupo.", + "group-chat-created": "**{{member}}** creó el grupo **{{name}}**", + "group-chat-decline-invitation": "Rechazar invitación", + "group-chat-member-added": "**{{member}}** ha sido invitado", + "group-chat-member-joined": "**{{member}}** se ha unido al grupo", + "group-chat-member-removed": "**{{member}}** abandonó el grupo", + "group-chat-members-count": "{{selected}}\/{{max}} miembros", + "group-chat-name-changed": "**{{member}}** cambió el nombre del grupo a **{{name}}**", + "group-chat-no-contacts": "Aún no tienes contactos. \nInvita a tus amigos a comenzar a chatear", + "group-info": "Información del grupo", + "group-invite": "Invitación de grupo", + "group-invite-link": "Enlace de invitación de grupo", + "group-membership-request": "Solicitud de membresía grupal", + "groups": "Grupos", + "gwei": "Gwei", + "has-permissions": "tiene permiso para acceder", + "hash": "Hash", + "help": "ayuda", + "help-capitalized": "Ayuda", + "help-center": "Centro de ayuda", + "help-improve-status": "Ayuda a mejorar Status", + "hide": "Ocultar", + "hide-content-when-switching-apps": "Bloquear capturas de pantalla", + "hide-content-when-switching-apps-ios": "Ocultar vista previa", + "history": "Historial", + "history-nodes": "Nodos de Status", + "hold-card": "sostén la tarjeta en la parte posterior de tu teléfono", + "home": "Inicio", + "hooks": "Hooks", + "how-it-works": "Cómo funciona", + "http-gateway-error": "¡Oops, la solicitud falló!", + "identifier": "Identificador", + "identity-verification": "Verificación de identidad", + "identity-verification-request": "Verificación de identidad", + "image": "Imagen", + "image-remove-current": "Eliminar la foto actual", + "image-source-gallery": "Seleccionar de la galería", + "image-source-make-photo": "Tomar foto", + "image-source-title": "Editar imagen", + "import": "Importar", + "import-community": "Importar una comunidad", + "import-community-title": "Importar una comunidad", + "in-contacts": "En contactos", + "include": "Incluir", + "incoming": "Entrante", + "incoming-transaction": "Transacción entrante", + "incorrect-code": [ + "str", + "Lo sentimos, el código es incorrecto, escríbelo de nuevo" + ], + "increase-gas": "Aumentar el gas", + "initialization": "Inicialización", + "install": "↓ Instalar", + "insufficient-balance-to-cover-fee": "Balance insuficiente para cubrir el gas de transacción", + "intro-message1": "¡Bienvenid@ a Status!\nToca este mensaje para configurar tu contraseña y empezar.", + "intro-privacy-policy-note1": "Status no recopila ni se beneficia de tus datos personales. Al continuar, tú estás de acuerdo con la ", + "intro-privacy-policy-note2": "política de privacidad", + "intro-text": "Status es tu puerta de enlace a la web descentralizada", + "intro-text1": "Chatea a través de una red encriptada peer-to-peer donde los mensajes no pueden ser censurados o hackeados", + "intro-text2": "Envía y recibe activos digitales en cualquier parte del mundo – no se requiere cuenta bancaria", + "intro-text3": "Explora juegos, exchanges y redes sociales en las que solo tú eres propietario de tus datos", + "intro-title1": "Comunicación verdaderamente privada", + "intro-title2": "Cripto-billetera segura", + "intro-title3": "Apps descentralizadas", + "intro-wizard-text1": "Un set de claves controla tu cuenta. Tus claves viven en tu teléfono, por lo que solo tú puede usarlas.", + "intro-wizard-text2": "Una clave es para chatear. Viene con un nombre legible que no se puede cambiar.", + "intro-wizard-text3": "¿Tienes una Keycard? Guarda tus claves en ella; la necesitarás para las transacciones", + "intro-wizard-text4": "Asegura y encripta tus claves", + "intro-wizard-text6": "Status te notificará sobre los nuevos mensajes. Puedes editar tus preferencias de notificación más adelante en la configuración", + "intro-wizard-title-alt4": "Crea una contraseña", + "intro-wizard-title-alt5": "Confirma tu contraseña", + "intro-wizard-title1": "Obtén tus claves", + "intro-wizard-title2": "Elige un nombre de chat", + "intro-wizard-title3": "Elegir almacenamiento de claves", + "intro-wizard-title4": "Crear un código de acceso de 6 dígitos", + "intro-wizard-title5": "Confirma la clave de acceso", + "intro-wizard-title6": "Habilitar las notificaciones", + "introduce-yourself": "Preséntate con un breve mensaje", + "invalid-address-qr-code": "El código QR escaneado no contiene una dirección válida", + "invalid-format": "Formato inválido \n Debe ser {{format}}", + "invalid-key-confirm": "Aplicar", + "invalid-key-content": "La base de datos no se puede encriptar porque el archivo está dañado. Tus fondos y llaves de chat están a salvo. Otros datos, como chats y contactos, no se podrán restaurar. El botón \"{{erase-multiaccounts-data-button-text}}\", eliminará otros datos y te permitirá acceder a tus fondos y enviar mensajes", + "invalid-number": "Número inválido", + "invalid-pairing-password": "Contraseña de vinculación inválida", + "invalid-public-chat-topic": "Tema de chat público no válido", + "invalid-range": "Formato inválido, debe estar entre {{min}} y {{max}}", + "invalid-username-or-key": "Nombre de usuario o clave de chat no válidos", + "invite": "invitar", + "invite-button": "Invitá", + "invite-chat-accept": "Aceptar", + "invite-chat-accept-join": "Aceptar y Unirse", + "invite-chat-intro": "Fuiste referido por un amigo para unirte a Status. Acá tenés algunas criptomonedas para empezar! Usalas para registrar un nombre ENS o comprar un paquete de stickers", + "invite-chat-name": "Referencia de amigos", + "invite-chat-pending": "Pendiente", + "invite-chat-rule": "Si aceptás también recompensarás a tu amigo con un bono de referencia criptográfica", + "invite-chat-starter-pack": "Paquete de Bienvenida", + "invite-contacts": "Invitar personas de la lista de contactos", + "invite-friends": "Invitar a amigos", + "invite-friends-to-status": "Invitar amigos a Status", + "invite-instruction-fifth": "Puede elegir canjear su bono de referencia en cualquier momento.", + "invite-instruction-first": "Envías un enlace de invitación único a tu amigo para descargar y unirse a Status", + "invite-instruction-fourth": "Vos recibís tu bono de referencia y tu amigo el Paquete de Bienvenida", + "invite-instruction-second": "Tu amigo descarga Status y crea una cuenta (en Android)", + "invite-instruction-third": "Se inicia un chat con tu amigo, donde confirman tu referencia", + "invite-people": "Invitar a otros", + "invite-privacy-policy-public": "Instalaste Status a través de un enlace de referido. Al unirte a este chat, atribuyes su referencia y acepta las", + "invite-privacy-policy1": "Al aceptar, estás de acuerdo con el programa de referidos", + "invite-privacy-policy2": "Términos y Condiciones.", + "invite-public-chat-home": "Invitación de referencia", + "invite-public-chat-intro": "¡Aquí tienes algunas criptomonedas para que comiences! Úselas para registrar un nombre ENS o comprar un paquete de stickers", + "invite-receive-account": "Cuenta para recibir tu bono de referencia", + "invite-reward": "¡Gana criptomonedas por cada amigo que invites!", + "invite-reward-friend": "Amigo:", + "invite-reward-friend-description": "Tu amigo recibirá un Paquete de Bienvenida que consta de {{reward}} para comenzar", + "invite-reward-friend-name": "Paquete de Bienvenida", + "invite-reward-you": "Vos:", + "invite-reward-you-description": "Invitá a un amigo y recibí {{reward}} como bono de referencia. Usalo para obtener stickers, un nombre ENS y probar dapps", + "invite-reward-you-name": "Bono de referencia", + "invite-select-account": "Seleccioná una cuenta para recibir tu bono de referencia", + "invite-warning": "Esta promoción solo es válida para usuarios de un dispositivo Android que no sean residentes de EE. UU. Un amigo debe confirmar la referencia en un plazo de 7 días.", + "invited": "invitado", + "italic": "Cursiva", + "join": "Unite", + "join-a-community": "o únete a una comunidad", + "join-group-chat": "Unirse al grupo", + "join-group-chat-description": "{{username}} te invitó a unirte al grupo {{group-name}}", + "join-me": "Ey, unite a Status: {{url}}", + "join-new-private-chat": "Iniciar un nuevo chat privado", + "join-new-public-chat": "Unirse a un chat público", + "join-open-community": "Unirse a la Comunidad", + "joined": "Unido", + "joined-group-chat-description": "Te has unido a {{group-name}} desde la invitación de {{username}}", + "key": "Clave", + "key-managment": "Administración de claves", + "key-on-device": "La clave privada está guardada en este dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "Acceso a la Keycard está restablecido", + "keycard-applet-install-instructions": "Para instalar el applet, sigue las instrucciones en https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Intente mover la tarjeta para encontrar el lector NFC en su dispositivo", + "keycard-awaiting-title": "Todavía buscando...", + "keycard-backup": "Crear una copia de seguridad de tu Keycard", + "keycard-backup-success-body": "Copia de respaldo creada con éxito. Ahora puedes utilizarla con tu cuenta al igual que la tarjeta principal.", + "keycard-backup-success-title": "Copia de seguridad exitosa", + "keycard-blocked": "Keycard ha sido bloqueada. \n Necesitas reiniciar la tarjeta para continuar usándola.", + "keycard-can-use-with-new-passcode": "Puedes usar esta tarjeta con tu nuevo código de accesto", + "keycard-cancel-setup-text": "Esto cancelará la configuración de keycard. Se muy recomendable finalizar la configuración para usar keycard. ¿De verdad quieres cancelar?", + "keycard-cancel-setup-title": "Operación peligrosa", + "keycard-connected-description": "Intenta mantener la tarjeta quieta", + "keycard-connected-title": "Conectado", + "keycard-desc": "¿Tienes una Keycard? Guarda tus claves allí; la necesitarás para las transacciones", + "keycard-dont-ask-card": "No pedir tarjeta para iniciar sesión", + "keycard-enter-new-passcode": "Ingresa el nuevo código de acceso {{step}}\/2", + "keycard-error-description": "Vuelva a conectar la tarjeta para continuar.", + "keycard-error-title": "Conexión perdida", + "keycard-factory-reset": "Restablecer la tarjeta a la configuración de fábrica", + "keycard-factory-reset-text": "Hacer esto eliminará cualquier mnemónico almacenado en la tarjeta. Asegúrate de tener una copia de seguridad de la frase mnemónica que ha estado usando con esta Keycard.", + "keycard-factory-reset-title": "¿Estás seguro que quieres restablecer a las condiciones de fábrica?", + "keycard-free-pairing-slots": "Keycard tiene {{n}} espacios de vinculación libres", + "keycard-has-multiaccount-on-it": "Esta tarjeta está llena. Cada tarjeta puede mantener un par de llaves principales", + "keycard-init-description": "Coloque la tarjeta en la parte posterior de su teléfono para continuar", + "keycard-init-title": "Buscando tarjetas...", + "keycard-is-blocked-details": "Ya no puedes usar esta tarjeta para acceder o firmar esta cuenta. Ha habido demasiados intentos fallidos de código de acceso y PUK.", + "keycard-is-blocked-instructions": "Para acceder a tu cuenta, re-instala Status y usa una nueva Keycard, usa una billetera diferente o reinicia Keycard manualmente.", + "keycard-is-blocked-title": "La Keycard está bloqueada", + "keycard-is-frozen-details": "Para proteger tus activos, tu tarjeta está congelada. Restablece el acceso a la tarjeta para desbloquear llaves y enviar transacciones. Crea un nuevo código de acceso e ingrese su PUK para acceder a su(s) cuenta(s) en esta tarjeta", + "keycard-is-frozen-factory-reset": "Restablecer con mnemónico", + "keycard-is-frozen-reset": "Restablece el acceso a la tarjeta", + "keycard-is-frozen-title": "La Keycard está congelada", + "keycard-onboarding-finishing-header": "Terminando", + "keycard-onboarding-intro-header": "Guarda tus claves en Keycard", + "keycard-onboarding-intro-text": "Prepárate, esto puede tomar unos minutos, pero es importante para asegurar tu cuenta", + "keycard-onboarding-mnemonic-text": "También necesitarás un papel y un lápiz para escribir tu frase semilla.", + "keycard-onboarding-pairing-header": "Vinculando la tarjeta...", + "keycard-onboarding-pin-text": "Deberás crear un código de acceso de 6 dígitos que se utilizará para proteger tu Keycard.", + "keycard-onboarding-preparing-header": "Preparando la tarjeta...", + "keycard-onboarding-puk-code-header": "Escribe los códigos\n y guárdalos de forma segura", + "keycard-onboarding-recovery-phrase-description": "Necesitas esta frase semilla para obtener de nuevo tu clave. Anótala. Manténla segura, fuera de línea y separada de este dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Respalda tu frase semilla", + "keycard-onboarding-recovery-phrase-text": "Sólo para tus ojos. Esta es la semilla mágica usada para generar tu clave.", + "keycard-onboarding-start-header": "Manten la tarjeta en la parte posterior\n de tu teléfono para iniciar", + "keycard-onboarding-start-step1": "Crea un código de acceso", + "keycard-onboarding-start-step1-text": "Alrededor de 1 minuto. Crea un código de acceso de 6 dígitos para encriptar tus claves", + "keycard-onboarding-start-step2": "Escribe el código de vinculación y PUK", + "keycard-onboarding-start-step2-text": "Alrededor de 1 minuto. Vas a necesitar un papel y un lápiz para eso", + "keycard-onboarding-start-step3": "Respaldar la frase semilla", + "keycard-onboarding-start-step3-text": "Alrededor de 1 minuto. También son necesarios un pedazo de papel y un lápiz.", + "keycard-onboarding-start-text": "Y manten el contacto entre la tarjeta y el teléfono\n durante la configuración. La configuración tomará alrededor de 4 minutos", + "keycard-processing-description": "Intenta mantener la tarjeta quieta", + "keycard-processing-title": "Procesando...", + "keycard-recover": "tarjeta perdida o congelada?", + "keycard-recover-text": "Si tienes tu frase mnemotécnica puedes crear una nueva Keycard asociada a esta cuenta. Puedes utilizar ya sea una nueva Keycard o realizar el restablecimiento de una congelada.", + "keycard-recover-title": "¿Crear una nueva tarjeta para esta cuenta?", + "keycard-recovery-intro-button-text": "Iniciar la recuperación", + "keycard-recovery-intro-header": "Recuperar claves almacenadas en Keycard", + "keycard-recovery-intro-text": "Si antes generaste claves con keycard y ahora deseas utilizarlas en este dispositivo", + "keycard-recovery-no-key-header": "No hay nada que \nrecuperar aquí", + "keycard-recovery-no-key-text": "Tu Keycard no tiene ninguna clave almacenada en ella. Para usarla, genera una nueva clave y elige tu Keycard para almacenar la clave", + "keycard-recovery-phrase-confirm-header": "Confirmar frase semilla", + "keycard-recovery-phrase-confirmation-text": "¡No tendrás una segunda oportunidad! Si pierdes acceso, por ejemplo al extraviar tu Keycard, solo podrás acceder a tus llaves con tu frase semilla. Nadie a parte de ti tiene tu frase semilla. Anótala. Mantenla guardada.", + "keycard-recovery-phrase-confirmation-title": "¿Escribiste la frase semilla?", + "keycard-recovery-success-header": "Tus claves han sido \n recuperadas con éxito", + "keycard-redeem-title": "Canjear a", + "keycard-redeem-tx": "Canjea activos", + "keycard-redeem-tx-desc": "Toque con la tarjeta para firmar y recibir activos", + "keycard-reset-passcode": "Restablece el código de acceso", + "keycard-success-description": "Puedes quitar la tarjeta ahora", + "keycard-success-title": "Éxito", + "keycard-unauthorized-operation": "No estás autorizado a realizar esta operación.\n Por favor, toca la tarjeta válida e inténtalo de nuevo.", + "keycard-upsell-subtitle": "Mayor seguridad y conveniencia", + "kicked": "Eliminado", + "language": "Idioma", + "last-backup-performed": "Última copia de seguridad realizada:", + "last-transaction": "Última transacción", + "learn-more": "Aprende más", + "learn-more-about-keycard": "Más información sobre Keycard", + "leave": "Salir", + "leave-chat": "Abandonar chat", + "leave-chat-confirmation": "El historial de la conversación se eliminará de tu dispositivo. Al reincorporarte no podrás recuperar tu historial.", + "leave-community": "Salir de la comunidad", + "leave-community-message": "Estaremos tristes que te vayas, pero recuerda, ¡puedes volver en cualquier momento!", + "leave-community?": "¿Abandonar comunidad?", + "leave-confirmation": "Salir {{chat-name}}", + "leave-group": "Salir del grupo", + "left": "salió", + "les-ulc": "LES\/ULC", + "lets-go": "Vamos", + "lifestyle": "Estilo de vida", + "light": "Luz", + "limit": "Límite", + "link-to-community": "Link a comunidad", + "linked-on": "Vinculado en {{date}}", + "load-messages-before": "antes del {{date}}", + "load-more-messages": "↓ Recuperar más mensajes", + "load-more-timeline": "↓ Obtener más", + "loading": "Cargando...", + "local-notifications": "Notificaciones locales", + "lock-app-with": "Bloquear app con", + "log-level": "Nivel de registro", + "log-level-settings": "Ajustes del nivel de registro", + "logging": "Registro", + "logging-enabled": "¿Registro habilitado?", + "login-pin-description": "Ingresa tu código de acceso de 6 dígitos para desbloquear tus llaves", + "logout": "Cerrar sesión", + "logout-app-content": "Se cerrará la sesión de la cuenta. Cuando lo desbloquees de nuevo, se utilizará la red seleccionada", + "logout-are-you-sure": "¿Seguro que quieres cerrar la sesión?", + "logout-key-management": "Es necesario cerrar la sesión para acceder a la gestión de claves.", + "logout-title": "¿Cerrar sesión?", + "looking-for-cards": "Buscando tarjetas...", + "lost-connection": "Conexión perdida", + "low-tip": "la propina es demasiado baja", + "lower-than-average-tip": "inferior a la propina promedio", + "mail-should-be-configured": "El cliente de correo debe ser configurado", + "mailserver-address": "Dirección del nodo de Status", + "mailserver-automatic": "Selección automática", + "mailserver-automatic-switch-explanation": "Elija el nodo de Status más rápido disponible", + "mailserver-connection-error": "No se pudo conectar al nodo de Status", + "mailserver-content": "Un nodo en la red de Status que enruta y almacena mensajes, hasta por 30 días.", + "mailserver-details": "Detalles del nodo de Status", + "mailserver-error-content": "No se pudo acceder al nodo de Status que seleccionó.", + "mailserver-error-title": "Error al conectarse al nodo de Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Elija otro nodo de Status", + "mailserver-reconnect": "No se pudo conectar con el nodo de Status. Pulse para reconectar", + "mailserver-request-error-content": "El siguiente error fue devuelto por el nodo de Status: {{error}}", + "mailserver-request-error-status": "Se produjo un error al recuperar el historial, verifica los registros para obtener más detalles", + "mailserver-request-error-title": "Error de solicitud del nodo de Status", + "mailserver-request-retry": "Reintentar solicitud", + "mailserver-retry": "Reintentar", + "mailserver-title": "Nodo de Status", + "main-currency": "Moneda principal", + "main-networks": "Redes principales", + "main-wallet": "Billetera Principal", + "mainnet-network": "Red principal", + "make-admin": "Hacer admin", + "manage-keys-and-storage": "Administrar las claves y el almacenamiento", + "mark-all-read": "Marcar todo como leído", + "mark-as-read": "Marcar como leído", + "mark-untrustworthy": "Marcar como no confiable", + "master-account": "Cuenta principal", + "max-fee": "Tarifa máx.", + "max-priority-fee": "Tarifa máxima de prioridad", + "maximum-fee": "Tarifa máxima", + "maximum-fee-desc": "Precio global máximo de la operación. Si la tarifa base del bloque actual excede este precio, su transacción será incluida en un bloque siguiente con una tarifa base más baja.", + "maybe-later": "Quizas mas tarde", + "member-ban": "Prohibir miembro", + "member-kick": "Eliminar miembro", + "members": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active-none": "no hay miembros", + "members-count": "{{count}} miembros", + "members-label": "Miembros", + "members-limit-reached": "Límite de miembros alcanzado", + "members-title": "Miembros", + "membership": "Membresía", + "membership-approval": "Requiere aprobación", + "membership-approval-description": "Puedes unirte de manera gratuita, pero los nuevos miembros necesitan ser aprobados primero por el creador de comunidad primero", + "membership-button": "Requisito de membresía", + "membership-declined": "Se rechazó la solicitud de membresía", + "membership-description": "La membresía grupal requiere que seas aceptado por el administrador del grupo", + "membership-ens": "Requiere un usuario ENS", + "membership-ens-description": "Tu comunidad requiere que tengas un usuario ENS para unirte", + "membership-free": "Sin requisitos", + "membership-free-description": "Cualquier persona puede unirse a tu comunidad", + "membership-invite": "Necesitas invitación de otro miembro", + "membership-invite-description": "Únicamente puedes unirte a la comunidad mediante invitación de un miembro existente", + "membership-none": "Ninguno", + "membership-none-placeholder": "Puede exigir que los nuevos miembros cumplan con ciertos criterios antes de poder unirse. Esto se puede cambiar en cualquier momento.", + "membership-request-pending": "Solicitud de membresía pendiente", + "membership-requests": "Solicitudes de membresía", + "membership-title": "Requisito de membresía", + "mentions": "Menciones", + "message": "Mensaje", + "message-deleted": "Mensaje eliminado", + "message-deleted-for-you": "Mensaje eliminado para ti", + "message-not-sent": "Mensaje no enviado", + "message-options-cancel": "Cancelar", + "message-reply": "Responder", + "messages": "Mensajes", + "messages-from-contacts-only-subtitle": "Solo las personas que agregaste como contactos pueden iniciar un nuevo chat o invitarte a un grupo", + "messages-gap-warning": "Es posible que falten algunos mensajes", + "might-break": "Puede que se rompan algunas ÐApps", + "migration-successful": "Migración exitosa", + "migration-successful-text": "Cuenta migrada con éxito a la Keycard", + "migrations-failed-content": "{{message}} \n versión del esquema: inicial {{initial-version}}, actual {{current-version}} , último {{last-version}} \n\nOcurrió un problema de base de datos. Tus fondos y la llave de chat están a salvo. Otros datos, como chats y contactos, no se podrán recuperar. Presionar el botón {{erase-multiaccounts-data-button-text}}\" eliminará el resto de datos y te permitirá acceder a tus fondos y enviar mensajes.", + "miners-higher-fee": "Es probable que los mineros incluyan tu transacción antes si pagas una tarifa más alta.", + "minimum-received": "Mínimo recibido", + "mobile-network-ask-me": "Pregúntarme cuando esté en la red móvil", + "mobile-network-continue-syncing": "Continuar sincronizando", + "mobile-network-continue-syncing-details": "Puedes cambiar esto más adelante en los ajustes", + "mobile-network-go-to-settings": "Ir a ajustes", + "mobile-network-settings": "Datos móviles", + "mobile-network-sheet-configure": "Puedes configurar la sincronización en más \ndetalle en", + "mobile-network-sheet-offline": "Sin Wi-Fi, la sincronización de mensajes está deshabilitada.", + "mobile-network-sheet-offline-details": "La sincronización mediante la red móvil está desactivada", + "mobile-network-sheet-remember-choice": "Recuerda mi elección", + "mobile-network-sheet-settings": "ajustes", + "mobile-network-start-syncing": "Iniciar la sincronización", + "mobile-network-stop-syncing": "Detener la sincronización", + "mobile-network-stop-syncing-details": "¿Hasta que se conecta a Wi-Fi?", + "mobile-network-use-mobile": "Usar datos móviles", + "mobile-network-use-mobile-data": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-network-use-wifi": "Sólo Wi-Fi", + "mobile-syncing-sheet-details": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-syncing-sheet-title": "¿Sincronizar usando los datos del móvil?", + "more": "más", + "move-and-reset": "Mover y restablecer", + "move-keystore-file": "Mover el archivo keystore", + "move-keystore-file-to-keycard": "¿Mover el archivo keystore a la keycard?", + "multiaccount-exists-content": "Las llaves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "multiaccount-exists-title": "Las llaves para esta cuenta ya existen", + "multiaccounts-recover-enter-phrase-text": "Ingresa 12, 15, 18, 21 o 24 palabras. \n Separa las palabras por un solo espacio.", + "multiaccounts-recover-enter-phrase-title": "Ingresa tu frase semilla", + "music": "Musica", + "mutal-contacts": "Contactos mutuos", + "mute": "Silenciar", + "mute-chat": "Silenciar chat", + "mute-community": "Silenciar comunidad", + "my-accounts": "Mis cuentas", + "my-accounts-empty": "Tus cuentas disponibles aparecerán aquí", + "my-profile": "Mi perfil", + "my-status": "Mi estado", + "n-photos": "{{count}} fotos", + "name": "Nombre", + "name-of-token": "El nombre de tu token", + "name-optional": "Nombre (opcional)", + "name-your-channel": "Asigna un nombre a tu canal", + "name-your-channel-placeholder": "Nombre del canal", + "name-your-community": "Asigna un nombre a tu comunidad", + "name-your-community-placeholder": "Elige un nombre memorable", + "need-help": "¿Necesitas ayuda?", + "network": "Red", + "network-chain": "Cadena de la red", + "network-details": "Detalles de red", + "network-fee": "Tarifa de la red", + "network-id": "Identidad de la red", + "network-info": "Información de la red", + "network-invalid-network-id": "El id de red especificado no corresponde al id de red por la url de RPC", + "network-invalid-status-code": "Código de estado inválido: {{code}}", + "network-invalid-url": "La URL de la red no es válida", + "network-settings": "Ajustes de la red", + "never": "Nunca", + "new": "Nuevo", + "new-category": "Nueva categoría", + "new-chat": "Nuevo chat", + "new-community-title": "Nueva comunidad", + "new-contact": "Nuevo contacto", + "new-contract": "Nuevo contrato", + "new-favourite": "Nuevo favorito", + "new-group": "Nuevo grupo", + "new-group-chat": "Nuevo grupo de chat", + "new-messages-header": "Nuevos mensajes", + "new-network": "Nueva red", + "new-password": "Nueva contraseña", + "new-pin-description": "Ingresa el nuevo código de acceso de 6 dígitos", + "new-public-group-chat": "Unirte a chat público", + "new-puk-description": "Ingrese un nuevo PUK de 12 dígitos", + "new-status": "Nuevo estado", + "new-tab": "Nueva pestaña", + "next": "Siguiente", + "nickname": "Apodo", + "nickname-description": "Los apodos te ayudan a identificar a otras personas en Status. \n Solo tú puedes ver los apodos que agregaste", + "no": "No", + "no-collectibles": "No hay coleccionables disponibles", + "no-contacts": "Aún no hay contactos", + "no-keycard-applet-on-card": "No hay applet de Keycard en la tarjeta", + "no-messages": "No hay mensajes", + "no-pairing-slots-available": "Esta tarjeta ya está vinculada con 5 dispositivos y no puede ser vinculada con éste dispositivo. Por favor, utiliza uno de los dispositivos vinculados, inicia sesión con esta tarjeta y libera los espacios de vinculación en la tarjeta", + "no-pinned-messages": "Sin mensajes fijados", + "no-pinned-messages-community-desc": "Este canal no tiene ningún mensaje anclado.", + "no-pinned-messages-desc": "Este chat no tiene ningún mensaje anclado", + "no-result": "Sin resultados", + "no-thanks": "No, gracias", + "no-tokens-found": "No se encontraron tokens", + "node-address": "Dirección del nodo", + "node-details": "Detalles de nodo", + "node-info": "Información del nodo", + "node-version": "Versión de nodo", + "nodes-disabled": "Nodos de Status deshabilitados", + "non-archival-node": "El punto de conexión de RPC no admite solicitudes de archivado. Es posible que el historial de transferencias locales esté incompleto.", + "non-contacts": "Ningún contacto", + "nonce": "Nonce", + "none": "ninguno", + "normal": "Normal", + "not-applicable": "No aplicable para transacciones no firmadas", + "not-connected-nodes": "Sin conexión a un nodo de Status", + "not-connected-to-peers": "Sin conexión a ningún nodo", + "not-enough-snt": "No hay suficiente SNT", + "not-found": "No encontrado", + "not-keycard-text": "La tarjeta que usaste no es una Keycard. Necesitas comprar una Keycard para usarla", + "not-keycard-title": "No es una Keycard", + "not-registered": "no registrado", + "notification-settings": "Notificaciones", + "notifications": "Notificaciones", + "notifications-non-contacts": "Notificaciones de no contactos", + "notifications-preferences": "Preferencias de notificación", + "notifications-servers": "Servidores de notificaciones", + "notifications-switch": "Mostrar notificaciones", + "notifications-transactions": "Transacciones de billetera", + "notify": "Notificar", + "now": "Ahora", + "off": "Apagado", + "off-status-tree": "Derivado fuera de Status", + "offline": "Desconectado", + "offline-messaging-use-history-explanation": "Habilite los nodos del historial para recuperar los mensajes que se enviaron mientras la aplicación estaba cerrada. Cuando está habilitado, un nodo de historial obtiene su dirección IP. Cuando está deshabilitado, no recibirá mensajes cuando la aplicación esté cerrada y no los verá cuando abra la aplicación más tarde.", + "offline-messaging-use-history-nodes": "Usar nodos de Status", + "ok": "OK", + "ok-continue": "Ok, continuar", + "ok-got-it": "Ok, lo tengo", + "ok-save-pass": "OK, guardar contraseña", + "okay": "Bien", + "on": "En", + "on-status-tree": "En el árbol de Status", + "once-enabled-share-metadata": "Una vez habilitados, los enlaces publicados en el chat pueden compartir sus metadatos con el sitio.", + "one-day": "Un día", + "one-month": "Un mes", + "one-week": "Una semana", + "online": "En línea", + "open": "Abrir", + "open-chat": "Abrir chat", + "open-dapp": "Abrir ÐApp", + "open-dapp-store": "Descubre ÐApps", + "open-home": "Abrir...", + "open-in-new-tab": "Abrir en una pestaña nueva", + "open-membership": "Abrir membresía", + "open-nfc-settings": "Abrir ajustes de NFC", + "opened": "Abierto", + "opening-buy-crypto": "Abriendo {{site}} ...", + "optimal": "Óptima", + "optional": "opcional", + "or": "o", + "outgoing": "Saliente", + "outgoing-transaction": "Transacción saliente", + "page-camera-request-blocked": "solicitudes de cámara bloqueadas. Para habilitar las solicitudes de la cámara, vaya a Configuración", + "page-would-like-to-use-camera": "quisiera usar su cámara", + "pair": "Vincular dispositivos", + "pair-card": "Vincular a este dispositivo", + "pair-code": "Código par", + "pair-code-explanation": "Vincula la tarjeta a un dispositivo diferente para desbloquear llaves y firmar transacciones con la misma Keycard", + "pair-code-placeholder": "Código de emparejamiento...", + "pair-this-card": "Vincula esta tarjeta", + "pair-this-device": "Publicar el dispositivo", + "pair-this-device-description": "Vincula tus dispositivos para sincronizar los contactos y chats entre ellos", + "paired-devices": "Dispositivos vinculados", + "pairing": "Vinculando", + "pairing-card": "Vinculando la tarjeta", + "pairing-changed": "Se ha cambiado el código de emparejamiento", + "pairing-code-placeholder": "Código de emparejamiento...", + "pairing-code_error1": "Los códigos de emparejamiento no coinciden.", + "pairing-go-to-installation": "Ir a los ajustes de vinculación", + "pairing-maximum-number-reached-content": "Por favor, deshabilita uno de tus dispositivos antes de habilitar uno nuevo.", + "pairing-maximum-number-reached-title": "Número máximo de dispositivos alcanzados", + "pairing-new-installation-detected-content": "Se ha detectado un nuevo dispositivo. \nPara usar tus dispositivos correctamente, es importante vincularlos y habilitarlos antes de usarlos. \nVe a la sección del dispositivo en los ajustes para vincular tus dispositivos.", + "pairing-new-installation-detected-title": "Nuevo dispositivo detectado", + "pairing-no-info": "Sin información", + "pairing-please-set-a-name": "Por favor configura un nombre para tu dispositivo.", + "passphrase": "Frase de contraseña", + "password": "Contraseña", + "password-description": "Al menos 6 caracteres. Tu contraseña protege tus claves. La necesitas para desbloquear Status y realizar transacciones.", + "password-mismatch": "Nueva contraseña y confirmación no coinciden", + "password-placeholder": "Contraseña...", + "password-placeholder2": "Confirma tu contraseña", + "password-reset-in-progress": "Cambiando contraseña...", + "password-reset-success": "Contraseña cambiada", + "password-reset-success-message": "Tendrá que iniciar sesión de nuevo", + "password_error1": "Las contraseñas no coinciden.", + "paste": "Pegar", + "paste-json": "Pegar JSON", + "pay-to-chat": "Pagar para chatear", + "peer-content": "Un dispositivo conectado a la red de chat de Status. Cada usuario puede representar uno o más peers, dependiendo de su número de dispositivos.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Pares", + "pending": "En espera", + "pending-confirmation": "Confirmación pendiente...", + "pending-invitations": "Solicitudes de membresía pendientes", + "pending-requests": "Solicitudes pendientes", + "per-gas-price-limit": "Límite del precio por gas", + "per-gas-tip-limit": "Límite de propina por gas", + "perform-backup": "Realizar copia de seguridad", + "permissions": "Permisos", + "phone-e164": "Internacional 1", + "photos": "Fotos", + "photos-access-error": "Para permitir el acceso a fotos, porfavor, ve a ajustes de sistema y asegúrate que este seleccionada la opción Status > Fotos", + "pin": "Fijar", + "pin-changed": "Se ha cambiado el código de acceso de 6 dígitos", + "pin-code": "Código de acceso de 6 dígitos", + "pin-limit-reached": "Límite de pines alcanzado. Desancla primero un mensaje anterior.", + "pin-mismatch": "Código de acceso incorrecto", + "pin-one-attempt": "un intento", + "pin-one-attempt-blocked-after": "antes de que tu Keycard se bloquee", + "pin-one-attempt-blocked-before": "Ten cuidado, solo tienes", + "pin-one-attempt-frozen-after": "antes de que tu Keycard se congele", + "pin-one-attempt-frozen-before": "Ten cuidado, solo tienes", + "pin-retries-left": "{{number}} intentos restantes", + "pin-to-channel": "Anclar al canal", + "pin-to-chat": "Anclar al chat", + "pinned-a-message": "anclado a un mensaje", + "pinned-by": "Fijado por", + "pinned-messages": "Mensajes fijados", + "pinned-messages-count": { + "one": "1 mensaje fijado", + "other": "{{count}} mensajes fijados" + }, + "pinned-messages-empty": "Los mensajes fijados aparecerán aquí. Para fijar un mensaje, mantenga pulsado y seleccione 'Pin'", + "podcasts": "Podcasts", + "powered-by-paraswap": "Desarrollado por Paraswap", + "preference": "Preferencia", + "preview-privacy": "Vista previa del modo de privacidad", + "previewing-may-share-metadata": "La vista previa de los enlaces de estos sitios web puede compartir sus metadatos con sus propietarios.", + "price-impact": "Impacto del precio", + "price-impact-desc": "Impacto del precio estimado para esta transacción. Si la tarifa base del bloque actual excede esto, tu transacción será incluida en un bloque siguiente con una tarifa base más baja.", + "principles": "Fundamentos", + "priority": "Prioridad", + "privacy": "Privacidad", + "privacy-and-security": "Privacidad y seguridad", + "privacy-photos": "Privacidad de la foto del perfil", + "privacy-policy": "Política de privacidad", + "privacy-show-to-warning": "Las personas que ya han visto tu foto de perfil seguirán haciéndolo", + "private-key": "Llave privada", + "private-notifications": "Notificaciones privadas", + "private-notifications-descr": "Status te notificará sobre los nuevos mensajes. Podés editar tus preferencias de notificación más adelante en la configuración.", + "processing": "Un momento.", + "product-information": "Información del Producto", + "profile": "Perfil", + "profile-deleted-content": "Su perfil fue eliminado con éxito", + "profile-deleted-keycard": "Ahora puedes restaurar otro par de claves en tu Keycard", + "profile-deleted-title": "Perfil eliminado", + "profile-details": "Detalles del perfil", + "profile-not-found": "Perfil no encontrado", + "profile-pic-pick": "Seleccionar de la galería", + "profile-pic-remove": "Quitar foto", + "profile-pic-take": "Tomar foto", + "profile-picture-updated": "Foto de perfil actualizada", + "public": "Público", + "public-channel": "Canal público", + "public-chat": "Chat público", + "public-chat-description": "¡Únete a chats públicos para tus intereses! Cualquiera puede comenzar uno nuevo.", + "public-chats": "Chats públicos", + "public-group-status": "Público", + "public-group-topic": "Tema", + "public-key": "Clave pública", + "puk-and-pairing-codes-displayed": "PUK y códigos de vinculación mostrados", + "puk-changed": "Se ha cambiado el PUK de 12 dígitos", + "puk-code": "Código PUK", + "puk-code-explanation": "Si olvidas tu código de acceso de 6 dígitos o lo ingresas incorrectamente 3 veces, necesitarás este código para desbloquear tu tarjeta.", + "puk-mismatch": "El código PUK no coincide", + "push-failed-transaction": "Su transacción falló", + "push-failed-transaction-body": "{{value}} {{currency}} a {{to}}", + "push-inbound-transaction": "Recibiste {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} a {{to}}", + "push-notifications-server-enabled": "Servidor habilitado", + "push-notifications-servers": "Servidores de notificaciones push", + "push-outbound-transaction": "Enviaste {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} a {{to}}", + "quiet-days": "{{quiet-days}} días", + "quiet-hours": "{{quiet-hours}} horas", + "re-encrypt-key": "Vuelve a encriptar tus claves", + "rearrange-categories": "Reorganizar Categorías", + "receive": "Recibir", + "receive-transaction": "Recibir transacción", + "received": "Recibido", + "recent": "Estados recientes", + "recent-empty": "Las direcciones utilizadas recientemente aparecerán aquí", + "recent-recipients": "Contactos", + "recently-used-stickers": "Las stickers usadas recientemente aparecerán aquí", + "recipient": "Receptor", + "recipient-code": "Ingresa la dirección del destinatario", + "recipient-code-placeholder": "0x... o username.domain.eth", + "recover": "Recuperar", + "recover-key": "Ingresar claves existentes", + "recover-keycard-multiaccount-not-supported": "Las llaves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "recover-with-keycard": "Recuperar con Keycard", + "recover-with-seed-phrase": "Recuperar con frase semilla", + "recovering-key": "Ingresando las claves...", + "recovery-confirm-phrase": "Confirmar frase semilla", + "recovery-phrase": "Frase semilla", + "recovery-success-text": "Deberás crear un nuevo código o contraseña para volver a encriptar tus claves", + "recovery-typo-dialog-description": "Recuerda, tu frase semilla debe ser exactamente las mismas palabras y el orden que recibiste", + "recovery-typo-dialog-title": "¿Es correcta la frase semilla?", + "redeem-amount": "{{quantity}} bonos disponibles", + "redeem-now": "Canjear ahora", + "redeem-success": "¡Canje del bono exitoso!", + "reduced-tip": "la propina de prioridad se reducirá", + "refresh": "Actualizar", + "registered": "registrado", + "reject-and-delete": "Rechazar y eliminar", + "remember-me": "Recuérdame", + "remind-me-later": "Muéstrame esto de nuevo", + "remote-notifications": "Notificaciones remotas", + "remove": "Remover", + "remove-favourite": "Quitar favorito", + "remove-from-chat": "Eliminar del chat", + "remove-from-contacts": "Eliminar de contactos", + "remove-from-contacts-text": "Al eliminar a un usuario de tu lista de contactos, no oculta la dirección de tu billetera de ellos", + "remove-group": "Eliminar grupo", + "remove-network": "Eliminar red", + "remove-token": "Eliminar token", + "removed": "eliminado", + "rename": "Renombrar", + "repeat-pin": "Repite el nuevo código de acceso de 6 dígitos", + "repeat-puk": "Repita el nuevo PUK de 12 dígitos", + "replies": "Respuestas", + "replying-to": "Respondiendo a {{author}}", + "report-bug-email-template": "1. Descripción del problema\n{{description}}\n\n\n2. Pasos para reproducir\n{{steps}}\n\n\n3. Adjunta capturas de pantalla que demuestren el problema por favor\n", + "request-access": "Solicitar acceso", + "request-feature": "Solicitar una funcionalidad", + "request-membership": "Solicitar membresía", + "request-pending": "Pedido pendiente…", + "request-to-join": "Solicitar unirse", + "request-transaction": "Solicitar transacción", + "required-field": "Campo requerido", + "resend-message": "Reenviar", + "reset-card": "Reiniciar la tarjeta", + "reset-card-description": "Esta operación restablecerá la tarjeta al estado inicial. Borrará todos los datos de la tarjeta, incluidas las claves privadas. La operación no es reversible.", + "reset-database": "Restablecer base de datos", + "reset-database-warning": "Elimina chats, contactos y configuraciones. Se requiere cuando has perdido tu contraseña", + "reset-database-warning-keycard": "Borrar chats, contactos y ajustes.", + "reset-password": "Cambiar contraseña", + "restore-defaults": "Restaurar los valores predeterminados", + "retry": "Reintentar", + "revoke-access": "Revocar el acceso", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Copiar", + "rpc-usage-filter": "Métodos de filtro", + "rpc-usage-filter-methods": "Métodos de filtro", + "rpc-usage-get-stats": "Actualizar", + "rpc-usage-info": "Estadísticas de uso de RPC", + "rpc-usage-reset": "Restablecer", + "safe-estimate": "Seguridad estimada", + "save": "Guardar", + "save-image-library": "Guardar imagen en la biblioteca", + "save-password": "Guardar contraseña", + "save-password-unavailable": "Establece el código de acceso del dispositivo para guardar la contraseña", + "save-password-unavailable-android": "Guardar la contraseña no está disponible: tu dispositivo puede estar rooteado o carecer de las características de seguridad necesarias.", + "scan-qr": "Escanear QR", + "scan-qr-code": "Escanea un código QR con una dirección de billetera", + "scan-tokens": "Escanear tokens", + "search": "Buscar", + "search-contacts": "Buscar contactos", + "search-no-chat-found": "No hay resultados de búsqueda. ¿Querés decir", + "secret-keys-confirmation-text": "Los necesitará para seguir usando su Keycard en caso de que alguna vez pierda su teléfono.", + "secret-keys-confirmation-title": "¿Escribiste los códigos?", + "security": "Seguridad", + "see-details": "Ver detalles", + "see-it-again": "VERLO OTRA VEZ", + "see-sticker-set": "Ver el set de stickers completo", + "see-suggestions": "Ver sugerencias", + "seed-key-uid-mismatch": "La frase semilla no coincide", + "seed-key-uid-mismatch-desc-1": "La frase semilla que ingresó no coincide con {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Para administrar claves para esta cuenta verifique su frase semilla e inténtelo de nuevo", + "seed-phrase-content": "Un set de palabras fáciles de leer, seleccionadas al azar de la lista estándar BIP39 y utilizadas para recuperar o acceder a tu cuenta de Ethereum en otras billeteras y dispositivos. También se conoce como \"frase mnemónica\", \"frase de recuperación\" o \"copia de seguridad de billetera\" en todo el cripto ecosistema. La mayoría de las cripto apps usan este mismo estándar para generar cuentas.", + "seed-phrase-placeholder": "Frase semilla...", + "seed-phrase-title": "Frase Semilla", + "select": "Seleccionar", + "select-account": "Seleccionar cuenta", + "select-account-dapp": "Selecciona la cuenta que deseas usar con Dapps", + "select-account-first": "Selecciona una cuenta primero", + "select-chat": "Selecciona el chat para comenzar a enviar mensajes", + "select-new-location-for-keys": "Seleccione una nueva ubicación para guardar sus claves privadas", + "select-token-to-receive": "Selecciona el token a recibir", + "select-token-to-swap": "Selecciona el token a intercambiar", + "selected": "Seleccionado", + "send": "Enviar", + "send-logs": "Reportar un error", + "send-logs-to": "Reportar un error a {{email}}", + "send-message": "Enviar mensaje", + "send-push-notifications-description": "Cuando está deshabilitado, la persona que recibe sus mensajes no será notificada de su llegada.", + "send-request": "Enviar solicitud", + "send-request-amount": "Cantidad", + "send-request-amount-max-decimals": "El número máximo de decimales es {{asset-decimals}}", + "send-request-unknown-token": "Token desconocido - {{asset}}", + "send-sending-to": "para {{recipient-name}}", + "send-transaction": "Enviar transacción", + "sending": "Enviando", + "sent": "Enviado", + "sent-at": "Enviado a", + "server": "Servidor", + "set-a-topic": "Crear un tema", + "set-currency": "Establecer moneda", + "set-custom-fee": "Establecer tarifa personalizada", + "set-dapp-access-permissions": "Establecer permisos de acceso DApp", + "set-max": "Establecer máximo", + "settings": "Ajustes", + "share": "Compartir", + "share-address": "Compartir dirección", + "share-chat": "Compartir chat", + "share-community": "Compartir comunidad", + "share-contact-code": "Compartir mi clave de chat", + "share-dapp-text": "Echa un vistazo a esta DApp que estoy usando en Status: {{link}}", + "share-image": "Compartir imagen", + "share-invite-link": "Compartir un link de invitación", + "share-link": "Compartir enlace", + "share-logs": "Compartir registros", + "share-my-profile": "Compartir mi perfil", + "share-profile": "Compartir perfil", + "share-profile-link": "Compartir enlace del perfil", + "share-public-chat-text": "Echa un vistazo a este chat público en la app de Status: {{link}}", + "shared": "Compartido", + "sharing-copied-to-clipboard": "Copiado", + "sharing-copy-to-clipboard": "Copiar", + "sharing-data-desc-1": "Los datos se validan con las reglas públicas para asegurar que no se envíen datos confidenciales. No confíes, verifica.", + "sharing-data-desc-2": "Los datos de uso se envían cifrados de extremo a extremo a través de la red peer-to-peer de Status", + "sharing-data-desc-3": "En lugar de la clave de chat habitual, se utiliza una clave de uso único", + "sharing-data-desc-4": "Los datos de uso no pueden asociarse con su dirección IP", + "sharing-data-desc-5": "Los datos acumulativos de todos los usuarios están disponibles públicamente", + "sharing-data-desc-6": "Los datos se eliminan de su teléfono después de que se envían", + "sharing-share": "Compartir", + "shell-placeholder-subtitle": "Abra pestañas de sus comunidades, mensajes, billetera y ventanas del navegador", + "shell-placeholder-title": "Sus aplicaciones se ejecutarán aquí", + "show-less": "Mostrar menos", + "show-more": "Mostrar más", + "show-notifications": "Mostrar notificaciones", + "show-profile-pictures": "Mostrar las fotos de perfil de", + "show-profile-pictures-to": "Muestra tu foto de perfil a", + "show-qr": "Mostrar código QR", + "show-transaction-data": "Mostrar los datos de la transacción", + "sign-and-send": "Firmar y enviar", + "sign-anyway": "Continuar de todas maneras", + "sign-in": "Regístrate", + "sign-message": "Firmar mensaje", + "sign-out": "Cerrar sesión", + "sign-request-failed": "No se pudo firmar el mensaje", + "sign-with": "Firma con", + "sign-with-password": "Firmar con contraseña", + "sign-you-in": "Iniciando sesión...", + "signing": "Firma", + "signing-a-message": "Firmando un mensaje", + "signing-phrase": "Frase de firma", + "skip": "Omitir", + "slippage": "Desviación", + "slow": "Lenta", + "something-went-wrong": "Algo salió mal", + "soon": "Pronto", + "sort-communities": "Ordenar comunidades", + "specify-address": "Especificar dirección", + "specify-name": "Especifica un nombre", + "specify-network-id": "Especifica ID de red", + "specify-rpc-url": "Especifica una URL RPC", + "specify-server-public-key": "Ingrese la clave pública del servidor", + "specify-symbol": "Especifica un símbolo", + "start-chat": "Iniciar chat", + "start-conversation": "Empezar conversación", + "start-group-chat": "Iniciar chat grupal", + "start-new-chat": "Iniciar nuevo chat", + "starter-pack-coming": "El Paquete de Inicio viene en camino", + "starter-pack-coming-description": "Puede tomar de unos minutos a horas", + "starter-pack-received": "Paquete de Bienvenida", + "starter-pack-received-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "status": "Status", + "status-always-online": "Siempre en línea", + "status-automatic": "Automático", + "status-automatic-subtitle": "Establecer estado automáticamente", + "status-confirmed": "Confirmado", + "status-dnd": "No interrumpir", + "status-dnd-subtitle": "Silencia todas las notificaciones", + "status-hardwallet": "Status hardwallet", + "status-inactive": "Inactivo", + "status-inactive-subtitle": "Oculta tu estado en línea", + "status-is-open-source": "Status es código abierto", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status tiende a usar una gran cantidad de datos al sincronizar chats. Puedes optar por no sincronizar cuando estás en la red móvil", + "status-not-sent-click": "No está confirmado. Haz clic para ver las opciones", + "status-not-sent-tap": "No está confirmado. Pulsa para ver las opciones", + "status-pending": "Pendiente", + "status-sent": "Enviado", + "status-tx-not-found": "TX no encontrada", + "status-updates-descr": "Las actualizaciones de estado aparecerán aquí. Agregue el perfil como un contacto para recibir actualizaciones en su línea de tiempo.", + "statuses-descr": "Comparte lo que tienes en mente y mantente al día con tus contactos", + "statuses-my-status-descr": "Comparte lo que tienes en mente. Cualquiera que visite su perfil podrá ver su estado. Las personas que te agreguen como contacto recibirán tus actualizaciones en su línea de tiempo.", + "step-i-of-n": "Paso {{step}} de {{number}}", + "sticker": "Pegatina", + "sticker-market": "Sticker market", + "storage": "Almacenamiento", + "strikethrough": "Tachado", + "submit": "Enviar", + "submit-bug": "Reportar un error", + "success": "Éxito", + "successful-connection": "Conexión exitosa", + "suggested-min-tip": "Propina mín. sugerida", + "suggested-price-limit": "Límite de precio sugerido", + "swap": "Intercambiar", + "swap-details": "Detalles del intercambio", + "switch-to-simple-interface": "Cambiar a interfaz sencilla", + "symbol": "Símbolo", + "sync-all-devices": "Sincronizar todos los dispositivos", + "sync-in-progress": "Sincronizando...", + "sync-settings": "Ajustes de sincronización", + "sync-synced": "Sincronizado", + "syncing-devices": "Sincronizando...", + "system": "Sistema", + "tabs": "Pestañas", + "tag-was-lost": "La etiqueta se perdió", + "tap-card-again": "Vuelve a tocar la tarjeta con la parte trasera de tu teléfono.", + "terms-of-service": "Términos de uso", + "test-networks": "Redes de prueba", + "text-input-disabled": "Por favor espera un momento...", + "thank-you": "Gracias", + "this-device": "Este dispositivo", + "this-device-desc": "Tus claves serán encriptadas y almacenadas de forma segura en tu dispositivo", + "this-is-you-signing": "Esta es tu frase de firma", + "this-will-take-few-seconds": "Esto tomará unos segundos", + "three-days": "Tres días", + "three-words-description": "Deberías ver estas tres palabras antes de firmar cada transacción", + "three-words-description-2": "Si ves una combinación diferente, cancela la transacción y cierra sesión", + "timeline": "Línea de tiempo", + "tip-cap": "Tope de propina", + "to": "Para", + "to-block": "Bloquear", + "to-enable-biometric": "Para habilitar {{bio-type-label}}, debes guardar tu contraseña en la pantalla de desbloqueo", + "to-encrypt-enter-password": "Para encriptar la cuenta, por favor, ingresa tu contraseña", + "to-see-this-message": "Para ver este mensaje,", + "token": "Ficha", + "token-auto-validate-decimals-error": "Decimales incorrectos para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-name-error": "Nombre incorrecto para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-symbol-error": "Símbolo incorrecto para el token {{symbol}} en la dirección {{address}} - configurado en {{expected}} pero detectado como {{actual}}", + "token-details": "Detalles del token", + "token-price": "Precio del token", + "topic-name-error": "Utiliza solo letras minúsculas (a - z), números y guiones (-). No uses las claves de chat", + "total-gas": "Total del gas", + "total-members": "Total de miembros", + "transaction": "Transacción", + "transaction-data": "Transaction data", + "transaction-declined": "Transacción rechazada", + "transaction-description": "Transacciones con 12 confirmaciones pueden considerarse irreversibles", + "transaction-details": "Detalles de la transacción", + "transaction-failed": "Transacción fallida", + "transaction-fee": "Tarifa de transacción", + "transaction-history": "Historial de transacciones", + "transaction-request": "Solicitud de transacción", + "transaction-sent": "Transacción enviada", + "transaction-signed": "La transacción se ha firmado con éxito", + "transactions": "Transacciones", + "transactions-filter-select-all": "Seleccionar todo", + "transactions-filter-title": "Filtrar historial", + "transactions-history": "Historial de transacciones", + "transactions-history-empty": "Aún no hay transacciones en tu historial", + "transactions-history-loading": "Cargando historial de transacciones. Esto podrá tomar un tiempo.", + "transactions-load-more": "Mostrar más", + "transactions-management-enabled": "Gestión de transacciones (alfa)", + "transactions-sign": "Firmar", + "transfer-ma-unknown-error-desc-1": "Parece que su multicuenta no se eliminó. Es posible que la base de datos se haya restablecido", + "transfer-ma-unknown-error-desc-2": "Por favor verifique su lista de cuentas e intente de nuevo. Si la cuenta no está listada vaya a Acceder llaves existentes para recuperar con frase semilla", + "transfers-fetching-failure": "El historial de transferencias no pudo ser actualizado. Compruebe su conexión y refresque para intentarlo de nuevo", + "tribute-required-by-multiaccount": "{{multiaccount-name}} requiere SNT para iniciar un chat.", + "tribute-state-paid": "Tributo pagado", + "tribute-state-pending": "Tributo pendiente", + "tribute-state-required": "Requiere tributo de {{snt-amount}} SNT", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Agregar amigos como un contacto para permitir chats sin pago de tributo.", + "tribute-to-talk-are-you-friends": "¿Son amigos?", + "tribute-to-talk-ask-to-be-added": "Pide que te añadan como contacto", + "tribute-to-talk-contact-received-your-tribute": "recibió tu tributo. Ahora pueden conversar con seguridad entre ustedes.", + "tribute-to-talk-desc": "Monetiza tu atención requiriendo SNT para que la gente nueva inicie un chat", + "tribute-to-talk-disabled": "Tribute to Talk deshabilitado", + "tribute-to-talk-disabled-note": "A partir de ahora, las personas nuevas pueden iniciar un chat contigo sin enviar SNT.", + "tribute-to-talk-enabled": "Tienes Tribute to Talk habilitado.", + "tribute-to-talk-finish-desc": "A partir de ahora, sólo recibirás mensajes de los contactos, y de la gente que pagó", + "tribute-to-talk-learn-more-1": "Tu tiempo y atención son Tus activos más valiosos. Tribute to Talk te permite configurar la cantidad de SNT requerida para que nuevas personas inicien un chat contigo.", + "tribute-to-talk-learn-more-2": "Cualquier persona que no esté en tu lista de contactos deberá pagar, y tu puedes responder una vez que lo hayan hecho.", + "tribute-to-talk-learn-more-3": "Siempre puedes devolver el dinero, pero para asegurarte de que tus amigos puedan contactarte libremente, añádelos primero como contacto.", + "tribute-to-talk-paywall-learn-more-1": "Nuestro tiempo y atención son nuestros activos más valiosos. Tribute to Talk te permite contactar a nuevas personas a cambio de un pago de SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para iniciar un chat con alguien que tiene configurado tributos, simplemente paga el SNT requerido y serás agregado como un contacto.", + "tribute-to-talk-paywall-learn-more-3": "Si los conoces, puedes compartir tu perfil fuera de Status para ser agregado de forma gratuita.", + "tribute-to-talk-pending": "Tributo pendiente de confirmación", + "tribute-to-talk-pending-note": "La transacción de tributo está pendiente de confirmación en la red. Puedes verificar el status en el historial de transacciones", + "tribute-to-talk-removing-note": "Eliminar Tribute to Talk permitirá que nuevas personas inicien un chat sin enviar SNT. Requiere que se realice una transacción.", + "tribute-to-talk-set-snt-amount": "Establece la cantidad de SNT requerida para que nuevas personas inicien un chat", + "tribute-to-talk-signing": "Esperando para firmar la transacción", + "tribute-to-talk-transaction-failed-note": "La transacción ha fallado y tu configuración de Tribute to Talk no ha cambiado", + "tribute-to-talk-tribute-received1": "El tributo fue recibido. Tú y", + "tribute-to-talk-tribute-received2": "ahora son contactos y pueden chatear de forma segura entre sí.", + "tribute-to-talk-you-require-snt": "Se necesita SNT para que las personas nuevas inicien un chat.", + "try-again": "Inténtalo de nuevo", + "try-keeping-the-card-still": "Intenta mantener la tarjeta quieta", + "turn-nfc-description": "NFC está deshabilitado en su dispositivo. Puedes habilitarlo en la configuración", + "turn-nfc-on": "activar nfc", + "two-minutes": "dos minutos", + "tx-fail-description1": "Es probable que esta transacción falle. Firme bajo su propio riesgo utilizando una tarifa de red personalizada.", + "tx-fail-description2": "Es probable que esta transacción falle. Establezca una tarifa de red personalizada para firmar bajo su propio riesgo.", + "type": "Tipo", + "type-a-message": "Mensaje", + "ulc-enabled": "ULC habilitado", + "unable-to-fetch": "No es posible recuperar el historial de chat", + "unable-to-read-this-code": "No se puede leer este código", + "unable-to-send-messages": "No es posible enviar o recibir mensajes", + "unblock": "Desbloquear", + "unblock-contact": "Desbloquear este usuario", + "undo": "Deshacer", + "unknown-status-go-error": "Error de status-go desconocido", + "unlimited": "Ilimitado", + "unlock": "Desbloquear", + "unmute": "Activar sonido", + "unmute-chat": "Dejar de silenciar chat", + "unmute-community": "Dejar de silenciar comunidad", + "unpair-card": "Desvincular tarjeta", + "unpair-card-confirmation": "Esta operación desvinculará la tarjeta del dispositivo actual. Requiere autorización del código de acceso de 6 dígitos. ¿Quieres continuar?", + "unpair-keycard": "Desemparejar la Keycard de este teléfono", + "unpair-keycard-warning": "El código de emparejamiento\/PUK y el PIN no cambian", + "unpaired-keycard-text": "La Keycard que tocaste no está asociada con este teléfono", + "unpaired-keycard-title": "Parece que tu tarjeta ha sido desvinculada", + "unpin": "Desanclar", + "unpin-from-channel": "Desanclar del canal", + "unpin-from-chat": "Desanclar del chat", + "untrustworthy": "No confiable", + "update": "Actualizar", + "update-to-listen-audio": "¡Actualizá a la última versión para escuchar un mensaje de audio acá!", + "update-to-see-image": "¡Actualizá a la última versión para ver una buena imagen acá!", + "update-to-see-sticker": "¡Actualizá a la última versión para ver un lindo sticker acá!", + "updates-to-tos": "Actualizaciones de las Condiciones de Uso", + "updates-to-tos-desc": "Antes de continuar, por favor, revise las Condiciones de Uso y confirme que asume toda la responsabilidad por el uso de la aplicación.", + "url": "URL", + "usd-currency": "Dólar estadounidense", + "use-as-profile-picture": "Usar como foto de perfil", + "use-valid-contact-code": "Por favor, ingresa o escanea una clave de contacto o nombre de usuario válido", + "validation-amount-invalid-number": "La cantidad no es un número válido", + "validation-amount-is-too-precise": "La cantidad es muy precisa. La cantidad máxima de decimales es {{decimals}}.", + "verified-community": "✓ Comunidad verificada", + "version": "Versión de la app", + "view": "Ver", + "view-community-rules": "Ver Reglas de Comunidad", + "view-cryptokitties": "Ver en CryptoKitties", + "view-cryptostrikers": "Ver en CryptoStrikers", + "view-data": "Ver datos", + "view-details": "Ver detalles", + "view-etheremon": "Ver en Etheremon", + "view-gitcoin": "Ver en Gitcoin", + "view-members": "Ver miembros", + "view-on-opensea": "Ver en OpenSea", + "view-pinned-messages": "Ver mensajes anclados", + "view-profile": "Ver perfil", + "view-public-dashboard": "Ver panel público", + "view-rules": "Ver reglas", + "view-signing": "Ver la frase de firma", + "view-superrare": "Ver en SuperRare", + "vote-to-feature": "Votar para destacar esta comunidad", + "waiting-for-wifi": "Sin Wi-Fi, la sincronización de mensajes está deshabilitada.", + "waiting-for-wifi-change": "Ajustes", + "waiting-to-sign": "Esperando para firmar la transacción...", + "waiting-wi-fi": "Esperando Wi-Fi…", + "waku-bloom-filter-mode": "Modo de filtro Waku bloom", + "wakuv2-change-nodes": "¿Estás seguro de que quieres cambiar los nodos de Wakuv2?", + "wakuv2-node-format": "\/ip4\/{nodo-ip}\/tcp\/{puerto}\/p2p\/{id}", + "wakuv2-settings": "Ajustes de Waku v2", + "wallet": "Billetera", + "wallet-address": "Dirección de la billetera", + "wallet-asset": "Activo", + "wallet-assets": "Activos", + "wallet-backup-recovery-title": "Respalda tu frase semilla", + "wallet-choose-recipient": "Elegir destinatario", + "wallet-collectibles": "Coleccionables", + "wallet-insufficient-funds": "Fondos insuficientes", + "wallet-insufficient-gas": "No hay suficiente ETH para el gas", + "wallet-invalid-address": "Dirección inválida: \n {{data}}", + "wallet-invalid-address-checksum": "Error en la dirección: \n {{data}}", + "wallet-invalid-chain-id": "La red no coincide: \n {{data}} pero la cadena actual es {{chain}}", + "wallet-key-content": "Una dirección hexadecimal de 64 caracteres basada en el estándar Ethereum y que comienza con 0x. De cara al público, tu clave de billetera se comparte con otros cuando deseas recibir fondos. También se conoce como \"dirección de Ethereum\" o \"dirección de billetera\".", + "wallet-key-title": "Dirección de la cuenta", + "wallet-manage-accounts": "Gestionar cuentas", + "wallet-manage-assets": "Administrar activos", + "wallet-request": "Solicitud", + "wallet-send": "Enviar", + "wallet-send-min-units": "Mínimo 21000 unidades", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Ajustes de billetera", + "wallet-total-value": "Valor total", + "wallet-transaction-total-fee": "Costo total", + "wants-to-access-profile": "quiere acceder a tu perfil", + "warning": "Advertencia", + "warning-message": "Lo sentimos, limitamos el envío de varios mensajes en rápida sucesión para evitar el spam. Por favor, inténtalo de nuevo en un momento.", + "warning-sending-to-contract-descr": "La dirección que ingresó es un contrato inteligente, enviar fondos a esta dirección puede resultar en la pérdida de fondos. Para interactuar con una DApp, abra la DApp en el navegador de Status.", + "watch-only": "Sólo para ver", + "wc-brand-guide": "Orientación sobre el uso de identidad de marca como marcas registradas y logotipos", + "wc-disclaimer": "Aclaraciones (incluyendo proveedores externos), garantías y liberaciones legales", + "wc-dispute": "Disposiciones sobre solución de controversias", + "wc-how-to-use-status-app": "Cómo utilizar la app Status, incluyendo privacidad y seguridad", + "wc-new-tos-based-on-principles-prefix": "Nuevas Condiciones de Uso diseñadas sobre la base de nuestro", + "web-view-error": "No se puede cargar la página", + "websites": "Sitios web", + "webview-camera-permission-requests": "Solicitudes de permisos de la cámara Webview", + "webview-camera-permission-requests-subtitle": "Cuando está habilitado, los sitios web y las dapps pueden solicitar el uso de su cámara", + "welcome-blank-community-message": "Tus comunidades aparecerán aquí.", + "welcome-blank-message": "Tus chats aparecerán aquí. Para iniciar nuevos chats, presiona el botón ⊕", + "welcome-community-blank-message": "Sus canales aparecerán aquí. Para crear un nuevo canal, haz clic en el botón ⊕ y selecciona \"Crear un canal\"", + "welcome-community-blank-message-edit-chats": "Tus canales aparecerán aquí. Para crear un nuevo canal, vuelve a la pantalla de la comunidad, haz clic en el botón ⊕ y selecciona \"Crear un canal\"", + "welcome-screen-text": "¡Configura tu billetera, invita a amigos a chatear \n y busca dapps populares!", + "welcome-to-status": "¡Bienvenidx a Status!", + "welcome-to-status-description": "Configura tu cripto billetera, invita a tus amigos a chatear y navegar apps descentralizadas", + "what-changed": "Lo que cambió", + "what-is-shared": "Qué es compartido", + "whats-on-your-mind": "Lo que tienes en mente...", + "whats-trending": "Mira lo que está de moda", + "word-count": "Número de palabras", + "word-n": "Palabra #{{number}}", + "word-n-description": "Para comprobar si has realizado una copia de seguridad de la frase semilla correctamente, escribe arriba la palabra #{{number}}.", + "words-n": { + "one": "1 palabra", + "other": "{{count}} palabras" + }, + "write-down-and-store-securely": "Escribe los códigos\n y guárdalos de forma segura", + "wrong-address": "Dirección incorrecta", + "wrong-card": "Tarjeta equivocada", + "wrong-card-text": "Haz tocado una tarjeta que no corresponde a las llaves seleccionadas", + "wrong-contract": "Contrato incorrecto", + "wrong-keycard-text": "La Keycard que tocaste no está asociada con este teléfono", + "wrong-keycard-title": "Parece que has hecho tapping \nuna keycard incorrecta", + "wrong-password": "Contraseña incorrecta", + "wrong-word": "Palabra incorrecta", + "yes": "Sí", + "you": "tú", + "you-already-have-an-asset": "Ya tienes un activo {{value}}", + "you-are-all-set": "¡Estás listo!", + "you-are-all-set-description": "Ahora, si pierdes tu teléfono, puedes acceder a tus fondos y llave de chat usando la frase semilla", + "you-can-change-account": "Puedes cambiar el nombre y el color de la cuenta a lo que deseas", + "you-can-choose-preview-websites": "Puede elegir cuál de los siguientes sitios web puede previsualizar el enlace de las descripciones e imágenes en los chats", + "you-can-fetch": "Puedes recuperar el historial de chat", + "you-dont-have-contacts": "Todavía no tenés ningún contacto.", + "you-dont-have-contacts-invite-friends": "Aún no tienes contactos.\nInvita a tus amigos a empezar a chatear.", + "you-dont-have-stickers": "Todavía no tienes stickers", + "you-will-need-this-code": "Necesitarás este código para abrir Status y firmar transacciones", + "you-will-start-from-scratch": "Comenzarás desde cero con un nuevo set de claves", + "your-card-is-frozen": "Tu Keycard está congelada. Restablece el acceso a la tarjeta", + "your-contact-code": "Conceder acceso autoriza a esta DApp a obtener tu clave de chat", + "your-data-belongs-to-you": "Si pierdes tu frase semilla, pierdes tus datos y fondos", + "your-data-belongs-to-you-description": "Si pierdes acceso, por ejemplo al perder tu teléfono, solo puedes acceder a tus llaves con tu frase semilla. Nadie aparte de ti tiene tu frase semilla. Anótala. Mantenla segura.", + "your-keys": "Tus claves", + "your-price-limit": "Tu límite de precio", + "your-recovery-phrase": "Tu frase semilla", + "your-recovery-phrase-description": "Esta es tu frase semilla. La usas para comprobar que esta es tu billetera. ¡Sólo la verás una vez! Escríbela en un papel y guárdala en un lugar seguro. La necesitarás si pierdes o reinstalas tu billetera.", + "your-tip-limit": "Tu límite de propina", + "youre-on-mobile-network": "Estás en una red móvil" +} diff --git a/translations/es_AR.json b/translations/es_AR.json new file mode 100644 index 00000000000..49610d3a2d9 --- /dev/null +++ b/translations/es_AR.json @@ -0,0 +1,1506 @@ +{ + "You": "Tú", + "about-app": "Acerca de", + "about-key-storage-content": "Status nunca accederá a tu clave privada. Asegúrate de respaldar tu frase semilla. Si pierdes tu teléfono es la única manera de acceder a tus claves.", + "about-key-storage-title": "Acerca del almacenamiento de claves", + "about-names-content": "¡Nadie puede pretender ser tú! Eres anónimo por defecto y nunca tienes que revelar tu nombre real. Puedes registrar un nombre personalizado por una pequeña tarifa.", + "about-names-title": "Los nombres no se pueden cambiar", + "accept": "Aceptar", + "accept-and-share-address": "Aceptar y compartir dirección", + "access-existing-keys": "Ingresar claves existentes", + "access-key": "Clave de acceso", + "account-added": "Cuenta agregada", + "account-color": "Color de la cuenta", + "account-content": "Puedes comparar las cuentas en Status con las cuentas bancarias. Al igual que una cuenta bancaria, una cuenta suele tener una dirección y un saldo; se utiliza esta cuenta para realizar transacciones con Ethereum. Puedes tener varias cuentas en tu billetera. Todas accedidas en Status.", + "account-exists-title": "Cuenta ya existe", + "account-name": "Nombre de la cuenta", + "account-settings": "Ajustes de la cuenta", + "account-title": "Cuenta", + "accounts": "Cuentas", + "actions": "Acciones", + "active-online": "En línea", + "active-unknown": "Desconocido", + "add": "Agregar", + "add-a-watch-account": "Agregar una dirección de solo observación", + "add-account": "Agregar una cuenta", + "add-account-description": "Puedes importar cualquier tipo de cuenta de Ethereum para agregarla a tu billetera de Status", + "add-account-incorrect-password": "La contraseña parece ser incorrecta. Ingresa la contraseña que usas para desbloquear la app.", + "add-an-account": "Agregar una cuenta", + "add-bootnode": "Agregar bootnode", + "add-contact": "Agregar contacto", + "add-custom-token": "Agregar un token personalizado", + "add-favourite": "Agregar favorito", + "add-mailserver": "Agregar nodo de Status", + "add-members": "Agregar miembros", + "add-network": "Agregar red", + "add-new-contact": "Agregar nuevo contacto", + "add-nickname": "Agregar un apodo (opcional)", + "add-private-key-account": "Ingresa una cuenta de una llave privada", + "add-seed-account": "Agrega una cuenta con una frase semilla", + "add-to-contacts": "Agregar a contactos", + "add-to-contacts-text": "Al agregar un usuario a tu lista de contactos, compartes la dirección de tu billetera", + "add-to-favourites": "Agregar a favoritos", + "add-watch-account": "Agrega una cuenta sólo para mirar", + "address": "Dirección", + "address-or-ens-name": "Dirección o nombre ENS", + "address-received": "Dirección recibida", + "address-request-accepted": "Solicitud de dirección aceptada", + "address-requested": "Dirección solicitada", + "advanced": "Avanzado", + "advanced-settings": "Ajustes avanzados", + "advertiser-description": "Descubriste Status gracias a un socio nuestro. ¿Podemos chequear tu IP para poder recompensarlo? Esta información no será usada para nada más, y será removida completamente después de 7 días", + "advertiser-starter-pack-accept": "Aceptar", + "advertiser-starter-pack-decline": "Rechazar", + "advertiser-starter-pack-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "advertiser-starter-pack-title": "Paquete de Bienvenida", + "advertiser-title": "Privacidad por defecto", + "agree-by-continuing": "Al continuar, aceptas \n nuestras", + "all": "Todos", + "allow": "Permitir", + "allow-mention-notifications": "Mostrar @ menciones", + "allowing-authorizes-this-dapp": "Permitir autoriza a esta DApp a recuperar la dirección de tu billetera y habilitar Web3", + "already-have-asset": "Ya tienes este activo", + "amount": "Cantidad", + "appearance": "Apariencia", + "apply": "Aplicar", + "are-you-sure": "¿Estás seguro\/a?", + "are-you-sure-description": "No podrás volver a ver toda la frase semilla de nuevo", + "are-you-sure-to-cancel": "¿Estas seguro que quieres cancelar?", + "are-you-sure?": "¿Estás seguro\/a?", + "ask-in-status": "Haz una pregunta o reporta un error", + "at": "en", + "attribution-received": "{{attrib}} de {{max}} bonos recibidos", + "audio": "Audio", + "audio-recorder": "Grabadora", + "audio-recorder-error": "Error de la grabadora", + "audio-recorder-max-ms-reached": "Tiempo máximo de grabación alcanzado", + "audio-recorder-permissions-error": "Tenés que dar permiso para enviar mensajes de audio", + "authorize": "Autorizar", + "available": "Disponible", + "available-participants": { + "one": "Puedes seleccionar un participante más", + "other": "Puedes seleccionar {{count}} participantes más" + }, + "back": "Atrás", + "back-up": "Respaldo", + "back-up-seed-phrase": "Respalda la frase semilla", + "back-up-your-seed-phrase": "Respalda tu frase semilla", + "backup-disabled": "Deshabilitado", + "backup-recovery-phrase": "Respalda la frase semilla", + "balance": "Saldo", + "begin-set-up": "empezar la configuración", + "biometric-auth-android-sensor-desc": "Sensor táctil", + "biometric-auth-android-sensor-error-desc": "Fallido", + "biometric-auth-android-title": "Autenticación requerida", + "biometric-auth-confirm-logout": "Volver a iniciar sesión", + "biometric-auth-confirm-message": "Para continuar, la autenticación biométrica es necesaria, si no es posible inicia sesión de nuevo usando la contraseña de las llaves.", + "biometric-auth-confirm-title": "¡Debes autenticarte!", + "biometric-auth-confirm-try-again": "Inténtalo de nuevo", + "biometric-auth-error": "No se puede realizar la autenticación biométrica ({{code}})", + "biometric-auth-login-error-title": "Error de autenticación biométrica", + "biometric-auth-login-ios-fallback-label": "Ingresa la contraseña", + "biometric-auth-reason-login": "Iniciar sesión en Status", + "biometric-auth-reason-verify": "Verificar autenticación", + "biometric-disable-bioauth": "deshabilitar {{bio-type-label}}", + "biometric-disable-password-description": "Si deshabilitas esto, también ", + "biometric-disable-password-title": "Deshabilitar guardar contraseña", + "biometric-enable": "Si no deseas ingresar tu contraseña cada vez para acceder a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-enable-button": "Habilitar {{bio-type-label}}", + "biometric-enable-keycard": "Si no deseas usar tu Keycard cada vez para acceder a la app, habilita el inicio de sesión {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Huella dactilar", + "biometric-secure-with": "Asegurar con {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "blank-keycard-text": "Puedes continuar con tu keycard una vez que hayas generado tus claves y tu nombre", + "blank-keycard-title": "Parece que has hecho tapping \nuna keycard en blanco", + "block": "Bloque", + "block-contact": "Bloquear este usuario", + "block-contact-details": "El bloqueo eliminará los mensajes anteriores de este usuario y evitará que otros nuevos lleguen a ti", + "blocked-users": "Usuarios bloqueados", + "bootnode-address": "Dirección de bootnode", + "bootnode-details": "Detalles de Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes habilitados", + "bootnodes-settings": "Ajustes de bootnode", + "browsed-websites": "El historial del navegador aparecerá aquí", + "browser": "Navegador", + "browser-not-secure": "¡La conexión no es segura! No firmes transacciones o envíes datos personales en este sitio.", + "browser-secure": "La conexión es segura. Asegúrate de que realmente confías en este sitio antes de firmar transacciones o ingresar datos personales.", + "browsers": "Navegadores", + "browsing-cancel": "Cancelar", + "browsing-open-in-android-web-browser": "Abrir en Android", + "browsing-open-in-ios-web-browser": "Abrir en iOS", + "browsing-open-in-status": "Abrir en Status", + "browsing-site-blocked-description1": "Hemos detectado posibles actividades maliciosas desde esta dirección. Para protegerte a ti y a tu billetera, prevenimos la navegación.\n\nSi crees que esto es un error, haznoslo saber en la", + "browsing-site-blocked-description2": "chat público", + "browsing-site-blocked-go-back": "Regresa", + "browsing-site-blocked-title": "Este sitio está bloqueado", + "browsing-title": "Navegar", + "bug-report": "Reportar un error", + "buy-crypto": "Comprar criptomonedas", + "buy-crypto-choose-a-service": "Elige un servicio que quieras usar para comprar criptomonedas", + "buy-crypto-description": "Encuentre una dapp para comprar cripto ahora", + "buy-crypto-leaving": "Estás saliendo de Status y entrando en un sitio web de terceros para completar tu compra", + "buy-crypto-title": "Parece que tu billetera está vacía", + "camera-access-error": "Para permitir el acceso a la cámara, porfavor, ve a ajustes de sistema y asegúrate que este seleccionada la opción Status > Cámara", + "can-not-add-yourself": "Ese eres tú, para iniciar un chat elige a alguien más", + "can-send-messages": "Puedes enviar y recibir mensajes nuevos", + "cancel": "Cancelar", + "cancel-keycard-setup": "Cancelar la configuración de Keycard", + "cancelling": "Cancelando", + "cannot-read-card": "No puede leer la tarjeta.\nPor favor, mantenla en la parte posterior de tu teléfono", + "cannot-use-default-pin": "No está permitido el código de acceso 000000. \nPor favor utiliza otro número", + "cant-open-public-chat": "No se puede abrir el chat público", + "cant-report-bug": "No puedo reportar un error", + "card-is-blank": "Esta tarjeta esta en blanco", + "card-reseted": "La tarjeta ha sido reseteada", + "card-unpaired": "La tarjeta se ha desvinculado del dispositivo actual", + "category": "Categoría", + "change-fleet": "Cambiar fleet a {{fleet}}", + "change-logging-enabled": "¿Está seguro\/a de que deseas {{enable}} iniciar sesión?", + "change-passcode": "Cambiar código de acceso", + "change-password": "Cambiar contraseña", + "change-pin": "Cambiar el código de acceso de 6 dígitos", + "change-tip": "Cambiar propina", + "changed-amount-warning": "La cantidad se cambió de {{old}} a {{new}}", + "changed-asset-warning": "El activo se cambió de {{old}} a {{new}}.", + "chaos-mode": "Modo caos", + "chaos-unicorn-day": "Día del Unicornio del Caos", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chatea y realiza transacciones privadas con amigos", + "chat-is-a-contact": "Contacto", + "chat-is-not-a-contact": "No es contacto", + "chat-key": "Clave de chat", + "chat-key-content": "Los mensajes en el protocolo de chat de Status se envían y reciben utilizando claves de encriptación. La clave pública de chat es una cadena de caracteres que compartes con otros para que puedan enviarte mensajes en Status.", + "chat-key-title": "Clave de chat", + "chat-link-previews": "Vistas previas de enlaces de chat", + "chat-name": "Nombre del chat", + "chat-name-content": "Tres palabras aleatorias, derivadas algorítmicamente de tu clave de chat y utilizadas como tu alias predeterminado en el chat. Los nombres de los chats son completamente únicos; ningún otro usuario puede tener las mismas tres palabras.", + "chat-name-title": "Nombre del chat", + "chat-notification-preferences": "Configuración de las notificaciones", + "chat-settings": "Ajustes de chat", + "chats": "Chats", + "check-on-opensea": "Comprobar en opensea", + "check-your-recovery-phrase": "Comprueba tu frase semilla", + "choose-actions": "Elige acciones", + "choose-authentication-method": "Elije un método de autenticación", + "choose-new-location-for-keystore": "Seleccione una nueva ubicación para guardar su archivo keystore", + "choose-storage": "Elegir almacenamiento", + "clear": "Limpiar", + "clear-all": "Borrar todo", + "clear-history": "Borrar historial", + "clear-history-action": "Limpiar", + "clear-history-confirmation": "¿Borrar historial?", + "clear-history-confirmation-content": "¿Seguro que quieres limpiar este historial de chat?", + "clear-history-title": "¿Borrar historial?", + "close": "Cerrar", + "close-all": "Cerrar todo", + "close-app-button": "Confirmar", + "close-app-content": "La aplicación se detendrá y cerrará. Cuando la vuelvas a abrir, se utilizará la red seleccionada", + "close-app-title": "¡Advertencia!", + "command-button-send": "Enviar", + "communities": "Comunidades", + "communities-alpha": "Comunidades (alfa)", + "communities-verified": "✓ Comunidad de Status Verificada", + "community-color": "Color de la comunidad", + "community-color-placeholder": "Elige un color", + "community-edit-title": "Editar comunidad", + "community-image-pick": "Elige una imagen", + "community-image-remove": "Remover", + "community-image-take": "Toma una foto", + "community-invite-title": "Invitá", + "community-key": "Clave privada de la comunidad", + "community-key-placeholder": "Escriba su clave privada de la comunidad", + "community-members": { + "one": "miembro", + "other": "miembros" + }, + "community-members-title": "Miembros", + "community-message-preview": "Invitación para unirse a {{community-name}}", + "community-private-key": "Clave privada de la comunidad", + "community-requests-to-join-title": "Solicitudes de membresía", + "community-roles": "Roles", + "community-share-title": "Compartir", + "community-thumbnail-image": "Imagen en miniatura", + "community-thumbnail-upload": "Subir", + "complete-hardwallet-setup": "Esta tarjeta ahora está vinculada. La necesitarás para firmar transacciones y desbloquear tus llaves", + "completed": "Completado", + "confirm": "Confirmar", + "confirm-password-placeholder": "Confirmá tu contraseña...", + "confirmation-request": "Solicitud de confirmación", + "confirmations": "Confirmaciones", + "confirmations-helper-text": "Cuando la transacción tenga 12 confirmaciones, puede considerarla resuelta.", + "connect": "Conectar", + "connect-mailserver-content": "¿Conectar con {{name}}?", + "connect-wallet": "Conectar billetera", + "connected": "Conectado", + "connected-to": "Conectado a", + "connecting": "Conectando...", + "connecting-requires-login": "Para conectarse a otra red es necesario iniciar sesión", + "connection-status": "Estado de conexión", + "connection-with-the-card-lost": "La conexión con la tarjeta\nse ha perdido", + "connection-with-the-card-lost-setup-text": "Para reanudar la configuración, manten la tarjeta en\n la parte trasera de tu teléfono y mantener la\n tarjeta en contacto con el teléfono", + "connection-with-the-card-lost-text": "Para proceder, manten la tarjeta en la parte posterior de tu teléfono", + "contact-code": "Clave de chat", + "contact-s": { + "one": "contacto", + "other": "contactos" + }, + "contacts": "Contactos", + "contacts-descr": "Tus contactos aparecerán aquí. Recibirá actualizaciones de estado de cualquier persona que agregue como contacto", + "contacts-empty": "Contactos con nombres ENS aparecerán aquí", + "continue": "Continuar", + "continue-anyway": "Continuar de todas maneras", + "contract-address": "Dirección del contrato", + "contract-interaction": "Interacción con el contrato", + "copy-info": "Copiar información", + "copy-qr": "Copiar código", + "copy-to-clipboard": "Copiar", + "copy-transaction-hash": "Copiar ID de transacción", + "cost-fee": "Costo\/Tarifa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Crear", + "create-a-pin": "Crear un código de acceso de 6 dígitos", + "create-channel": "Crear un canal", + "create-channel-title": "Nuevo canal", + "create-community": "Crear una comunidad", + "create-group-chat": "Crear chat grupal", + "create-multiaccount": "Generar llaves", + "create-new-key": "Obtener nuevas claves", + "create-pin": "Crea un código de acceso de 6 dígitos", + "create-pin-description": "Necesitarás tu tarjeta + este código de 6 dígitos para desbloquear Status y confirmar las transacciones", + "created-group-chat-description": "Creaste el grupo {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Moneda", + "currency-display-name-aed": "Dirham de los Emiratos Árabes Unidos", + "currency-display-name-afn": "Afgani afgano", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dólar australiano", + "currency-display-name-bbd": "Dólar de Barbados", + "currency-display-name-bdt": "Taka bangladeshí", + "currency-display-name-bgn": "Lev búlgaro", + "currency-display-name-bhd": "Dinar bahreiní", + "currency-display-name-bnd": "Dólar de Brunéi", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Real brasileño", + "currency-display-name-btn": "Ngultrum butanés", + "currency-display-name-cad": "Dólar canadiense", + "currency-display-name-chf": "Franco suizo", + "currency-display-name-clp": "Peso chileno", + "currency-display-name-cny": "Yuan chino", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Colón costarricense", + "currency-display-name-czk": "Corona checa", + "currency-display-name-dkk": "Corona danesa", + "currency-display-name-dop": "Peso de la República Dominicana", + "currency-display-name-egp": "Libra egipcia", + "currency-display-name-etb": "Birr etíope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Libra esterlina", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Cedi (Ghana)", + "currency-display-name-hkd": "Dólar de Hong Kong", + "currency-display-name-hrk": "Croacia Kuna", + "currency-display-name-huf": "Forinto húngaro", + "currency-display-name-idr": "Rupia Indonesia", + "currency-display-name-ils": "Nuevo séquel (Israel)", + "currency-display-name-inr": "Rupia india", + "currency-display-name-isk": "Corona islandesa", + "currency-display-name-jmd": "Dólar jamaiquino", + "currency-display-name-jpy": "Yen japonés", + "currency-display-name-kes": "Chelín keniano", + "currency-display-name-krw": "Won surcoreano", + "currency-display-name-kwd": "Dinar kuwaití", + "currency-display-name-kzt": "Tenge kazajo", + "currency-display-name-lkr": "Rupia de Sri Lanka", + "currency-display-name-mad": "Dirham marroquí", + "currency-display-name-mdl": "Leu moldavo", + "currency-display-name-mur": "Rupia de Mauricio", + "currency-display-name-mwk": "Kwacha malauí", + "currency-display-name-mxn": "Peso mexicano", + "currency-display-name-myr": "Ringgit malayo", + "currency-display-name-mzn": "Metical mozambiqueño", + "currency-display-name-nad": "Dólar namibio", + "currency-display-name-ngn": "Naira (Nigeria)", + "currency-display-name-nok": "Corona noruega", + "currency-display-name-npr": "Rupia nepalí", + "currency-display-name-nzd": "Dólar neozelandés", + "currency-display-name-omr": "Rial omaní", + "currency-display-name-pen": "Sol peruano", + "currency-display-name-pgk": "Kina (Papúa Nueva Guinea)", + "currency-display-name-php": "Peso filipino", + "currency-display-name-pkr": "Rupia pakistaní", + "currency-display-name-pln": "Zloty de Polonia", + "currency-display-name-pyg": "Guaraní paraguayo", + "currency-display-name-qar": "Riyal qatarí", + "currency-display-name-ron": "Leu de Rumanía", + "currency-display-name-rsd": "Dinar serbio", + "currency-display-name-rub": "Rublo ruso", + "currency-display-name-sar": "Arabia Saudita Riyal", + "currency-display-name-sek": "Corona sueca", + "currency-display-name-sgd": "Dólar de Singapur", + "currency-display-name-thb": "Baht tailandés", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dólar de Trinidad y Tobago", + "currency-display-name-twd": "Nuevo dólar taiwanés", + "currency-display-name-tzs": "Chelín tanzano", + "currency-display-name-uah": "Grivna (Ucrania)", + "currency-display-name-ugx": "Chelín ugandés", + "currency-display-name-usd": "Dólar estadounidense", + "currency-display-name-uyu": "Peso uruguayo", + "currency-display-name-vef": "Bolívar venezolano", + "currency-display-name-vnd": "Dong vietnamita", + "currency-display-name-zar": "Rand sudafricano", + "current": "Actual", + "current-average-tip": "Propina promedio actual", + "current-minimum-tip": "Propina mínima actual", + "current-network": "Red actual", + "current-pin": "Ingresa el código de acceso de 6 dígitos", + "current-pin-description": "Ingresa tu código de acceso de 6 dígitos para continuar", + "custom": "Personalizado", + "custom-networks": "Redes personalizadas", + "custom-node": "Estás utilizando un punto de conexión RPC personalizado. Es posible que el historial de transferencias locales esté incompleto.", + "custom-seed-phrase": "Frase semilla inválida", + "custom-seed-phrase-text-1": "Esta frase semilla no coincide con nuestro diccionario compatible. Revisa si hay palabras mal escritas.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Aceptar y Abrir", + "dapp-starter-pack-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "dapp-starter-pack-title": "Paquete de Bienvenida", + "dapp-would-like-to-connect-wallet": "quisiera conectarse a", + "dapps": "ÐApps", + "dapps-permissions": "Permisos de DApp", + "dark": "Oscuro", + "data": "Datos", + "data-syncing": "Sincronización de datos", + "database-reset-content": "Se han eliminado los chats, los contactos y la configuración. Podés usar tu cuenta con tu Keycard", + "database-reset-title": "Restablecer de la base de datos", + "database-reset-warning": "La base de datos se restablecerá. Se borrarán los chats, los contactos y la configuración", + "datetime-ago": "hace", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "día", + "other": "días" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "hoy", + "datetime-yesterday": "ayer", + "decimals": "Decimales", + "decline": "Rechazar", + "decryption-failed-content": "Ocurrió un error desencriptando tus datos. Es posible que tengas que generar unas nuevas llaves y borrar tus datos antiguos pulsando \"Aplicar\", o haz clic en \"Cancelar\" para volver a intentarlo", + "default": "Predeterminados", + "default-assets": "Por defecto ERC20 y ERC721", + "delete": "Eliminar", + "delete-account": "Borrar cuenta", + "delete-and-leave-group": "Eliminar y salir del grupo", + "delete-bootnode": "Eliminar bootnode", + "delete-bootnode-are-you-sure": "¿Seguro que quieres eliminar este bootnode?", + "delete-bootnode-title": "Eliminar bootnode", + "close-chat": "Eliminar chat", + "close-chat-confirmation": "¿Estás seguro de que quieres eliminar este chat?", + "delete-confirmation": "¿Eliminar?", + "delete-keys-keycard": "Borrar llaves de la Keycard", + "delete-mailserver": "Eliminar nodo de Status", + "delete-mailserver-are-you-sure": "¿Estás seguro de que deseas eliminar este nodo de Status?", + "delete-mailserver-title": "Eliminar nodo de Status", + "delete-message": "Eliminar mensaje", + "delete-my-account": "Borrar mi cuenta", + "delete-my-profile": "Eliminar mi perfil", + "delete-network-confirmation": "¿Seguro que quieres eliminar esta red?", + "delete-network-error": "Por favor, conéctate a una red diferente antes de eliminar esta", + "delete-network-title": "¿Eliminar red?", + "delete-profile": "Eliminar perfil", + "delete-profile-warning": "Advertencia: Si no tiene tu frase de semilla escrita, perderá el acceso a sus fondos después de eliminar su perfil", + "deny": "Negar", + "derivation-path": "Ruta de derivación", + "description": "Descripción", + "dev-mode": "Modo de desarrollo", + "dev-mode-settings": "Ajustes del modo de desarrollo", + "device-syncing": "Sincronización de dispositivos", + "devices": "Dispositivos", + "disable": "deshabilitar", + "disable-all": "Deshabilitar todo", + "disabled": "Deshabilitado", + "disconnected": "Chat sin conexión", + "discover": "Descubrir", + "dismiss": "Descartar", + "done": "Listo", + "dont-ask": "No me vuelvas a preguntar", + "edit": "Editar", + "edit-chats": "Editar chats", + "edit-community": "Editar comunidad", + "edit-favourite": "Editar favorito", + "edit-group": "Editar grupo", + "edit-profile": "Editar perfil", + "empty-chat-description": "No hay mensajes \nen este chat todavía", + "empty-chat-description-community": "Ha estado tranquilo aquí durante las últimas {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Cualquier mensaje que envíes aquí está encriptado y solo puedes leerlo tú y", + "empty-chat-description-public": "Ha estado tranquilo aquí durante las últimas {{quiet-hours}}. Inicia la conversación o ", + "empty-chat-description-public-share-this": "comparte este chat", + "empty-keycard-required": "Requiere una Keycard vacía", + "empty-pending-invitations-descr": "Las personas que deseen unirse al grupo\na través de un enlace de invitación aparecerá aquí", + "empty-tab": "Pestaña vacía", + "enable": "Habilitar", + "enable-all": "Habilitar todos", + "enable-link-previews": "¿Habilitar vistas previas de enlaces en el chat?", + "encrypt-with-password": "Encriptar con contraseña", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Agregar nombre de usuario", + "ens-agree-to": "De acuerdo con", + "ens-chat-settings": "Ajustes de chat", + "ens-custom-domain": "Dominio personalizado", + "ens-custom-username-hints": "Escribe el nombre de usuario completo, incluido el dominio personalizado como username.domain.eth", + "ens-custom-username-taken": "El nombre de usuario no te pertenece :(", + "ens-deposit": "Depósito", + "ens-dismiss-message": "Haga clic para descartar", + "ens-displayed-with": "Tus mensajes se muestran a otros con", + "ens-get-name": "Obtén un nombre de usuario universal", + "ens-got-it": "Ok, lo tengo.", + "ens-locked": "Nombre de usuario bloqueado. No lo podrás liberar hasta el {{date}}", + "ens-name-content": "Alias personalizado para tu clave de chat que puedes registrar utilizando Ethereum Name Service. Los nombres ENS son nombres de usuario descentralizados.", + "ens-name-not-found": "No se puede resolver el nombre ENS", + "ens-name-title": "Nombre ENS", + "ens-network-restriction": "Solo disponible en Mainnet", + "ens-no-usernames": "No tienes ningún nombre de usuario conectado", + "ens-powered-by": "Propulsado por Ethereum Name Services", + "ens-primary-username": "Nombre de usuario principal", + "ens-register": "Registrar", + "ens-registration-failed": "Para registrar el nombre de usuario, por favor, intenta de nuevo.", + "ens-registration-failed-title": "La transacción ha fallado", + "ens-registration-failure": "Registro fallido", + "ens-registration-in-progress": "Registro en curso...", + "ens-release-username": "Liberar nombre de usuario", + "ens-remove-hints": "La eliminación separará el nombre de usuario de tu clave.", + "ens-remove-username": "Eliminar nombre de usuario", + "ens-saved": "ahora está conectado con tu clave de chat y se puede usar en Status.", + "ens-saved-title": "Nombre de usuario agregado", + "ens-show-username": "Mostrar mi nombre de usuario ENS en los chats", + "ens-terms-header": "Términos de registro de nombre", + "ens-terms-point-1": "Los fondos se depositan por 1 año. Tu SNT se bloqueará, pero no se gastará.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Registro ENS).", + "ens-terms-point-2": "Después de 1 año, puedes liberar el nombre y recuperar tu depósito, o no tomar ninguna acción para mantener el nombre.", + "ens-terms-point-3": "Si los términos del contrato cambian – por ejemplo, Status realiza actualizaciones del contrato – el usuario tiene derecho a liberar el nombre de usuario independientemente del tiempo retenido.", + "ens-terms-point-4": "El controlador del contrato no puede acceder a tus fondos depositados. Sólo pueden ser devueltos a la dirección que los envió.", + "ens-terms-point-5": "Tu(s) dirección(es) se asociará(n) públicamente con tu nombre ENS.", + "ens-terms-point-6": "Los nombres de usuario se crean como nodos de subdominio de stateofus.eth y están sujetos a los términos del contrato inteligente de ENS.", + "ens-terms-point-7": "Autorizas el contrato para transferir SNT en tu nombre. Esto solo puede ocurrir cuando apruebas una transacción para autorizar la transferencia.", + "ens-terms-point-8": "Estos términos están garantizados por la lógica del contrato inteligente en las direcciones:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Términos de registro de nombre.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Transacción pendiente...", + "ens-understand": "Entiendo que la dirección de mi billetera estará conectada públicamente a mi nombre de usuario.", + "ens-username": "Nombre de usuario ENS", + "ens-username-already-added": "El nombre de usuario ya está conectado con tu clave de chat y se puede usar dentro de Status.", + "ens-username-available": "✓ ¡Nombre de usuario disponible!", + "ens-username-connected": "Este nombre de usuario es de tu propiedad y está conectado con tu clave de chat.", + "ens-username-connected-continue": "Continuar configurando `Mostrar mi nombre de usuario ENS en los chats`.", + "ens-username-connected-with-different-key": "Continuar requerirá una transacción para conectar el nombre de usuario con tu clave de chat actual.", + "ens-username-connection-confirmation": "{{username}} se conectará una vez que se complete la transacción.", + "ens-username-hints": "Al menos 4 caracteres. Letras latinas, números y sólo minúsculas.", + "ens-username-invalid": "Sólo letras y números.", + "ens-username-owned": "✓ El nombre de usuario es tuyo.", + "ens-username-owned-continue": "Continuar conectará este nombre de usuario con tu clave de chat.", + "ens-username-registration-confirmation": "¡Bien! Eres el propietario de {{username}} una vez completada la transacción.", + "ens-username-taken": "Nombre de usuario ya está tomado :(", + "ens-username-you-can-follow-progress": "Puedes seguir el progreso en la sección de Historial de transacciones de tu billetera.", + "ens-usernames": "Nombres de usuario ENS", + "ens-usernames-details": "Registra un nombre de usuario universal para ser reconocido fácilmente por otros usuarios", + "ens-want-custom-domain": "Tengo un nombre en otro dominio", + "ens-want-domain": "Quiero un dominio stateofus.eth", + "ens-welcome-hints": "Los nombres ENS transforman esas locas direcciones largas en nombres de usuario únicos.", + "ens-welcome-point-customize": "Un nombre ENS puede reemplazar tu nombre aleatorio de 3 palabras en el chat. Sea @yourname en lugar de {{name}}.", + "ens-welcome-point-customize-title": "Personaliza tu nombre de chat", + "ens-welcome-point-receive": "Otros pueden enviarte fondos desde el chat en un simple paso.", + "ens-welcome-point-receive-title": "Recibe transacciones en el chat", + "ens-welcome-point-register": "Regístrate una vez para mantener el nombre para siempre. Después de 1 año, podrás liberar el nombre y recuperar tus SNT.", + "ens-welcome-point-register-title": "10 SNT a registrar", + "ens-welcome-point-simplify": "Puedes recibir fondos a tu ENS fácil de compartir, en vez de tu hash hexadecimal (0x...)", + "ens-welcome-point-simplify-title": "Simplifica tu dirección ETH", + "ens-welcome-point-verify": "Puedes verificar y agregar cualquier nombre de usuario que poseas en los siguientes pasos.", + "ens-welcome-point-verify-title": "¿Ya tienes un nombre de usuario?", + "ens-your-username": "Tu nombre de usuario", + "ens-your-usernames": "Tus nombres de usuario", + "ens-your-your-name": "Tu nombre ENS", + "enter-12-words": "Ingresa las 12 palabras de tu frase semilla, separadas por espacios", + "enter-a-private-key": "Ingresa una clave privada", + "enter-a-seed-phrase": "Ingresa una frase semilla", + "enter-address": "Ingresar dirección", + "enter-contact-code": "Ingresa el nombre de usuario ENS o la clave de chat", + "enter-pair-code": "Ingrese tu código de vinculación", + "enter-pair-code-description": "Se te mostró el código de vinculación durante la configuración de Keycard", + "enter-password": "Ingresa la contraseña", + "enter-pin": "Ingresa el código de acceso de 6 dígitos", + "enter-puk-code": "Ingresa el código PUK", + "enter-puk-code-description": "El código de acceso de 6 dígitos ha sido bloqueado. \n Ingresa el código PUK para desbloquear el código de acceso.", + "enter-recipient-address-or-username": "Ingresá la dirección o nombre de usuario del destinatario", + "enter-seed-phrase": "Ingresa la frase semilla", + "enter-url": "Ingresa una URL", + "enter-user-pk": "Ingrese la clave pública del usuario", + "enter-watch-account-address": "Escanea un código QR \n o \n ingrese la dirección para observar", + "enter-word": "Ingresar palabra", + "enter-your-code": "Ingresa tu código de acceso de 6 dígitos", + "enter-your-password": "Ingresa tu contraseña", + "error": "Error", + "error-unable-to-get-balance": "No se puede obtener el saldo", + "error-unable-to-get-prices": "Error de conversión de moneda. Refresca tu pantalla para intentarlo de nuevo.", + "error-unable-to-get-token-balance": "No se puede obtener el saldo del token", + "errors": "Errores", + "eth": "ETH", + "ethereum-account": "Cuenta Ethereum", + "ethereum-address": "Dirección de Ethereum", + "ethereum-node-started-incorrectly-description": "El nodo Ethereum se inició con una configuración incorrecta, la aplicación se detendrá para recuperarse de esa condición. ID de red configurado = {{network-id}}, actual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "El nodo Ethereum se inició incorrectamente", + "etherscan-lookup": "Ver en Etherscan", + "everyone": "Todos", + "export-account": "Exportar la cuenta", + "export-key": "Exportar llave privada", + "external-storage-denied": "Se niega el acceso al almacenamiento externo", + "failed": "Fallido", + "faq": "Preguntas frecuentes", + "fast": "Rápido", + "favourite": "Favorito", + "favourite-description": "Tus sitios web favoritos aparecerán aquí", + "favourites": "Favoritos", + "favourites-empty": "Las direcciones agregadas a favoritos aparecerán aquí", + "fetch-messages": "↓ Recuperar mensajes", + "fetch-timeline": "↓ Obtener", + "find": "Encontrar", + "finish": "Finalizar", + "finishing-card-setup": "Finalizando la configuración de la tarjeta", + "fleet": "Fleet", + "fleet-settings": "Ajustes de fleet", + "follow": "Seguir", + "follow-your-interests": "Entra en un chat público y conoce gente nueva", + "free": "↓ Gratis", + "from": "De", + "gas-limit": "Límite de gas", + "gas-price": "Precio del gas", + "gas-used": "Gas utilizado", + "generate-a-key": "Generar claves", + "generate-a-new-account": "Genera una Cuenta", + "generate-a-new-key": "Generar una nueva clave", + "generate-account": "Generar claves", + "generate-an-account": "Genera una Cuenta", + "generate-new-key": "Generar claves", + "generating-codes-for-pairing": "> Descargando el software del producto a la tarjeta \n > Generando códigos de desbloqueo y vinculación", + "generating-keys": "Generando claves...", + "generating-mnemonic": "Generando frase semilla", + "get-a-keycard": "Obtenga una Keycard", + "get-started": "Iniciar", + "get-status-at": "Obtén Status en http:\/\/status.im\/es", + "get-stickers": "Obtén Stickers", + "give-a-short-description": "Dar una breve descripción", + "give-a-short-description-community": "Dale una breve descripción", + "give-permissions-camera": "Da permiso\npara acceder a la cámara", + "glossary": "Glosario", + "go-to-settings": "Ir a Configuración", + "got-it": "Entendido", + "grant-face-id-permissions": "Para conceder el permiso de Face ID requerido, ve a los ajustes de tu sistema y asegúrate de que esté seleccionado Status > Face ID", + "group-chat": "Chat grupal", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** se ha convertido en admin", + "group-chat-all-contacts-invited": "Todos tus contactos ya están en el grupo.", + "group-chat-created": "**{{member}}** creó el grupo **{{name}}**", + "group-chat-decline-invitation": "Rechazar invitación", + "group-chat-member-added": "**{{member}}** ha sido invitado", + "group-chat-member-joined": "**{{member}}** se ha unido al grupo", + "group-chat-member-removed": "**{{member}}** abandonó el grupo", + "group-chat-members-count": "{{selected}}\/{{max}} miembros", + "group-chat-name-changed": "**{{member}}** cambió el nombre del grupo a **{{name}}**", + "group-chat-no-contacts": "Aún no tienes contactos. \nInvita a tus amigos a comenzar a chatear", + "group-info": "Información del grupo", + "group-invite": "Invitación de grupo", + "group-invite-link": "Enlace de invitación de grupo", + "group-membership-request": "Solicitud de membresía grupal", + "gwei": "Gwei", + "has-permissions": "tiene permiso para acceder", + "hash": "Hash", + "help": "ayuda", + "help-capitalized": "Ayuda", + "help-center": "Centro de ayuda", + "hide-content-when-switching-apps": "Bloquear capturas de pantalla", + "hide-content-when-switching-apps-ios": "Ocultar vista previa", + "history": "Historial", + "history-nodes": "Nodos de Status", + "hold-card": "sostén la tarjeta en la parte posterior de tu teléfono", + "home": "Inicio", + "hooks": "Hooks", + "how-it-works": "Cómo funciona", + "http-gateway-error": "¡Oops, la solicitud falló!", + "identifier": "Identificador", + "image": "Imagen", + "image-remove-current": "Eliminar la foto actual", + "image-source-gallery": "Seleccionar de la galería", + "image-source-make-photo": "Tomar foto", + "image-source-title": "Editar imagen", + "import": "Importar", + "import-community": "Importar una comunidad", + "import-community-title": "Importar una comunidad", + "in-contacts": "En contactos", + "incoming": "Entrante", + "incoming-transaction": "Transacción entrante", + "incorrect-code": [ + "str", + "Lo sentimos, el código es incorrecto, escríbelo de nuevo" + ], + "increase-gas": "Aumentar el gas", + "initialization": "Inicialización", + "install": "↓ Instalar", + "intro-message1": "¡Bienvenid@ a Status!\nToca este mensaje para configurar tu contraseña y empezar.", + "intro-privacy-policy-note1": "Status no recopila ni se beneficia de tus datos personales. Al continuar, tú estás de acuerdo con la ", + "intro-privacy-policy-note2": "política de privacidad", + "intro-text": "Status es tu puerta de enlace a la web descentralizada", + "intro-text1": "Chatea a través de una red encriptada peer-to-peer donde los mensajes no pueden ser censurados o hackeados", + "intro-text2": "Envía y recibe activos digitales en cualquier parte del mundo – no se requiere cuenta bancaria", + "intro-text3": "Explora juegos, exchanges y redes sociales en las que solo tú eres propietario de tus datos", + "intro-title1": "Comunicación verdaderamente privada", + "intro-title2": "Cripto-billetera segura", + "intro-title3": "Apps descentralizadas", + "intro-wizard-text1": "Un set de claves controla tu cuenta. Tus claves viven en tu teléfono, por lo que solo tú puede usarlas.", + "intro-wizard-text2": "Una clave es para chatear. Viene con un nombre legible que no se puede cambiar.", + "intro-wizard-text3": "¿Tienes una Keycard? Guarda tus claves en ella; la necesitarás para las transacciones", + "intro-wizard-text4": "Asegura y encripta tus claves", + "intro-wizard-text6": "Status te notificará sobre los nuevos mensajes. Puedes editar tus preferencias de notificación más adelante en la configuración", + "intro-wizard-title-alt4": "Crea una contraseña", + "intro-wizard-title-alt5": "Confirma tu contraseña", + "intro-wizard-title1": "Obtén tus claves", + "intro-wizard-title2": "Elige un nombre de chat", + "intro-wizard-title3": "Elegir almacenamiento de claves", + "intro-wizard-title4": "Crear un código de acceso de 6 dígitos", + "intro-wizard-title5": "Confirma la clave de acceso", + "intro-wizard-title6": "Habilitar las notificaciones", + "introduce-yourself": "Preséntate con un breve mensaje", + "invalid-address-qr-code": "El código QR escaneado no contiene una dirección válida", + "invalid-format": "Formato inválido \n Debe ser {{format}}", + "invalid-key-confirm": "Aplicar", + "invalid-key-content": "La base de datos no se puede encriptar porque el archivo está dañado. Tus fondos y llaves de chat están a salvo. Otros datos, como chats y contactos, no se podrán restaurar. Presionar el botón {{erase-multiaccounts-data-button-text}}\" eliminará otros datos y te permitirá acceder a tus fondos y enviar mensajes", + "invalid-number": "Número inválido", + "invalid-pairing-password": "Contraseña de vinculación inválida", + "invalid-public-chat-topic": "Tema de chat público no válido", + "invalid-range": "Formato inválido, debe estar entre {{min}} y {{max}}", + "invite": "Invitá", + "invite-button": "Invitá", + "invite-chat-accept": "Aceptar", + "invite-chat-accept-join": "Aceptar y Unirse", + "invite-chat-intro": "Fuiste referido por un amigo para unirte a Status. Acá tenés algunas criptomonedas para empezar! Usalas para registrar un nombre ENS o comprar un paquete de stickers", + "invite-chat-name": "Referencia de amigos", + "invite-chat-pending": "Pendiente", + "invite-chat-rule": "Si aceptás también recompensarás a tu amigo con un bono de referencia criptográfica", + "invite-chat-starter-pack": "Paquete de Bienvenida", + "invite-friends": "Invitar a amigos", + "invite-instruction-fifth": "Puede elegir canjear su bono de referencia en cualquier momento.", + "invite-instruction-first": "Envías un enlace de invitación único a tu amigo para descargar y unirse a Status", + "invite-instruction-fourth": "Vos recibís tu bono de referencia y tu amigo el Paquete de Bienvenida", + "invite-instruction-second": "Tu amigo descarga Status y crea una cuenta (en Android)", + "invite-instruction-third": "Se inicia un chat con tu amigo, donde confirman tu referencia", + "invite-people": "Invitar a personas", + "invite-privacy-policy-public": "Instaló Status a través de un enlace de referencia. Al unirte a este chat atribuyes a tu referente y aceptas el", + "invite-privacy-policy1": "Al aceptar, estás de acuerdo con el programa de referidos", + "invite-privacy-policy2": "Términos y Condiciones.", + "invite-public-chat-home": "Invitación de referencia", + "invite-public-chat-intro": "¡Aquí tienes algunas criptomonedas para que comiences! Úsalo para registrar un nombre ENS o comprar un paquete de stickers", + "invite-receive-account": "Cuenta para recibir tu bono de referencia", + "invite-reward": "¡Gana criptomonedas por cada amigo que invites!", + "invite-reward-friend": "Amigo:", + "invite-reward-friend-description": "Tu amigo recibirá un Paquete de Bienvenida que consta de {{reward}} para comenzar", + "invite-reward-friend-name": "Paquete de Bienvenida", + "invite-reward-you": "Vos:", + "invite-reward-you-description": "Invitá a un amigo y recibí {{reward}} como bono de referencia. Usalo para obtener stickers, un nombre ENS y probar dapps", + "invite-reward-you-name": "Bono de referencia", + "invite-select-account": "Seleccioná una cuenta para recibir tu bono de referencia", + "invite-warning": "Esta promoción solo es válida para usuarios de un dispositivo Android que no sean residentes de EE. UU. Un amigo debe confirmar la referencia en un plazo de 7 días.", + "invited": "invitado", + "join": "Unite", + "join-a-community": "o únete a una comunidad", + "join-group-chat": "Unirse al grupo", + "join-group-chat-description": "{{username}} te invitó a unirte al grupo {{group-name}}", + "join-me": "Ey, unite a Status: {{url}}", + "join-new-private-chat": "Iniciar un nuevo chat privado", + "join-new-public-chat": "Unirse a un chat público", + "joined": "Unido", + "joined-group-chat-description": "Te has unido a {{group-name}} desde la invitación de {{username}}", + "key": "Clave", + "key-managment": "Administración de claves", + "key-on-device": "La clave privada está guardada en este dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "Acceso a la Keycard está restablecido", + "keycard-applet-install-instructions": "Para instalar el applet, sigue las instrucciones en https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Intente mover la tarjeta para encontrar el lector NFC en su dispositivo", + "keycard-awaiting-title": "Todavía buscando...", + "keycard-backup": "Crear una copia de seguridad de la Keycard", + "keycard-backup-success-body": "Tarjeta de respaldo creada con éxito. Ahora podes usarla con tu cuenta al igual que la tarjeta principal.", + "keycard-backup-success-title": "Copia de seguridad exitosa", + "keycard-blocked": "Keycard ha sido bloqueada. \n Necesitas reiniciar la tarjeta para continuar usándola.", + "keycard-can-use-with-new-passcode": "Puedes usar esta tarjeta con tu nuevo código de accesto", + "keycard-cancel-setup-text": "Esto cancelará la configuración de keycard. Se muy recomendable finalizar la configuración para usar keycard. ¿De verdad quieres cancelar?", + "keycard-cancel-setup-title": "Operación peligrosa", + "keycard-connected-description": "Intenta mantener la tarjeta quieta", + "keycard-connected-title": "Conectado", + "keycard-desc": "¿Tienes una Keycard? Guarda tus claves allí; la necesitarás para las transacciones", + "keycard-dont-ask-card": "No pedir tarjeta para iniciar sesión", + "keycard-enter-new-passcode": "Ingresa el nuevo código de acceso {{step}}\/2", + "keycard-error-description": "Vuelva a conectar la tarjeta para continuar.", + "keycard-error-title": "Conexión perdida", + "keycard-free-pairing-slots": "Keycard tiene {{n}} espacios de vinculación libres", + "keycard-has-multiaccount-on-it": "Esta tarjeta está llena. Cada tarjeta puede mantener un par de llaves principales", + "keycard-init-description": "Coloque la tarjeta en la parte posterior de su teléfono para continuar", + "keycard-init-title": "Buscando tarjetas...", + "keycard-is-blocked-details": "Ya no puedes usar esta tarjeta para acceder o firmar esta cuenta. Ha habido demasiados intentos fallidos de código de acceso y PUK.", + "keycard-is-blocked-instructions": "Para acceder a tu cuenta, re-instala Status y usa una nueva Keycard, usa una billetera diferente o reinicia Keycard manualmente.", + "keycard-is-blocked-title": "La Keycard está bloqueada", + "keycard-is-frozen-details": "Para proteger tus activos, tu tarjeta está congelada. Restablece el acceso a la tarjeta para desbloquear llaves y enviar transacciones. Crea un nuevo código de acceso e ingrese su PUK para acceder a su(s) cuenta(s) en esta tarjeta", + "keycard-is-frozen-reset": "Restablece el acceso a la tarjeta", + "keycard-is-frozen-title": "La Keycard está congelada", + "keycard-onboarding-finishing-header": "Terminando", + "keycard-onboarding-intro-header": "Guarda tus claves en Keycard", + "keycard-onboarding-intro-text": "Prepárate, esto puede tomar unos minutos, pero es importante para asegurar tu cuenta", + "keycard-onboarding-pairing-header": "Vinculando la tarjeta...", + "keycard-onboarding-preparing-header": "Preparando la tarjeta...", + "keycard-onboarding-puk-code-header": "Escribe los códigos\n y guárdalos de forma segura", + "keycard-onboarding-recovery-phrase-description": "Necesitas esta frase semilla para obtener de nuevo tu clave. Anótala. Manténla segura, fuera de línea y separada de este dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Respalda tu frase semilla", + "keycard-onboarding-recovery-phrase-text": "Sólo para tus ojos. Esta es la semilla mágica usada para generar tu clave.", + "keycard-onboarding-start-header": "Manten la tarjeta en la parte posterior\n de tu teléfono para iniciar", + "keycard-onboarding-start-step1": "Crea un código de acceso", + "keycard-onboarding-start-step1-text": "Alrededor de 1 minuto. Crea un código de acceso de 6 dígitos para encriptar tus claves", + "keycard-onboarding-start-step2": "Escribe el código de vinculación y PUK", + "keycard-onboarding-start-step2-text": "Alrededor de 1 minuto. Vas a necesitar un papel y un lápiz para eso", + "keycard-onboarding-start-step3": "Respaldar la frase semilla", + "keycard-onboarding-start-step3-text": "Alrededor de 1 minuto. También son necesarios un pedazo de papel y un lápiz.", + "keycard-onboarding-start-text": "Y manten el contacto entre la tarjeta y el teléfono\n durante la configuración. La configuración tomará alrededor de 4 minutos", + "keycard-processing-description": "Intenta mantener la tarjeta quieta", + "keycard-processing-title": "Procesando...", + "keycard-recovery-intro-button-text": "Iniciar la recuperación", + "keycard-recovery-intro-header": "Recuperar claves almacenadas en Keycard", + "keycard-recovery-intro-text": "Si antes generaste claves con keycard y ahora deseas utilizarlas en este dispositivo", + "keycard-recovery-no-key-header": "No hay nada que \nrecuperar aquí", + "keycard-recovery-no-key-text": "Tu Keycard no tiene ninguna clave almacenada en ella. Para usarla, genera una nueva clave y elige tu Keycard para almacenar la clave", + "keycard-recovery-phrase-confirm-header": "Confirmar frase semilla", + "keycard-recovery-phrase-confirmation-text": "¡No tendrás una segunda oportunidad! Si pierdes acceso, por ejemplo al extraviar tu Keycard, solo podrás acceder a tus llaves con tu frase semilla. Nadie a parte de ti tiene tu frase semilla. Anótala. Mantenla guardada.", + "keycard-recovery-phrase-confirmation-title": "¿Escribiste la frase semilla?", + "keycard-recovery-success-header": "Tus claves han sido \n recuperadas con éxito", + "keycard-redeem-title": "Canjear a", + "keycard-redeem-tx": "Canjea activos", + "keycard-redeem-tx-desc": "Toque con la tarjeta para firmar y recibir activos", + "keycard-reset-passcode": "Restablece el código de acceso", + "keycard-success-description": "Puedes quitar la tarjeta ahora", + "keycard-success-title": "Éxito", + "keycard-unauthorized-operation": "No estás autorizado a realizar esta operación.\n Por favor, toca la tarjeta válida e inténtalo de nuevo.", + "keycard-upsell-subtitle": "Mayor seguridad y conveniencia", + "language": "Idioma", + "learn-more": "Aprende más", + "learn-more-about-keycard": "Más información sobre Keycard", + "leave": "Salir", + "leave-chat": "Abandonar chat", + "leave-chat-confirmation": "¿Estás seguro de que quieres abandonar el chat?", + "leave-community": "Salir de la comunidad", + "leave-confirmation": "Abandonar chat", + "leave-group": "Abandonar grupo", + "left": "salió", + "les-ulc": "LES\/ULC", + "lets-go": "Vamos", + "light": "Luz", + "linked-on": "Vinculado en {{date}}", + "load-messages-before": "antes del {{date}}", + "load-more-messages": "↓ Recuperar más mensajes", + "load-more-timeline": "↓ Obtener más", + "loading": "Cargando...", + "local-notifications": "Notificaciones locales", + "lock-app-with": "Bloquear app con", + "log-level": "Nivel de registro", + "log-level-settings": "Ajustes del nivel de registro", + "logging": "Registro", + "logging-enabled": "¿Registro habilitado?", + "login-pin-description": "Ingresa tu código de acceso de 6 dígitos para desbloquear tus llaves", + "logout": "Cerrar sesión", + "logout-app-content": "Se cerrará la sesión de la cuenta. Cuando lo desbloquees de nuevo, se utilizará la red seleccionada", + "logout-are-you-sure": "¿Seguro que quieres cerrar la sesión?", + "logout-key-management": "Debe cerrar la sesión para acceder a la administración de claves.", + "logout-title": "¿Cerrar sesión?", + "looking-for-cards": "Buscando tarjetas...", + "lost-connection": "Conexión perdida", + "low-tip": "la propina es demasiado baja", + "mail-should-be-configured": "El cliente de correo debe ser configurado", + "mailserver-address": "Dirección del nodo de Status", + "mailserver-automatic": "Selección automática", + "mailserver-automatic-switch-explanation": "Elija el nodo de Status más rápido disponible", + "mailserver-connection-error": "No se pudo conectar al nodo de Status", + "mailserver-content": "Un nodo en la red de Status que enruta y almacena mensajes, hasta por 30 días.", + "mailserver-details": "Detalles del nodo de Status", + "mailserver-error-content": "No se pudo acceder al nodo de Status que seleccionó.", + "mailserver-error-title": "Error al conectarse al nodo de Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Elija otro nodo de Status", + "mailserver-reconnect": "No se pudo conectar con el nodo de Status. Pulsá para reconectar", + "mailserver-request-error-content": "El siguiente error fue devuelto por el nodo de Status: {{error}}", + "mailserver-request-error-status": "Se produjo un error al recuperar el historial, verifica los registros para obtener más detalles", + "mailserver-request-error-title": "Error de solicitud del nodo de Status", + "mailserver-request-retry": "Reintentar solicitud", + "mailserver-retry": "Reintentar", + "mailserver-title": "Nodo de Status", + "main-currency": "Moneda principal", + "main-networks": "Redes principales", + "main-wallet": "Billetera Principal", + "mainnet-network": "Red principal", + "make-admin": "Hacer admin", + "manage-keys-and-storage": "Administrar las llaves y el almacenamiento", + "mark-all-read": "Marcar todo como leído", + "master-account": "Cuenta maestra", + "maximum-fee": "Tarifa máxima", + "maybe-later": "Quizas mas tarde", + "member-ban": "Prohibir miembro", + "member-kick": "Eliminar miembro", + "members": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active": { + "one": "1 miembro", + "other": "{{count}} miembros" + }, + "members-active-none": "no hay miembros", + "members-count": "{{count}} miembros", + "members-label": "Miembros", + "members-limit-reached": "Límite de miembros alcanzado", + "members-title": "Miembros", + "membership-approval": "Requiere aprobación", + "membership-approval-description": "Puedes unirte de manera gratuita, pero los nuevos miembros necesitan ser aprobados primero por el creador de la comunidad", + "membership-button": "Requisito de membresía", + "membership-declined": "Se rechazó la solicitud de membresía", + "membership-description": "La membresía grupal requiere que seas aceptado por el administrador del grupo", + "membership-ens": "Requiere un usuario ENS", + "membership-ens-description": "Tu comunidad requiere que tengas un usuario ENS para unirte", + "membership-free": "Sin requisitos", + "membership-free-description": "Cualquier persona puede unirse a tu comunidad", + "membership-invite": "Necesitas invitación de otro miembro", + "membership-invite-description": "Únicamente puedes unirte a la comunidad mediante invitación de un miembro existente", + "membership-none": "Ninguno", + "membership-none-placeholder": "Podes exigir que los nuevos miembros cumplan con ciertos criterios antes de poder unirse. Esto se puede cambiar en cualquier momento", + "membership-request-pending": "Solicitud de membresía pendiente", + "membership-requests": "Solicitudes de membresía", + "membership-title": "Requisito de membresía", + "message": "Mensaje", + "message-not-sent": "Mensaje no enviado", + "message-options-cancel": "Cancelar", + "message-reply": "Responder", + "messages": "Mensajes", + "might-break": "Puede que se rompan algunas ÐApps", + "migrations-failed-content": "{{message}} \n versión del esquema: inicial {{initial-version}}, actual {{current-version}} , último {{last-version}} \n\nOcurrió un problema de base de datos. Tus fondos y la llave de chat están a salvo. Otros datos, como chats y contactos, no se podrán recuperar. Presionar el botón {{erase-multiaccounts-data-button-text}}\" eliminará el resto de datos y te permitirá acceder a tus fondos y enviar mensajes.", + "mobile-network-ask-me": "Pregúntarme cuando esté en la red móvil", + "mobile-network-continue-syncing": "Continuar sincronizando", + "mobile-network-continue-syncing-details": "Puedes cambiar esto más adelante en los ajustes", + "mobile-network-go-to-settings": "Ir a ajustes", + "mobile-network-settings": "Datos móviles", + "mobile-network-sheet-configure": "Puedes configurar la sincronización en más \ndetalle en", + "mobile-network-sheet-offline": "Sin Wi-Fi, la sincronización de mensajes está deshabilitada.", + "mobile-network-sheet-offline-details": "La sincronización mediante la red móvil está desactivada", + "mobile-network-sheet-remember-choice": "Recuerda mi elección", + "mobile-network-sheet-settings": "ajustes", + "mobile-network-start-syncing": "Iniciar la sincronización", + "mobile-network-stop-syncing": "Detener la sincronización", + "mobile-network-stop-syncing-details": "¿Hasta que se conecta a Wi-Fi?", + "mobile-network-use-mobile": "Usar datos móviles", + "mobile-network-use-mobile-data": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-network-use-wifi": "Sólo Wi-Fi", + "mobile-syncing-sheet-details": "Status utiliza muchos datos al sincronizar los chats y la billetera.", + "mobile-syncing-sheet-title": "¿Sincronizar usando los datos del móvil?", + "more": "más", + "move-and-reset": "Mover y Restablecer", + "move-keystore-file": "Mover el archivo keystore", + "move-keystore-file-to-keycard": "¿Mover el archivo keystore a la keycard?", + "multiaccount-exists-content": "Las llaves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "multiaccount-exists-title": "Las llaves para esta cuenta ya existen", + "multiaccounts-recover-enter-phrase-text": "Ingresa 12, 15, 18, 21 o 24 palabras. \n Separa las palabras por un solo espacio.", + "multiaccounts-recover-enter-phrase-title": "Ingresa tu frase semilla", + "mute": "Silenciar", + "my-accounts": "Mis cuentas", + "my-accounts-empty": "Tus cuentas disponibles aparecerán aquí", + "my-status": "Mi estado", + "name": "Nombre", + "name-of-token": "El nombre de tu token", + "name-optional": "Nombre (opcional)", + "name-your-channel": "Nombra tu canal", + "name-your-channel-placeholder": "Nombre del canal", + "name-your-community": "Nombra tu comunidad", + "name-your-community-placeholder": "Un nombre pegadizo", + "need-help": "¿Necesitas ayuda?", + "network": "Red", + "network-chain": "Cadena de la red", + "network-details": "Detalles de red", + "network-fee": "Tarifa de la red", + "network-id": "ID de red", + "network-info": "Información de la red", + "network-invalid-network-id": "El id de red especificado no corresponde al id de red por la url de RPC", + "network-invalid-status-code": "Código de estado inválido: {{code}}", + "network-invalid-url": "La URL de la red no es válida", + "network-settings": "Ajustes de la red", + "new": "Nuevo", + "new-chat": "Nuevo chat", + "new-community-title": "Nueva comunidad", + "new-contact": "Nuevo contacto", + "new-contract": "Nuevo contrato", + "new-favourite": "Nuevo favorito", + "new-group": "Nuevo grupo", + "new-group-chat": "Nuevo grupo de chat", + "new-network": "Nueva red", + "new-pin-description": "Ingresa el nuevo código de acceso de 6 dígitos", + "new-public-group-chat": "Unirte a chat público", + "new-status": "Nuevo estado", + "new-tab": "Nueva pestaña", + "next": "Siguiente", + "nickname": "Apodo", + "nickname-description": "Los apodos te ayudan a identificar a otras personas en Status. \n Solo tú puedes ver los apodos que agregaste", + "no": "No", + "no-collectibles": "No hay coleccionables disponibles", + "no-contacts": "Aún no hay contactos", + "no-keycard-applet-on-card": "No hay applet de Keycard en la tarjeta", + "no-messages": "No hay mensajes", + "no-pairing-slots-available": "Esta tarjeta ya está vinculada con 5 dispositivos y no puede ser vinculada con éste dispositivo. Por favor, utiliza uno de los dispositivos vinculados, inicia sesión con esta tarjeta y libera los espacios de vinculación en la tarjeta", + "no-result": "Sin resultados", + "no-tokens-found": "No se encontraron tokens", + "node-info": "Información del nodo", + "node-version": "Versión de nodo", + "nodes-disabled": "Nodos de Status deshabilitados", + "non-archival-node": "El punto de conexión de RPC no admite solicitudes de archivado. Es posible que el historial de transferencias locales esté incompleto.", + "nonce": "Nonce", + "none": "Ninguno", + "not-applicable": "No aplicable para transacciones no firmadas", + "not-connected-nodes": "Sin conexión a un nodo de Status", + "not-connected-to-peers": "Sin conexión a ningún nodo", + "not-enough-snt": "No hay suficiente SNT", + "not-keycard-text": "La tarjeta que usaste no es una Keycard. Necesitas comprar una Keycard para usarla", + "not-keycard-title": "No es una Keycard", + "not-registered": "no registrado", + "notification-settings": "Notificaciones", + "notifications": "Notificaciones", + "notifications-non-contacts": "Notificaciones de no contactos", + "notifications-preferences": "Preferencias de notificación", + "notifications-servers": "Servidores de notificaciones", + "notifications-switch": "Mostrar notificaciones", + "notifications-transactions": "Transacciones de billetera", + "notify": "Notificar", + "now": "Ahora", + "off": "Apagado", + "off-status-tree": "Derivado fuera de Status", + "offline": "Desconectado", + "offline-messaging-use-history-explanation": "Habilite los nodos de Status para recuperar los mensajes que se enviaron mientras la aplicación estaba cerrada. Cuando está habilitado, un nodo de Status obtiene su dirección IP. Cuando está deshabilitado, no recibirá mensajes cuando la aplicación esté cerrada y no los verá cuando abra la aplicación más tarde.", + "offline-messaging-use-history-nodes": "Usar nodos de Status", + "ok": "OK", + "ok-continue": "Ok, continuar", + "ok-got-it": "Ok, lo tengo", + "ok-save-pass": "OK, guardar contraseña", + "okay": "Bien", + "on": "En", + "on-status-tree": "En el árbol de Status", + "once-enabled-share-metadata": "Una vez habilitados, los enlaces publicados en el chat pueden compartir sus metadatos con el sitio.", + "open": "Abrir", + "open-chat": "Abrir chat", + "open-dapp": "Abrir ÐApp", + "open-dapp-store": "Descubre ÐApps", + "open-home": "Abrir...", + "open-in-new-tab": "Abrir en una pestaña nueva", + "open-membership": "Abrir membresía", + "open-nfc-settings": "Abrir ajustes de NFC", + "opening-buy-crypto": "Abriendo {{site}}...", + "optimal": "Óptimo", + "optional": "opcional", + "or": "O", + "outgoing": "Saliente", + "outgoing-transaction": "Transacción saliente", + "page-camera-request-blocked": "solicitudes de cámara bloqueadas. Para habilitar las solicitudes de la cámara, vaya a Configuración", + "page-would-like-to-use-camera": "quisiera usar su cámara", + "pair": "Vincular dispositivos", + "pair-card": "Vincular a este dispositivo", + "pair-code": "Código par", + "pair-code-explanation": "Vincula la tarjeta a un dispositivo diferente para desbloquear llaves y firmar transacciones con la misma Keycard", + "pair-code-placeholder": "Código de emparejamiento...", + "pair-this-card": "Vincula esta tarjeta", + "pair-this-device": "Publicar el dispositivo", + "pair-this-device-description": "Vincula tus dispositivos para sincronizar los contactos y chats entre ellos", + "paired-devices": "Dispositivos vinculados", + "pairing": "Vinculando", + "pairing-card": "Vinculando la tarjeta", + "pairing-go-to-installation": "Ir a los ajustes de vinculación", + "pairing-maximum-number-reached-content": "Por favor, deshabilita uno de tus dispositivos antes de habilitar uno nuevo.", + "pairing-maximum-number-reached-title": "Número máximo de dispositivos alcanzados", + "pairing-new-installation-detected-content": "Se ha detectado un nuevo dispositivo. \nPara usar tus dispositivos correctamente, es importante vincularlos y habilitarlos antes de usarlos. \nVe a la sección del dispositivo en los ajustes para vincular tus dispositivos.", + "pairing-new-installation-detected-title": "Nuevo dispositivo detectado", + "pairing-no-info": "Sin información", + "pairing-please-set-a-name": "Por favor configura un nombre para tu dispositivo.", + "passphrase": "Frase de contraseña", + "password": "Contraseña", + "password-description": "Al menos 6 caracteres. Tu contraseña protege tus claves. La necesitas para desbloquear Status y realizar transacciones.", + "password-placeholder": "Contraseña...", + "password-placeholder2": "Confirma tu contraseña", + "password_error1": "Las contraseñas no coinciden.", + "paste": "Pegar", + "paste-json": "Pegar JSON", + "pay-to-chat": "Pagar para chatear", + "peer-content": "Un dispositivo conectado a la red de chat de Status. Cada usuario puede representar uno o más peers, dependiendo de su número de dispositivos.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Pares", + "pending": "Pendiente", + "pending-confirmation": "Confirmación pendiente...", + "pending-invitations": "Solicitudes de membresía pendientes", + "permissions": "Permisos", + "phone-e164": "Internacional 1", + "photos": "Fotos", + "photos-access-error": "Para permitir el acceso a fotos, porfavor, ve a ajustes de sistema y asegúrate que este seleccionada la opción Status > Fotos", + "pin-changed": "Se ha cambiado el código de acceso de 6 dígitos", + "pin-code": "Código de acceso de 6 dígitos", + "pin-mismatch": "Código de acceso incorrecto", + "pin-one-attempt": "un intento", + "pin-one-attempt-blocked-after": "antes de que tu Keycard se bloquee", + "pin-one-attempt-blocked-before": "Ten cuidado, solo tienes", + "pin-one-attempt-frozen-after": "antes de que tu Keycard se congele", + "pin-one-attempt-frozen-before": "Ten cuidado, solo tienes", + "pin-retries-left": "Te quedan {{number}} reintentos", + "preference": "Preferencia", + "preview-privacy": "Vista previa del modo de privacidad", + "previewing-may-share-metadata": "La vista previa de los enlaces de estos sitios web puede compartir sus metadatos con sus propietarios.", + "privacy": "Privacidad", + "privacy-and-security": "Privacidad y seguridad", + "privacy-policy": "Política de privacidad", + "private-key": "Llave privada", + "private-notifications": "Notificaciones privadas", + "private-notifications-descr": "Status te notificará sobre los nuevos mensajes. Podés editar tus preferencias de notificación más adelante en la configuración.", + "processing": "Un momento.", + "product-information": "Información del Producto", + "profile": "Perfil", + "profile-deleted-content": "Su perfil fue eliminado con éxito", + "profile-deleted-keycard": "Ahora puede restaurar otro par de llaves en tu Keycard", + "profile-deleted-title": "Perfil eliminado", + "profile-details": "Detalles del perfil", + "profile-pic-pick": "Seleccionar de la galería", + "profile-pic-remove": "Quitar foto", + "profile-pic-take": "Tomar foto", + "public-chat": "Chat público", + "public-chat-description": "¡Únete a chats públicos para tus intereses! Cualquiera puede comenzar uno nuevo.", + "public-chats": "Chats públicos", + "public-group-status": "Público", + "public-group-topic": "Tema", + "public-key": "Clave pública", + "puk-and-pairing-codes-displayed": "PUK y códigos de vinculación mostrados", + "puk-code": "Código PUK", + "puk-code-explanation": "Si olvidas tu código de acceso de 6 dígitos o lo ingresas incorrectamente 3 veces, necesitarás este código para desbloquear tu tarjeta.", + "puk-mismatch": "El código PUK no coincide", + "push-failed-transaction": "Su transacción falló", + "push-failed-transaction-body": "{{value}} {{currency}} a {{to}}", + "push-inbound-transaction": "Recibiste {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} a {{to}}", + "push-notifications-server-enabled": "Servidor habilitado", + "push-notifications-servers": "Servidores de notificaciones push", + "push-outbound-transaction": "Enviaste {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} a {{to}}", + "quiet-days": "{{quiet-days}} días", + "quiet-hours": "{{quiet-hours}} horas", + "re-encrypt-key": "Vuelve a encriptar tus claves", + "receive": "Recibir", + "receive-transaction": "Recibir transacción", + "recent": "Estados recientes", + "recent-empty": "Las direcciones utilizadas recientemente aparecerán aquí", + "recent-recipients": "Contactos", + "recently-used-stickers": "Las stickers usadas recientemente aparecerán aquí", + "recipient": "Receptor", + "recipient-code": "Ingresa la dirección del destinatario", + "recipient-code-placeholder": "0x... o username.domain.eth", + "recover": "Recuperar", + "recover-key": "Ingresar claves existentes", + "recover-keycard-multiaccount-not-supported": "Las llaves para esta cuenta ya existen y no se pueden añadir de nuevo. Si perdiste tu contraseña, código de acceso o Keycard, desinstala la app, reinstálala y accede insertando tu frase semilla", + "recover-with-keycard": "Recuperar con Keycard", + "recover-with-seed-phrase": "Recuperar con frase semilla", + "recovering-key": "Ingresando las claves...", + "recovery-confirm-phrase": "Confirmar frase semilla", + "recovery-phrase": "Frase semilla", + "recovery-success-text": "Deberás crear un nuevo código o contraseña para volver a encriptar tus claves", + "recovery-typo-dialog-description": "Recuerda, tu frase semilla deben ser exactamente las mismas palabras y el orden que recibiste", + "recovery-typo-dialog-title": "¿Es correcta la frase semilla?", + "redeem-amount": "{{quantity}} bonos disponibles", + "redeem-now": "Canjear ahora", + "redeem-success": "¡Canje del bono exitoso!", + "refresh": "Actualizar", + "registered": "registrado", + "remember-me": "Recuérdame", + "remind-me-later": "Muéstrame esto de nuevo", + "remove": "Remover", + "remove-favourite": "Quitar favorito", + "remove-from-chat": "Eliminar del chat", + "remove-from-contacts": "Eliminar de contactos", + "remove-from-contacts-text": "Al eliminar a un usuario de tu lista de contactos, no oculta la dirección de tu billetera de ellos", + "remove-group": "Eliminar grupo", + "remove-network": "Eliminar red", + "remove-token": "Eliminar token", + "removed": "eliminado", + "repeat-pin": "Repite el nuevo código de acceso de 6 dígitos", + "report-bug-email-template": "1. Descripción del problema \n (Describe la función que deseas, o resume brevemente el error y lo que hiciste, lo que esperabas que sucediera y lo que realmente sucede. Secciones a continuación) \n\n\n 2. Pasos para reproducir \n (Describe cómo podemos replicar el error paso a paso). \n -Abre Status \n -... \n -Paso 3, etc. \n\n\n 3. Comportamiento esperado \n (Describe lo que esperabas que sucediera). \n\n\n 4. Comportamiento real \n (Describe lo que realmente sucedió). \n\n\n 5. Adjunta capturas de pantalla que puedan demostrar el problema, por favor \n", + "request-access": "Solicitar acceso", + "request-feature": "Solicitar una funcionalidad", + "request-membership": "Solicitar membresía", + "request-pending": "Pedido pendiente…", + "request-transaction": "Solicitar transacción", + "required-field": "Campo requerido", + "resend-message": "Reenviar", + "reset-card": "Reiniciar la tarjeta", + "reset-card-description": "Esta operación restablecerá la tarjeta al estado inicial. Borrará todos los datos de la tarjeta, incluidas las claves privadas. La operación no es reversible.", + "reset-database": "Restablecer base de datos", + "reset-database-warning": "Elimina chats, contactos y configuraciones. Se requiere cuando has perdido tu contraseña", + "reset-database-warning-keycard": "Borrar chats, contactos y configuraciones.", + "restore-defaults": "Restaurar los Valores Predeterminados", + "retry": "Reintentar", + "revoke-access": "Revocar el acceso", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Copiar", + "rpc-usage-filter": "Métodos de filtrado", + "rpc-usage-get-stats": "Actualizar", + "rpc-usage-info": "Estadísticas de uso de RPC", + "rpc-usage-reset": "Restablecer", + "save": "Guardar", + "save-password": "Guardar contraseña", + "save-password-unavailable": "Establece el código de acceso del dispositivo para guardar la contraseña", + "save-password-unavailable-android": "Guardar la contraseña no está disponible: tu dispositivo puede estar rooteado o carecer de las características de seguridad necesarias.", + "scan-qr": "Escanear QR", + "scan-qr-code": "Escanea un código QR con una dirección de billetera", + "scan-tokens": "Escanear tokens", + "search": "Buscar", + "search-no-chat-found": "No hay resultados de búsqueda. ¿Querés decir", + "secret-keys-confirmation-text": "Los necesitará para seguir usando su Keycard en caso de que alguna vez pierda su teléfono.", + "secret-keys-confirmation-title": "¿Escribiste los códigos?", + "security": "Seguridad", + "see-details": "Ver detalles", + "see-it-again": "VERLO OTRA VEZ", + "see-suggestions": "Ver sugerencias", + "seed-key-uid-mismatch": "La frase semilla no coincide", + "seed-key-uid-mismatch-desc-1": "La frase semilla que ingresó no coincide con {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Para administrar claves para esta cuenta verifique su frase semilla e inténtelo de nuevo.", + "seed-phrase-content": "Un set de palabras fáciles de leer, seleccionadas al azar de la lista estándar BIP39 y utilizadas para recuperar o acceder a tu cuenta de Ethereum en otras billeteras y dispositivos. También se conoce como \"frase mnemónica\", \"frase de recuperación\" o \"copia de seguridad de billetera\" en todo el cripto ecosistema. La mayoría de las cripto apps usan este mismo estándar para generar cuentas.", + "seed-phrase-placeholder": "Frase semilla...", + "seed-phrase-title": "Frase Semilla", + "select": "Seleccionar", + "select-account": "Seleccionar cuenta", + "select-account-dapp": "Selecciona la cuenta que deseas usar con Dapps", + "select-account-first": "Selecciona una cuenta primero", + "select-chat": "Selecciona el chat para comenzar a enviar mensajes", + "select-new-location-for-keys": "Seleccione una nueva ubicación para guardar sus claves privadas", + "selected": "Seleccionado", + "send-logs": "Reportar un error", + "send-logs-to": "Reportar un error a {{email}}", + "send-message": "Enviar mensaje", + "send-push-notifications-description": "Cuando está deshabilitado, la persona que recibe sus mensajes no será notificada de su llegada.", + "send-request": "Enviar solicitud", + "send-request-amount": "Cantidad", + "send-request-amount-max-decimals": "El número máximo de decimales es {{asset-decimals}}", + "send-request-unknown-token": "Token desconocido - {{asset}}", + "send-sending-to": "para {{recipient-name}}", + "send-transaction": "Enviar transacción", + "sending": "Enviando", + "sent-at": "Enviado a", + "server": "Servidor", + "set-a-topic": "Crear un tema", + "set-currency": "Establecer moneda", + "set-custom-fee": "Establecer tarifa personalizada", + "set-dapp-access-permissions": "Establecer permisos de acceso DApp", + "set-max": "Establecer máximo", + "settings": "Ajustes", + "share": "Compartir", + "share-address": "Compartir dirección", + "share-chat": "Compartir chat", + "share-contact-code": "Compartir mi clave de chat", + "share-dapp-text": "Echa un vistazo a esta DApp que estoy usando en Status: {{link}}", + "share-link": "Compartir enlace", + "share-my-profile": "Compartir mi perfil", + "share-profile": "Compartir perfil", + "share-profile-link": "Compartir enlace del perfil", + "share-public-chat-text": "Echa un vistazo a este chat público en la app de Status: {{link}}", + "shared": "Compartido", + "sharing-copied-to-clipboard": "Copiado", + "sharing-copy-to-clipboard": "Copiar", + "sharing-share": "Compartir", + "show-less": "Mostrar menos", + "show-more": "Mostrar más", + "show-notifications": "Mostrar notificaciones", + "show-profile-pictures": "Mostrar fotos de perfil de", + "show-qr": "Mostrar código QR", + "show-transaction-data": "Mostrar los datos de la transacción", + "sign-and-send": "Firmar y enviar", + "sign-anyway": "Continuar de todas maneras", + "sign-in": "Inicia sesión", + "sign-message": "Firmar mensaje", + "sign-out": "Cerrar sesión", + "sign-request-failed": "No se pudo firmar el mensaje", + "sign-with": "Firma con", + "sign-with-password": "Firmar con contraseña", + "sign-you-in": "Iniciando sesión...", + "signing": "Firma", + "signing-a-message": "Firmando un mensaje", + "signing-phrase": "Frase de firma", + "slow": "Lento", + "something-went-wrong": "Algo salió mal", + "soon": "Pronto", + "specify-address": "Especificar dirección", + "specify-name": "Especifica un nombre", + "specify-network-id": "Especifica ID de red", + "specify-rpc-url": "Especifica una URL RPC", + "specify-server-public-key": "Ingrese la clave pública del servidor", + "start-chat": "Iniciar chat", + "start-conversation": "Empezar conversación", + "start-group-chat": "Iniciar chat grupal", + "start-new-chat": "Iniciar nuevo chat", + "starter-pack-coming": "El Paquete de Inicio va hacia ti", + "starter-pack-coming-description": "Puede tomar de unos minutos a horas", + "starter-pack-received": "Paquete de Bienvenida", + "starter-pack-received-description": "¡Acá tenés algunas criptomonedas para comenzar! Usalas para obtener pegatinas, un nombre ENS y probar dapps", + "status": "Status", + "status-confirmed": "Confirmado", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status tiende a usar una gran cantidad de datos al sincronizar chats. Podes optar por no sincronizar cuando estás en la red móvil", + "status-not-sent-click": "No está confirmado. Haz clic para ver las opciones", + "status-not-sent-tap": "No enviado. Toca para ver las opciones", + "status-pending": "Pendiente", + "status-sent": "Enviado", + "status-tx-not-found": "TX no encontrada", + "status-updates-descr": "Las actualizaciones de estado aparecerán aquí. Agregue el perfil como un contacto para recibir actualizaciones en su línea de tiempo.", + "statuses-descr": "Comparte lo que tienes en mente y mantente al día con tus contactos", + "statuses-my-status-descr": "Comparte lo que tienes en mente. Cualquiera que visite su perfil podrá ver su estado. Las personas que te agreguen como contacto recibirán tus actualizaciones en su línea de tiempo.", + "step-i-of-n": "Paso {{step}} de {{number}}", + "sticker-market": "Sticker market", + "storage": "Almacenamiento", + "submit": "Enviar", + "submit-bug": "Reportar un error", + "success": "Éxito", + "symbol": "Símbolo", + "sync-all-devices": "Sincronizar todos los dispositivos", + "sync-in-progress": "Sincronizando...", + "sync-settings": "Ajustes de sincronización", + "sync-synced": "Sincronizado", + "syncing-devices": "Sincronizando...", + "system": "Sistema", + "tabs": "Pestañas", + "tag-was-lost": "La etiqueta se perdió", + "tap-card-again": "Vuelve a tocar la tarjeta con la parte trasera de tu teléfono.", + "test-networks": "Redes de prueba", + "text-input-disabled": "Por favor espera un momento...", + "this-device": "Este dispositivo", + "this-device-desc": "Tus claves serán encriptadas y almacenadas de forma segura en tu dispositivo", + "this-is-you-signing": "Esta es tu frase de firma", + "this-will-take-few-seconds": "Esto tomará unos segundos", + "three-words-description": "Deberías ver estas tres palabras antes de firmar cada transacción", + "three-words-description-2": "Si ves una combinación diferente, cancela la transacción y cierra sesión", + "timeline": "Línea de tiempo", + "to": "Para", + "to-block": "Bloquear", + "to-enable-biometric": "Para habilitar {{bio-type-label}}, debes guardar tu contraseña en la pantalla de desbloqueo", + "to-encrypt-enter-password": "Para encriptar la cuenta, por favor, ingresa tu contraseña", + "to-see-this-message": "Para ver este mensaje,", + "token-auto-validate-decimals-error": "Decimales incorrectos para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-name-error": "Nombre incorrecto para el token {{symbol}} en la dirección {{address}} - establecido en {{expected}} pero detectado como {{actual}}", + "token-auto-validate-symbol-error": "Símbolo incorrecto para el token {{symbol}} en la dirección {{address}} - configurado en {{expected}} pero detectado como {{actual}}", + "token-details": "Detalles del token", + "topic-name-error": "Utiliza solo letras minúsculas (a - z), números y guiones (-). No uses las claves de chat", + "transaction": "Transacción", + "transaction-data": "Transaction data", + "transaction-declined": "Transacción rechazada", + "transaction-description": "Transacciones con 12 confirmaciones pueden considerarse irreversibles", + "transaction-details": "Detalles de la transacción", + "transaction-failed": "Transacción fallida", + "transaction-history": "Historial de transacciones", + "transaction-request": "Solicitud de transacción", + "transaction-sent": "Transacción enviada", + "transaction-signed": "La transacción se ha firmado con éxito", + "transactions": "Transacciones", + "transactions-filter-select-all": "Seleccionar todo", + "transactions-filter-title": "Filtrar historial", + "transactions-history": "Historial de transacciones", + "transactions-history-empty": "Aún no hay transacciones en tu historial", + "transactions-history-loading": "Cargando historial de transacciones. Esto podrá tomar un tiempo.", + "transactions-load-more": "Mostrar más", + "transactions-sign": "Firmar", + "transfer-ma-unknown-error-desc-1": "Parece que su multicuenta no se eliminó. Es posible que la base de datos se haya restablecido", + "transfer-ma-unknown-error-desc-2": "Por favor verificá tu lista de cuentas e intentá de nuevo. Si la cuenta no está listada andá a Acceder llaves existentes para recuperar con frase semilla", + "transfers-fetching-failure": "El historial de transferencias no pudo ser actualizado. Verificá tu conexión y refresca para intentarlo de nuevo", + "tribute-required-by-multiaccount": "{{multiaccount-name}} requiere SNT para iniciar un chat.", + "tribute-state-paid": "Tributo pagado", + "tribute-state-pending": "Tributo pendiente", + "tribute-state-required": "Requiere tributo de {{snt-amount}} SNT", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Agregar amigos como un contacto para permitir chats sin pago de tributo.", + "tribute-to-talk-are-you-friends": "¿Son amigos?", + "tribute-to-talk-ask-to-be-added": "Pide que te añadan como contacto", + "tribute-to-talk-contact-received-your-tribute": "recibió tu tributo. Ahora pueden conversar con seguridad entre ustedes.", + "tribute-to-talk-desc": "Monetiza tu atención requiriendo SNT para que la gente nueva inicie un chat", + "tribute-to-talk-disabled": "Tribute to Talk deshabilitado", + "tribute-to-talk-disabled-note": "A partir de ahora, las personas nuevas pueden iniciar un chat contigo sin enviar SNT.", + "tribute-to-talk-enabled": "Tienes Tribute to Talk habilitado.", + "tribute-to-talk-finish-desc": "A partir de ahora, sólo recibirás chats de los contactos, y de la gente que pagó ", + "tribute-to-talk-learn-more-1": "Tu tiempo y atención son Tus activos más valiosos. Tribute to Talk te permite configurar la cantidad de SNT requerida para que nuevas personas inicien un chat contigo.", + "tribute-to-talk-learn-more-2": "Cualquier persona que no esté en tu lista de contactos deberá pagar, y tu puedes responder una vez que lo hayan hecho.", + "tribute-to-talk-learn-more-3": "Siempre puedes devolver el dinero, pero para asegurarte de que tus amigos puedan contactarte libremente, añádelos primero como contacto.", + "tribute-to-talk-paywall-learn-more-1": "Nuestro tiempo y atención son nuestros activos más valiosos. Tribute to Talk te permite contactar a nuevas personas a cambio de un pago de SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para iniciar un chat con alguien que tiene configurado tributos, simplemente paga el SNT requerido y serás agregado como un contacto.", + "tribute-to-talk-paywall-learn-more-3": "Si los conoces, puedes compartir tu perfil fuera de Status para ser agregado de forma gratuita.", + "tribute-to-talk-pending": "Tributo pendiente de confirmación", + "tribute-to-talk-pending-note": "La transacción de tributo está pendiente de confirmación en la red. Puedes verificar el status en el historial de transacciones", + "tribute-to-talk-removing-note": "Eliminar Tribute to Talk permitirá que nuevas personas inicien un chat sin enviar SNT. Requiere que se realice una transacción.", + "tribute-to-talk-set-snt-amount": "Establece la cantidad de SNT requerida para que nuevas personas inicien un chat", + "tribute-to-talk-signing": "Esperando para firmar la transacción", + "tribute-to-talk-transaction-failed-note": "La transacción ha fallado y tu configuración de Tribute to Talk no ha cambiado", + "tribute-to-talk-tribute-received1": "El tributo fue recibido. Tú y ", + "tribute-to-talk-tribute-received2": "ahora son contactos y pueden chatear de forma segura entre sí.", + "tribute-to-talk-you-require-snt": "Se necesita SNT para que las personas nuevas inicien un chat.", + "try-again": "Inténtalo de nuevo", + "try-keeping-the-card-still": "Intenta mantener la tarjeta quieta", + "turn-nfc-description": "NFC está deshabilitado en su dispositivo. Puedes habilitarlo en la configuración", + "turn-nfc-on": "activar nfc", + "tx-fail-description1": "Es probable que esta transacción falle. Firme bajo su propio riesgo utilizando una tarifa de red personalizada.", + "tx-fail-description2": "Es probable que esta transacción falle. Establezca una tarifa de red personalizada para firmar bajo su propio riesgo.", + "type": "Tipo", + "type-a-message": "Mensaje", + "ulc-enabled": "ULC habilitado", + "unable-to-fetch": "No es posible recuperar el historial de chat", + "unable-to-read-this-code": "No se puede leer este código", + "unable-to-send-messages": "No es posible enviar o recibir mensajes", + "unblock": "Desbloquear", + "unblock-contact": "Desbloquear este usuario", + "unknown-status-go-error": "Error de status-go desconocido", + "unlock": "Desbloquear", + "unmute": "Activar sonido", + "unpair-card": "Desvincular tarjeta", + "unpair-card-confirmation": "Esta operación desvinculará la tarjeta del dispositivo actual. Requiere autorización del código de acceso de 6 dígitos. ¿Quieres continuar?", + "unpair-keycard": "Desemparejar la Keycard de este teléfono", + "unpair-keycard-warning": "Tu código de emparejamiento\/PUK y PIN permanecen sin cambios", + "unpaired-keycard-text": "La Keycard que tocaste no está asociada con este teléfono", + "unpaired-keycard-title": "Parece que tu tarjeta ha sido desvinculada", + "update": "Actualizar", + "update-to-listen-audio": "¡Actualizá a la última versión para escuchar un mensaje de audio acá!", + "update-to-see-image": "¡Actualizá a la última versión para ver una buena imagen acá!", + "update-to-see-sticker": "¡Actualizá a la última versión para ver un lindo sticker acá!", + "url": "URL", + "usd-currency": "Dólar estadounidense", + "use-valid-contact-code": "Por favor, ingresa o escanea una clave de contacto o nombre de usuario válido", + "validation-amount-invalid-number": "La cantidad no es un número válido", + "validation-amount-is-too-precise": "La cantidad es muy precisa. La cantidad máxima de decimales es {{decimals}} .", + "version": "Versión de la app", + "view": "Ver", + "view-cryptokitties": "Ver en CryptoKitties", + "view-cryptostrikers": "Ver en CryptoStrikers", + "view-details": "Ver detalles", + "view-etheremon": "Ver en Etheremon", + "view-gitcoin": "Ver en Gitcoin", + "view-profile": "Ver perfil", + "view-signing": "Ver la frase de firma", + "view-superrare": "Ver en SuperRare", + "waiting-for-wifi": "Sin Wi-Fi, la sincronización de mensajes está deshabilitada.", + "waiting-for-wifi-change": "Ajustes", + "waiting-to-sign": "Esperando para firmar la transacción...", + "waiting-wi-fi": "Esperando Wi-Fi…", + "waku-bloom-filter-mode": "Modo de filtro Waku bloom", + "wallet": "Billetera", + "wallet-address": "Dirección de la billetera", + "wallet-asset": "Activo", + "wallet-assets": "Activos", + "wallet-backup-recovery-title": "Respalda tu frase semilla", + "wallet-choose-recipient": "Elegir destinatario", + "wallet-collectibles": "Coleccionables", + "wallet-insufficient-funds": "Fondos insuficientes", + "wallet-insufficient-gas": "No hay suficiente ETH para el gas", + "wallet-invalid-address": "Dirección inválida: \n {{data}}", + "wallet-invalid-address-checksum": "Error en la dirección: \n {{data}}", + "wallet-invalid-chain-id": "La red no coincide: \n {{data}} pero la cadena actual es {{chain}}", + "wallet-key-content": "Una dirección hexadecimal de 64 caracteres basada en el estándar Ethereum y que comienza con 0x. De cara al público, tu clave de billetera se comparte con otros cuando deseas recibir fondos. También se conoce como \"dirección de Ethereum\" o \"dirección de billetera\".", + "wallet-key-title": "Dirección de la cuenta", + "wallet-manage-accounts": "Administrar cuentas", + "wallet-manage-assets": "Administrar activos", + "wallet-request": "Solicitud", + "wallet-send": "Enviar", + "wallet-send-min-units": "Mínimo 21000 unidades", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Ajustes de billetera", + "wallet-total-value": "Valor total", + "wallet-transaction-total-fee": "Costo total", + "wants-to-access-profile": "quiere acceder a tu perfil", + "warning": "Advertencia", + "warning-message": "Lo sentimos, limitamos el envío de varios mensajes en rápida sucesión para evitar el spam. Por favor, inténtalo de nuevo en un momento.", + "warning-sending-to-contract-descr": "La dirección que ingresó es un contrato inteligente, enviar fondos a esta dirección puede resultar en la pérdida de fondos. Para interactuar con una DApp, abra la DApp en el navegador de Status.", + "watch-only": "Sólo para ver", + "web-view-error": "No se puede cargar la página", + "websites": "Sitios web", + "webview-camera-permission-requests": "Solicitudes de permisos de la cámara Webview", + "webview-camera-permission-requests-subtitle": "Cuando está habilitado, los sitios web y las dapps pueden solicitar el uso de su cámara", + "welcome-blank-community-message": "Tus comunidades aparecerán aquí.", + "welcome-blank-message": "Tus chats aparecerán aquí. Para iniciar nuevos chats, presiona el botón ⊕", + "welcome-community-blank-message": "Tus chats aparecerán aquí. Para iniciar nuevos chats, haga clic en los 3 puntos de arriba y seleccione \"Crear un canal\"", + "welcome-screen-text": "¡Configura tu billetera, invita a amigos a chatear \n y busca dapps populares!", + "welcome-to-status": "¡Bienvenidos a Status!", + "welcome-to-status-description": "Configura tu cripto billetera, invita a tus amigos a chatear y navegar apps descentralizadas", + "whats-on-your-mind": "Lo que tienes en mente...", + "word-count": "Número de palabras", + "word-n": "Palabra #{{number}}", + "word-n-description": "Para comprobar si has realizado una copia de seguridad de la frase semilla correctamente, escribe arriba la palabra #{{number}}.", + "words-n": { + "one": "1 palabra", + "other": "{{count}} palabras" + }, + "write-down-and-store-securely": "Escribe los códigos\n y guárdalos de forma segura", + "wrong-address": "Dirección incorrecta", + "wrong-card": "Tarjeta equivocada", + "wrong-card-text": "Haz tocado una tarjeta que no corresponde a las llaves seleccionadas", + "wrong-contract": "Contrato incorrecto", + "wrong-keycard-text": "La Keycard que tocaste no está asociada con este teléfono", + "wrong-keycard-title": "Parece que has hecho tapping \nuna keycard incorrecta", + "wrong-password": "Contraseña incorrecta", + "wrong-word": "Palabra incorrecta", + "yes": "Sí", + "you": "tú", + "you-already-have-an-asset": "Ya tienes un activo {{value}}", + "you-are-all-set": "¡Estás listo!", + "you-are-all-set-description": "Ahora, si pierdes tu teléfono, puedes acceder a tus fondos y llave de chat usando la frase semilla", + "you-can-change-account": "Puedes cambiar el nombre y el color de la cuenta a lo que deseas", + "you-can-choose-preview-websites": "Puede elegir cuál de los siguientes sitios web puede previsualizar el enlace de las descripciones e imágenes en los chats", + "you-can-fetch": "Puedes recuperar el historial de chat", + "you-dont-have-contacts": "Todavía no tenés ningún contacto.", + "you-dont-have-stickers": "Todavía no tienes stickers", + "you-will-need-this-code": "Necesitarás este código para abrir Status y firmar transacciones", + "you-will-start-from-scratch": "Comenzarás desde cero con un nuevo set de claves", + "your-card-is-frozen": "Tu Keycard está congelada. Restablece el acceso a la tarjeta", + "your-contact-code": "Conceder acceso autoriza a esta DApp a obtener tu clave de chat", + "your-data-belongs-to-you": "Si pierdes tu frase semilla, pierdes tus datos y fondos", + "your-data-belongs-to-you-description": "Si pierdes acceso, por ejemplo al perder tu teléfono, solo puedes acceder a tus llaves con tu frase semilla. Nadie aparte de ti tiene tu frase semilla. Anótala. Mantenla segura.", + "your-keys": "Tus claves", + "your-price-limit": "Tu límite de precio", + "your-recovery-phrase": "Tu frase semilla", + "your-recovery-phrase-description": "Esta es tu frase semilla. La usas para comprobar que esta es tu billetera. ¡Sólo la verás una vez! Escríbela en un papel y guárdala en un lugar seguro. La necesitarás si pierdes o reinstalas tu billetera.", + "your-tip-limit": "Tu límite de propina", + "youre-on-mobile-network": "Estás en una red móvil" +} diff --git a/translations/es_mx.json b/translations/es_mx.json new file mode 100644 index 00000000000..7dd41b0e967 --- /dev/null +++ b/translations/es_mx.json @@ -0,0 +1,130 @@ +{ + "confirm": "Confirmar", + "amount": "Cantidad", + "members-active": { + "one": "1 miembro", + "other": "{{count}} miembros", + "zero": "no hay miembros" + }, + "chat-name": "Nombre del chat", + "phew-here-is-your-passphrase": "*Uff* eso fue difícil, esta es tu frase de contraseña, *¡escríbela y guárdala en un lugar seguro!* La necesitarás para recuperar tu cuenta.", + "public-group-topic": "Tema", + "chat-settings": "Ajustes de chat", + "offline": "Desconectado", + "invited": "invitado", + "address": "Dirección", + "new-public-group-chat": "Unirte a chat público", + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "Para permitir el acceso a la cámara, porfavor, ve a configuración de sistema y asegúrate que la opción 'Status > Cámara' está seleccionada.", + "remove": "Remover", + "add-members": "Agregar miembros", + "photos-access-error": "Para permitir el acceso a fotos, porfavor, ve a configuración de sistema y asegúrate que la opción 'Status > Fotos' está seleccionada.", + "done": "Listo", + "close-chat": "Eliminar chat", + "new-group-chat": "Nuevo grupo de chat", + "sign-in": "Regístrate", + "datetime-yesterday": "ayer", + "create-new-account": "Crear nueva cuenta", + "datetime-ago": "hace", + "contacts": "Nuevo contacto", + "got-it": "Entendido", + "active-online": "En línea", + "password": "Contraseña", + "browsing-title": "Navegar", + "discover": "Descubrir", + "browsing-cancel": "Cancelar", + "intro-status": "¡Chatea conmigo para establecer tu cuenta y modificar tu configuración!", + "name": "Nombre", + "show-qr": "Mostrar QR", + "connect": "Conectar", + "edit": "Editar", + "account-generation-message": "Dame un segundo, ¡haré algunos cálculos para generar tu cuenta!", + "no-messages": "No hay mensajes", + "passphrase": "Frase de contraseña", + "recipient": "Receptor", + "members-title": "Miembros", + "new-group": "Nuevo grupo", + "phone-e164": "Internacional 1", + "settings": "Ajustes", + "delete": "Eliminar", + "chats": "Chats", + "transaction": "Transacción", + "public-group-status": "Público", + "image-source-make-photo": "Tomar foto", + "start-conversation": "Empezar conversación", + "save": "Guardar", + "sharing-copy-to-clipboard": "Copiar", + "sync-in-progress": "Sincronizando...", + "send-transaction": "Enviar transacción", + "incorrect-code": [ + "str", + "Lo sentimos, el código es incorrecto, escríbelo de nuevo" + ], + "image-source-gallery": "Seleccionar de la galería", + "sync-synced": "Sincronizado", + "status-pending": "Pendiente", + "datetime-day": { + "one": "día", + "other": "días" + }, + "scan-qr": "Escanear QR", + "contact-s": { + "one": "contacto", + "other": "contactos" + }, + "next": "Siguiente", + "recent": "Recientes", + "status": "Estado", + "from": "De", + "wrong-password": "Contraseña incorrecta", + "in-contacts": "En contactos", + "sharing-share": "Compartir...", + "type-a-message": "Escribe un mensaje...", + "clear-history": "Borrar historial", + "no-contacts": "Aún no hay contactos", + "datetime-today": "hoy", + "web-view-error": "oops, error", + "error": "Error", + "more": "más", + "cancel": "Cancelar", + "can-not-add-yourself": "No puedes agregarte a ti mismo", + "add-to-contacts": "Agregar a contactos", + "available": "Disponible", + "You": "Tú", + "main-wallet": "Wallet principal", + "members": { + "one": "1 miembro", + "other": "{{count}} miembros", + "zero": "no hay miembros" + }, + "intro-message1": "¡Bienvenid@ a Status\nToca este mensaje para configurar tu contraseña y empezar!", + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "recover": "Recuperar", + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "browsing-open-in-android-web-browser": "Abrir en navegador", + "browsing-open-in-ios-web-browser": "Abrir en navegador", + "edit-profile": "Editar perfil", + "active-unknown": "Desconocido", + "public-key": "Llave pública", + "profile": "Perfil", + "none": "Ninguno", + "removed": "eliminado", + "message": "Mensaje", + "here-is-your-passphrase": "Esta es tu frase de contraseña, *¡escríbela y guárdala en un lugar seguro!* La necesitarás para recuperar tu cuenta.", + "image-source-title": "Imagen de perfil", + "current-network": "Red actual", + "left": "salió", + "to": "Para", + "status-sent": "Enviado", + "data": "Datos" +} diff --git a/translations/fa.json b/translations/fa.json new file mode 100644 index 00000000000..133094ed5c4 --- /dev/null +++ b/translations/fa.json @@ -0,0 +1,1229 @@ +{ + "You": "شما", + "about-app": "درباره", + "about-key-storage-content": "استاتوس هرگز به کلید خصوصی شما دسترسی نخواهد داشت. حتماً از عبارت دانه خود نسخه پشتیبان تهیه کنید. اگر تلفن خود را گم کنید ، این تنها راه دسترسی به کلیدهای شماست.", + "about-key-storage-title": "درباره ذخیره کلید", + "about-names-content": "هیچ کس نمی تواند وانمود کند که شما هستید! شما به طور پیش فرض ناشناس هستید و هرگز مجبور نیستید نام واقعی خود را فاش کنید. می توانید با هزینه ای ناچیز نام دلخواه خود را ثبت کنید.", + "about-names-title": "نامها را نمی توان تغییر داد", + "accept": "پذیرفتن", + "accept-and-share-address": "پذیرش و به اشتراک گذاری آدرس", + "accept-new-chats-from": "پذیرش گفتگو های جدید از", + "access-existing-keys": "دسترسی به کلیدهای موجود", + "access-key": "کلید دسترسی", + "account-added": "حساب اضافه شد", + "account-color": "رنگ حساب", + "account-content": "می‌توانید حساب‌های موجود در استاتوس را با حساب‌های بانکی مقایسه کنید. مانند یک حساب بانکی، یک حساب به طور معمول دارای یک آدرس و مانده است. شما از این حساب برای معامله در اتریوم استفاده می‌کنید. در کیف پول می‌توانید چندین حساب کاربری داشته باشید. با باز کردن استاتوس به همه آنها میتوان دسترسی پیدا کرد.", + "account-exists-title": "حساب در حال حاضر وجود دارد", + "account-name": "نام حساب", + "account-settings": "تنظیمات حساب", + "account-title": "حساب", + "accounts": "حساب ها", + "active-online": "آنلاین", + "active-unknown": "ناشناخته", + "add": "اضافه کردن", + "add-a-watch-account": "افزودن یک آدرس فقط دیدنی", + "add-account": "افزودن حساب", + "add-account-description": "شما می توانید هر نوع حساب اتریوم را وارد کنید تا آن را به کیف پول استاتوس خود اضافه کنید", + "add-account-incorrect-password": "کلمه عبور نادرست است. کلمه عبور مورد استفاده برای باز کردن قفل برنامه را وارد کنید.", + "add-an-account": "افزودن حساب", + "add-bootnode": "اضافه کردن bootnode", + "add-contact": "افزودن مخاطب", + "add-custom-token": "افزودن نشانه سفارشی", + "add-mailserver": "اضافه کردن mailserver", + "add-members": "افزودن اعضا", + "add-network": "اضافه کردن شبکه", + "add-new-contact": "افزودن مخاطب جدید", + "add-node": "افزودن گره", + "add-private-key-account": "اضافه کردن حساب از طریق کلید خصوصی", + "add-seed-account": "اضافه کردن حساب از طریق کلمات پشتیبان", + "add-text": "افزودن متن", + "add-to-contacts": "افزودن به مخاطبین", + "add-to-contacts-text": "با اضافه کردن یک کاربر به لیست مخاطبین ، آدرس کیف پول خود را به اشتراک می گذارید", + "add-watch-account": "افزودم حساب تنها نمایشی\n", + "address": "آدرس", + "address-received": "آدرس دریافت شد", + "address-request-accepted": "درخواست آدرس پذیرفته شد", + "address-requested": "آدرس درخواست شد", + "advanced": "پیشرفته", + "advanced-settings": "تنظیمات پیشرفته", + "advertiser-description": "شما به لطف یک شریک اِستاتوس را کشف کرده اید. آیا مشکلی ندارید که Status یک بار آدرس IP شما را بررسی کند تا به آنها پاداش داده شود؟ این اطلاعات برای هیچ چیز دیگری استفاده نمی شود و پس از 7 روز به طور کامل حذف می شود.", + "advertiser-starter-pack-accept": "پذیرفتن", + "advertiser-starter-pack-decline": "نپذیرفتن", + "advertiser-starter-pack-description": "در اینجا مقداری رمزارز برای شروع کار وجود دارد! برای به دست آوردن استیکرها و یک نام ENS از آن استفاده کنید، و اپ‌های غیرمتمرکز را امتحان کنید", + "advertiser-starter-pack-title": "بستۀ آغازگر", + "advertiser-title": "حریم خصوصی همیشگی", + "agree-by-continuing": "در صورتی که ادامه دهید \nموافقت خواهید کرد با", + "all": "همه", + "allow": "اجازه دادن", + "allowing-authorizes-this-dapp": "به این DApp اجازه داده می شود تا آدرس کیف پول شما را بازیابی و Web3 را فعال کند", + "already-have-asset": "شما قبلاً این دارایی را دارید", + "amount": "مقدار", + "anyone": "هر کس", + "appearance": "ظاهر", + "apply": "اعمال", + "are-you-sure": "آیا مطمئن هستید؟", + "are-you-sure-description": "شما قادر نخواهید بود که کل عبارت دانه را دوباره مشاهده نمایید", + "are-you-sure-to-cancel": "آیا مطمئن هستید؟", + "are-you-sure?": "آیا مطمئن هستید؟", + "ask-in-status": "یک سوال بپرسید یا یک اشکال را گزارش کنید", + "at": "در", + "attribution-received": "{{attrib}} تا از {{max}} پاداش دریافت شده است", + "audio": "صدا", + "audio-recorder": "ضبط کننده", + "audio-recorder-error": "خطای ضبط کننده", + "audio-recorder-max-ms-reached": "حداکثر زمان ضبط فرا رسیده است", + "audio-recorder-permissions-error": "شما باید مجوز ارسال پیام‌های صوتی را بدهید", + "authorize": "مجاز کردن", + "available": "در دسترس", + "available-participants": { + "one": "میتوانید یک عضو دیگر انتخاب کنید", + "other": "میتوانید {{count}} عضو دیگر انتخاب کنید" + }, + "back": "بازگشت", + "back-up-seed-phrase": "از دانه نسخه پشتیبان تهیه کنید", + "back-up-your-seed-phrase": "پشتیبان گیری از عبارت دانه", + "backup-disabled": "غیر فعال", + "backup-recovery-phrase": "از دانه نسخه پشتیبان تهیه کنید", + "balance": "موجودی", + "begin-set-up": "شروع راه اندازی", + "biometric-auth-android-sensor-desc": "حسگر لمسی", + "biometric-auth-android-sensor-error-desc": "ناموفق", + "biometric-auth-android-title": "نیاز به تایید اعتبار", + "biometric-auth-confirm-logout": "ورود مجدد", + "biometric-auth-confirm-message": "احراز هویت بیومتریک برای ادامه مورد نیاز است، اگر امکان پذیر نیست لطفا کلید های خود را با رمز عبور یا کد عبور خود باز کنید", + "biometric-auth-confirm-title": "شما باید احراز هویت کنید!", + "biometric-auth-confirm-try-again": "دوباره امتحان کنید", + "biometric-auth-error": "انجام احراز هویت بیومتریک امکان‌پذیر نیست ({{code}})", + "biometric-auth-login-error-title": "خطای احراز هویت بیومتریک", + "biometric-auth-login-ios-fallback-label": "رمز عبور را وارد کنید", + "biometric-auth-reason-login": "ورود به حساب کاربری استتوس", + "biometric-auth-reason-verify": "تأیید اعتبار", + "biometric-disable-bioauth": "غیرفعال کردن {{bio-type-label}}", + "biometric-disable-password-description": "در صورت غیر فعال کردن این گزینه شما همچنین", + "biometric-disable-password-title": "غیر فعال کردن ذخیره رمز عبور", + "biometric-enable": "اگر نمی‌خواهید برای دسترسی به برنامه هربار رمز ورود خود را وارد کنید {{bio-type-label}} را فعال کنید", + "biometric-enable-button": "فعال کردن {{bio-type-label}}", + "biometric-enable-keycard": "اگر نمی‌خواهید هر بار از کارت کلید خود برای دسترسی به برنامه استفاده کنید، ورود {{bio-type-label}} را فعال کنید.", + "biometric-faceid": "حسگر تشخیص چهره", + "biometric-fingerprint": "اثر انگشت", + "biometric-secure-with": "ایمن با {{bio-type-label}}", + "biometric-touchid": "حسگر اثر انگشت", + "blank-contacts-text": "مخاطبین شما اینجا خواهند بود", + "blank-keycard-text": "هنگامی که کلید ها و نام خود را ایجاد کرده اید ، می توانید با keycard خود اقدام کنید", + "blank-keycard-title": "به نظر می رسد که شما به یک keycard خالی ضربه زدید", + "blank-messages-text": "پیامهای شما اینجا خواهد بود", + "block": "مسدود کردن", + "block-contact": "انسداد کاربر", + "block-contact-details": "انسداد این کاربر موجب حذف پیامهای قبلی شده و از دریافت پیامهای جدید جلوگیری میکند", + "block-user": "انسداد کاربر", + "block-user?": "انسداد کاربر؟", + "blocked-users": "کاربران مسدود شده", + "bold": "برجسته", + "bootnode-address": "آدرس Bootnode", + "bootnode-details": "جزئیات Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnode ها", + "bootnodes-enabled": "فعال شدن Bootnode ها", + "bootnodes-settings": "تنظیمات Bootnode ها", + "browsed-websites": "تاریخچه مرورگر در اینجا ظاهر می شود", + "browser": "مرورگر", + "browser-not-secure": "اتصال امن نیست! معاملات را امضا نکنید یا اطلاعات شخصی را در این سایت ارسال نکنید.", + "browser-secure": "اتصال امن است. اطمینان حاصل کنید که قبل از امضای معاملات یا وارد کردن اطلاعات شخصی ، به این سایت اطمینان دارید.", + "browsers": "مرورگرها", + "browsing-cancel": "لغو", + "browsing-open-in-android-web-browser": "باز کردن در اندروید", + "browsing-open-in-ios-web-browser": "باز کردن در iOS", + "browsing-open-in-status": "باز کردن در استاتوس", + "browsing-site-blocked-description1": "ما فعالیت مخرب بالقوه ای را از این آدرس شناسایی کرده ایم. برای محافظت از شما و کیف پولتان، ما از پیشروی این موضوع جلوگیری می کنیم.. \n\n اگر فکر می کنید این یک خطا است، به ما اطلاع دهید", + "browsing-site-blocked-description2": " چت عمومی.", + "browsing-site-blocked-go-back": "بازگشت", + "browsing-site-blocked-title": "این سایت مسدود شده است", + "browsing-title": "مرور کردن", + "bug-report": "ثبت یک اشکال", + "bug-report-description": "* شرح", + "bug-report-description-placeholder": "متن اجباری", + "bug-report-steps": "گام های بازتولید", + "bug-report-steps-placeholder": "- برنامه را باز کن\n- کاري انجام بده\n-و بعدش يک کار ديگر ...", + "bug-report-submit-email": "ارسال از طریق ایمیل با آرشیو سیاهه های مربوط", + "bug-report-submit-gh-issue": "ارسال یک مشکل به گیتهاب بدون سیاهه", + "bug-report-too-short-description": "شرح زیادی کوتاه است", + "camera-access-error": "برای اعطای مجوز مورد نیاز به دوربین، لطفا به تنظیمات گوشی خود بروید و مطمئن شوید که Status > Camera انتخاب شده است.", + "can-not-add-yourself": "این شما هستید ، برای شروع گفتگو ، شخص دیگری را انتخاب کنید", + "cancel": "لغو", + "cancel-keycard-setup": "لغو تنظیمات Keycard", + "cannot-pin-desc": "تنها قادر به سنجاق سه پیام هستید. برای سنجاق پیامهای بیشتر یکی از قبلیها را حذف کنید.", + "cannot-pin-title": "نمیتوانید این پیام را سنجاق کنید!", + "cannot-read-card": "امکان خواندن کارت نبود.\nدر ادامه کارت را پشت تلفن همراه خود قرار دهید.", + "cannot-use-default-pin": "کد عبور 000000 مجاز نبود.\nلطفا شماره دیگری را استفاده کنید", + "cant-report-bug": "گزارش خطا امکانپذیر نیست", + "card-is-blank": "این کارت خالی است", + "card-reseted": "کارت دوباره تنظیم شده است", + "card-unpaired": "کارت دیگر با دستگاه فعلی جفت نیست", + "category-title": "عنوان دسته بندی", + "change-fleet": "تغییر Fleet به {{fleet}}", + "change-group-privacy": "تغییر حریم خصوصی گروه", + "change-logging-enabled": "آیا یقین دارید که میخواهید ثبت سیاهه را {{enable}} کنید؟", + "change-pairing": "تغییر کد جفت سازی", + "change-pairing-description": "تغییر کد جفت سازی تاثیری بر جفت های کنونی ندارد. اما هر جفت سازی جدید نیاز به این کد جدید خواهد داشت.", + "change-pairing-title": "ساخت یک کد جفت سازی تازه", + "change-passcode": "تغییر کد عبور", + "change-password": "تغییر رمز عبور", + "change-pin": "تغییر کد عبور شش رقمی", + "change-puk": "تغییر PUK 12 رقمی", + "changed-amount-warning": "تغییر مقدار از {{old}} به {{new}}", + "changed-asset-warning": "تغییر دارایی از {{old}} به {{new}}", + "chaos-mode": "حالت آشوب", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "چت", + "chat-and-transact": "گفتگو و تراکنش خصوصی با دوستان", + "chat-is-a-contact": "مخاطب", + "chat-is-not-a-contact": "مخاطب معتبر انتخاب نشده", + "chat-key": "کلید چت", + "chat-key-content": "پیام‌های چت استاتوس با استفاده از کلیدهای رمزگذاری ارسال و دریافت می‌شوند. کلید چت عمومی مجموعه ای از کاراکترهایی است که با دیگران به اشتراک می‌گذارید تا بتوانند برای شما پیام‌هایی را در استاتوس ارسال کنند.", + "chat-key-title": "کلید چت", + "chat-name": "نام گفتگو", + "chat-name-content": "سه کلمه تصادفی، مشتق از الگوریتمی از کلید گپ شما و به عنوان نام اصلی پیش فرض شما در گپ استفاده می‌شود. نام چت کاملاً یکتا است. هیچ کاربر دیگری نمی‌تواند همان سه کلمه را داشته باشد.", + "chat-name-title": "نام چت", + "chat-notification-preferences": "تنظیمات اعلان", + "chat-settings": "تنظیمات گفتگو", + "chats": "گفتگوها", + "check-your-recovery-phrase": "از عبارت دانه خود نسخه پشتیبان تهیه کنید", + "choose-authentication-method": "روش تأیید اعتبار برای محافظت از حساب خود را انتخاب کنید", + "clear": "پاک کردن", + "clear-all": "پاک کردن همه", + "clear-history": "پاک کردن تاریخچه", + "clear-history-action": "پاک کردن", + "clear-history-confirmation": "پاک کردن تاریخچه ؟", + "clear-history-confirmation-content": "آیا مطمئن هستید که می خواهید این تاریخچه چت را پاک کنید؟", + "clear-history-title": "پاک کردن تاریخچه ؟", + "clear-history?": "حذف تاریخچه؟", + "cleared-chat-description-public": "اینجا خبری نبوده است. گفتگویی شروع کنید یا", + "close": "بستن", + "close-app-button": "تایید", + "close-app-content": "برنامه متوقف می شود و بسته خواهد شد. هنگامی که شما آن را دوباره باز کنید ، شبکه انتخاب شده استفاده می شود", + "close-app-title": "هشدار!", + "command-button-send": "ارسال", + "communities": "جوامع", + "communities-alpha": "جوامع (آلفا)", + "communities-verified": "✓ انجمن تایید شده", + "community-color": "رنگ جامعه", + "community-color-placeholder": "انتخاب رنگ", + "community-edit-title": "ویرایش جامعه", + "community-emoji-thumbnail-title": "بندانگشتی", + "community-image-pick": "انتخاب تصویر", + "community-image-remove": "حذف", + "community-image-take": "گرفتن عکس", + "community-invite-title": "دعوت از دوستان", + "community-key": "کلید خصوصی جامعه", + "community-key-placeholder": "کلید خصوصی جامعه را تایپ کنید", + "community-link": "پیوند جامعه", + "community-members": { + "one": "{{count}} عضو", + "other": "{{count}} عضو" + }, + "community-members-title": "اعضا", + "community-notification-settings": "تنظیمات اعلان", + "community-private-key": "کلید خصوصی جامعه", + "community-requests-to-join-title": "درخواست های عضویت", + "community-roles": "نقشها", + "community-share-title": "اشتراک گذاری", + "community-thumbnail-image": "تصویر بندانگشتی", + "community-thumbnail-upload": "بارگذاری", + "complete-hardwallet-setup": "این کارت اکنون متصل است. برای امضای تراکنشها و باز کردن کلیدها به آن نیاز دارید", + "completed": "تکمیل", + "confirm": "تایید", + "confirm-password-placeholder": "رمز عبور خود را تأیید کنید ...", + "confirmation-request": "درخواست تایید", + "confirmations": "تاییدیه ها", + "confirmations-helper-text": "هنگامی که معامله 12 تاییدیه داشته باشد ، می توانید آن را تسویه کنید.", + "connect": "اتصال", + "connect-mailserver-content": "اتصال به {{name}}؟", + "connected": "متصل", + "connected-to": "متصل به ", + "connecting": "در حال اتصال...", + "connecting-requires-login": "اتصال به شبکه دیگر نیاز به ورود دارد", + "connection-with-the-card-lost": "برای ادامه ، کارت را دوباره وصل کنید", + "connection-with-the-card-lost-setup-text": "برای ادامه عملیات، کارت را پشت تلفن همراه خود قرار دهید.", + "connection-with-the-card-lost-text": "برای ادامه عملیات، کارت را پشت تلفن همراه خود قرار دهید.", + "contact-code": "کلید چت", + "contact-requests": "درخواست های تماس", + "contact-s": { + "one": "مخاطب", + "other": "مخاطب" + }, + "contacts": "مخاطبین", + "continue": "ادامه", + "continue-anyway": "ادامه بده", + "contract-address": "آدرس قرارداد", + "contract-interaction": "تعامل قرارداد", + "copy-info": "کپی اطلاعات", + "copy-qr": "کپی کردن کد", + "copy-to-clipboard": "کپی", + "copy-transaction-hash": "کپی شناسه تراکنش", + "cost-fee": "هزینه", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "ایجاد", + "create-a-puk": "ایجاد یک PUK 12 رقمی", + "create-category": "ساخت یک دسته بندی", + "create-channel": "ساخت کانال", + "create-channel-title": "کانال جدید", + "create-community": "ساخت یک جامعه", + "create-group-chat": "ایجاد یگ گفتگوی گروهی", + "create-multiaccount": "ایجاد کلید", + "create-new-key": "دریافت کلیدهای جدید", + "create-pin": "ایجاد کد عبور 6 رقمی", + "create-pin-description": "شما به این کارت و این کد عبور 6 رقمی برای باز کردن اِستاتوس و تایید تراکنشها نیاز خواهید داشت.", + "created-group-chat-description": "گروه را ایجاد کردید", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "ارز", + "currency-display-name-aed": "درهم امارات", + "currency-display-name-afn": "افغانی افغانستان", + "currency-display-name-ars": "پزو آرژانتین", + "currency-display-name-aud": "دلار استرالیا", + "currency-display-name-bbd": "دلار باربادوس", + "currency-display-name-bdt": "تاکا بنگلادش", + "currency-display-name-bgn": "لو بلغارستان", + "currency-display-name-bhd": "دینار بحرین", + "currency-display-name-bnd": "دلار برونئی", + "currency-display-name-bob": "بولیویانو بولیوی", + "currency-display-name-brl": "رئال برزیل", + "currency-display-name-btn": "Bhutanese Ngultrum", + "currency-display-name-cad": "دلار کانادا", + "currency-display-name-chf": "فرانک سوئیس", + "currency-display-name-clp": "پزو شیلی", + "currency-display-name-cny": "یوآن چین", + "currency-display-name-cop": "کلمبیا پزو", + "currency-display-name-crc": "کولون کاستاریکا", + "currency-display-name-czk": "کرونای چک", + "currency-display-name-dkk": "کرون دانمارک", + "currency-display-name-dop": "پزو جمهوری دومینیکن", + "currency-display-name-egp": "پوند مصر", + "currency-display-name-etb": "بیر اتیوپی", + "currency-display-name-eur": "یورو", + "currency-display-name-gbp": "پوند انگلیس", + "currency-display-name-gel": "لاری گرجستان", + "currency-display-name-ghs": "سدی غنا", + "currency-display-name-hkd": "دلار هنگ کنگ", + "currency-display-name-hrk": "کونا کرواسی", + "currency-display-name-huf": "فورینت مجارستان", + "currency-display-name-idr": "روپیه اندونزی", + "currency-display-name-ils": "شِکِل اسرائیل", + "currency-display-name-inr": "روپیه هند", + "currency-display-name-isk": "کرون ایسلند", + "currency-display-name-jmd": "دلار جامائیکا", + "currency-display-name-jpy": "ین ژاپن", + "currency-display-name-kes": "شیلینگ کنیا", + "currency-display-name-krw": "وون کره جنوبی", + "currency-display-name-kwd": "دینار کویت", + "currency-display-name-kzt": "تنگ قزاقستان", + "currency-display-name-lkr": "روپیه سریلانکا", + "currency-display-name-mad": "درهم مراکش", + "currency-display-name-mdl": "لیو مولداوی", + "currency-display-name-mur": "روپیه موریس", + "currency-display-name-mwk": "مالاویا کواچا", + "currency-display-name-mxn": "پزو مکزیک", + "currency-display-name-myr": "رینگیت مالزی", + "currency-display-name-mzn": "متیکال موزامبیک", + "currency-display-name-nad": "دلار نامیبیا", + "currency-display-name-ngn": "نایرا نیجریه", + "currency-display-name-nok": "کرون نروژ", + "currency-display-name-npr": "روپیه نپال", + "currency-display-name-nzd": "دلار نیوزیلند", + "currency-display-name-omr": "ریال عمان", + "currency-display-name-pen": "سُل پرو", + "currency-display-name-pgk": "پاپوآ گینه نو", + "currency-display-name-php": "پزو فیلیپین", + "currency-display-name-pkr": "روپیه پاکستان", + "currency-display-name-pln": "زُلتی لهستان", + "currency-display-name-pyg": "گوارانی پاراگوئه", + "currency-display-name-qar": "ریال قطر", + "currency-display-name-ron": "لیو رومانی", + "currency-display-name-rsd": "دینار صربستان", + "currency-display-name-rub": "روبل روسیه", + "currency-display-name-sar": "ریال عربستان سعودی", + "currency-display-name-sek": "کرون سوئد", + "currency-display-name-sgd": "دلار سنگاپور", + "currency-display-name-thb": "بات تایلند", + "currency-display-name-try": "لیره ترکیه", + "currency-display-name-ttd": "دلار ترینیداد و توباگو", + "currency-display-name-twd": "دلار جدید تایوان", + "currency-display-name-tzs": "شیلینگ تانزانیا", + "currency-display-name-uah": "Hryvnia اوکراین", + "currency-display-name-ugx": "شیلینگ اوگاندا", + "currency-display-name-usd": "دلار آمریکا", + "currency-display-name-uyu": "پزوی اوروگوئه", + "currency-display-name-vef": "بولیوار ونزوئلا", + "currency-display-name-vnd": "دونگ ویتنام", + "currency-display-name-zar": "رند آفریقای جنوبی", + "current-network": "شبکه جاری", + "current-pin": "کد عبور 6 رقمی را وارد کنید", + "current-pin-description": "کد عبور 6 رقمی را برای ادامه وارد کنید", + "custom": "سفارشی", + "custom-networks": "شبکه های سفارشی", + "custom-seed-phrase": "عبارت ترکیبی رویشی نامعتبر", + "custom-seed-phrase-text-1": "این عبارت دانه با دیکشنری پشتیبانی شده ما مطابقت ندارد. کلمات اشتباه را بررسی کنید.", + "cut": "بریدن", + "dapp": "برنامه غیرمتمرکز", + "dapp-starter-pack-accept": "پذیرش و باز کردن", + "dapp-starter-pack-description": "در اینجا مقداری رمزارز برای شروع کار وجود دارد! برای به دست آوردن استیکرها و یک نام ENS از آن استفاده کنید، و اپ‌های غیرمتمرکز را امتحان کنید", + "dapp-starter-pack-title": "بستۀ آغازگر", + "dapp-would-like-to-connect-wallet": "مایل به اتصال به", + "dapps": "برنامه های غیرمتمرکز", + "dapps-permissions": "مجوزهای DApp", + "dark": "تیره\n", + "data": "داده", + "data-syncing": "همگام سازی داده‌ها", + "datetime-ago": "پیش", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "روز", + "other": "روز" + }, + "datetime-day-short": { + "one": "ر", + "other": "ر" + }, + "datetime-hour": { + "one": "ساعت", + "other": "ساعت" + }, + "datetime-hour-short": { + "one": "س", + "other": "س" + }, + "datetime-minute": { + "one": "دقیقه", + "other": "دقیقه" + }, + "datetime-minute-short": { + "one": "د", + "other": "د" + }, + "datetime-second": { + "one": "ثانیه", + "other": "ثانیه" + }, + "datetime-second-short": { + "one": "ث", + "other": "ث" + }, + "datetime-today": "امروز", + "decimals": "اعشاری ها", + "decline": "نپذیرفتن", + "decryption-failed-content": "ما قادر به رمزگشایی اطلاعات شما نبودیم، در صورت نیاز به ایجاد حساب جدید داشته باشید و پاک کردن داده های قدیمی خود روی «اعمال» ضربه بزنید. با کلیک بر روی \"لغو\"، دوباره امتحان کنید", + "default": "پیش فرض", + "delete": "حذف", + "delete-account": "حذف حساب کاربری", + "delete-and-leave-group": "حذف و ترک گروه", + "delete-bootnode": "حذف bootnode", + "delete-bootnode-are-you-sure": "آیا مطمئن هستید که میخواهید این bootnode را حذف کنید؟", + "delete-bootnode-title": "حذف bootnode", + "delete-category-confirmation": "از حذف این دسته بندی مطمئن هستید؟", + "close-chat": "حذف گفتگو؟", + "close-chat-confirmation": "آیا مطمئنید که می خواهید این چت را حذف کنید ؟", + "delete-confirmation": "حذف؟", + "delete-mailserver": "حذف mailserver", + "delete-mailserver-are-you-sure": "آیا مطمئن هستید که میخواهید این Mailserver را حذف کنید؟", + "delete-mailserver-title": "حذف mailserver", + "delete-message": "حذف پیام", + "delete-my-account": "حساب من را حذف کن!", + "delete-my-profile": "پروفایل مرا حذف کن", + "delete-network-confirmation": "آیا مطمئنید که می خواهید این شبکه را حذف کنید ؟", + "delete-network-error": "لطفاً قبل از حذف این شبکه به شبکه دیگری وصل شوید", + "delete-network-title": "حذف شبکه؟", + "delete-node": "حذف گره", + "delete-node-are-you-sure": "از حذف این گره مطمئن هستید؟", + "delete-node-title": "حذف گره", + "delete-profile": "حذف کردن پروفایل", + "delete-profile-warning": "هشدار: اگر عبارت بازیابی خود را یادداشت نکنید، پس از حذف پروفایل خود، دسترسی به دارایی‌های خود را از دست خواهید داد", + "deny": "رد", + "derivation-path": "مسیر استخراج", + "describe-channel": "کانال را شرح دهید", + "description": "توضیحات", + "dev-mode": "حالت توسعه", + "dev-mode-settings": "تنظیمات حالت برنامه نویسی و توسعه", + "device-syncing": "همگام سازی دستگاه", + "devices": "دستگاه ها", + "disable": "غیرفعال کردن", + "disabled": "غیر فعال", + "disconnected": "چت آفلاین", + "discover": "کشف کردن", + "dismiss": "رد", + "done": "انجام شد", + "edit": "ویرایش", + "edit-channel-title": "ویرایش کانال", + "edit-chats": "ویرایش گفتگوها", + "edit-community": "ویرایش جامعه", + "edit-group": "ویرایش مشخصات گروه", + "edit-name-and-image": "ویراش نام و تصویر", + "edit-name-image": "ویراش نام و تصویر", + "edit-nickname": "ویرایش نام مستعار", + "edit-profile": "ویرایش مشخصات", + "edited": "ویرایش شده", + "editing-message": "در حال ویرایش پیام", + "empty-chat-description": "هنوز هیچ پیامی در این گفتگو ارسال نشده است.", + "empty-chat-description-community": "اینجا به مدت {{quiet-hours}} ساعت خبری نبوده است.", + "empty-chat-description-one-to-one": "پیام های ارسال شده در اینجا رمزگذاری شده و فقط توسط شما خوانده می شوند", + "empty-chat-description-public": "به مدت {{quiet-hours}} اینجا خبری نبوده است. گفتگویی شروع کنید یا", + "enable": "فعال کردن", + "encrypt-with-password": "رمزگذاری با رمزعبور", + "ens-add-username": "افزودن نام کاربری", + "ens-agree-to": "موافق هستید با", + "ens-chat-settings": "تنظیمات چت", + "ens-custom-domain": "دامنه سفارشی", + "ens-custom-username-hints": "نام کاربری کامل را شامل دامنه سفارشی تایپ کنید مانند username.domain.eth", + "ens-custom-username-taken": "نام کاربری متعلق به شما نیست :(", + "ens-deposit": "سپردن پول", + "ens-dismiss-message": "برای رد کردن اینجا را کلیک کنید", + "ens-displayed-with": "پیام های شما به دیگران نمایش داده می شود", + "ens-get-name": "نام کاربری جهانی بگیرید", + "ens-locked": "نام کاربری قفل است.نمیتوانید آن را تا {{date}} آزاد کنید.", + "ens-name-content": "نام مستعار دلخواه برای کلید گپ خود که می‌توانید با استفاده از سرویس نام اتریوم ثبت نام کنید. نام‌های ENS نام‌های غیر متمرکز هستند.", + "ens-name-not-found": "نمی توان نام ENS را حل کرد", + "ens-name-title": "نام ENS", + "ens-network-restriction": "تنها روی Mainnet موجود است", + "ens-no-usernames": "هیچ نام کاربری متصل ندارید", + "ens-powered-by": "پشتیبانی شده توسط خدمات نام اتریوم", + "ens-primary-username": "نام کاربری اصلی", + "ens-register": "ثبت نام", + "ens-registration-failed": "لطفا برای ثبت نام کاربری دوباره تلاش کنید.", + "ens-registration-failure": "ثبت نام ناموفق بود", + "ens-registration-in-progress": "ثبت نام در حال انجام است...", + "ens-release-username": "آزاد کردن نام کاربری", + "ens-remove-hints": "حذف موجب انفصال نام کاربری از کلید خواهد شد.", + "ens-remove-username": "حذف نام کاربری", + "ens-saved": ".اکنون با کلید گفتگویتان مرتبط شده و میتواند در اِستاتوس استفاده شود.", + "ens-saved-title": "نام کاربری اضافه شد", + "ens-show-username": "نمایش نام کاربری ENS من در چت", + "ens-terms-header": "شرایط ثبت نام", + "ens-terms-point-1": "وجوه به مدت 1 سال نگه داشته می شود. SNT شما قفل می شود، اما خرج نمی شود.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (رجیستری ENS).", + "ens-terms-point-2": "پس از 1 سال، می توانید نام را آزاد کنید و سپرده خود را پس بگیرید یا هیچ اقدامی برای حفظ نام انجام ندهید.", + "ens-terms-point-3": "اگر شرایط قرارداد تغییر کند - برای مثال اِستاتوس قرارداد را تغییر دهد - کاربر حق دارد نام کاربری را بدون در نظر گرفتن زمان نگهداری آن آزاد کند.", + "ens-terms-point-4": "کنترل کننده قرارداد نمیتواند به وجوه سپرده شما دسترسی داشته باشد. آنها فقط می توانند به آدرسی که آنها را فرستاده منتقل شوند.", + "ens-terms-point-5": "آدرس(های) شما به صورت عمومی با نام ENS شما مرتبط خواهد شد.", + "ens-terms-point-6": "نامهای کاربری به عنوان گره های زیردامنه stateofus.eth ساخته میشوند و تحت شرایط قرارداد هوشمند ENS هستند.", + "ens-terms-point-7": "شما به قرارداد اجازه می دهید که SNT را از طرف شما منتقل کند. این تنها زمانی رخ می دهد که شما تراکنش را برای مجوز انتقال تأیید کنید.", + "ens-terms-point-8": "این شرایط توسط منطق قرارداد هوشمند در این آدرس ها تضمین شده است:", + "ens-terms-registration": "شرایط ثبت نام.", + "ens-test-message": "سلام", + "ens-transaction-pending": "تراکنش در انتظار...", + "ens-understand": "می دانم که آدرس کیف پول من به صورت عمومی به نام کاربری من متصل می شود.", + "ens-username": "نام کاربری ENS", + "ens-username-already-added": "نام کاربری در حال حاضر با کلید چت شما متصل است و می تواند در داخل استتوس مورد استفاده قرار گیرد.", + "ens-username-available": "✓ نام کاربری موجود است!", + "ens-username-connected": "این نام کاربری متعلق به شما است و با کلید چت شما مرتبط است.", + "ens-username-connected-continue": "ادامه دادن با تنظیم \"نمایش ENS نام کاربری من در گپ ها.", + "ens-username-connected-with-different-key": "ادامه اتصال به یک تراکنش نیاز دارد تا بتوانید نام کاربری خود را با کلید چت فعلی خود وصل کنید.", + "ens-username-connection-confirmation": "{{username}} پس از انجام معامله متصل می شود.", + "ens-username-hints": "حداقل 4 کاراکتر باشد. تنها حروف لاتین، اعداد و حروف کوچک.", + "ens-username-invalid": "تنها اعداد و حروف", + "ens-username-invalid-name-warning": "روند ثبت نام یکی از نام های ens شما در حالت نامعتبر به پایان رسیده است. از این نام برای تراکنش های کیف پول استفاده نکنید و با پشتیبانی ما در support@status.im تماس بگیرید", + "ens-username-owned": "نام کاربری شما تنها متعلق به شماست.", + "ens-username-owned-continue": "ادامه با این نام کاربری و با کلید گپ شما.", + "ens-username-registration-confirmation": "عالی! شما {{username}} خود را بعد از اتمام معامله خواهید داشت.", + "ens-username-registration-invalid": "هشدار! روند ثبت نام در حالت نامعتبر تمام شده است. از این نام برای تراکنش های کیف پول استفاده نکنید و با پشتیبانی ما در support@status.im تماس بگیرید", + "ens-username-taken": "نام کاربری قبلاً گرفته شده است :(", + "ens-username-you-can-follow-progress": "شما می توانید پیشرفت کیف پول خود را در بخش تاریخچه معامله دنبال کنید.", + "ens-usernames": "نامهای کاربری ENS", + "ens-usernames-details": "یک نام کاربری جهانی ثبت کنید تا براحتی توسط دیگران شناخته شوید", + "ens-want-custom-domain": "من صاحب یک نام روی یک دامنه دیگر هستم", + "ens-want-domain": "من یک دامنه stateofus.eth میخواهم", + "ens-welcome-hints": "نامهای ENS آدرس های بلند را به نامهای کاربری ممتاز بدل میکند.", + "ens-welcome-point-customize": "یک نام ENS میتواند جایگزین نام ۳ کلمه ای تصادفی در گفتگو شود. به جای {{name}} @اسمـشما باشید. ", + "ens-welcome-point-customize-title": "نام گفتگوی خود را سفارشی کنید.", + "ens-welcome-point-receive-title": "تراکنشها را در گفتگو دریافت کنید", + "ens-welcome-point-register": "برای حفظ نام برای همیشه یک بار ثبت نام کنید. پس از 1 سال می توانید نام را آزاد کنید و SNT خود را پس بگیرید.", + "ens-welcome-point-register-title": "10 SNT برای ثبت نام", + "ens-welcome-point-simplify": "می توانید به جای هش هگزادسیمال خود (0x...) وجوهی را با نام راحتتر ENS خود دریافت کنید.", + "ens-welcome-point-simplify-title": "آدرس ETH خود را ساده سازی کنید", + "ens-welcome-point-verify": "در مراحل بعدی می توانید نام کاربری خود را تأیید کرده و اضافه کنید.", + "ens-welcome-point-verify-title": "از قبل یک نام کاربری دارید؟", + "ens-your-username": "نام کاربری شما", + "ens-your-usernames": "نام های کاربری شما", + "ens-your-your-name": "نام ENS شما", + "enter-12-words": "12 کلمه عبارت دانه خود را وارد کنید، کلمات را با یک فاصله از هم جدا کنید ", + "enter-a-private-key": "یک کلید خصوصی را وارد کنید", + "enter-a-seed-phrase": "یک عبارت درج ابتدایی را وارد کنید", + "enter-address": "آدرس را وارد کنید", + "enter-contact-code": "نام کاربری یا کلید گپ را وارد کنید", + "enter-pair-code": "کد را برای اتصال دستگاههای دیگر وارد کنید", + "enter-pair-code-description": "کد جفت‌سازی میتواند از طریق یک سرویس گیرنده جفت شده اِستاتوس تنظیم شود.", + "enter-password": "رمز عبور را وارد کنید", + "enter-password-migration-prompt": "رمز عبور خود را وارد کنید تا مخاطبین، گفتگوها و تنظیمات بعلاوه کلیدهایتان منتقل شود.", + "enter-pin": "کد عبور 6 رقمی را وارد کنید", + "enter-puk-code": "کد PUK را وارد کنید", + "enter-puk-code-description": "کد عبور 6 رقمی مسدود شده است.\nلطفا کد PUK را برای باز کردن کد عبور وارد کنید.", + "enter-recipient-address-or-username": "آدرس یا نام کاربری گیرنده را وارد کنید", + "enter-seed-phrase": "عبارت دانه را وارد کنید", + "enter-url": "آدرس را وارد کنید", + "enter-user-pk": "کلید عمومی کاربر را وارد کنید", + "enter-watch-account-address": "کد QR را اسکن کنید \n یا \n آدرس را جهت ملاحظه وارد کنید", + "enter-word": "کلمه را وارد کنید", + "enter-your-code": "کدعبور 6 رقمی خود را وارد کنید", + "enter-your-password": "رمز عبور خود را وارد کنید", + "error": "خطا", + "error-unable-to-get-balance": "عدم توانایی در گرفتن تعادل", + "error-unable-to-get-prices": "خطای تبدیل ارز. صفحه را دوباره بازخوانی کنید", + "error-unable-to-get-token-balance": "عدم توانایی در دریافت موجودی توکن", + "errors": "خطاها", + "eth": "ETH", + "ethereum-node-started-incorrectly-description": "گره اتریوم با پیکربندی نادرست راه اندازی شد، برنامه برای اصلاح شرایط متوقف می شود. شناسه شبکه پیکربندی شده = {{network-id}} ، کنونی = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "گره اتریوم به طور نادرست اجرا شد.", + "etherscan-lookup": "در Etherscan جستجو کنید", + "export-account": "صدور حساب", + "export-key": "صدور کلید خصوصی", + "failed": "ناموفق", + "faq": "پرسش های متداول", + "fetch-timeline": "↓ واکشی", + "find": "پیدا کردن", + "finish": "پایان", + "finishing-card-setup": "در حال تکمیل راه اندازی کارت", + "fleet": "ناوگان", + "fleet-settings": "تنظیمات Fleet", + "follow": "دنبال کردن", + "follow-your-interests": "پرش به یک چت عمومی و دیدار با افراد جدید", + "free": "رایگان", + "from": "از جانب", + "gas-limit": "محدودیت سوخت (Gas)", + "gas-price": "قیمت بنزین", + "gas-used": "سوخت (Gas) مورد استفاده", + "generate-a-key": "تولید کلیدها", + "generate-a-new-account": "ایجاد خودکار یک حساب کاربری", + "generate-a-new-key": "ایجاد خودکار یک کلید جدید", + "generate-account": "تولید کننده خودکار کلید", + "generate-an-account": "ایجاد یک حساب کاربری", + "generate-new-key": "تولید کننده خودکار کلید", + "generating-codes-for-pairing": "> دانلود نرم افزار به کارت \n > ایجاد کدهای قفل و دستگاههای متصل", + "generating-keys": "تولید کلید...", + "generating-mnemonic": "در حال تولید عبارت درج ابتدایی", + "get-started": "شروع کنید", + "get-status-at": "دریافت استاتوس در http:\/\/status.im", + "get-stickers": "دریافت عکس برگردان ها", + "give-a-short-description": "یک شرح کوتاه دهید", + "give-a-short-description-community": "یک توضیح کوتاه دهید", + "glossary": "واژه نامه", + "go-to-settings": "رفتن به تنظیمات...", + "got-it": "متوجه شدم", + "grant-face-id-permissions": "برای اعطای مجوز Face ID مورد نیاز ، لطفا به تنظیمات سیستم خود بروید و مطمئن شوید که Status > Face ID انتخاب شده است", + "group-chat": "چت گروهی", + "group-chat-admin": "مدیر", + "group-chat-admin-added": "{{member}} اکنون مدیر است", + "group-chat-all-contacts-invited": "همه مخاطبین شما در حال حاضر در گروه هستند", + "group-chat-created": "**{{member}}** گروه **{{name}}** را ایجاد کرد", + "group-chat-decline-invitation": "نپذیرفتن دعوت", + "group-chat-member-added": "**{{member}}** دعوت شده است", + "group-chat-member-joined": "**{{member}}** به گروه پیوست", + "group-chat-member-removed": "**{{member}}** گروه را ترک کرد", + "group-chat-members-count": "{{selected}}\/{{max}} عضو", + "group-chat-name-changed": "**{{member}}** نام گروه را به **{{name}}** تغییر داد", + "group-chat-no-contacts": "شما هنوز مخاطبی ندارید.\nدوستانتان را برای گفتگو دعوت کنید", + "group-details": "جزییات گروه", + "group-info": "اطلاعات گروه", + "groups": "گروه ها", + "gwei": "Gwei", + "hash": "رمزگذاری", + "help": "کمک", + "help-capitalized": "کمک", + "help-center": "مرکز راهنمایی", + "hide-content-when-switching-apps-ios": "پیش نمایش مخفی شود", + "history": "تاریخچه", + "history-nodes": "گره های اِستاتوس", + "hold-card": "کارت را پشت تلفن همراه خود نگه دارید", + "home": "خانه", + "hooks": "قلاب", + "how-it-works": "چگونه کار می‌کند", + "http-gateway-error": "ای بابا، درخواست ناموفق بود!", + "identifier": "شناسه", + "identity-verification-request": "صحت سنجی هویت", + "image-remove-current": "حذف تصویر کنونی", + "image-source-gallery": "انتخاب از گالری", + "image-source-make-photo": "دوربین", + "image-source-title": "ویرایش تصویر", + "import": "وارد کردن", + "import-community": "وارد کردن جامعه", + "import-community-title": "وارد کردن جامعه", + "in-contacts": "در میان مخاطبین", + "incoming": "ورودی", + "incoming-transaction": "تراکنش دریافتی", + "incorrect-code": [ + "str", + "با عرض پوزش کد وارد شده اشتباه بود، لطفا دوباره تلاش کنید" + ], + "initialization": "مقداردهی اولیه", + "install": "↓ نصب", + "intro-message1": "به استتوس خوش آمدید! \n برای تنظیم گذرواژه و شروع به کار، روی این پیام ضربه بزنید", + "intro-privacy-policy-note1": "استاتوس از اطلاعات شخصی شما قصد سود آوری ندارد. با ادامه این فرآیند، شما با توافقنامه ما موافق هستید ", + "intro-privacy-policy-note2": "سیاست حفظ حریم خصوصی", + "intro-text": "وضعیت دروازه ورود به وب غیرمتمرکز است", + "intro-text1": "چت بر روی یک شبکه همکار رمزگذاری شده ، که در آن پیام ها نمی توانند سانسور یا هک شوند", + "intro-text2": "ارسال و دریافت دارایی های دیجیتالی در هر نقطه از جهان-بدون نیاز به داشتن حساب بانکی", + "intro-text3": "کاوش بازی ها ، مبادلات و شبکه های اجتماعی که در آن شما به تنهایی داده های خود را دارید", + "intro-title1": "ارتباطات واقعا خصوصی", + "intro-title2": "کیف پول رمزنگاری شده امن", + "intro-title3": "برنامه های غیر متمرکز", + "intro-wizard-text1": "مجموعه ای از کلیدها حساب شما را کنترل می کنند. کلیدهای شما روی تلفن شما هستند ، بنابراین فقط می توانید از آنها استفاده کنید", + "intro-wizard-text2": "هر کلید برای یک گپ است. این عبارت فقط قابل خواندن است و قابل تغییر نیست.", + "intro-wizard-text3": "اگر یک Keycard دارید ، کلیدهای امنیتی خود را برای امنیت بیشتر ذخیره کنید.", + "intro-wizard-text4": "ایمن سازی و رمزگذاری کلیدها", + "intro-wizard-text6": "استاتوس در مورد پیام های جدید به شما اطلاع می دهد. می توانید تنظیمات برگزیده اعلان خود را بعداً در تنظیمات ویرایش کنید", + "intro-wizard-title-alt4": "ایجاد یک رمزعبور", + "intro-wizard-title-alt5": "تأیید رمزعبور", + "intro-wizard-title1": "کلیدهای خود را دریافت کنید", + "intro-wizard-title2": "یک نام چت انتخاب کنید", + "intro-wizard-title3": "انتخاب کلید ذخیره سازی", + "intro-wizard-title4": "ایجاد یک کد عبور 6 رقمی", + "intro-wizard-title5": "تأیید کد عبور", + "intro-wizard-title6": "فعال کردن اعلان ها", + "invalid-address-qr-code": "کد QR اسکن شده حاوی یک آدرس معتبر نیست", + "invalid-format": "قالب نامعتبر\nباید {{format}} باشد", + "invalid-key-confirm": "اعمال", + "invalid-key-content": " پایگاه داده Multiaccount ها به دلیل خراب شدن فایل رمزگذاری نمی شود. هیچ راهی برای بازیابی آن وجود ندارد. اگر دکمه \"لغو\" را فشار دهید ، هیچ اتفاقی نخواهد افتاد. اگر دکمه \" {{erase-multiaccounts-data-button-text}} \" را فشار دهید ، پایگاه داده multiaccount ها حذف می شود و شما قادر به باز کردن multiaccount خواهید بود. تمام داده های multiaccount ها از بین می روند.", + "invalid-number": "شماره نامعتبر", + "invalid-pairing-password": "رمز جفت سازی نامعتبر", + "invalid-range": "قالب نامعتبر است، باید بین {{min}} و {{max}} باشد", + "invalid-username-or-key": "نام کاربری یا کلید گفتگوی نامعتبر ", + "invite-button": "دعوت از دوستان", + "invite-chat-accept": "پذیرفتن", + "invite-chat-accept-join": "پذیرش و پیوستن", + "invite-chat-intro": "در اینجا مقداری رمزارز برای شروع کار وجود دارد! از آن برای ثبت نام یک نام ENS یا خرید یک بسته استیکر استفاده کنید", + "invite-chat-name": "ارجاع دوست", + "invite-chat-pending": "در انتظار", + "invite-chat-rule": "با پذیرفتن این، دوست شما هم پاداش ارجاع را به صورت رمزارز دریافت خواهد کرد", + "invite-chat-starter-pack": "بستۀ آغازگر", + "invite-contacts": "دعوت اشخاص از فهرست تماس", + "invite-friends": "دعوت از دوستان", + "invite-friends-to-status": "دعوت دوستان به استاتوس", + "invite-instruction-fifth": "شما می توانید انتخاب کنید که پاداش ارجاع خود را در هر زمان بازخرید کنید.", + "invite-instruction-first": "شما برای دانلود و پیوستن دوستتان به استتس، یک لینک دعوت منحصر به فرد را به او ارسال می‌کنید", + "invite-instruction-fourth": "شما جایزۀ ارجاع خود را دریافت میکنید و دوستتان بستۀ آغازگر را دریافت می‌کند", + "invite-instruction-second": "دوست شما استتس را دانلود و یک حساب کاربری (در اندروید) ایجاد می‌کند", + "invite-instruction-third": "وقتی دوستتان ارجاع شما را تائید کند، گفتگو با او آغاز می‌شود", + "invite-people": "دعوت اشخاص", + "invite-people-from-contacts": "دعوت اشخاص از فهرست تماسها", + "invite-privacy-policy-public": "اِستاتوس را از طریق پیوند ارجاع نصب کردید. با پیوستن به این گفتگو، ارجاع دهنده خود را نسبت می دهید و با آن موافقت می کنید", + "invite-privacy-policy1": "در صورت پذیرش شما با برنامۀ ارجاع موافق هستید", + "invite-privacy-policy2": "قوانین و شرایط.", + "invite-public-chat-home": "دعوت نامه ارجاع", + "invite-public-chat-intro": "در اینجا مقداری رمزارز برای شروع کار وجود دارد! از آن برای ثبت نام یک نام ENS یا خرید یک بسته عکس برگردان استفاده کنید", + "invite-receive-account": "حساب کاربری برای دریافت پاداش ارجاع شما", + "invite-reward": "برای هر دوستی که دعوت می‌کنید، {{value}} کسب کنید!", + "invite-reward-friend": "دوست:", + "invite-reward-friend-description": "دوست شما برای شروع کار، یک بستۀ آغازگر شامل مقداری {{reward}} دریافت می‌کند", + "invite-reward-friend-name": "بستۀ آغازگر", + "invite-reward-you": "شما", + "invite-reward-you-description": "دعوت از یک دوست و دریافت {{reward}} به عنوان نشانه ای از قدردانی ما.", + "invite-reward-you-name": "پاداش ارجاع", + "invite-select-account": "برای دریافت پاداش ارجاعتان یک حساب کاربری انتخاب کنید", + "invite-warning": "این تبلیغ فقط برای کاربران یک دستگاه Android که ساکن ایالات متحده نیستند معتبر است. دوستتان باید در عرض 7 روز ارجاع را تایید کند", + "invited": "دعوت شده", + "italic": "مورب", + "join": "پیوستن", + "join-a-community": "یا به یک جامعه بپیوندند", + "join-group-chat": "پیوستن به گروه", + "join-group-chat-description": "{{username}} شما را دعوت به پیوستن به {{group-name}} کرد", + "join-me": "سلام به من در اِستاتوس بپیوندید:{{url}}", + "join-new-private-chat": "یک گفتگوی خصوصی جدید را آغاز کنید", + "join-new-public-chat": "پیوستن به چت عمومی", + "joined-group-chat-description": "شما به واسطه دعوت {{username}} به {{group-name}}پیوسته اید", + "key": "کلید", + "keycard-access-reset": "دسترسی به کارت کلید بازنشانی شده است", + "keycard-awaiting-description": " کارت را برای خوانده شدن توسط درگاه NFC موبایل در اطراف موبایل حرکت دهید.", + "keycard-awaiting-title": "در حال جستحو ....", + "keycard-cancel-setup-text": "با این کار نصب keycard لغو می شود. قویا توصیه می‌گردد به منظور استفاده از keycard ، نصب را به پایان برسانید. آیا واقعاً می خواهید عملیات لغو شود؟", + "keycard-cancel-setup-title": "عملیات خطرناک", + "keycard-connected-description": "کارت را همچنان نگه دارید", + "keycard-connected-title": "متصل شده", + "keycard-desc": "صاحب یک Keycard هستید؟ کلیدهای خود را روی آن ذخیره کنید. شما برای معاملات به آن احتیاج دارید", + "keycard-dont-ask-card": "برای ورود کارت را درخواست نکن", + "keycard-error-description": "برای ادامه، کارت را دوباره وصل کنید", + "keycard-error-title": "اتصال شما قطع شده است", + "keycard-has-multiaccount-on-it": "این کارت در حال حاضر چند حساب در آن است. اگر می خواهید آن را تغییر دهید ، ابتدا وارد شوید و کارت خود را بازنشانی کنید. اگر می خواهید چند حساب keycard را وارد کنید ، لطفا از \"افزودن چندحساب موجود\" استفاده نمایید", + "keycard-init-description": "در ادامه کارت را پشت تلفن همراه خود قرار دهید.", + "keycard-init-title": "در حال جستجوی کارت‌ها ...", + "keycard-onboarding-finishing-header": "به پایان رسید", + "keycard-onboarding-intro-header": "ذخیره کلید های خود بر روی Keycard", + "keycard-onboarding-intro-text": "آماده شوید ، این فرآیند ممکن است چند دقیقه طول بکشد ، اما این مهم است که حساب خود را ایمن کنید", + "keycard-onboarding-pairing-header": "اتصال کارت...", + "keycard-onboarding-preparing-header": "در حال آماده سازی کارت...", + "keycard-onboarding-puk-code-header": "کدها را یادداشت کرده و در مکان امنی نگه داری کنید", + "keycard-onboarding-recovery-phrase-description": "برای برگرداندن کلید خود به این عبارت دانه نیاز دارید. آن را یادداشت کنید. آن را ایمن ، آفلاین و جدا از این دستگاه نگه دارید.", + "keycard-onboarding-recovery-phrase-header": "از دانه یک پشتیبان تهیه کنید", + "keycard-onboarding-recovery-phrase-text": "فقط برای شما. این یک دانه جادویی است که برای تولید کلید شما استفاده می شود.", + "keycard-onboarding-start-header": "برای ادامه عملیات، کارت را پشت تلفن همراه خود قرار دهید.", + "keycard-onboarding-start-step1": "ایجاد کد عبور", + "keycard-onboarding-start-step1-text": "حدود 1 دقیقه. یک رمز عبور 6 رقمی برای رمزگذاری کلید های خود ایجاد کنید", + "keycard-onboarding-start-step2": "PUK و کد همتاسازی را یادداشت کنید", + "keycard-onboarding-start-step2-text": "حدود 1 دقیقه. شما برای این کار به یک قلم و کاغذ احتیاج دارید", + "keycard-onboarding-start-step3": "از دانه نسخه پشتیبان تهیه کنید", + "keycard-onboarding-start-step3-text": "حدود 1 دقیقه. یک قلم و کاغذ نیز لازم است", + "keycard-onboarding-start-text": "در طول فرآیند کارت را نزدیک دستگاه نگه دارید. فرآیند نصب حدود ۴ دقیقه زمان می‌برد", + "keycard-processing-description": "کارت را همچنان نگه دارید", + "keycard-processing-title": "در حال پردازش...", + "keycard-recovery-intro-button-text": "شروع بازیابی", + "keycard-recovery-intro-header": "بازیابی کلیدهای ذخیره شده روی keycard", + "keycard-recovery-intro-text": "اگر قبلا کلیدهایی را با استفاده از keycard ایجاد کرده اید و اکنون می خواهید از آن کلیدها در این دستگاه استفاده کنید", + "keycard-recovery-no-key-header": "چیزی برای \n بازیابی وجود ندارد", + "keycard-recovery-no-key-text": "Keycard شما هیچ کلید ذخیره شده روی آن ندارد. برای استفاده از آن ، یک کلید جدید تولید کنید و Keycard خود را برای ذخیره کردن کلید انتخاب کنید", + "keycard-recovery-phrase-confirm-header": "عبارت دانه را تأیید کنید", + "keycard-recovery-phrase-confirmation-text": "شانس دوم نخواهید داشت! اگر دستگاه خود را گم کرده یا تغییر دهید ، نمی توانید به کلیدها یا دارایی های مرتبط با آن دسترسی پیدا کنید ، مگر اینکه عبارت دانه خود را داشته باشید.", + "keycard-recovery-success-header": "کلیدهای شما \n با موفقیت بازیابی شدند", + "keycard-redeem-tx-desc": "برای امضا و دریافت دارایی‌ها روی کارت ضربه بزنید", + "keycard-success-description": "اکنون می‌توانید کارت را حذف کنید", + "keycard-success-title": "موفقیت", + "language": "زبان", + "learn-more": "بیشتر بدانید", + "learn-more-about-keycard": "درباره Keycard بیشتر بدانید", + "leave": "ترک کردن", + "leave-chat": "ترک کردن گفتگو", + "leave-chat-confirmation": "آیا مطمئن هستید که می خواهید چت را ترک کنید؟", + "leave-community": "ترک جامعه", + "leave-community-message": "از رفتنت ناراحت خواهیم شد، اما یادت باشد، هر زمان که بخواهی می‌توانی برگردی!", + "leave-community?": "ترک جامعه؟", + "leave-confirmation": "ترک کردن گفتگو", + "leave-group": "ترک گروه", + "leave-group?": "ترک گروه؟", + "left": "ترک کرد", + "les-ulc": "LES\/ULC", + "lets-go": "بزن بریم", + "light": "روشن", + "lock-app-with": "قفل کردن برنامه با", + "log-level": "سطح لاگ", + "log-level-settings": "تنظیمات سطح لاگ", + "logout": "خروج", + "logout-are-you-sure": "آیا مطمئنید می خواهید\nبرای خروج از سیستم ؟", + "logout-title": "خروج از سیستم ؟", + "looking-for-cards": "در حال جستجوی کارت‌ها ...", + "mail-should-be-configured": "سرویس استفاده از ایمیل باید تنظیم شود", + "mailserver-address": "آدرس mailserver", + "mailserver-connection-error": "اتصال به Mailserver مقدور نیست", + "mailserver-content": "گره ای در شبکه استاتوس است که پیام‌ها را ذخیره و مسیریابی می‌کند، به مدت 30 روز.", + "mailserver-details": "جزئیات Mailserver", + "mailserver-reconnect": "اتصال به mailserver امکان پذیر نیست. برای اتصال مجدد ضربه بزنید", + "mailserver-title": "Mailserver", + "main-currency": "ارز اصلی", + "main-networks": "شبکه های اصلی", + "main-wallet": "کیف پول اصلی", + "mainnet-network": "شبکه اصلی", + "manage-members": "مدیریت اعضا", + "mark-all-read": " به عنوان خوانده شده همه را علامتگذاری کن", + "mark-as-read": "نشانگذاری به عنوان خوانده شده", + "mark-untrustworthy": "علامتگذاری به عنوان غیر قابل اعتماد", + "mark-user-untrustworthy": "علامتگذاری {{username}} به عنوان غیر قابل اعتماد", + "maybe-later": "شاید بعدا", + "member-ban": "ممنوع کردن عضو", + "member-kick": "اخراج عضو", + "members": { + "one": "عضو", + "other": "عضو" + }, + "members-active": { + "one": "عضو", + "other": "عضو" + }, + "members-active-none": "بدون عضو", + "members-count": "{{count}} نفر", + "members-label": "اعضا", + "members-title": "اعضا", + "membership-approval": "اجبار تایید عضو", + "membership-approval-description": "عضویت در جامعه شما آزاد است،اما اعضای جدید باید اول توسط سازنده جامعه تایید شوند.", + "membership-button": "نیازمندی عضویت", + "membership-ens": "اجبار نام کاربری ENS", + "membership-ens-description": "برای عضویت در جامعه شما نیاز به نام کاربری ENS است.", + "membership-free": "بدون نیازمندی", + "membership-free-description": "عضویت در جامعه شما آزاد است", + "membership-invite": "اجبار دعوت از عضوی دیگر", + "membership-invite-description": "تنها با دعوت از اعضای موجود انجمن می توان به انجمن شما ملحق شد", + "membership-none": "هیچ کدام", + "membership-none-placeholder": "میتوانید شرایط خاصی برای اعضای جدید قبل عضویت ایجاد کنید. این حالت را میتوانید بعدا تغییر دهید.", + "membership-request-pending": "درخواست عضویت در انتظار", + "membership-requests": "درخواست های عضویت", + "membership-title": "نیازمندی عضویت", + "message": "پیام", + "message-not-sent": "پیام ارسال نشد", + "message-options-cancel": "لغو", + "message-reply": "پاسخ", + "messages-from-contacts-only-subtitle": "تنها کسانی که مخاطب شما هستند میتوانند گفتگوی جدید آغاز کرذه یا شما را به گروهی اضافه کنند", + "migration-successful": "مهاجرت موفق بود.", + "migration-successful-text": "حساب با موفقیت به کارت هوشمند منتقل شد.", + "mobile-network-use-wifi": "فقط Wi-Fi", + "more": "بیشتر", + "multiaccount-exists-content": "این چندحساب از قبل موجود است. فقط باید آن را از حالت قفل دربیاورید.", + "multiaccount-exists-title": "این حساب کاربری در حال حاضر وجود دارد", + "multiaccounts-recover-enter-phrase-text": "عبارت اعداد ۱۲ ۱۵ ۱۸ ۲۱ یا ۲۴ را به همراه یک فاصله در میان هر عبارت عددی وارد کنید", + "multiaccounts-recover-enter-phrase-title": "عبارت تولید گر خود را واردکنید", + "mute-chat": "بیصدا کردن گفتگو", + "mute-community": "بیصدا کردن جامعه", + "mute-group": "بیصدا کردن گروه", + "my-accounts": "حسابهای من", + "my-accounts-empty": "حساب های در دسترس شما در اینجا نشان داده می شود", + "name": "نام", + "name-optional": "نام (اختیاری)", + "name-your-channel": "کانال را نامگذاری کنید", + "name-your-channel-placeholder": "نام کانال", + "name-your-community": "جامعه را نامگذاری کنید", + "name-your-community-placeholder": "یک نام گیرا", + "need-help": "نیاز به راهنمایی دارید ؟", + "network": "شبکه", + "network-chain": "شبکه های زنجیره ای", + "network-details": "جزئیات شبکه", + "network-id": "شناسه شبکه", + "network-info": "اطلاعات شبکه", + "network-settings": "تنظیمات شبکه", + "new": "جدید", + "new-category": "دسته بندی جدید", + "new-chat": "گفتگوی جدید", + "new-community-title": "جامعه جدید", + "new-contact": "مخاطب جدید", + "new-contract": "قرارداد جدید", + "new-group": "گروه جدید", + "new-group-chat": "چت گروهی جدید", + "new-network": "شبکه جدید", + "new-public-group-chat": "پیوستن به چت عمومی", + "next": "بعدی", + "no": "نه", + "no-contacts": "هنوز هیچ مخاطبی موجود نیست", + "no-messages": "هیچ پیامی موجود نیست", + "no-pinned-messages-community-desc": "این کانال هیچ پیام سنجاق شده ای ندارد.", + "no-pinned-messages-desc": "این گفتگو هیچ پیام سنجاق شده ای ندارد.", + "node-version": "ورژن گره", + "nonce": "Nonce", + "none": "هیچ کدام", + "not-applicable": "برای معاملات بدون امضا قابل استفاده نیست", + "not-enough-snt": "SNT کافی نیست", + "not-keycard-text": "کارت مورد استفاده شما یک Keycard نیست. برای استفاده از آن، شما باید یک Keycard خریداری کنید", + "not-keycard-title": "این یک Keycard نیست", + "notifications": "اعلان ها", + "notify": "مطلع ساختن", + "off": "خاموش", + "off-status-tree": "بیرون از وضعیت درختی", + "offline": "آفلاین", + "ok": "تایید", + "ok-continue": "بسیار خوب ، ادامه دهید", + "ok-got-it": "باشه ، فهمیدم", + "ok-save-pass": "بسیار خوب ، ذخیره رمز عبور", + "on": "روشن", + "on-status-tree": "در وضعیت درختی", + "online": "آنلاین", + "only-mentions": "تنها @ذکر شده ها", + "open": "باز کن", + "open-dapp": "باز کردن برنامه غیرمتمرکز", + "open-home": "باز کن", + "open-membership": "عضویت باز", + "open-nfc-settings": "تنظیمات NFC را باز کنید", + "or": "یا", + "outgoing": "خروجی", + "outgoing-transaction": "تراکنش ارسال", + "pair": "دستگاه های متصل شده", + "pair-code-placeholder": "کد همگام سازی", + "pair-this-card": "همگام سازی این کارت", + "pair-this-device-description": "برای همگام سازی مخاطبین و گپ های بین آنها ، دستگاه های خود را متصل کنید", + "paired-devices": "دستگاه های متصل شده", + "pairing-go-to-installation": "رفتن به تنظیمات همتاسازی", + "pairing-maximum-number-reached-content": "لطفاً قبل از فعال کردن دستگاه جدید ، یکی از دستگاههای خود را غیرفعال کنید.", + "pairing-maximum-number-reached-title": "تعداد دستگاهها به حداکثر رسیده است", + "pairing-new-installation-detected-title": "دستگاه جدید شناسایی شد", + "pairing-please-set-a-name": "لطفا یک نام برای دستگاه خود تنظیم کنید.", + "passphrase": "عبارت عبور", + "password": "کلمه عبور", + "password-description": "حداقل 6 حرف. رمز عبور شما از کلیدهای شما محافظت می کند. برای باز کردن استاتوس و معامله به آن نیاز دارید.", + "password-placeholder": "رمز عبور...", + "password-placeholder2": "تأیید رمزعبور", + "password_error1": "کلمات عبور مطابقت ندارند", + "paste-json": "چسباندن JSON", + "peer-content": "دستگاهی متصل به شبکه چت استاتوس. هر کاربر بسته به تعداد دستگاه خود ، می تواند یک یا چند دستگاه همسان را نمایندگی کند.", + "peer-title": "همتا", + "pending": "انتظار", + "pending-requests": "درخواست های در انتظار", + "permissions": "مجوزها", + "phone-e164": "بین المللی 1", + "photos-access-error": "برای اعطای مجوز درسترسی به عکس ها، لطفا وارد تنظیمات گوشی شده و مطمئن شوید قسمت استاتوس > عکس ها انتخاب شده است.", + "pin-mismatch": "کد عبور اشتباه", + "pin-one-attempt": "یک تلاش", + "pin-to-channel": "سنجاق به کانال", + "pinned-messages-2": "پیامهای سنجاق شده", + "preference": "اولویت", + "privacy": "حریم خصوصی", + "privacy-and-security": "حریم خصوصی و امنیت", + "privacy-policy": "سیاست حفظ حریم خصوصی", + "private-key": "کلید خصوصی", + "private-notifications": "اعلان‌های خصوصی", + "private-notifications-descr": "استاتوس در مورد پیام‌های جدید به شما اطلاع می‌دهد. می‌توانید تنظیمات برگزیده اعلان خود را بعداً در تنظیمات ویرایش کنید", + "profile": "مشخصات", + "profile-deleted-content": "پروفایل شما با موفقیت حذف شد", + "profile-deleted-keycard": "اکنون میتوانید جفت کلید دیگری روی کارت کلیدتان بازیابی کنید ", + "profile-deleted-title": "پروفایل حذف شد", + "profile-details": "جزئیات پروفایل", + "profile-pic-pick": "انتخاب از گالری", + "profile-pic-remove": "برداشتن عکس", + "profile-pic-take": "گرفتن عکس", + "public": "عمومی", + "public-chat": "چت عمومی", + "public-chat-description": "به گپ های عمومی بپیوندید! هر کس می تواند یکی از آنها را شروع کند.", + "public-chats": "چت های عمومی", + "public-group-status": "عمومی", + "public-group-topic": "عنوان", + "public-key": "کلید عمومی", + "puk-code": "کد PUK", + "puk-code-explanation": "اگر رمز عبور 6 رقمی خود را فراموش کرده یا 3 بار به اشتباه آن را وارد کنید ، برای باز کردن قفل کارت خود به این کد احتیاج دارید.", + "re-encrypt-key": "رمزگذاری مجدد کلیدها", + "rearrange-categories": "مرتب سازی دسته ها", + "receive": "دریافت", + "receive-transaction": "دریافت تراکنش", + "received": "دریافت شده", + "recent": "استتوس ها اخیر", + "recent-empty": "آدرسهای اخیراً استفاده شده در اینجا ظاهر می شوند", + "recent-recipients": "مخاطبین", + "recipient": "گیرنده", + "recipient-code": "آدرس گیرنده را وارد کنید", + "recover": "بازیابی", + "recover-key": "دسترسی به کلید های موجود", + "recover-keycard-multiaccount-not-supported": "بازیابی چند حساب keycard با کلمه عبور پشتیبانی نمی شود", + "recover-with-keycard": "بازیابی با Keycard", + "recovering-key": "دسترسی به کلیدها ...", + "recovery-confirm-phrase": "تایید عبارت دانه", + "recovery-phrase": "عبارت دانه", + "recovery-success-text": "شما باید یک کد یا رمزعبور جدید ایجاد کنید تا کلیدهایتان مجددا رمزگذاری شود", + "recovery-typo-dialog-description": "اگر کلمات اشتباه را وارد کنید ، به جای بازیابی یک حساب کاربری جدید multiaccount ایجاد خواهید کرد.", + "recovery-typo-dialog-title": "آیا عبارت دانه صحیح است؟", + "redeem-amount": "{{quantity}} پاداش موجود است", + "redeem-now": "برداشت کنید", + "redeem-success": "برداشت پاداش موفقیت آمیز بود!", + "remember-me": "مرا به خاطر بسپار", + "remind-me-later": "این را دوباره به من نشان بده", + "remove": "حذف", + "remove-from-chat": "حذف از چت", + "remove-from-contacts": "حذف از مخاطبین", + "remove-from-contacts-text": "با حذف یک کاربر از لیست مخاطبین ، آدرس کیف پولتان از آنها پنهان نمی‌شود ", + "remove-network": "حذف شبکه", + "removed": "حذف شده", + "rename": "تغییر نام", + "repeat-pin": "کد عبور 6 رقمی جدید را تکرار کنید", + "replied": "پاسخ داده شده", + "request-access": "درخواست دسترسی", + "request-feature": "درخواست یک ویژگی", + "request-transaction": "درخواست معامله", + "required-field": "گزینه مورد نیاز", + "resend-message": "ارسال مجدد", + "rpc-url": "RPC URL", + "save": "ذخیره", + "save-password": "ذخیره رمز عبور", + "save-password-unavailable": "برای ذخیره کلمه عبور روی تلفن خود رمز بگذارید", + "scan-qr": "اسکن کد QR", + "scan-qr-code": "اسکن کد QR با یک آدرس کیف پول", + "search-contacts": "جستجو مخاطبین", + "search-discover-communities": "جستجوی دسته ها و جوامع", + "search-no-chat-found": "هیچ نتیجه‌ای برای جستجو یافت نشد. منظور شما این است که", + "secret-keys-confirmation-title": "کدها را یادداشت نمودید؟", + "security": "امنیت", + "seed-phrase-content": "مجموعه ای از کلمات ، که به طور تصادفی از لیست استاندارد BIP39 انتخاب شده اند و برای بازیابی یا دسترسی به حساب اتریوم خود در سایر کیف پول ها و دستگاه ها استفاده می شوند. همچنین در اکوسیستم رمزنگاری اصطلاح \"یادآوری\" ، \"عبارت بازیابی\" یا \"پشتیبان گیری از کیف پول\" گفته می شود. اکثر برنامه های رمزنگاری برای تولید حساب کاربری از همین استاندارد استفاده می کنند.", + "seed-phrase-placeholder": "عبارت بازیابی...", + "seed-phrase-title": "عبارت موثر در ایجاد", + "select": "انتخاب", + "select-account": "انتخاب حساب", + "select-account-dapp": "حسابی را که می خواهید با Dapp استفاده کنید انتخاب کنید", + "select-account-first": "ابتدا یک حساب کاربری انتخاب کنید", + "select-chat": "برای شروع پیام ، گپ را انتخاب کنید", + "selected": "انتخاب شده", + "send": "ارسال", + "send-message": "ارسال پیام", + "send-reply": "ارسال پاسخ", + "send-request": "ارسال درخواست", + "send-request-amount": "مقدار", + "send-request-amount-max-decimals": "حداکثر تعداد اعشار {{asset-decimals}}", + "send-request-unknown-token": "توکن ناشناخته - {{asset}}", + "send-sending-to": "به {{recipient-name}}", + "send-transaction": "ارسال", + "sent": "ارسال شد", + "sent-at": "ارسال شده در", + "set-a-topic": "ایجاد یک موضوع", + "set-currency": "تنظیم ارز پیش فرض", + "set-custom-fee": "انتخاب کارمزد به صورت دستی", + "set-dapp-access-permissions": "تنظیم مجوزهای دسترسی DApp", + "set-max": "تنظیم حداکثر", + "settings": "تنظیمات", + "share": "اشتراک گذاری", + "share-address": "به اشتراک گذاری آدرس", + "share-chat": "اشتراک گذاری چت", + "share-community": "به اشتراک گذاری جامعه", + "share-contact-code": "به اشتراک گذاشتن کلید چت من", + "share-dapp-text": "بررسی این DApp من در استاتوس: {{link}}", + "share-invite-link": "اشتراک گذاری پیوند دعوت", + "share-link": "اشتراک گذاری لینک", + "share-my-profile": "اشتراک گذاری پروفایل من", + "share-profile-link": "اشتراک گذاری لینک پروفایل", + "share-public-chat-text": "این گپ عمومی را در برنامه استاتوس بررسی کنید: {{link}}", + "shared": "مشترک", + "sharing-copied-to-clipboard": "کپی شده", + "sharing-copy-to-clipboard": "ذخیره در کلیپ بورد", + "sharing-share": "اشتراک گذاری...", + "shell-placeholder-title": "برنامه های شما اینجا اجرا خواهد شد", + "show-less": "نمایش کمتر", + "show-more": "نمایش بیشتر", + "show-qr": "نمایش کد QR", + "sign-and-send": "رمز امضا و ارسال", + "sign-anyway": "به هر حال امضا کنید", + "sign-in": "باز کردن", + "sign-message": "پیام را امضا کنید", + "sign-out": "خروج از سیستم", + "sign-request-failed": "امضای پیام ناموفق بود", + "sign-with": "ورود به سیستم", + "sign-you-in": "امضای شما در...", + "skip": "پرش", + "soon": "به زودی", + "specify-name": "تعیین نام", + "specify-network-id": "تعیین شناسه شبکه", + "specify-rpc-url": "یک URL RPC مشخص کنید", + "start-chat": "شروع چت", + "start-conversation": "شروع مکالمه", + "start-group-chat": "شروع گپ گروهی", + "start-new-chat": "شروع چت جدید", + "starter-pack-coming": "بسته شروع در راه است", + "starter-pack-coming-description": "ممکن است چند دقیقه تا چند ساعت طول بکشد", + "starter-pack-received": "بستۀ آغازگر دریافت شد", + "starter-pack-received-description": "در اینجا مقداری رمزارز برای شروع کار وجود دارد! برای به دست آوردن استیکرها و یک نام ENS از آن استفاده کنید، و اپ‌های غیرمتمرکز را امتحان کنید", + "status": "استتوس", + "status-confirmed": "تایید شده", + "status-hardwallet": "کیف پول استتوس", + "status-not-sent-click": "تأیید نشده. برای گزینه های بیشتر کلیک کنید", + "status-not-sent-tap": "تأیید نشده. برای گزینه های بیشتر ضربه بزنید", + "status-pending": "در انتظار", + "status-sent": "ارسال شد", + "status-tx-not-found": "TX یافت نشد", + "step-i-of-n": "مرحله {{step}} از {{number}}", + "storage": "ذخیره سازی", + "strikethrough": "خط زدن", + "submit": "ارسال", + "submit-bug": "ارسال یک اشکال", + "success": "موفقیت", + "sync-all-devices": "همگام سازی همه دستگاه ها", + "sync-in-progress": "در حال همگام سازی...", + "sync-settings": "تنظیمات همگام سازی", + "sync-synced": "همگام سازی شده", + "syncing-devices": "همگام سازی ...", + "system": "سامانه", + "test-networks": "شبکه های آزمایشی", + "text-input-disabled": "لطفا یک لحظه صبر کنید...", + "this-device": "این دستگاه", + "this-device-desc": "کلیدهای شما رمزگذاری و با امنیت کامل در دستگاه شما ذخیره شد", + "this-is-you-signing": "امضای شما", + "to": "به", + "to-enable-biometric": "برای فعال کردن {{bio-type-label}}، شما باید رمز ورود خود را در صفحه غیرقفل ذخیره کنید", + "to-encrypt-enter-password": "برای رمزگذاری حساب، رمز ورود خود را وارد کنید", + "topic-name-error": "فقط از حروف کوچک (a تا z) ، اعداد و خط تیره استفاده کنید (-). از کلیدهای چت استفاده نکنید", + "transaction": "تراکنش", + "transaction-declined": "تراکنش رد شد", + "transaction-description": "پس از 12 تاییدیه در شبکه ، آن را بررسی کنید.", + "transaction-details": "جزئیات تراکنش", + "transaction-failed": "تراکنش ناموفق", + "transaction-history": "تاریخچه معامله", + "transaction-request": "درخواست تراکنش", + "transaction-sent": "تراکنش ارسال شد", + "transactions": "تراکنش ها", + "transactions-filter-select-all": "انتخاب همه", + "transactions-filter-title": "تاریخچه فیلتر", + "transactions-history": "تاریخچه تراکنش", + "transactions-history-empty": "در تاریخچه شما هنوز هیچ تراکنشی ثبت نشده است", + "transactions-load-more": "بارگذاری بیشتر", + "transactions-sign": "امضا", + "tribute-required-by-multiaccount": "{{multiaccount-name}} برای شروع گپ به SNT نیاز دارد.", + "tribute-to-talk-finish-desc": "از الان به بعد شما تنها پیام افرادی که حساب کاربری تایید شده داشته باشند را دریافت خواهید کرد.", + "try-keeping-the-card-still": "کارت را همچنان نگه دارید", + "turn-nfc-description": "NFC در دستگاه شما غیرفعال است. می توانید آن را در تنظیمات فعال کنید", + "turn-nfc-on": "NFC را برای ادامه روشن کنید", + "tx-fail-description1": "این تراکنش احتمالاً شکست خواهد خورد. با پذیرش ریسک، هزینه شبکه را به صورت سفارشی تنظیم کنید.", + "tx-fail-description2": "این تراکنش احتمالاً شکست خواهد خورد. با پذیرش ریسک، هزینه شبکه را به صورت سفارشی تنظیم کنید.", + "type": "نوع", + "type-a-message": "پیامی بنویسید...", + "type-something": "چیزی بنویسید", + "ulc-enabled": "ULC فعال است", + "unable-to-read-this-code": "خواندن این کد مقدور نیست", + "unblock": "رفع انسداد", + "unknown-status-go-error": "خطای وضعیت ناشناخته", + "unlock": "باز کردن", + "unmute-chat": "باصدا کردن گفتگو", + "unmute-community": "صدادار کردن جامعه", + "unpaired-keycard-text": "Keycard که به آن ضربه زدید با این تلفن همراه نیست", + "unpaired-keycard-title": "به نظر می رسد کارت شما بدون پرداخت هزینه بوده است", + "unpin-from-channel": "برداشتن سنجاق کانال", + "untrustworthy": "غیر قابل اعتماد", + "update-to-listen-audio": "برای شنیدن یک پیام صوتی در اینجا، اپلیکیشن خود را به آخرین نسخه بروزرسانی کنید", + "update-to-see-image": "برای دیدن یک تصویر زیبا در اینجا، اپلیکیشن خود را به آخرین نسخه بروزرسانی کنید", + "update-to-see-sticker": "برای دیدن یک استیکر زیبا در اینجا، اپلیکیشن خود را به آخرین نسخه بروزرسانی کنید", + "url": "آدرس", + "usd-currency": "دلار آمریکا", + "use-valid-contact-code": "لطفا یک کلید چت یا نام کاربری معتبر را وارد یا اسکن کنید", + "validation-amount-invalid-number": "مقدار وارد شده صحیح نیست", + "version": "نسخه برنامه", + "view-community-rules": "نمایش قوانین جامعه ", + "view-cryptokitties": "نمایش در CryptoKitties", + "view-cryptostrikers": "مشاهده در CryptoStrikers", + "view-details": "مشاهده جزئیات", + "view-etheremon": "مشاهده در Etheremon", + "view-members": "نمایش اعضا", + "view-pinned-messages": "نمایش پیام های سنجاق شده", + "view-profile": "مشاهده پروفایل", + "view-signing": "مشاهده عبارت امضا", + "view-superrare": "مشاهده در SuperRare", + "vote-to-feature": "به این جامعه برای مطرح شدن آن رای دهید", + "waku-bloom-filter-mode": "حالت فلیتر Waku bloom", + "wallet": "کیف پول", + "wallet-address": "شناسه یا آدرس حساب", + "wallet-asset": "دارایی", + "wallet-assets": "دارایی ها", + "wallet-backup-recovery-title": "از عبارت دانه خود نسخه پشتیبان تهیه کنید", + "wallet-choose-recipient": "گیرنده را انتخاب کنید", + "wallet-collectibles": "آلبوم", + "wallet-insufficient-funds": "بودجه ناکافی", + "wallet-insufficient-gas": "به اندازه کافی اتریوم برای سوخت (Gas) نیست", + "wallet-invalid-address": "آدرس نامعتبر: \n {{data}}", + "wallet-invalid-chain-id": "شبکه مطابقت ندارد: \n {{data}} اما زنجیره فعلی هست {{chain}}", + "wallet-key-content": "آدرس هگزادسیمال ۶۴ کارکتری مظابق با استاندارد اتریوم که با 0x شروع می شود که برای دریافت مبلغ در اختیار دیگران گذارده می شود.که به آن آدرس اتریون یا آدرس گیف پول نیز اطلاق میشود.", + "wallet-key-title": "آدرس یا شناسه حساب", + "wallet-manage-assets": "مدیریت دارایی ها", + "wallet-request": "درخواست", + "wallet-send": "ارسال", + "wallet-settings": "تنظیمات کیف پول", + "wallet-total-value": "مقدار کل", + "wallet-transaction-total-fee": "هزینه کل", + "wants-to-access-profile": "می خواهد به پروفایل شما دسترسی پیدا کند", + "warning": "هشدار", + "warning-message": "متأسفیم ، برای جلوگیری از هرزنامه ، در ارسال چندین پیام به صورت متوالی محدود هستیم. لطفاً چند لحظه دیگر دوباره امتحان کنید", + "watch-only": "تنها نمایشی", + "web-view-error": "بارگیری صفحه امکان پذیر نیست", + "welcome-blank-message": "گفتگوهای شما در اینجا ظاهر خواهد شد. برای شروع گفتگوهای جدید دکمه ⊕ را فشار دهید", + "welcome-screen-text": "کیف پول خود را تنظیم کنید ، دوستان را به گپ دعوت کنید \n و در dapp هاى محبوب گردش کنید ", + "welcome-to-status": "به استاتوس خوش آمدید", + "welcome-to-status-description": "کیف پول خود را تنظیم کنید، دوستان را به گپ دعوت کنید \n و در dappهاى محبوب گردش کنید ", + "whats-trending": "ببینید چه چیزی محبوب است", + "word-count": "شمارش لغات", + "word-n": "کلمه # {{number}}", + "word-n-description": "برای اینکه بررسی کنید که آیا ازعبارت دانه خود به درستی پشتیبان تهیه کرده اید ، کلمه # {{number}} بالا وارد کنید.", + "words-n": { + "one": "۱ کلمه\nکلمات {{count}}", + "other": "کلمات" + }, + "write-down-and-store-securely": "کدها را یادداشت کرده و در مکان امنی نگه داری کنید", + "wrong-keycard-text": "Keycard که به آن ضربه زدید با این تلفن همراه نیست", + "wrong-keycard-title": "به نظر می رسد که شما به یک keycard اشتباه ضربه زدید", + "wrong-password": "گذرواژه اشتباه است", + "wrong-word": "کلمه اشتباه", + "yes": "بله", + "you": "شما", + "you-are-all-set": "همه چیز آماده است!", + "you-are-all-set-description": "اکنون اگر تلفن خود را گم کردید می توانید مبلغ حساب خود را با استفاده از عبارت دانه بازیابی کنید.", + "you-can-change-account": "شما می توانید نام و رنگ حساب را بصورت دلخواه تغییر دهید", + "you-dont-have-contacts": "شما هنوز هیچ مخاطبی ندارید.", + "you-will-need-this-code": "برای باز کردن استاتوس و امضای معاملات به این کد احتیاج دارید", + "you-will-start-from-scratch": "شما از ابتدا با یک مجموعه جدید از کلیدها شروع خواهید کرد.", + "your-answer": "پاسخ شما", + "your-contact-code": "اعطای دسترسی به این DApp تا کلید چت خود را بازیابی کند", + "your-data-belongs-to-you": "اگر عبارت دانه خود را گم کنید ، داده ها و بودجه خود را از دست می دهید", + "your-data-belongs-to-you-description": "اگر شما عبارت دانه خود را از دست بدهید، استاتوس نمی تواند به شما کمک کند تا چندحساب خود را بازیابی کنید. شما مسئول امنیت داده های خود هستید و پشتیبان گیری از عبارت دانه خودتان بهترین حفاظت است.", + "your-keys": "کلیدهای شما", + "your-recovery-phrase": "عبارت دانه شما", + "your-recovery-phrase-description": "این عبارت بازیابی شماست. شما از آن برای اثبات اینکه این کیف پول شماست استفاده می کنید. شما فقط همین یکبار آنرا مشاهده میکنید! آن را روی کاغذ بنویسید و در مکانی امن نگه دارید. اگر کیف پول خود را از دست بدهید یا مجددا نصب کنید، به آن نیاز خواهید داشت." +} diff --git a/translations/fi.json b/translations/fi.json new file mode 100644 index 00000000000..49255410a89 --- /dev/null +++ b/translations/fi.json @@ -0,0 +1,131 @@ +{ + "confirm": "Vahvista", + "amount": "Määrä", + "members-active": { + "one": "1 käyttäjä", + "other": "{{count}} käyttäjää", + "zero": "ei käyttäjiä" + }, + "chat-name": "Keskustelun nimi", + "phew-here-is-your-passphrase": "*Phew* se oli vaikeaa, tässä on tunnuslauseesi, *kirjoita tämä ylös ja pidä tallessa!* Tarvitset sitä palauttaaksesi tilisi.", + "public-group-topic": "Otsikko", + "chat-settings": "Keskustelun asetukset", + "offline": "Poissa", + "invited": "kutsuttu", + "address": "Osoite", + "new-public-group-chat": "Liity julkiseen keskusteluun", + "datetime-hour": { + "one": "tunti", + "other": "tuntia" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "Myöntääksesi vaadittu kameran käyttölupa, siirry järjestelmäasetuksiin ja varmista, että Status > Kamera on valittu.", + "remove": "Poista", + "add-members": "Lisää käyttäjiä", + "photos-access-error": "Myöntääksesi vaadittu kuvien käyttölupa, siirry järjestelmäasetuksiin ja varmista, että Status > Kuvat on valittu.", + "done": "Valmis", + "close-chat": "Poista keskustelu", + "new-group-chat": "Uusi ryhmäkeskustelu", + "sign-in": "Luo tili", + "datetime-yesterday": "eilen", + "create-new-account": "Luo uusi tili", + "datetime-ago": "sitten", + "contacts": "Yhteystiedot", + "got-it": "Vastaanotettu", + "active-online": "Linjalla", + "password": "Salasana", + "browsing-title": "Selaa", + "discover": "Löydä", + "browsing-cancel": "Peruuta", + "intro-status": "Keskustele kanssani määrittääksesi tai muuttaaksesi tilisi asetuksia!", + "name": "Nimi", + "show-qr": "Näytä QR", + "connect": "Yhdistä", + "edit": "Muokkaa", + "account-generation-message": "Ole hyvä ja odota hetki, käynnistän kvanttitietokoneeni tilisi luomiseksi!", + "no-messages": "Ei viestejä", + "passphrase": "Tunnuslause", + "recipient": "Vastaanottaja", + "members-title": "Jäsenet", + "new-group": "Uusi ryhmä", + "phone-e164": "Kansainvälinen 1", + "settings": "Asetukset", + "delete": "Poista", + "chats": "Keskustelut", + "transaction": "Tapahtuma", + "public-group-status": "Julkinen", + "image-source-make-photo": "Kuvakaappaus", + "start-conversation": "Aloita keskustelu", + "save": "Tallenna", + "sharing-copy-to-clipboard": "Kopioi leikepöydälle", + "sync-in-progress": "Synkronoidaan...", + "send-transaction": "Lähetä tapahtuma", + "incorrect-code": [ + "str", + "Virheellinen koodi, ole hyvä ja yritä uudelleen" + ], + "image-source-gallery": "Valitse galleriasta", + "sync-synced": "Synkronoitu", + "status-pending": "Odottaa", + "datetime-day": { + "one": "päivä", + "other": "päivää" + }, + "scan-qr": "Skannaa QR", + "contact-s": { + "one": "yhteystieto", + "other": "yhteystietoa" + }, + "next": "Seuraava", + "recent": "Uusimmat", + "status": "Tila", + "from": "Lähettäjältä", + "wrong-password": "Väärä salasana", + "in-contacts": "Kontakteissa", + "sharing-share": "Jaa...", + "type-a-message": "Kirjoita viesti...", + "clear-history": "Tyhjennä historia", + "no-contacts": "No contacts yet", + "datetime-today": "tänään", + "web-view-error": "oops, virhe", + "error": "Virhe", + "more": "lisää", + "cancel": "Peruuta", + "can-not-add-yourself": "Et voi lisätä itseäsi", + "add-to-contacts": "Lisää kontakteihin", + "available": "Saatavilla", + "You": "Sinä", + "main-wallet": "Ensisijainen Lompakko", + "members": { + "one": "1 käyttäjä", + "other": "{{count}} käyttäjää", + "zero": "ei käyttäjiä" + }, + "intro-message1": "Tervetuloa Statukseen\nNapauta tätä viestiä asettaaksesi salasanasi ja alkuun pääsemiseksi!", + "new-contact": "Uusi yhteystieto", + "datetime-second": { + "one": "sekunti", + "other": "sekuntia" + }, + "recover": "Palauta", + "datetime-minute": { + "one": "minuutti", + "other": "minuuttia" + }, + "browsing-open-in-android-web-browser": "Avaa selaimessa", + "browsing-open-in-ios-web-browser": "Avaa selaimessa", + "edit-profile": "Muokkaa profiilia", + "active-unknown": "Ei tiedossa", + "public-key": "Julkinen avain", + "profile": "Profiili", + "none": "Tyhjä", + "removed": "poistettu", + "message": "Viesti", + "here-is-your-passphrase": "Tässä on tunnuslauseesi, *kirjoita tämä ylös ja pidä tallessa!* Tarvitset sitä palauttaaksesi tilisi.", + "image-source-title": "Profiilikuva", + "current-network": "Nykyinen verkko", + "left": "poistui", + "to": "Vastaanottajalle", + "status-sent": "Lähetetty", + "data": "Tieto" +} diff --git a/translations/fil.json b/translations/fil.json new file mode 100644 index 00000000000..4fa988215cf --- /dev/null +++ b/translations/fil.json @@ -0,0 +1,1796 @@ +{ + "You": "ikaw", + "about-app": "Tungkol sa", + "about-key-storage-content": "Ang Status ay hindi kailanman mai-access ang iyong pribadong key. Siguraduhing i-backup ang iyong seen phrase. Kung nawala mo ang iyong telepono ito ang tanging paraan upang ma-access ang iyong mga keys.", + "about-key-storage-title": "Tungkol sa pangunahing imbakan", + "about-names-content": "Walang sinuman ang maaaring magpanggap na ikaw! Hindi ka nagpapakilala sa pamamagitan ng default at hindi mo kailangang ihayag ang iyong tunay na pangalan. Maaari kang magrehistro ng isang pasadyang pangalan para sa isang maliit na bayad.", + "about-names-title": "Hindi mababago ang mga pangalan", + "about-sharing-data": "Tungkol sa pagbabahagi ng data", + "accept": "Tanggapin", + "accept-and-add": "Tanggapin at idagdag", + "accept-and-continue": "Tanggapin at ipagpatuloy", + "accept-and-share-address": "Tanggapin at ibahagi ang address", + "accept-new-chats-from": "Tumanggap ng mga bagong chat mula sa", + "accept-status-tos-prefix": "Tumatanggap ako ng Status", + "access-existing-keys": "I-access ang umiiral na mga key", + "access-key": "I-access ang key", + "account-added": "Idinagdag ang account", + "account-color": "Kulay ng account", + "account-content": "Maaari mong ihambing ang mga account sa Status at sa bank accounts. Tulad ng isang account sa bangko, isang account ay karaniwang mayroong address at isang balanse; Ginagamit mo ang account na ito upang mag-transact sa Ethereum. Maaari kang magkaroon ng maraming mga account sa iyong pitaka o wallet. Lahat ng na-access sa pamamagitan ng pag-unlock ng Status.", + "account-exists-title": "Mayroon nang account", + "account-is-used": "Ginagamit ang account sa mga Dapps sa browser.", + "account-name": "Pangalan ng account", + "account-settings": "Mga setting ng account", + "account-title": "Account", + "accounts": "Accounts", + "actions": "Mga kilos", + "active-online": "Online", + "active-unknown": "Hindi kilala", + "activity": "Aktibidad", + "add": "Idagdag", + "add-a-watch-account": "Magdagdag ng isang address na panonood lamang", + "add-account": "Magdagdag ng account", + "add-account-description": "Maaari kang mag-import ng anumang uri ng Ethereum account para ma-idagdag ito para sa iyong Status Wallet", + "add-account-incorrect-password": "Tila hindi tama ang password. Ilagay ang password na iyong ginagamit para mabuksan ang app.", + "add-an-account": "Magdagdag ng isang account", + "add-bootnode": "Idagdag ang bootnode", + "add-contact": "Magdagdag ng contact", + "add-custom-token": "Magdagdag ng custom token", + "add-favourite": "Magdagdag ng paborito", + "add-mailserver": "Magdagdag ng Status node", + "add-members": "Magdagdag ng mga miyembro", + "add-network": "Magdagdag ng network", + "add-new-contact": "Magdagdag ng bagong contact", + "add-nickname": "Magdagdag ng palayaw (opsyonal)", + "add-node": "Magdagdag ng node", + "add-private-key-account": "Magdagdag ng account mula sa pribadong key", + "add-seed-account": "Magdagdag ng account para sa seed phrase", + "add-to-contacts": "Idagdag sa mga contact", + "add-to-contacts-text": "Sa pamamagitan ng pagdaragdag ng isang user sa iyong listahan ng contact, ibinahagi mo ang iyong wallet address", + "add-to-favourites": "Idagdag sa mga Paborito", + "add-watch-account": "Magdagdag ng isang account na panonood lamang", + "address": "Address", + "address-or-ens-name": "Address o pangalan ng ENS", + "address-received": "Natanggap ang address", + "address-request-accepted": "Tinanggap ang kahilingan sa address", + "address-requested": "Hiniling ang address", + "advanced": "Advanced", + "advanced-settings": "Mga advanced na setting", + "advertiser-description": "Natuklasan mo ang Status salamat sa isang kasosyo. Naisip mo ba kung susuriin ng Status ang iyong IP address nang isang beses para makakuha sila ng gantimpala? Ang impormasyong ito ay hindi gagamitin para sa anumang bagay at ito ay lubos na aalisin pagkatapos ng 7 araw.", + "advertiser-starter-pack-accept": "Tanggapin", + "advertiser-starter-pack-decline": "Tanggihan", + "advertiser-starter-pack-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "advertiser-starter-pack-title": "Starter Pack", + "advertiser-title": "Default sa privacy", + "agree-by-continuing": "Sa pamamagitan ng pagpapatuloy sumasang-ayon ka\nsa aming", + "all": "Lahat", + "allow": "Payagan", + "allow-and-send": "Payagan at ipadala", + "allow-mention-notifications": "Ipakita @ banggitin", + "allowing-authorizes-this-dapp": "Pinapayagan ang nagpapahintulot sa DApp na ito na makuha ang iyong address ng pitaka at paganahin ang Web3", + "already-have-asset": "Mayroon ka nang asset na ito", + "amount": "Halaga", + "anyone": "Sinuman", + "app-commit": "App commit", + "appearance": "Hitsura", + "apply": "Mag-apply", + "approve": "Aprubahan", + "approve-limit": "Aprubahan ang limitasyon", + "approve-token": "Aprubahan ang token", + "approve-token-contract-desc": "Ang pag-apruba sa isang token na may kontrata ay nagbibigay-daan dito na gastusin ang iyong balanse sa token. Kung sa tingin mo ay hindi mapagkakatiwalaan ang isang proyekto, huwag aprubahan ang token sa kanila, o aprubahan lang ang halagang gagamitin mo sa kanila.", + "are-you-sure": "Sigurado ka ba?", + "are-you-sure-description": "Hindi mo na makikitang muli ang seed phrase", + "are-you-sure-to-cancel": "Sigurado ka bang gusto mong kanselahin?", + "are-you-sure?": "Sigurado ka ba?", + "ask-in-status": "Magtanong ng isang katanungan o mag-ulat ng isang bug", + "at": "sa", + "attribution-received": "{{attrib}} mula sa {{max}} bonus na natanggap", + "audio": "Audio", + "audio-recorder": "Recorder", + "audio-recorder-error": "Error sa recorder", + "audio-recorder-max-ms-reached": "Naabot ang maximum na oras ng pag-record", + "audio-recorder-permissions-error": "Kailangan mong magbigay ng pahintulot upang magpadala ng mga audio message", + "authorize": "Awtorisado", + "available": "Available", + "available-participants": { + "zero": "wala", + "one": "isa", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "back": "Balik", + "back-up": "I-back up", + "back-up-seed-phrase": "Back up ng seed phrase", + "back-up-your-seed-phrase": "I-back up ang iyong seed phrase", + "backing-up": "Bina-back up...", + "backup-disabled": "Disabled", + "backup-enabled": "Paganahin", + "backup-recovery-phrase": "Back up seed phrase", + "backup-settings": "Mga setting ng backup", + "backup-through-waku": "I-backup sa pamamagitan ng waku", + "bad-fees-description": "Ang iyong priyoridad na bayad ay mas mababa sa aming mga iminungkahing parameter.", + "balance": "Balanse", + "begin-set-up": "Simulan ang pag-setup", + "below-base-fee": "pinakamataas na bayarin mas mababa sa batayang bayarin", + "biometric-auth-android-sensor-desc": "Pindutin ang sensor", + "biometric-auth-android-sensor-error-desc": "Nabigo", + "biometric-auth-android-title": "Kinakailangan ang pagpapatunay", + "biometric-auth-confirm-logout": "Relogin", + "biometric-auth-confirm-message": "Kinakailangan ang Biometric authentication para magpatuloy, kung hindi pwede mangyaring i-unlock ang iyong keys gamit ang iyong password or passcode", + "biometric-auth-confirm-title": "Dapat mong patunayan!", + "biometric-auth-confirm-try-again": "Subukan muli", + "biometric-auth-error": "Hindi ma-perform ang pagpapatunay ng biometric ({{code}})", + "biometric-auth-login-error-title": "Error sa authentication ng biometric", + "biometric-auth-login-ios-fallback-label": "Ilagay ang password", + "biometric-auth-reason-login": "Mag-login sa Status", + "biometric-auth-reason-verify": "Patunayan ang pagpapatunay", + "biometric-disable-bioauth": "hindi paganahin{{bio-type-label}}", + "biometric-disable-password-description": "Kung hindi mo paganahin ito, magagawa mo rin", + "biometric-disable-password-title": "Huwag paganahin ang pag-save ng password", + "biometric-enable": "Kung hindi mo nais na ipasok ang iyong password sa bawat oras upang ma-access ang app, paganahin{{bio-type-label}} mag sign-in", + "biometric-enable-button": "Paganahin{{bio-type-label}}", + "biometric-enable-keycard": "Kung ayaw mong gamitin ang iyong Keycard sa bawat oras na ma-access ang app, paganahin{{bio-type-label}}mag-sign in", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Fingerprint", + "biometric-secure-with": "Secure sa{{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39 password", + "blank-keycard-text": "Maaari kang magpatuloy sa iyong keycard kapag nabuo mo ang iyong mga keys at pangalan", + "blank-keycard-title": "Mukhang naka-tap ka ng\nisang blangkong keycard", + "block": "Block", + "block-contact": "I-block ang gumagamit na ito", + "block-contact-details": "Ang pag-block ay tatanggalin ang mga naunang mensahe ng gumagamit na ito at pipigilan ang mga bago na maabot sa iyo.", + "blocked-users": "Na-block ang mga gumagamit", + "bootnode-address": "Bootnode address", + "bootnode-details": "Mga detalye sa Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes enabled", + "bootnodes-settings": "Bootnodes settings", + "browsed-websites": "Ang kasaysayan ng browser ay lilitaw dito", + "browser": "Browser", + "browser-not-secure": "Hindi secure ang koneksyon! Huwag mag-sign ng transaksyon o magpadala ng personal na data sa site na ito.", + "browser-secure": "Ang koneksyon ay ligtas. Siguraduhin na talagang pinagkakatiwalaan mo ang site na ito bago mag-sign ng mga transaksyon o pagpasok ng personal na data.", + "browsers": "Mga Browser", + "browsing-cancel": "Pagkansela", + "browsing-open-in-android-web-browser": "Buksan sa Android", + "browsing-open-in-ios-web-browser": "Buksan sa iOS", + "browsing-open-in-status": "Buksan ang Status", + "browsing-site-blocked-description1": "Nakita namin ang mga potensyal na nakakahamak na aktibidad mula sa address na ito. Upang maprotektahan ka at ang iyong pitaka, pinipigilan namin ang karagdagang pag-navigate.\n\nKung sa palagay mo ito ay isang error, ipaalam sa amin sa", + "browsing-site-blocked-description2": "pampublikong chat.", + "browsing-site-blocked-go-back": "Bumalik ka", + "browsing-site-blocked-title": "Na-block ang site na ito", + "browsing-title": "Browse", + "bug-report": "I-report ang bug", + "bug-report-description": "deskripsyon", + "bug-report-description-placeholder": "Kailangan, hindi maaaring walang laman", + "bug-report-steps": "Mga hakbang sa pagpaparami", + "bug-report-steps-placeholder": "- buksan ang app\n - gumawa ng paraan\n - at pagkatapos ay iba pa...", + "bug-report-submit-email": "Isumite sa pamamagitan ng email na may logs archive", + "bug-report-submit-gh-issue": "Magsumite ng isyu sa GitHub nang walang mga log", + "bug-report-too-short-description": "Ang paglalarawan ay masyadong maikli", + "build-yourself": "Upang magamit ang app nang wala ang mga Tuntunin ng Serbisyo na ito, maaari kang bumuo ng iyong sariling bersyon", + "buy-crypto": "Bumili ng crypto", + "buy-crypto-choose-a-service": "Pumili ng serbisyo na nais mong gamitin upang bumili ng crypto", + "buy-crypto-description": "Maghanap ng dapp upang bumili ng crypto ngayon", + "buy-crypto-leaving": "Ikaw ay umaalis sa Status at pumapasok sa isang third party na website upang makumpleto ang iyong pagbili", + "buy-crypto-title": "Mukhang walang laman ang iyong wallet", + "camera-access-error": "Upang bigyan ang kinakailangang pahintulot ng camera, mangyaring pumunta sa iyong mga setting ng system at tiyakin na ang Status > Napili ang camera.", + "can-not-add-yourself": "Ikaw yan, upang magsimula ng isang chat pumili ng ibang tao", + "can-send-messages": "Maaari kang magpadala at makatanggap ng mga bagong mensahe", + "cancel": "kansela", + "cancel-keycard-setup": "Ikansela ang pag-setup ng Keycard", + "cancelling": "Pagkansela", + "cannot-read-card": "Hindi mabasa ang card.\nMangyaring hawakan ito sa likod ng iyong telepono", + "cannot-use-default-pin": "Hindi pinapayagan ang passcode 000000.\nMangyaring gumamit ng iba pang numero", + "cant-open-public-chat": "Hindi mabuksan ang pampublikong chat", + "cant-report-bug": "Hindi maiulat ang isang bug", + "card-is-blank": "Blangko ang card na ito", + "card-reseted": "Natapos na ang card", + "card-unpaired": "Ang card ay walang bayad mula sa kasalukuyang aparato", + "category": "Kategorya", + "category-title": "Pamagat ng kategorya", + "change-fleet": "Baguhin ang fleet sa{{fleet}}", + "change-logging-enabled": "Sigurado ka bang gusto mo{{enable}}logging?", + "change-pairing": "Baguhin ang pairing code", + "change-pairing-description": "Ang pagbabago ng pairing code ay hindi nakakaapekto sa kasalukuyang mga pares. Gayunpaman, ang anumang bagong pagpapares ay mangangailangan ng bagong code.", + "change-pairing-title": "Gumawa ng panibagong pairing code", + "change-passcode": "Baguhin ang Passcode", + "change-password": "Palitan ang password", + "change-pin": "Baguhin ang 6-digit na Passcode", + "change-puk": "Baguhin ang 12-digit na PUK", + "change-tip": "Baguhin ang tip", + "changed-amount-warning": "Ang halaga ay binago mula sa{{old}} hangang sa{{new}}", + "changed-asset-warning": "Binago si Asset mula sa{{old}} hangang sa{{new}}", + "chaos-mode": "Chaos mode", + "chaos-unicorn-day": "Araw ng Chaos Unicorn", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Makipag-chat at makipag-transaksyon nang pribado sa mga kaibigan", + "chat-is-a-contact": "Makipag-ugnay", + "chat-is-not-a-contact": "Hindi isang contact", + "chat-key": "Chat key", + "chat-key-content": "Mensahe sa Status Chat Protocol ay ipinapadala at natanggap gamit ang mga encryption keys. Mga public chat key ay isang string ng mga character na ibinabahagi mo sa iba upang maaari silang magpadala sa iyo ng mga mensahe sa Status.", + "chat-key-title": "Chat Key", + "chat-link-previews": "Mga preview ng chat link", + "chat-name": "Pangalan ng chat", + "chat-name-content": "Tatlong random na salita, nagmula algorithmically galing sa iyong chat key at gamitin mo ito para sa iyong default na alyas sa chat. Pangalan ng Chat ay ganap na natatangi o kakaiba, walang ibang user ang maaring magkapareho sa tatlong salita.", + "chat-name-title": "Chat Name", + "chat-notification-preferences": "Mga setting ng notification", + "chat-settings": "Mga setting ng chat", + "chats": "Chats", + "check-on-block-explorer": "Tingnan sa block explorer", + "check-on-opensea": "Tingnan sa opensea", + "check-your-recovery-phrase": "Suriin ang iyong seed phrase", + "choose-actions": "Pumili ng mga aksyon", + "choose-authentication-method": "Pumili ng isang paraan ng pagpapatunay", + "choose-new-location-for-keystore": "Pumili ng isang bagong lokasyon upang i-save ang iyong keystore file", + "choose-storage": "Pumili ng imbakan", + "clear": "Malinaw", + "clear-all": "Alisin lahat", + "clear-history": "Alisin ang history", + "clear-history-action": "Malinaw", + "clear-history-confirmation": "Alisin ang history?", + "clear-history-confirmation-content": "Sigurado ka bang nais mong limasin ang kasaysayan ng chat na ito?", + "clear-history-title": "Alisin ang history?", + "cleared-chat-description-public": "Ang tahimik dito. Simulan ang usapan o", + "close": "Isara", + "close-all": "Isara lahat", + "close-app-button": "Kumpirma", + "close-app-content": "Ang app ay titigil at isara. Kapag binuksan mo ito, gagamitin ang napiling network", + "close-app-title": "Babala!", + "collectibles-leak-metadata": "Maaari mong ipakita ang iyong mga NFT dito. Kung gagawin mo ito, ibabahagi mo ang iyong wallet at IP address", + "command-button-send": "Ipadala", + "communities": "Mga Komunidad", + "communities-alpha": "Mga Komunidad (alpha)", + "communities-enabled": "Pinagana ang mga komunidad", + "communities-verified": "✓ Na-verify na Komunidad ng Status", + "community": "Komunidad", + "community-color": "Kulay ng pamayanan", + "community-color-placeholder": "Pumili ng kulay", + "community-edit-title": "I-edit ang pamayanan", + "community-emoji-thumbnail-title": "Thumbnail", + "community-image-pick": "Pumili ng imahe", + "community-image-remove": "Alisin", + "community-image-take": "Kunan ng litrato", + "community-info": "Impormasyon sa komunidad", + "community-info-not-found": "Hindi nahanap ang impormasyon sa komunidad", + "community-invite-title": "Mag-anyaya", + "community-key": "Pribadong key ng komunidad", + "community-key-placeholder": "I-type ang iyong community private key", + "community-link": "Link ng komunidad", + "community-members": { + "zero": "sero", + "one": "isa", + "two": "dalawa", + "few": "konti", + "many": "marami", + "other": "iba" + }, + "community-members-title": "Mga kasapi", + "community-message-preview": "Imbitasyon na sumali sa {{community-name}}", + "community-private-key": "Pribadong key ng komunidad", + "community-requests-to-join-title": "Mga kahilingan sa pagiging miyembro", + "community-roles": "Mga Tungkulin", + "community-share-title": "Ibahagi", + "community-thumbnail-image": "Thumbnail na imahe", + "community-thumbnail-upload": "I-upload", + "complete-hardwallet-setup": "Ang card na ito ay naka-link ngayon. Kailangan mo ito upang mag-sign ng transaksyon at para ma-unlock ang iyong keys", + "completed": "Nakumpleto", + "confirm": "Kumpirma", + "confirm-new-password": "Kumpirmahin ang bagong password", + "confirm-pairing-code-placeholder": "Kumpirmahin ang iyong pairing code...", + "confirm-password-placeholder": "Kumpirmahin ang iyong password...", + "confirmation-request": "Kahilingan sa Pagkumpirma", + "confirmations": "Pagkumpirma", + "confirmations-helper-text": "Kapag ang transaksyon ay may 12 kumpirmasyon maaari mong isaalang-alang na naayos ito.", + "connect": "Kumonekta", + "connect-mailserver-content": "kumonekta sa {{name}}?", + "connect-wallet": "Ikonekta ang pitaka", + "connected": "Nakakonekta", + "connected-to": "Nakakonekta sa", + "connecting": "Pagkonekta ...", + "connecting-requires-login": "Ang pagkonekta sa isa pang network ay nangangailangan ng pag-login", + "connection-request": "Maghiling ng Koneksyon", + "connection-status": "Koneksyon ng Status", + "connection-with-the-card-lost": "Ang iyong koneksyon sa iyong Card ay nawala", + "connection-with-the-card-lost-setup-text": "Para ipagpatuloy ang pag-setup hawakan ang card sa\nlikod ng iyong phone at panatilihin\nang card sa contact sa telepono", + "connection-with-the-card-lost-text": "Para magpatuloy hawakan ang card sa likod ng iyong telepono", + "contact-code": "Chat key", + "contact-s": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "contacts": "Mga contact", + "contacts-descr": "Lilitaw ang iyong mga contact dito. Makakatanggap ka ng mga pag-update ng Status mula sa sinumang idagdag mo bilang isang contact", + "contacts-empty": "komontak gamit ang pangalan ng ENS na lilitaw dito", + "continue": "Magpatuloy", + "continue-anyway": "Magpatuloy pa rin", + "contract-address": "Contract address", + "contract-interaction": "Pakikipag-ugnayan sa kontrata", + "contract-isnt-supported": "Ang kontrata ay hindi suportado", + "copy-info": "Kopyahin ang impormasyon", + "copy-qr": "Kopyahin ang code", + "copy-to-clipboard": "Kopya", + "copy-transaction-hash": "Kopyahin ang transaksyon ID", + "cost-fee": "Gastos \/ Bayad", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Lumikha", + "create-a-pin": "Gumawa ng 6-digit passcode", + "create-a-puk": "Gumawa ng 12-digit PUK", + "create-category": "Lumikha ng kategorya", + "create-channel": "Lumikha ng channel", + "create-channel-title": "Bagong channel", + "create-community": "Lumikha ng isang pamayanan", + "create-group-chat": "Gumawa ng group chat", + "create-multiaccount": "Lumikha ng Keys", + "create-new-key": "Kumuha ng mga bagong keys", + "create-pin": "Lumikha ng 6-digit na passcode", + "create-pin-description": "kailangan mo ang iyong card + ang 6-digit na passcode na ito upang mai-unlock ang Status at upang kumpirmahin ang mga transaksyon.", + "created-group-chat-description": "Ikaw ay nakagawa ng grupo{{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Pera", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghanistan Afghani", + "currency-display-name-ars": "Argentine Peso", + "currency-display-name-aud": "Australian Dollar", + "currency-display-name-bbd": "Barbados Dollar", + "currency-display-name-bdt": "Bangladeshi Taka", + "currency-display-name-bgn": "Bulgarian Lev", + "currency-display-name-bhd": "Bahraini Dinar", + "currency-display-name-bnd": "Brunei Darussalam Dollar", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Brazil Real", + "currency-display-name-btn": "Bhutanese Ngultrum", + "currency-display-name-cad": "Canada Dollar", + "currency-display-name-chf": "Switzerland Franc", + "currency-display-name-clp": "Chile Peso", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Colombia Peso", + "currency-display-name-crc": "Costa Rica Colon", + "currency-display-name-czk": "Czech Koruna", + "currency-display-name-dkk": "Denmark Krone", + "currency-display-name-dop": "Dominican Republic Peso", + "currency-display-name-egp": "Egypt Pound", + "currency-display-name-etb": "Ethiopian Birr", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "British Pound", + "currency-display-name-gel": "Georgian Lari", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Hong Kong Dollar", + "currency-display-name-hrk": "Croatia Kuna", + "currency-display-name-huf": "Hungary Forint", + "currency-display-name-idr": "Indonesia Rupiah", + "currency-display-name-ils": "Israel Shekel", + "currency-display-name-inr": "India Rupee", + "currency-display-name-isk": "Iceland Krona", + "currency-display-name-jmd": "Jamaica Dollar", + "currency-display-name-jpy": "Japanese Yen", + "currency-display-name-kes": "Kenyan Shilling", + "currency-display-name-krw": "Korea (South) Won", + "currency-display-name-kwd": "Kuwaiti Dinar", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Sri Lanka Rupee", + "currency-display-name-mad": "Moroccan Dirham", + "currency-display-name-mdl": "Moldovan Leu", + "currency-display-name-mur": "Mauritius Rupee", + "currency-display-name-mwk": "Malawian Kwacha", + "currency-display-name-mxn": "Mexico Peso", + "currency-display-name-myr": "Malaysia Ringgit", + "currency-display-name-mzn": "Mozambique Metical", + "currency-display-name-nad": "Namibia Dollar", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Norway Krone", + "currency-display-name-npr": "Nepal Rupee", + "currency-display-name-nzd": "New Zealand Dollar", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinean Kina", + "currency-display-name-php": "Philippines Peso", + "currency-display-name-pkr": "Pakistan Rupee", + "currency-display-name-pln": "Polish Zloty", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Serbia Dinar", + "currency-display-name-rub": "Russia Ruble", + "currency-display-name-sar": "Saudi Arabia Riyal", + "currency-display-name-sek": "Sweden Krona", + "currency-display-name-sgd": "Singapore Dollar", + "currency-display-name-thb": "Thailand Baht", + "currency-display-name-try": "Turkish Lira", + "currency-display-name-ttd": "Trinidad at Tobago Dollar", + "currency-display-name-twd": "Taiwan New Dollar", + "currency-display-name-tzs": "Tanzanian Shilling", + "currency-display-name-uah": "walang mga kasapi", + "currency-display-name-ugx": "Ugandan Shilling", + "currency-display-name-usd": "United States Dollar", + "currency-display-name-uyu": "Uruguay Peso", + "currency-display-name-vef": "Venezuela Bolívar", + "currency-display-name-vnd": "Vietnam Dong", + "currency-display-name-zar": "South Africa Rand", + "current": "Kasalukuyan", + "current-average": "Kasalukuyang average", + "current-average-tip": "Kasalukuyang pamantayan na tip", + "current-base": "Kasalukuyang base", + "current-base-fee": "Kasalukuyang batayan sa bayarin", + "current-minimum-tip": "kasalukuyang minimum na tip", + "current-network": "Kasalukuyang network", + "current-password": "Kasalukuyang password", + "current-pin": "Ilagay ang 6-digit na passcode", + "current-pin-description": "Ilagay ang iyong 6-digit na passcode upang magpatuloy", + "custom": "Pasadyang", + "custom-networks": "Pasadyang mga network", + "custom-node": "Ikaw ay gumagamit ng custom RPC endpoint. Ang iyong lokal na kasaysayan ng paglilipat ay maaring hindi kumpleto", + "custom-seed-phrase": "Hindi wastong seed phrase", + "custom-seed-phrase-text-1": "Ang seed phrase ay hindi tumutugma sa aming suportadong diksyunaryo. Suriin para sa mga maling salita.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Tanggapin at Buksan", + "dapp-starter-pack-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "dapp-starter-pack-title": "Starter Pack", + "dapp-would-like-to-connect-wallet": "nais kumonekta sa", + "dapps": "ÐApps", + "dapps-permissions": "Mga pahintulot ng DApp", + "dark": "Madilim", + "data": "Data", + "data-collected": "Nakolektang data", + "data-collected-subtitle": "Ipinapakita ng talahanayan sa ibaba ang eksaktong data na nakaimbak at ipapadala. Ang data ay napatunayan laban sa mga pampublikong panuntunan upang matiyak na walang sensitibong data na naipadala. Huwag magtiwala, i-verify.", + "data-syncing": "Pag-sync ng data", + "database-reset-content": "Ang mga chat, contact at setting ay tinanggal. Maaari mong gamitin ang iyong account sa iyong Keycard", + "database-reset-title": "I-reset ang Database", + "database-reset-warning": "Mare-reset ang database. Ang mga chat, contact at setting ay tatanggalin", + "datetime-ago": "nakaraan", + "datetime-ago-format": "{{number}}{{time-intervals}}{{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "datetime-day-short": { + "zero": "walang araw", + "one": "isang araw", + "two": "dalawang araw", + "few": "ilang araw", + "many": "maraming araw", + "other": "ibang araw" + }, + "datetime-hour": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-hour-short": { + "zero": "walang oras", + "one": "isang oras", + "two": "dalawang oras", + "few": "kaunting oras", + "many": "maraming oras", + "other": "ibang oras" + }, + "datetime-minute": { + "zero": "minuto", + "one": "isang", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-minute-short": { + "zero": "walang minuto", + "one": "isang minuto", + "two": "dalawang minuto", + "few": "ilang minuto", + "many": "maraming minuto", + "other": "ibang minuto" + }, + "datetime-second": { + "zero": "zero", + "one": "isa", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-second-short": { + "zero": "walang segundo", + "one": "isang segundo", + "two": "dalawang segundo", + "few": "ilang segundo", + "many": "maraming segundo", + "other": "iba pang mga segundo" + }, + "datetime-today": "ngayon", + "datetime-yesterday": "kahapon", + "decimals": "Decimals", + "decline": "Tanggihan", + "decryption-failed-content": "Isang error na naganap sa pag-decrypting ng iyong data. Maaaring kailanganin mong burahin ang iyong dating data at makabuo ng isang bagong account. Tapikin ang \"Mag-apply\" upang burahin o \"Ikansela\" upang subukang muli", + "default": "Default", + "default-assets": "Default na ERC20 at ERC721", + "default-sync-period": "Pag-sync ng history para sa", + "delete": "Tanggalin", + "delete-account": "Tanggalin ang account", + "delete-and-leave-group": "Tanggalin at iwanan ang pangkat", + "delete-bootnode": "Tanggalin ang bootnode", + "delete-bootnode-are-you-sure": "Sigurado ka bang gusto mong tanggalin ang bootnode na ito?", + "delete-bootnode-title": "Tanggalin ang bootnode", + "delete-category-confirmation": "Sigurado ka bang gusto mong tanggalin ang kategoryang ito?", + "close-chat": "Tanggalin ang chat", + "close-chat-confirmation": "Sigurado ka bang gusto mong tanggalin ang chat na ito?", + "delete-confirmation": "Tanggalin?", + "delete-keys-keycard": "Tanggalin ang mga key mula sa Keycard", + "delete-mailserver": "Tanggalin ang Status node", + "delete-mailserver-are-you-sure": "Sigurado ka bang nais mong burahin ang Status node?", + "delete-mailserver-title": "Burahin ang Status node", + "delete-message": "Tanggalin ang mensahe", + "delete-my-account": "Tanggalin ang aking account", + "delete-my-profile": "Tanggalin ang aking profile", + "delete-network-confirmation": "Sigurado ka bang gusto mong tanggalin ang network na ito?", + "delete-network-error": "Mangyaring kumonekta sa ibang network bago matanggal ang isang ito", + "delete-network-title": "Tanggalin ang network?", + "delete-node": "Tanggalin ang node", + "delete-node-are-you-sure": "Sigurado ka bang nais mong tanggalin ang node na ito?", + "delete-node-title": "Tanggalin ang node", + "delete-profile": "Tanggalin ang profile", + "delete-profile-warning": "Babala: Kung hindi mo naisulat ang iyong seed phrase, mawawalan ka ng pag-access sa iyong mga pondo matapos mong tanggalin ang iyong profile", + "deny": "Deny", + "derivation-path": "Landas ng dereksyon", + "describe-channel": "Ilarawan ang channel", + "description": "Paglalarawan", + "dev-mode": "Mode ng pag-unlad", + "dev-mode-settings": "Pag-unlad ng mga setting ng mode", + "device-syncing": "Pag-sync ng aparato", + "devices": "Aparato", + "disable": "huwag paganahin", + "disable-all": "Huwag paganahin ang lahat", + "disable-later-in-settings": "Maaari mo itong hindi paganahin sa ibang pagkakataon sa Settings", + "disabled": "Disabled", + "disconnect": "Idiskonekta", + "disconnected": "Chat offline", + "discover": "tuklasin", + "dismiss": "Iwaksi", + "display-collectibles": "Ipakita ang mga koleksyon", + "done": "Tapos na", + "dont-ask": "Huwag mo ulit akong tanungin", + "edit": "Edit", + "edit-categories": "I-edit ang Mga Kategorya", + "edit-channel-title": "Edit Channel", + "edit-chats": "I-edit ang mga chat", + "edit-community": "I-edit ang pamayanan", + "edit-favourite": "baguhin ang mga paborito", + "edit-group": "I-edit ang grupo", + "edit-profile": "Ibahin ang profile", + "edited": "Na-edit", + "editing-message": "Pag-edit ng mensahe", + "empty-activity-center": "Ang iyong mga abiso sa chat\n lilitaw dito", + "empty-chat-description": "Walang mga mensahe\nsa chat na ito", + "empty-chat-description-community": "Tahimik dito sa huling {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Ang anumang mga mensahe na ipinadala mo dito ay naka-encrypt at maaari mo lamang itong basahin at", + "empty-chat-description-public": "Masyadong tahimik dito para sa huling{{quiet-hours}}Simulan ang pag-uusap o", + "empty-chat-description-public-share-this": "ibahagi ang chat na ito.", + "empty-keycard-required": "Nangangailangan ng isang walang laman na Keycard", + "empty-pending-invitations-descr": "Ang mga taong nais sumali sa pangkat \n sa pamamagitan ng isang link ng imbitasyon ay lilitaw dito", + "empty-tab": "Walang laman na tab", + "enable": "Paganahin", + "enable-all": "Paganahin lahat", + "enable-link-previews": "Paganahin ang mga link previews sa chat?", + "encrypt-with-password": "I-encrypt gamit ang password", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Magdagdag ng username", + "ens-agree-to": "Sang-ayon sa", + "ens-chat-settings": "Mga setting ng chat", + "ens-custom-domain": "Custom domain", + "ens-custom-username-hints": "I-type ang buong username kabilang ang pasadyang domain tulad ng username.domain.eth", + "ens-custom-username-taken": "Hindi kabilang sa iyo ang Username :(", + "ens-deposit": "Deposito", + "ens-dismiss-message": "I-click dito upang idespatsa", + "ens-displayed-with": "Ang iyong mga mensahe ay ipinapakita sa iba kasama", + "ens-get-name": "Kumuha ng isang unibersal na username", + "ens-got-it": "Ok, nakuha ito", + "ens-locked": "Naka-lock ang Username. Hindi mo mai-release ito hanggang{{date}}", + "ens-name-content": "Pasadyang alyas para sa iyong susi sa chat na maaari iparehistro gamit ang serbisyong pangalan ng Ethereum. Ang mga pangalan ng ENS ay desentralisado na mga username.", + "ens-name-not-found": "Hindi malutas ang pangalan ng ENS", + "ens-name-title": "Pangalan ng ENS", + "ens-network-restriction": "Magagamit lamang sa Mainnet", + "ens-no-usernames": "Wala kang koneksyon sa anumang username", + "ens-powered-by": "Pinapagana ng Ethereum Name Services", + "ens-primary-username": "Pangunahing username", + "ens-register": "Magrehistro", + "ens-registration-failed": "Para mairehistro ang username, mangyaring subukang muli.", + "ens-registration-failed-title": "Nabigo ang transaksyon", + "ens-registration-failure": "Nabigo ang pagrehistro", + "ens-registration-in-progress": "Pino-progreso ang Rehistro", + "ens-release-username": "Bitawan ang username", + "ens-remove-hints": "Ang pagtanggal ay tatanggalin ang username mula sa iyong key.", + "ens-remove-username": "Alisin ang username", + "ens-saved": "ay konektado ngayon sa iyong chat key at maaaring magamit sa Status.", + "ens-saved-title": "Idinagdag ang username", + "ens-show-username": "Ipakita ang aking pangalan ng ENS sa mga chat", + "ens-terms-header": "Mga tuntunin ng pagpaparehistro ng pangalan", + "ens-terms-point-1": "Ang mga pondo ay idineposito para sa 1 taon. Ang iyong SNT ay mai-lock, ngunit hindi ginugol.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS Registry).", + "ens-terms-point-2": "Matapos ang 1 taon, maaari mong palabasin ang pangalan at ibabalik ang iyong deposito, o walang pagkilos upang mapanatili ang pangalan.", + "ens-terms-point-3": "Kung ang mga termino ng pagbabago sa kontrata - e.g Status gumagawa ng mga pag-upgrade ng kontrata - May karapatan ang gumagamit na palabasin ang username anuman ang gaganapin sa oras.", + "ens-terms-point-4": "Hindi ma-access ng Controller ng kontrata ang iyong mga na-deposito na pondo. Maaari lamang silang ilipat sa address na nagpadala sa kanila.", + "ens-terms-point-5": "Ang iyong address (es) ay maiugnay sa publiko sa iyong pangalan ng ENS.", + "ens-terms-point-6": "Ang mga username ay nilikha bilang mga subdomain node ng stateofus.eth at napapailalim sa ENS smart contract sa mga terms.", + "ens-terms-point-7": "Pinapayagan mo ang kontrata para ilipat ang SNT sa iyong ngalan. Magagawa lamang ito kapag inaprubahan mo ang isang transaksyon upang pahintulutan ang paglipat.", + "ens-terms-point-8": "Ang mga salitang ito ay ginagarantiyahan ng smart contract logic sa address:", + "ens-terms-point-9": "{{address}}(Status UsernameRegistrar)", + "ens-terms-registration": "Mga tuntunin ng pagpaparehistro ng pangalan.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Naka-pending ang transaksyon ...", + "ens-understand": "Naiintindihan ko na ang aking wallet address ay maiugnay sa publiko sa aking username.", + "ens-username": "Username ng ENS", + "ens-username-already-added": "Nakakonekta na ang Username sa iyong chat key at maaaring magamit sa loob ng Status.", + "ens-username-available": "Ang username ay magagamit", + "ens-username-connected": "Ang pangalan ng gumagamit na ito ay pagmamay-ari mo at konektado sa iyong chat key.", + "ens-username-connected-continue": "Ipagpapatuloy na itakda ang aking pangalan sa ENS sa chat.", + "ens-username-connected-with-different-key": "Ang pagpapatuloy ay mangangailangan ng isang transaksyon upang ikonekta ang username sa iyong chat key.", + "ens-username-connection-confirmation": "{{username}} ay konektado sa sandaling kumpleto na ang transaksyon.", + "ens-username-hints": "Hindi bababa sa 4 na character. Mga letrang Latin, numero, at maliit na titik lamang.", + "ens-username-invalid": "Mga letra at mga numero lang.", + "ens-username-invalid-name-warning": "Ang proseso ng pagpaparehistro ng isa sa iyong mga pangalan ng en ay tapos na sa hindi wastong estado. HUWAG GAMITIN ang pangalan para sa mga transaksyon sa wallet at makipag-ugnayan sa aming suport sa support@status.im", + "ens-username-owned": "✓ Ang username ay pagmamay-ari mo.", + "ens-username-owned-continue": "Ang pagpapatuloy ay magkakokonekta sa username na ito sa iyong chat key.", + "ens-username-registration-confirmation": "Magaling! Pag-aari mo ang{{username}}sa sandaling kumpleto na ang transaksyon", + "ens-username-registration-invalid": "Babala! Ang proseso ng pagpaparehistro ay tapos na sa hindi wastong estado. HUWAG GAMITIN ang pangalan para sa mga transaksyon sa wallet at makipag-ugnayan sa aming suport sa support@status.im", + "ens-username-taken": "Nakuha na ang username :(", + "ens-username-you-can-follow-progress": "Maaari mong sundin ang pag-unlad sa seksyon ng Kasaysayan ng Transaksyon ng iyong wallet.", + "ens-usernames": "Mga pangalan ng ENS", + "ens-usernames-details": "Magrehistro ng isang unibersal na username upang madaling makilala ng ibang mga gumagamit", + "ens-want-custom-domain": "Nagmamay-ari ako ng isang pangalan sa isa pang domain", + "ens-want-domain": "Gusto ko ng isang stateofus.eth domain", + "ens-welcome-hints": "Binago ni ENS ang mga pangalan na sobrang habang address sa mga natatanging pangalan.", + "ens-welcome-point-customize": "Ang pangalan ng ENS ay maaaring palitan ang iyong 3 random word na pangalan sa chat. Maging @iyongpangalan sa halip na {{name}}.", + "ens-welcome-point-customize-title": "I-customize ang iyong pangalan ng chat", + "ens-welcome-point-receive": "Ang iba ay maaaring magpadala sa iyo ng mga pondo sa pamamagitan ng chat sa isang simpleng hakbang.", + "ens-welcome-point-receive-title": "Tumanggap ng mga transaksyon sa chat", + "ens-welcome-point-register": "Magrehistro ng isang beses upang mapanatili ang pangalan magpakailanman. Matapos ang 1 taon maaari mong pakawalan ang pangalan at maibalik ang iyong SNT.", + "ens-welcome-point-register-title": "10 SNT upang magparehistro", + "ens-welcome-point-simplify": "Maaari kang makatanggap ng mga pondo sa iyong easy-to-share ENS name kaysa sa iyong hexadecimal hash (0x...).", + "ens-welcome-point-simplify-title": "Pasimplehin ang iyong ETH address", + "ens-welcome-point-verify": "Maaari mong i-verify at magdagdag ng anumang mga username na pagmamay-ari mo sa susunod na mga hakbang.", + "ens-welcome-point-verify-title": "Mayroon ka bang isang username?", + "ens-your-username": "Ang iyong username", + "ens-your-usernames": "Ang iyong mga username", + "ens-your-your-name": "Ang iyong pangalan ng ENS", + "enter-12-words": "Ilagay ang 12 words ng iyong seed phrase, pinaghiwalay ng mga solong puwang", + "enter-a-private-key": "Ilagay ang pribadong susi", + "enter-a-seed-phrase": "Ilagay ang seed phrase", + "enter-address": "Ilagay ang address", + "enter-contact-code": "ilagay ang ENS username o chat key", + "enter-pair-code": "ilagay ang iyong pares na code", + "enter-pair-code-description": "Ang pairing code ay ipinakita sa iyo sa pag-setup ng Keycard", + "enter-password": "Ilagay ang password", + "enter-password-migration-prompt": "Ipasok ang iyong password upang ilipat ang mga contact, chat at setting kasama ang iyong mga key", + "enter-pin": "Ilagay ang iyong 6-digit na passcode", + "enter-puk-code": "Ilagay ang PUK code", + "enter-puk-code-description": "Na-block ang 6-digit na passcode.\nMangyaring ilagay ang PUK code upang i-unblock ang passcode.", + "enter-recipient-address-or-username": "Ilagay ang address o username ng tatanggap", + "enter-seed-phrase": "Ilagay ang seed phrase", + "enter-url": "Ilagay ang URL", + "enter-user-pk": "Ilagay ang user public key", + "enter-watch-account-address": "Scan ang QR code o i-enter ang address para makita", + "enter-word": "ilagay ang word", + "enter-your-code": "Ilagay ang iyong 6-digit na passcode", + "enter-your-password": "Ilagay ang iyong password", + "error": "Error", + "error-unable-to-get-balance": "Hindi makakakuha ng balanse", + "error-unable-to-get-prices": "Error sa conversion ng Pera. I-refresh ang iyong screen upang subukang muli.", + "error-unable-to-get-token-balance": "hindi makukuha ang balance ng token", + "errors": "Mga Pagkakamali", + "eth": "ETH", + "ethereum-account": "Ethereum account", + "ethereum-address": "Address ng Ethereum", + "ethereum-node-started-incorrectly-description": "Ang Ethereum node ay sinimulan ng maling pagsasaayos, titigil ang aplikasyon upang mabawi mula sa kondisyong iyon. Na-configure ang network id ={{network-id}}, aktwal ={{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ang Ethereum node ay nagsimula nang hindi wasto", + "etherscan-lookup": "Tumingin sa Etherscan", + "everyone": "Lahat", + "expand-all": "Palawakin lahat", + "export-account": "I-export ang account", + "export-key": "I-export ang pribadong key", + "external-storage-denied": "Tinanggihan ang pag-access sa external storage", + "failed": "Nabigo", + "faq": "Mga madalas na tinatanong", + "fast": "Mabilis", + "favourite": "Mga Paborito", + "favourite-description": "Lahat ng paboritong website ay lalabas dito", + "favourites": "Mga paborito", + "favourites-empty": "Lilitaw dito ang mga address na idinagdag sa mga paborito", + "fee-cap": "Bayad sa bayarin", + "fee-explanation": "pinakamataas na pangkalahatang presyo para sa transaksyon. Kung lumampas dito ang bayad sa batayan ng block, isasama ito sa isang sumusunod na block na may mas mababang batayan sa bayarin", + "fee-options": "Iminungkahing mga pagpipilian sa bayad", + "fetch-community": "Kumuha ng pamayanan", + "fetch-messages": "↓ Kumuha ng mga mensahe", + "fetch-timeline": "↓ Fetch", + "fetching-community": "Kinukuha ang pamayanan ...", + "find": "Maghanap", + "finish": "Tapos na", + "finishing-card-setup": "Pag-setup ng card", + "fleet": "Fleet", + "fleet-settings": "Fleet settings", + "follow": "Sundan", + "follow-your-interests": "Sumali sa isang pampublikong chat at makilala ang mga bagong tao", + "free": "↓ Libre", + "from": "Mula sa", + "gas-amount-limit": "Hangganan ng halaga ng gas", + "gas-limit": "Gas limit", + "gas-price": "Presyo ng Gas", + "gas-used": "Ginamit na gas", + "generate-a-key": "Bumuo ng mga keys", + "generate-a-new-account": "Lumikha ng account", + "generate-a-new-key": "Lumikha ng isang bagong key", + "generate-account": "Bumuo ng mga keys", + "generate-an-account": "lumikha ng account", + "generate-new-key": "Lumikha ng bagong keys", + "generating-codes-for-pairing": "> Pag-download ng software ng produkto sa card\n> Bumubuo ng pag-unlock at mga pagpapares code", + "generating-keys": "Lumilikha ng keys", + "generating-mnemonic": "Bumubuo ng seed phrase", + "get-a-keycard": "Kumuha ng isang Keycard", + "get-started": "Magsimula", + "get-status-at": "Kumuha ng Status sa http:\/\/status.im", + "get-stickers": "Kumuha ng Sticker", + "give-a-short-description": "Magbigay ng maikling deskripsyon", + "give-a-short-description-community": "Bigyan ito ng isang maikling paglalarawan", + "give-permissions-camera": "Magbigay ng pahintulot\nupang ma-access ang camera", + "glossary": "Glossary", + "go-to-settings": "Pumunta sa Mga Setting ...", + "got-it": "Nakuha ko", + "grant-face-id-permissions": "Upang mabigyan ang kinakailangang pahintulot ng ID gamit ng iyong mukha, mangyaring pumunta sa iyong mga setting ng system at tiyaking napili ang Status > Face ID", + "group-chat": "Group chat", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** ay ginawang admin", + "group-chat-all-contacts-invited": "Ang lahat ng iyong mga contact ay nasa grupo na", + "group-chat-created": "**{{member}}**nilikha ang pangkat**{{name}}**", + "group-chat-decline-invitation": "Tanggihan ang paanyaya", + "group-chat-member-added": "**{{member}}** ay inimbitahan", + "group-chat-member-joined": "**{{member}}** ay sumali sa group", + "group-chat-member-removed": "**{{member}}** umalis sa group", + "group-chat-members-count": "{{selected}}\/{{max}}miyembro", + "group-chat-name-changed": "**{{member}}** Palitan ang pangalan ng group sa **{{name}}**", + "group-chat-no-contacts": "Wala ka pang mga contact.\nAnyayahan ang iyong mga kaibigan na simulan ang pakikipag-chat", + "group-info": "Impormasyon sa grupo", + "group-invite": "Paanyaya sa pangkat", + "group-invite-link": "Link ng pangkat na anyayahan", + "group-membership-request": "Kahilingan sa pagiging kasapi ng pangkat", + "gwei": "Gwei", + "has-permissions": "ay may pahintulot sa pag access", + "hash": "Hash", + "help": "tumulong", + "help-capitalized": "Tulong", + "help-center": "Sentro ng tulong", + "help-improve-status": "Tulungan mapabuti ang Status", + "hide": "Tago", + "hide-content-when-switching-apps": "Block screenshots", + "hide-content-when-switching-apps-ios": "Itago ang preview", + "history": "Kasaysayan", + "history-nodes": "Status nodes", + "hold-card": "Hold card sa likod\nng iyong telepono", + "home": "Home", + "hooks": "Hooks", + "how-it-works": "Paano ito gumagana", + "http-gateway-error": "Oops, nabigo ang kahilingan!", + "identifier": "Identifier", + "image": "Imahe", + "image-remove-current": "Alisin ang kasalukuyang larawan", + "image-source-gallery": "Pumili mula sa gallery", + "image-source-make-photo": "Kumuha", + "image-source-title": "I-edit ang larawan", + "import": "angkat", + "import-community": "Mag-import ng isang pamayanan", + "import-community-title": "Mag-import ng isang pamayanan", + "in-contacts": "Sa mga contact", + "include": "Isama", + "incoming": "Paparating", + "incoming-transaction": "Papasok na transaksyon", + "incorrect-code": [ + "str", + "Paumanhin hindi tama ang code, mangyaring ilagay muli" + ], + "increase-gas": "Taasan ang Gas", + "initialization": "Pagsisimula", + "install": "↓ Install", + "insufficient-balance-to-cover-fee": "hindi sapat na balanse upang masakop ang bayad sa transaksyon", + "intro-message1": "Maligayang pagdating sa Status!\nTapikin ang mensaheng ito upang itakda ang iyong password at magsimula.", + "intro-privacy-policy-note1": "Ang Status ay hindi kinukolekta o kumikita sa iyong personal na data. Sa pamamagitan ng pagpapatuloy, sumasang-ayon ka sa", + "intro-privacy-policy-note2": "patakaran sa privacy", + "intro-text": "Status ay ang iyong gateway sa desentralisadong web", + "intro-text1": "Makipag-chat sa isang peer-to-peer, naka-encrypt na network kung saan ang mga mensahe ay hindi mai-censor o mai-hack", + "intro-text2": "Magpadala at tumanggap ng mga digital na assets sa kahit saan sa mundo — walang kinakailangang bank account", + "intro-text3": "Galugarin ang mga laro, palitan at mga social network kung saan nag-iisa kang nagmamay-ari ng iyong data", + "intro-title1": "Tunay na pribadong komunikasyon", + "intro-title2": "Secure ang crypto wallet", + "intro-title3": "Desentralisadong apps", + "intro-wizard-text1": "Kinokontrol ng isang hanay ng mga keys ang iyong account. Nakatira ang iyong mga keys sa iyong telepono, kaya maaari mo lamang itong magamit", + "intro-wizard-text2": "Ang isang key ay para sa chat. Ito ay may nabasang pangalan na hindi mababago.", + "intro-wizard-text3": "Kung nagmamay-ari ka ng isang Keycard, itago ang iyong mga keys doon para sa pinahusay na seguridad.", + "intro-wizard-text4": "I-secure at i-encrypt ang iyong mga keys", + "intro-wizard-text6": "Ang Status ay magbabatid sa iyo tungkol sa mga bagong mensahe. Maaari mong mai-edit ang iyong mga kagustuhan sa abiso mamaya sa mga setting", + "intro-wizard-title-alt4": "Gumawa ng password", + "intro-wizard-title-alt5": "Kumpirmahin ang iyong password", + "intro-wizard-title1": "Kunin ang iyong mga keys", + "intro-wizard-title2": "Pumili ng isang pangalan ng chat", + "intro-wizard-title3": "Piliin ang key storage", + "intro-wizard-title4": "Gumawa ng 6-digit passcode", + "intro-wizard-title5": "Kumpirmahin ang passcode", + "intro-wizard-title6": "Paganahin ang mga notification", + "introduce-yourself": "Ipakilala ang iyong sarili sa isang maikling mensahe", + "invalid-address-qr-code": "Ang naka-scan na QR code ay hindi naglalaman ng isang wastong address", + "invalid-format": "Hindi wastong format\nDapat{{format}}", + "invalid-key-confirm": "Apply", + "invalid-key-content": "Ang Database ay hindi mai-encrypt dahil ang file ay corrupt. Ang iyong funds at chat key ay ligtas. Ang iba pang data, katulad ng iyong chats at contacts, hindi na maibabalik. \"{{erase-multiaccounts-data-button-text}}\" button, aalisin ang lahat ng iba pang data at magpapahintulot sa iyo na ma-access ang iyong mga pondo at magpadala ng mga mensahe.", + "invalid-number": "Di-wastong numero", + "invalid-pairing-password": "Di-wastong pagpapares ng password", + "invalid-public-chat-topic": "Hind wastong pampublikong paksa", + "invalid-range": "Hindi wastong format, dapat nasa pagitan{{min}}at{{max}}", + "invalid-username-or-key": "invalid ang username o ang chat key", + "invite": "Mag-anyaya", + "invite-button": "Mag-anyaya", + "invite-chat-accept": "Tanggapin", + "invite-chat-accept-join": "Tanggapin at Sumali", + "invite-chat-intro": "Ikaw ay ni-refer ng isang kaibigan na sumali sa Status. Narito ang ilang crypto upang makapagsimula ka! Gamitin ito sa pag reghistro ng pangalan ng ENS o bumili ng sticker pack", + "invite-chat-name": "Referral ng kaibigan", + "invite-chat-pending": "Naghihintay", + "invite-chat-rule": "Ang pagtanggap ay gagantimpalaan din ang iyong kaibigan ng isang crypto referral bonus", + "invite-chat-starter-pack": "Starter Pack", + "invite-friends": "Mag-imbita ng mga kaibigan", + "invite-instruction-fifth": "Maaari kang pumili para i-redeem ang iyong referral bonus anumang oras.", + "invite-instruction-first": "Nagpadala ka ng isang natatanging link ng imbitasyon sa iyong kaibigan upang i-download at sumali sa Status", + "invite-instruction-fourth": "Ikaw ay makakatanggap ng referral bonus at ang iyong kaibigan ng Starter Pack", + "invite-instruction-second": "Ang iyong kaibigan ay nag download ng Status at gumawa ng account (sa Android)", + "invite-instruction-third": "Sinimulan ang isang chat sa iyong kaibigan, kung saan kumpirmahin ang iyong referral", + "invite-people": "Mag-imbita ng mga tao", + "invite-privacy-policy-public": "Nag-install ka ng Status sa pamamagitan ng isang referral na link. Sa pamamagitan ng pagsali sa chat na ito naiugnay mo ang iyong referrer at sumasang-ayon sa", + "invite-privacy-policy1": "Sa pamamagitan ng pagtanggap sumasang-ayon ka sa programa ng referral", + "invite-privacy-policy2": "Mga Tuntunin at Kondisyon.", + "invite-public-chat-home": "Imbitasyon ng referral", + "invite-public-chat-intro": "Narito ang ilang crypto upang makapagsimula ka! Gamitin ito upang magparehistro ng isang pangalan ng ENS o bumili ng isang sticker pack", + "invite-receive-account": "Account upang matanggap ang iyong referral bonus", + "invite-reward": "Kumita ng crypto sa bawat kaibigan na inaanyayahan mo!", + "invite-reward-friend": "Kaibigan: ", + "invite-reward-friend-description": "Ang iyong kaibigan ay makakatanggap ng Starter Pack na binubuo ng ilang {{reward}} upang makapagsimula", + "invite-reward-friend-name": "Starter Pack", + "invite-reward-you": "Ikaw:", + "invite-reward-you-description": "Mag-imbita ng mga kaibigan at tanggapin ang {{reward}} bilang isang referral bonus. Gamitin ito para sa stickers, pangalan ng ENS at subukan ang iba pang dapps", + "invite-reward-you-name": "Referral bonus", + "invite-select-account": "Pumili ng isang account para matanggap ang iyong referral bonus", + "invite-warning": "Ang promosyon na ito ay may bisa lamang para sa mga gumagamit ng Android device, na hindi residente ng US. Kailangang kumpirmahin ng kaibigan ang referral sa loob ng 7 araw", + "invited": "inimbitahan", + "join": "Sumali", + "join-a-community": "o sumali sa isang pamayanan", + "join-group-chat": "Sumali sa group", + "join-group-chat-description": "{{username}}inanyayahan kang sumali sa grupo{{group-name}}", + "join-me": "Hali ka, samahan mo ako sa Status: {{url}}", + "join-new-private-chat": "Magsimula ng bagong pribadong chat", + "join-new-public-chat": "Sumali sa pampublikong chat", + "joined": "Sumali", + "joined-group-chat-description": "Sumali ka sa{{group-name}}mula sa paanyaya ni{{username}}", + "key": "Key", + "key-managment": "pangunahing pamamahala", + "key-on-device": "Ang pribadong key ay nai-save sa device na ito", + "keycard": "Keycard", + "keycard-access-reset": "Ang pag-access sa Keycard ay naka-reset", + "keycard-applet-install-instructions": "Para mai-install ang applet mangyaring sundin ang mga tagubilin sa https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "subukang galawin ang card paikot para makita ng NFC at mabasa sa iyong aparato.", + "keycard-awaiting-title": "Naghahanap pa rin...", + "keycard-backup": "Lumikha ng isang backup na Keycard", + "keycard-backup-success-body": "Matagumpay na nilikha ang backup card. Maaari mo na itong gamitin sa iyong account tulad ng pangunahing card.", + "keycard-backup-success-title": "Matagumpay ang backup", + "keycard-blocked": "Na-block ang Keycard.\nKailangan mong i-reset ang card upang magpatuloy sa paggamit nito.", + "keycard-can-use-with-new-passcode": "Maaari mong gamitin ang card na ito sa iyong bagong passcode", + "keycard-cancel-setup-text": "Kanselahin nito ang pag-setup ng keycard. Ito'y lubos na inirerekumenda na tapusin ang pag-setup upang magamit ang keycard. Nais mo bang kanselahin?", + "keycard-cancel-setup-title": "Mapanganib na operasyon", + "keycard-connected-description": "Subukang panatilihin pa rin ang card", + "keycard-connected-title": "Nakakonekta", + "keycard-desc": "May-ari ng isang Keycard? Itago ang iyong mga keys dito; kakailanganin mo ito para sa mga transaksyon", + "keycard-dont-ask-card": "Huwag humingi ng card upang mag-sign in", + "keycard-enter-new-passcode": "Ilagay ang bagong passcode {{step}}\/2", + "keycard-error-description": "i-konek ang card para makapag simula ulit", + "keycard-error-title": "Nawala ang koneksyon", + "keycard-factory-reset": "Ibalik ang card sa factory settings", + "keycard-factory-reset-text": "Ang pagsagawa nito ay matatanggal ang anumang mnemonic phrase na nakaimbak sa card. Tiyaking mayroon kang backup ng mnemonic phrase na ginagamit mo gamit ang Keycard na ito.", + "keycard-factory-reset-title": "Sigurado ka bang nais mong limasin ang kasaysayan ng chat na ito?", + "keycard-free-pairing-slots": "Ang Keycard ay mayroong {{n}} libreng pagpapares ng mga puwang", + "keycard-has-multiaccount-on-it": "Ang card na ito ay puno na. Ang bawat card ay maaaring humawak ng isang pangunahing keypair", + "keycard-init-description": "Ilagay ang card sa likod ng iyong telepono upang magpatuloy", + "keycard-init-title": "Naghahanap ng mga kards", + "keycard-is-blocked-details": "Hindi mo na magagamit ang card na ito upang ma-access o mag-sign para sa account na ito. Napakaraming nabigo na passcode at mga pagtatangka ng PUK.", + "keycard-is-blocked-instructions": "Para ma-access ang iyong account maaring i-reinstall ang Status at gumamit ng bagong Keycard, gumamit ng ibang wallet o i-reset ang keycard ng manu-mano.", + "keycard-is-blocked-title": "Na-block ang Keycard", + "keycard-is-frozen-details": "Upang maprotektahan ang iyong mga assets, naka-freeze ang iyong card. I-reset ang iyong card upang ma-freeze ito at makapagpadala ng mga transaksyon. Magagawa mo ito sa iyong PUK o sa iyong mnemonic.", + "keycard-is-frozen-factory-reset": "I-reset sa mnemonic", + "keycard-is-frozen-reset": "I-reset sa PUK", + "keycard-is-frozen-title": "Ang Keycard ay frozen", + "keycard-onboarding-finishing-header": "Tinatapos na", + "keycard-onboarding-intro-header": "Itago ang iyong mga keys sa Keycard", + "keycard-onboarding-intro-text": "Maghanda, maaaring tumagal ito ng ilang minuto, ngunit mahalaga na ma-secure ang iyong account", + "keycard-onboarding-mnemonic-text": "Kakailanganin mo rin ang isang piraso ng papel at isang lapis upang isulat ang iyong seed phrase", + "keycard-onboarding-pairing-header": "Pagpapares ng card ...", + "keycard-onboarding-pin-text": "Kakailanganin mong lumikha ng 6-digit na passcode na gagamitin upang maprotektahan ang pag-access sa iyong Keycard.", + "keycard-onboarding-preparing-header": "Paghahanda ng card....", + "keycard-onboarding-puk-code-header": "Isulat ang mga code\n at itago ang mga ito nang ligtas", + "keycard-onboarding-recovery-phrase-description": "Kailangan mo ang seed phrase para mabalik ang iyong key. Isulat mo. Panatilihing ligtas, offline, at paghiwalayin sa aparatong ito.", + "keycard-onboarding-recovery-phrase-header": "Back up seed phrase", + "keycard-onboarding-recovery-phrase-text": "Para sa iyong mga mata lamang. Ito ang magical seed na ginamit upang makabuo ng iyong key.", + "keycard-onboarding-start-header": "I-hold ang card sa likod\n ng iyong telepono upang magsimula", + "keycard-onboarding-start-step1": "Gumawa ng passcode", + "keycard-onboarding-start-step1-text": "Halos 1 minuto. Lumikha ng isang 6-digit na passcode upang i-encrypt ang iyong mga key", + "keycard-onboarding-start-step2": "Isulat ang PUK at ang pairing code", + "keycard-onboarding-start-step2-text": "Halos 1 minuto. Kakailanganin mo ang isang piraso ng papel at isang lapis para doon", + "keycard-onboarding-start-step3": "I-back up ang seed phrase", + "keycard-onboarding-start-step3-text": "Halos 1 minuto. Gayundin ang isang piraso ng papel at isang lapis ay kinakailangan", + "keycard-onboarding-start-text": "At panatilihin ang card sa contact sa telepono\n sa pag-setup. Ang pag-setup ay aabutin ng halos 4 na minuto", + "keycard-processing-description": "Subukang panatilihin pa rin ang card", + "keycard-processing-title": "Nagproproseso", + "keycard-recover": "nawala o frozen card?", + "keycard-recover-text": "Kung mayroon kang mnemonic phrase maaari kang lumikha ng isang bagong Keycard na nauugnay sa account na ito. Maaari mong gamitin ang alinman sa bagong Keycard o isagawa ang factory reset sa naka-freeze.", + "keycard-recover-title": "gumawa ng bagong card sa account na ito?", + "keycard-recovery-intro-button-text": "Simulan ang pagbawi", + "keycard-recovery-intro-header": "Ibalik ang mga key na naka-imbak sa keycard", + "keycard-recovery-intro-text": "Kung ikaw ay bumuo ng mga keys gamit ang keycard nuon at ngayon gusto mo gamitin ang mga keys sa mga aparato.", + "keycard-recovery-no-key-header": "Wala naman\nma recover dito", + "keycard-recovery-no-key-text": "Ang iyong Keycard ay walang nakaimbak na key dito. Upang magamit ito, bumuo ng isang bagong key at piliin ang iyong Keycard upang maiimbak ang key", + "keycard-recovery-phrase-confirm-header": "Kumpirmahin ang seed phrase", + "keycard-recovery-phrase-confirmation-text": "Hindi ka magkakaroon ng pangalawang pagkakataon! Kung nawalan ka ng access, halimbawa sa pagkawala ng iyong keycard, maaari mo lamang ma access ang iyong keys kasama ang iyong seed phrase. Walang sinuman, kundi ikaw ay mayroon ng iyong seed phrase. Isulat mo ito at panatilihing ligtas.", + "keycard-recovery-phrase-confirmation-title": "Isinulat ang seed phrase?", + "keycard-recovery-success-header": "Ang iyong mga keys ay\nmatagumpay na nabawi", + "keycard-redeem-title": "I-Redeem sa", + "keycard-redeem-tx": "Mag Redeem ng Assets", + "keycard-redeem-tx-desc": "Tapikin ang card upang mag-sign at makatanggap ng mga assets", + "keycard-reset-passcode": "Reset passcode", + "keycard-success-description": "maari mo ng alisin ang card ngayon", + "keycard-success-title": "Tagumpay", + "keycard-unauthorized-operation": "Hindi ka awtorisado upang maisagawa ang operasyong ito.\nMangyaring i-tap ang wastong card at subukang muli.", + "keycard-upsell-subtitle": "Pinahusay na seguridad at kaginhawaan", + "language": "Lengwahe", + "last-backup-performed": "Ang huling backup na ginawa:", + "last-transaction": "huling transaksyon", + "learn-more": "Dagdagan ang nalalaman", + "learn-more-about-keycard": "Matuto nang higit pa tungkol sa Keycard", + "leave": "Umalis", + "leave-chat": "Umalis sa chat", + "leave-chat-confirmation": "Aalisin ang iyong kasaysayan sa chat sa iyong aparato. Pagkatapos muling pumasok hindi mo magagawang makuha ang anumang kasaysayan mo.", + "leave-community": "Umalis sa pamayanan", + "leave-confirmation": "Umalis{{chat-name}}", + "leave-group": "Umalis sa grupo", + "left": "Umalis", + "les-ulc": "LES\/ULC", + "lets-go": "Tara na", + "light": "Mailaw", + "limit": "limitasyon", + "linked-on": "Naka-link {{date}}", + "load-messages-before": "bago ang {{date}}", + "load-more-messages": "↓ Kumuha ng higit pang mga mensahe", + "load-more-timeline": "↓ Dagdagan pa", + "loading": "Loading...", + "local-notifications": "Mga lokal na abiso", + "local-notifications-subtitle": "Paganahin ang serbisyo sa background", + "lock-app-with": "I-lock ang app na may", + "log-level": "Log level", + "log-level-settings": "Mga setting ng antas ng log", + "logging": "Logging", + "logging-enabled": "Paganahin ang logging?", + "login-pin-description": "Ilagay ang 6-digit passcode para ma-unlock ang iyong keys", + "logout": "Log out", + "logout-app-content": "Ang account ay mai-log out. Kapag binuksan mo ulit ito, gagamitin ang napiling network", + "logout-are-you-sure": "Sigurado ka bang gusto mo\nmag-log out?", + "logout-key-management": "Kailangan mong mag log out upang ma access ang key management", + "logout-title": "Log out?", + "looking-for-cards": "Naghahanap ng mga cards", + "lost-connection": "Nawala ang koneksyon", + "low-tip": "ang tip ay masyadong mababa", + "lower-than-average-tip": "mas mababa sa pamantayan na tip", + "mail-should-be-configured": "Ang mail client ay dapat isaayos", + "mailserver-address": "Status node address", + "mailserver-automatic": "Awtomatikong pagpili", + "mailserver-automatic-switch-explanation": "Piliin ang pinakamabilis na available sa Status node", + "mailserver-connection-error": "Hindi makakonekta sa Status node", + "mailserver-content": "Ang isang node sa Status network na ruta at nag-iimbak ng mga mensahe, hanggang sa 30 araw.", + "mailserver-details": "Mga detalye ng Status node", + "mailserver-error-content": "Ang pinili mong Status node ay hindi maabot", + "mailserver-error-title": "Error sa pagkonekta sa Status node", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Pumili ng iba pang Status node", + "mailserver-reconnect": "Hindi makakonekta sa Status node. I-tap upang muling kumonekta", + "mailserver-request-error-content": "Ang sumusunod na error ay naibalik ng Status node: {{error}}", + "mailserver-request-error-status": "Isang error na naganap habang kumukuha ng kasaysayan, suriin ang mga tala para sa mga detalye", + "mailserver-request-error-title": "Ang paghiling ng Status node ay error", + "mailserver-request-retry": "Muling hilingin", + "mailserver-retry": "Ulitin", + "mailserver-title": "Status node", + "main-currency": "Pangunahing pera", + "main-networks": "pangunahing networks", + "main-wallet": "Pangunahing Wallet", + "mainnet-network": "Pangunahing network", + "make-admin": "Gumawa ng admin", + "manage-connections": "Pamahalaan ang mga koneksyon mula sa loob ng aplikasyon Connections", + "manage-keys-and-storage": "Pamahalaan ang mga key at imbakan", + "mark-all-read": "Markahan ang lahat ng nabasa", + "master-account": "Master account", + "max-fee": "pinakamataas na bayad", + "max-priority-fee": "mataas na priority fee", + "maximum-fee": "pinakamataas na bayad", + "maximum-fee-desc": "Pinakamataas na kabuuang presyo para sa transaksyon. Kung ang kasalukuyang block base fee ay lumampas dito, ang iyong transaksyon ay isasama sa isang sumusunod na block o bloke na may mas mababang base fee.", + "maybe-later": "Baka mamaya", + "member-ban": "mag-ban ng miyembro", + "member-kick": "Kick member", + "members": { + "zero": "wala", + "one": "isang", + "two": "dalawang", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "members-active": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "members-active-none": "walang mga miyembro", + "members-count": "{{count}} miyembro", + "members-label": "Mga kasapi", + "members-limit-reached": "Naabot na ang limitasyon ng mga miyembro", + "members-title": "Mga kasapi", + "membership-approval": "Mangangailangan ng pag-apruba", + "membership-approval-description": "Ang iyong komunidad ay malayang sumali, ngunit ang mga bagong kasapi ay kinakailangang maaprubahan muna ng lumikha ng komunidad", + "membership-button": "Kahilingan sa pagiging kasapi ng pangkat", + "membership-declined": "Tinanggihan ang kahilingan sa pagiging miyembro", + "membership-description": "Ang pagiging kasapi ng pangkat ay kinakailangan kang tanggapin ng admin", + "membership-ens": "Kailangan ng ENS username", + "membership-ens-description": "Ang iyong komunidad ay nangangailangan ng isang ENS username upang makasali", + "membership-free": "Walang kinakailangan", + "membership-free-description": "Bukas ang iyong pamayanan para sumali ang sinuman", + "membership-invite": "Humiling ng paanyaya mula sa ibang miyembro", + "membership-invite-description": "Ang iyong komunidad ay maaari lamang sumali sa pamamagitan ng isang paanyaya mula sa existing na miyembro ng komunidad", + "membership-none": "Wala", + "membership-none-placeholder": "Maaari kang mangailangan ng mga bagong kasapi upang matugunan ang ilang mga pamantayan bago sila sumali. Maaari itong mabago anumang oras", + "membership-request-pending": "Nakabinbin ang kahilingan sa pagiging miyembro", + "membership-requests": "Mga kahilingan sa pagiging miyembro", + "membership-title": "Kahilingan sa pagiging kasapi ng pangkat", + "message": "Mensahe", + "message-not-sent": "Hindi ipinadala ang mensahe", + "message-options-cancel": "Pagkansela", + "message-reply": "Sagot", + "messages": "mensahe", + "messages-from-contacts-only-subtitle": "Ang mga tao lamang na iyong idinagdag bilang mga contact ay maaaring magsimula ng isang bagong chat sa iyo o mag-anyaya sa iyo sa isang grupo", + "might-break": "Maaaring masira ang ilang ÐApps", + "migration-successful": "Matagumpay ang paglipat", + "migration-successful-text": "Matagumpay na na-migrate ang account sa Keycard", + "migrations-failed-content": "{{message}}\nschema version: paunang{{initial-version}},kasalukuyang{{current-version}},huli{{last-version}}\n\nNagkaroon ng isang error sa database. Ang iyong funds at chat key ay ligtas. Ang iba pang data, kagaya ng iyong chats at mga contacts, ay hindi maibabalik. \"{{erase-multiaccounts-data-button-text}}\" button, aalisin ang lahat ng iba pang data at magpapahintulot sa iyo na ma-access ang iyong mga pondo at magpadala ng mga mensahe.", + "miners-higher-fee": "Malamang isasama ng mga minero ang iyong transaksyon mas maaga kung magbabayad ka ng mas mataas na bayad.", + "minimum-received": "Minimum na natanggap", + "mobile-network-ask-me": "Tanungin mo ako sa mobile network", + "mobile-network-continue-syncing": "Magpatuloy sa pag-sync", + "mobile-network-continue-syncing-details": "Maaari mong baguhin ito sa ibang pagkakataon sa mga setting", + "mobile-network-go-to-settings": "Pumunta sa mga setting", + "mobile-network-settings": "Mobile data", + "mobile-network-sheet-configure": "Maaari mong i-configure ang pag-sync sa higit pang\ndetalye sa", + "mobile-network-sheet-offline": "Walang Wi-fi, hindi pinagana ang pag-sync ng mensahe.", + "mobile-network-sheet-offline-details": "Ang pag-sync gamit ang mobile network ay naka-off", + "mobile-network-sheet-remember-choice": "Tandaan ang aking pinili", + "mobile-network-sheet-settings": "settings", + "mobile-network-start-syncing": "Simulan ang pag-sync", + "mobile-network-stop-syncing": "Itigil ang pag-sync", + "mobile-network-stop-syncing-details": "Hanggang sa konektado sa Wi-Fi?", + "mobile-network-use-mobile": "Gumamit ng mobile data", + "mobile-network-use-mobile-data": "Ang Status ay gumagamit ng maraming data kapag nag-sync sa mga chats at wallet.", + "mobile-network-use-wifi": "Wi-Fi lang", + "mobile-syncing-sheet-details": "Ang Status ay gumagamit ng maraming data kapag nag-syng sa chats at wallet.", + "mobile-syncing-sheet-title": "Pag-sync gamit ang mobile data?", + "more": "higit pa", + "move-and-reset": "Ilipat at I-reset", + "move-keystore-file": "Ilipat ang keystore file", + "move-keystore-file-to-keycard": "Ilipat ang keystore file sa keycard?", + "multiaccount-exists-content": "Ang Keys sa account na ito ay mayroon na at hindi maaaring idagdag muli. Kung nawala ang iyong password, passcode o Keycard, i-uninstall ang app, reinstall at i-access ang iyong key sa pamamagitan ng iyong seed phrase", + "multiaccount-exists-title": "Ang Keys sa account na ito ay mayroon na", + "multiaccounts-recover-enter-phrase-text": "Ilagay ang 12, 15, 18, 21 o 24 na mga salita.\nPaghiwalayin ang mga salita sa pamamagitan ng isang puwang.", + "multiaccounts-recover-enter-phrase-title": "Ilagay ang seed phrase", + "mute": "Mute", + "my-accounts": "Ang aking accounts", + "my-accounts-empty": "Lilitaw dito ang iyong mga magagamit na account", + "my-profile": "Profile", + "my-status": "Ang status ko", + "name": "Pangalan", + "name-of-token": "Ang pangalan ng iyong token", + "name-optional": "Pangalan (opsyonal)", + "name-your-channel": "Pangalanan ang iyong channel", + "name-your-channel-placeholder": "Pangalan ng channel", + "name-your-community": "Pangalanan ang iyong pamayanan", + "name-your-community-placeholder": "Isang kapansin pansin na pangalan", + "need-help": "Kailangan ng tulong?", + "network": "Network", + "network-chain": "Network chain", + "network-details": "Mga detalye ng network", + "network-fee": "Bayad sa network", + "network-id": "Network ID", + "network-info": "Impormasyon sa network", + "network-invalid-network-id": "Ang tinukoy na id ng network ay hindi tumutugma sa id ng network ng RPC url", + "network-invalid-status-code": "Hindi wastong katayuan ng status:{{code}}", + "network-invalid-url": "Hindi wasto ang URL ng Network", + "network-settings": "Mga setting ng network", + "never": "Hindi kailanman", + "new": "bago", + "new-category": "Bagong kategorya", + "new-chat": "Bagong chat", + "new-community-title": "Bagong komunidad", + "new-contact": "Bagong kontak", + "new-contract": "Bagong Kontrata", + "new-favourite": "Bagong paborito", + "new-group": "Bagong grupo", + "new-group-chat": "Panibagong group chat", + "new-network": "Bagong network", + "new-password": "Bagong password", + "new-pin-description": "Ilagay ang baong 6-digit na passcode", + "new-public-group-chat": "Sumali sa pampublikong Chat", + "new-puk-description": "ilagay ang bagong 12-digit PUK", + "new-status": "Bagong Status", + "new-tab": "Bagong tab", + "next": "Sunod", + "nickname": "Palayaw", + "nickname-description": "Ang mga palayaw ay tinutulungan kang makilala ang iba sa Status. \n Ikaw lang ang makakakita ng mga palayaw na idinagdag mo", + "no": "Hindi", + "no-collectibles": "Walang magagamit na mga koleksyon", + "no-contacts": "Wala pang contact", + "no-keycard-applet-on-card": "Walang applet Keycard sa card", + "no-messages": "Walang mensahe", + "no-pairing-slots-available": "Ang kard na ito ay nakapares na sa 5 na aparato at hindi maaaring ipares sa isang ito. Mangyaring gumamit ng isa sa mga ipinares na aparato, mag-log in gamit ang card na ito at libre ang pagpapares ng mga puwang sa card", + "no-pinned-messages": "Walang mga naka-pin na mensahe", + "no-result": "walang resulta", + "no-thanks": "Salamat nalang", + "no-tokens-found": "Walang nahanap na mga token", + "node-address": "Address ng node", + "node-details": "Mga detalye ng node", + "node-info": "Node info", + "node-version": "Bersyon ng nod", + "nodes-disabled": "Hindi pinapagana ang Status nodes", + "non-archival-node": "Ang RPC endpoint ay hindi suportado ng archival request. Ang iyong lokal na kasaysayan ng paglilipat ay maaring hindi makumpleto.", + "non-contacts": "Wala pang contact", + "nonce": "Nonce", + "none": "Wala", + "normal": "Normal", + "not-applicable": "Hindi naaangkop para sa mga hindi naka -ignign na transaksyon", + "not-connected-nodes": "Hindi nakakonekta sa isang status node", + "not-connected-to-peers": "Hindi konektado sa anumang mga kapantay", + "not-enough-snt": "Hindi sapat ang iyong SNT", + "not-found": "Hindi mahanap", + "not-keycard-text": "Ang card na iyong ginamit ay hindi isang Keycard. Kailangan mong bumili ng isang Keycard upang magamit ito.", + "not-keycard-title": "Hindi isang Keycard", + "not-registered": "hindi rehistrado", + "notification-settings": "Mga Abiso", + "notifications": "Mga notification", + "notifications-non-contacts": "Mga notification mula sa mga hindi contact", + "notifications-preferences": "Mga kagustuhan sa abiso", + "notifications-servers": "Notification servers", + "notifications-switch": "Ipakita ang mga notification", + "notifications-transactions": "Mga transaksyon sa wallet", + "notify": "Ipaalam", + "now": "Ngayon", + "off": "Off", + "off-status-tree": "Off Status tree", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Paganahin ang Status node upang kumuha ng mga mensahe na ipinadala habang ang app ay sarado. Kapag pinagana, ang status node ay kukunin ang iyong IP address. Kapag hindi pinagana hindi ka makakatanggap ng mga mensahe kapag ang app ay sarado at hindi makikita ang mga ito kapag binuksan mo ang app sa paglaon.", + "offline-messaging-use-history-nodes": "Gumamit ng Status nodes", + "ok": "OK", + "ok-continue": "Okay, magpatuloy", + "ok-got-it": "Okay, nakuha ko", + "ok-save-pass": "OK, i-save ang password", + "okay": "Okay", + "on": "On", + "on-status-tree": "Sa Puno ng Status", + "once-enabled-share-metadata": "Kapag pinagana, ang mga link na nai-post sa chat ay maaaring ibahagi ang iyong metadata sa site", + "one-day": "Isang araw", + "one-month": "Isang buwan", + "one-week": "Isang linggo", + "open": "bukas", + "open-chat": "Buksan ang chat", + "open-dapp": "Buksan ang ÐApp", + "open-dapp-store": "Tuklasin ang ÐApps", + "open-home": "Buksan ...", + "open-in-new-tab": "Magbukas ng bagong tab", + "open-membership": "Bukas na miyembro", + "open-nfc-settings": "Buksan ang settings ng NFC", + "open-on-block-explorer": "Buksan ang block explorer", + "opening-buy-crypto": "Pagbubukas{{site}}", + "optimal": "pinakamainam", + "optional": "opsyonal", + "or": "O", + "outgoing": "Papalabas", + "outgoing-transaction": "Papalabas na transaksyon", + "page-camera-request-blocked": "hinarangan ang mga kahilingan sa camera. Upang paganahin ang mga kahilingan sa camera pumunta sa Mga Setting", + "page-would-like-to-use-camera": "nais mo bang gamitin ang iyong camera", + "pair": "I-Pares ang aparato", + "pair-card": "Ipares sa aparatong ito", + "pair-code": "Pair codePares ng code", + "pair-code-explanation": "Pagpapares card sa ibang aparato (hanggang sa 5) upang i-unlock ang mga key at mag-sign ng mga transaksyon sa parehong Keycard", + "pair-code-placeholder": "pares ng code", + "pair-this-card": "Ipares ang card na ito", + "pair-this-device": "Mag-advertise ng aparato", + "pair-this-device-description": "Ipares ang iyong mga aparato upang i-sync ang mga contact at chat sa pagitan nila", + "paired-devices": "Mga aparato na ipinares", + "pairing": "Pagpapares", + "pairing-card": "Pagpapares card", + "pairing-changed": "Ang pairing code ay napalitan na", + "pairing-code-placeholder": "Pairing code...", + "pairing-code_error1": "Ang iyong pairing code ay di tumutugma", + "pairing-go-to-installation": "Pumunta sa mga setting ng pagpapares", + "pairing-maximum-number-reached-content": "Mangyaring huwag paganahin ang isa sa iyong mga aparato bago paganahin ang bago.", + "pairing-maximum-number-reached-title": "Naabot ang maximum na bilang ng mga aparato", + "pairing-new-installation-detected-content": "Ang isang bagong aparato ay napansin.\nUpang magamit nang tama ang iyong mga aparato, mahalaga na ipares at paganahin ang mga ito bago gamitin.\nMangyaring pumunta sa seksyon ng aparato sa ilalim ng mga setting upang ipares ang iyong mga aparato.", + "pairing-new-installation-detected-title": "May nakitang bagong device\/aparato", + "pairing-no-info": "Walang impormasyon", + "pairing-please-set-a-name": "Mangyaring magtakda ng isang pangalan para sa iyong aparato.", + "passphrase": "Passphrase", + "password": "Password", + "password-description": "Ng hindi bababa sa 6 na mga character. Pinoprotektahan ng iyong password ang iyong mga susi. Kailangan mo ito upang i-unlock ang Status at lumipat.", + "password-mismatch": "Ang bagong password at kumpirmasyon ay hindi tugma", + "password-placeholder": "Password...", + "password-placeholder2": "Kumpirmahin ang iyong password", + "password-reset-in-progress": "Pagbago ng password", + "password-reset-success": "I-reset ang password", + "password-reset-success-message": "Kakailanganin mong mag-sign in muli", + "password_error1": "Hindi tumutugma ang mga password.", + "paste": "Paste", + "paste-json": "Idikit JSON", + "pay-to-chat": "Magbayad sa chat", + "peer-content": "Ang isang aparato na konektado sa Status chat network. Ang bawat gumagamit ay maaaring kumatawan sa isa o higit pang mga kapantay depende sa kanilang bilang ng mga aparato.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Peers", + "pending": "Naghihintay", + "pending-confirmation": "Pending na kumpirmasyon ...", + "pending-invitations": "Nakabinbin ang mga kahilingan sa pagiging miyembro", + "per-gas-price-limit": "Limitasyon sa presyo ng bawat gas", + "per-gas-tip-limit": "Limitasyon sa tip ng bawat gas", + "perform-backup": "Magsagawa ng backup", + "permissions": "Pahintulot", + "phone-e164": "International 1", + "photos": "Litrato", + "photos-access-error": "Upang bigyan ang kinakailangang pahintulot ng mga larawan, mangyaring pumunta sa mga setting ng iyong system at tiyakin na ang Status >Napiling mga larawan.", + "pin": "Pin", + "pin-changed": "Binago ang 6-digit na passcode", + "pin-code": "6-digit passcode", + "pin-limit-reached": "Naabot ang limitasyon ng pag-pin. I-unpin muna ang isang nakaraang mensahe.", + "pin-mismatch": "Maling passcode", + "pin-one-attempt": "isang pagtatangka", + "pin-one-attempt-blocked-after": "bago maharang ang iyong Keycard", + "pin-one-attempt-blocked-before": "Mag-ingat, mayroon ka lamang", + "pin-one-attempt-frozen-after": "bago mag-frozen ang iyong Keycard", + "pin-one-attempt-frozen-before": "Mag-ingat, mayroon ka lamang", + "pin-retries-left": "{{number}} natitirang mga pagtatangka", + "pinned-by": "Naka-pin ni", + "pinned-messages": "Naka-pin na mga mensahe", + "pinned-messages-count": { + "zero": "sero", + "one": "isa", + "two": "dalawa", + "few": "kaunti", + "many": "marami", + "other": "iba pa" + }, + "pinned-messages-empty": "Lilitaw dito ang mga naka-pin na mensahe. Upang mai-pin ang isang mensahe, pindutin nang matagal ito at i-tap ang 'I-pin`", + "powered-by-paraswap": "Pinapatakbo ng Paraswap", + "preference": "Kagustuhan", + "preview-privacy": "I-preview ang mode ng privacy", + "previewing-may-share-metadata": "Ang pag-preview ng mga link mula sa mga website na ito ay maaaring ibahagi ang iyong metadata sa kanilang mga may-ari", + "price-impact": "Epekto sa presyo", + "price-impact-desc": "Tinantyang epekto sa presyo para sa transaksyong ito. Kung ang kasalukuyang block base fee ay lumampas dito, ang iyong transaksyon ay isasama sa isang sumusunod na block na may mas mababang base fee.", + "principles": "Mga Prinsipyo", + "priority": "Priyoridad", + "privacy": "Pagkapribado", + "privacy-and-security": "Pagkapribado at seguridad", + "privacy-photos": "Pagkapribado ng Larawan sa Profile", + "privacy-policy": "Patakaran sa pagkapribado", + "privacy-show-to-warning": "Ang mga taong nakakita na ng iyong larawan sa profile ay magpapatuloy na gawin ito", + "private-key": "Pribadong key", + "private-notifications": "Pribadong mga abiso", + "private-notifications-descr": "Aabisuhan ka ng Status tungkol sa mga bagong mensahe. Maaari mong mai-edit ang iyong mga kagustuhan sa notification mamaya sa mga setting.", + "processing": "Sandali lang", + "product-information": "Impormasyon sa Produkto", + "profile": "Profile", + "profile-deleted-content": "Matagumpay na tinanggal ang iyong profile", + "profile-deleted-keycard": "Maaari mo na ngayong ibalik ang isa pang keypair sa iyong Keycard", + "profile-deleted-title": "Natanggal ang Profile", + "profile-details": "Mga detalye ng profile", + "profile-not-found": "Hindi mahanap ang profile", + "profile-pic-pick": "Pumili mula sa gallery", + "profile-pic-remove": "Alisin ang larawan", + "profile-pic-take": "Kunan ng litrato", + "profile-picture-updated": "Nai-update ang larawan sa profile", + "public-channel": "Pampublikong Channel", + "public-chat": "Pampublikong chat", + "public-chat-description": "Sumali sa mga pampublikong chat para sa iyong mga interest! Kahit sino ay maaaring magsimula ng bago.", + "public-chats": "Mga pampublikong chat", + "public-group-status": "Pampubliko", + "public-group-topic": "Paksa", + "public-key": "Public key", + "puk-and-pairing-codes-displayed": "Ipinapakita ang mga PUK at pagpapares ng mga code", + "puk-changed": "Napalitan na ang 12-digit PUK", + "puk-code": "PUK code", + "puk-code-explanation": "Kung nakalimutan mo ang iyong 6-digit na passcode o hindi tama nang ipinasok nang 3 beses, kakailanganin mo ang code na ito upang i-unlock ang iyong card.", + "puk-mismatch": "Mali ang PUK code", + "push-failed-transaction": "Nabigo ang iyong transaksyon", + "push-failed-transaction-body": "{{value}} {{currency}} hanggang {{to}}", + "push-inbound-transaction": "Nakatanggap ka ng {{value}} {{currency}}", + "push-inbound-transaction-body": "Mula sa {{from}} hanggang sa {{to}}", + "push-notifications-server-enabled": "Pinagana ang server", + "push-notifications-servers": "Push notification servers", + "push-outbound-transaction": "Nagpadala ka ng {{value}} {{currency}}", + "push-outbound-transaction-body": "Mula sa {{from}} hanggang sa {{to}}", + "quiet-days": "{{quiet-days}}araw", + "quiet-hours": "{{quiet-hours}}oras", + "re-encrypt-key": "I-encrypt muli ang iyong mga keys", + "rearrange-categories": "Ayusin muli ang Mga Kategorya", + "receive": "Tumanggap", + "receive-transaction": "Tumanggap ng transaksyon", + "recent": "Kamakailan", + "recent-empty": "Ang mga nagamit na addresses ay lalabas dito", + "recent-recipients": "Contacts", + "recently-used-stickers": "Ang mga kamakailang ginamit na sticker ay lilitaw dito", + "recipient": "Tagatanggap", + "recipient-code": "ilagay ang address ng tatanggap", + "recipient-code-placeholder": "0x.. o username.domain.eth", + "recover": "Bawiin", + "recover-key": "I-access ang umiiral na mga key", + "recover-keycard-multiaccount-not-supported": "Ang keys sa account na ito ay mayroon na at hindi na maaring idagdag muli. Kung nawala ang iyong password, passcode o Keycard, i-uninstall ang app, reinstall at i-access ang iyong key sa pamamagitan ng iyong seed phrase", + "recover-with-keycard": "I-recover gamit ang Keycard", + "recover-with-seed-phrase": "Bawiin gamit ang seed phrase", + "recovering-key": "Pag-access sa mga key ...", + "recovery-confirm-phrase": "kumpirmahin ang seed phrase", + "recovery-phrase": "Seed phrase", + "recovery-success-text": "Kailangan mong lumikha ng isang bagong code o password upang muling i-encrypt ang iyong mga key", + "recovery-typo-dialog-description": "Paalala, ang iyong seed phrase dapat eksaktong, parehong mga salita at pagkakasunud-sunod habang natanggap mo ito", + "recovery-typo-dialog-title": "ang seed phrase ay tama?", + "redeem-amount": "{{quantity}} makukuhang mga bonus", + "redeem-now": "Kunin ngayon", + "redeem-success": "Kunin ang tagumpay ng bonus!", + "reduced-tip": "ang priyoridad na tip ay babawasan", + "refresh": "Refresh", + "registered": "rehistrado", + "reject": "Tanggihan", + "reject-and-delete": "Tanggihan at tanggalin", + "remember-me": "Tandaan mo ako", + "remind-me-later": "Ipakita mo sa akin ito muli", + "remote-notifications": "Mga malalayong abiso", + "remote-notifications-subtitle": "Paganahin ang google push notifications\nMagdagdag ng Termino...", + "remove": "Alisin", + "remove-favourite": "Mag-alis ng paborito", + "remove-from-chat": "Alisin sa chat", + "remove-from-contacts": "Tanggalin sa mga kontak", + "remove-from-contacts-text": "Sa pamamagitan ng pag-alis ng isang user sa iyong listahan ng kontak hindi mo ma itago ang iyong wallet address sa kanila.", + "remove-group": "Alisin ang pangkat", + "remove-network": "Alisin ang network", + "remove-token": "Alisin ang token", + "removed": "alisin", + "repeat-pin": "Ulitin ang bagong 6-digit na passcode", + "repeat-puk": "Ulitin ang bagong 12-digit PUK", + "replying-to": "Tumugon kay {{author}}", + "report-bug-email-template": "1. Paglalarawan ng Isyu\n{{description}}\n\n\n2. Mga hakbang sa pagpaparami\n{{steps}}\n\n3. Maglakip ng mga screenshot na maaaring mag-demo ng problema, mangyaring", + "request-access": "Humiling ng pag-access", + "request-feature": "Humiling ng isang tampok", + "request-membership": "Humiling ng pagiging miyembro", + "request-pending": "Nakabinbin ang kahilingan…", + "request-transaction": "Humiling ng transaksyon", + "required-field": "Required field", + "resend-message": "I-resend", + "reset-card": "I-reset ang card", + "reset-card-description": "Ang operasyon na ito ay i-reset ang card sa paunang estado. Tatanggalin nito ang lahat ng data ng kard kasama ang mga pribadong key. Hindi maibabalik ang operasyon.", + "reset-database": "I-reset ang database", + "reset-database-warning": "Tanggalin ang mga chats, contacts at settings. Kinakailangan kapag nawala mo ang iyong password", + "reset-database-warning-keycard": "Burahin ang mga chat, contact at settings.", + "reset-password": "I-reset ang password", + "restore-defaults": "Ibalik sa dating ayos", + "retry": "Ulitin", + "revoke-access": "Bawiin ang access", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Kopya", + "rpc-usage-filter": "Mga pamamaraan sa pagsala", + "rpc-usage-get-stats": "Refresh", + "rpc-usage-info": "Mga istatistika ng paggamit ng RPC", + "rpc-usage-reset": "I-reset", + "safe-estimate": "Ligtas na pagtatantya", + "save": "I-save", + "save-password": "I-save ang password", + "save-password-unavailable": "Itakda ang passcode ng aparato upang i-save ang password", + "save-password-unavailable-android": "Hindi magagamit ang pag-save ng password: ang iyong aparato ay maaaring ma-root o walang kinakailangang mga tampok ng seguridad.", + "scan-qr": "I-scan ang QR code", + "scan-qr-code": "I-scan ang isang QR code na may isang address ng pitaka", + "scan-tokens": "I-scan ang tokens", + "search": "Paghahanap", + "search-no-chat-found": "Walang resulta. Ang ibig mong sabihin ay", + "secret-keys-confirmation-text": "Kakailanganin mo ang mga ito upang magpatuloy na gamitin ang iyong Keycard kung sakaling mawala mo ang iyong telepono.", + "secret-keys-confirmation-title": "Nasulat mo na ang mga codes?", + "security": "Seguridad", + "see-details": "Tignan ang detalye", + "see-it-again": "Tingnan muli", + "see-suggestions": "Tingnan ang mga mungkahi", + "seed-key-uid-mismatch": "Hindi tumutugma ang seed", + "seed-key-uid-mismatch-desc-1": "Ang seed phrase na ipinasok mo ay hindi tumutugma sa {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Upang maisagawa ang mga keys para sa account na ito, i-verify ang iyong seed phrase at subukang muli.", + "seed-phrase-content": "Isang hanay ng mga friendly-to-read na salita, at sapalarang napili mula sa BIP39 ay karaniwang listahan at ginagamit para ma access ang iyong Ethereum account sa iba pang wallets at devices. Tinukoy din bilang a “mnemonic phrase,” “recovery phrase” o “wallet backup” sa buong crypto ecosystem. Karamihan sa crypto apps ginagamit ang parehong standard to generate accounts.", + "seed-phrase-placeholder": "Seed phrase...", + "seed-phrase-title": "Seed Phrase", + "select": "Piliin", + "select-account": "Piliin ang account", + "select-account-dapp": "Piliin ang account na nais mong gamitin sa mga Dapp", + "select-account-first": "Piliin muna ang isang account", + "select-chat": "Piliin ang chat upang simulan ang pagmemensahe", + "select-new-location-for-keys": "Pumili ng isang bagong lokasyon upang i-save ang iyong (mga) pribadong keys", + "select-token-to-receive": "Pumili ng token na matatanggap", + "select-token-to-swap": "Pumili ng token na Ipapalit", + "selected": "Napili", + "send-logs": "I-report ang bug", + "send-logs-to": "Mag-ulat ng isang bug sa{{email}}", + "send-message": "Magpadala ng Mensahe", + "send-push-notifications": "Magpadala ng Mga Push Notification", + "send-push-notifications-description": "Kapag naka disabled, ang taong tumatanggap ng iyong mga mensahe ay hindi aabisuhan tungkol sa pagdating nito.", + "send-request": "Magpadala ng kahilingan", + "send-request-amount": "Halaga", + "send-request-amount-max-decimals": "Ang Max Number ng desimal ay{{asset-decimals}}", + "send-request-unknown-token": "Hindi kilalang token -{{asset}}", + "send-sending-to": "para kay{{recipient-name}}", + "send-transaction": "Magpadala ng transaksyon", + "sending": "Nagpapadala", + "sent-at": "Ipinadala sa", + "server": "Server", + "set-a-topic": "gumawa ng topic", + "set-currency": "Itakda ang pera", + "set-custom-fee": "Itakda ang pasadyang bayad", + "set-dapp-access-permissions": "Itakda ang mga pahintulot sa pag-access ng DApp", + "set-max": "Itakda ang max", + "settings": "Settings", + "share": "Ibahagi", + "share-address": "Share address", + "share-chat": "Ibahagi ang chat", + "share-contact-code": "Ibahagi ang aking susi sa chat", + "share-dapp-text": "Tingnan ang DApp na ginagamit ko sa Status:{{link}}", + "share-link": "Ibahagi ang Link", + "share-logs": "Ibahagi ang mga log", + "share-my-profile": "Ibahagi ang link sa profile", + "share-profile": "Ibahagi ang profile", + "share-profile-link": "Ibahagi ang link sa profile", + "share-public-chat-text": "Tingnan ang pampublikong chat na ito sa Status app:{{link}}", + "shared": "Ibinahagi", + "sharing-copied-to-clipboard": "Kinopya", + "sharing-copy-to-clipboard": "Kopya", + "sharing-data-desc-1": "Ang data ay napatunayan laban sa mga pampublikong panuntunan upang matiyak na walang sensitibong data na naipadala. Huwag magtiwala, i-verify.", + "sharing-data-desc-2": "Ang usage data ay ipinadala end-to-end na naka-encrypt sa peer-to-peer network ng Status", + "sharing-data-desc-3": "Sa halip na iyong regular na chat key, ginagamit ang isang solong key para magamit", + "sharing-data-desc-4": "Ang usage data ay hindi maaaring maiugnay sa iyong IP address", + "sharing-data-desc-5": "Ang Cumulative data ng lahat ng mga gumagamit ay magagamit pampubliko", + "sharing-data-desc-6": "Ang data ay tinanggal mula sa iyong telepono pagkatapos maipadala ang mga ito", + "sharing-share": "Ibahagi", + "show-less": "Magpakita ng mas kaunti", + "show-more": "Magpakita pa", + "show-notifications": "Ipakita ang mga notification", + "show-profile-pictures": "Tingnan ang mga larawan sa profile", + "show-profile-pictures-to": "Ipakita ang iyong larawan sa profile sa", + "show-qr": "Ipakita ang QR code", + "show-transaction-data": "Ipakita ang data ng transaksyon", + "sign-and-send": "Mag-sign at ipadala", + "sign-anyway": "Mag-sign pa rin", + "sign-in": "mag sign-in", + "sign-message": "Mag-sign Message", + "sign-out": "Mag-sign out", + "sign-request-failed": "Hindi ma-sign na mensahe", + "sign-with": "Mag-sign in", + "sign-with-password": "Mag-sign in gamit ang password", + "sign-you-in": "Nag-sign in ka ...", + "signing": "Pag-sign", + "signing-a-message": "Pag-sign ng isang mensahe", + "signing-phrase": "Pag sign ng phrase", + "skip": "Laktawan", + "slippage": "Slippage", + "slow": "Mabagal", + "something-went-wrong": "May nangyari na mali", + "soon": "Sa lalong madaling panahon", + "specify-address": "Tukuyin ang address", + "specify-name": "Tukuyin ang isang pangalan", + "specify-network-id": "Tukuyin ang id ng network", + "specify-rpc-url": "Tukuyin ang isang URL ng RPC", + "specify-server-public-key": "Ilagay ang server public key", + "specify-symbol": "Tukuyin ang simbolo", + "start-chat": "Simulan ang chat", + "start-conversation": "Simulan ang pag-uusap", + "start-group-chat": "Simulan ang group chat", + "start-new-chat": "Magsimula ng bagong chat", + "starter-pack-coming": "Darating sa inyo ang starter pack", + "starter-pack-coming-description": "Maaaring tumagal ng ilang minuto hanggang oras", + "starter-pack-received": "Natanggap ang Starter Pack", + "starter-pack-received-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "status": "Status", + "status-always-online": "Laging Online", + "status-automatic": "Awtomatiko", + "status-automatic-subtitle": "Awtomatikong itakda ang status", + "status-confirmed": "Nakumpirma", + "status-dnd": "Huwag abalahin", + "status-dnd-subtitle": "I-mute ang lahat ng notification", + "status-hardwallet": "Status hardwallet", + "status-inactive": "Hindi aktibo", + "status-inactive-subtitle": "Itinatago ang iyong online na status", + "status-is-open-source": "Ang Status ay bukas na mapagkukunan", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Ang Status ay may kaugaliang gumamit ng maraming data kapag nagsi-sync ng mga chat. Maaari mong piliing hindi mag-sync kapag nasa mobile network", + "status-not-sent-click": "Hindi kumpirmado. Mag-click para sa mga pagpipilian", + "status-not-sent-tap": "Hindi kumpirmado. I-tap para sa mga pagpipilian", + "status-pending": "Naghihintay", + "status-sent": "Ipinadala", + "status-tx-not-found": "Hindi nahanap ang TX", + "status-updates-descr": "Ang Status updates ay lalabas dito. Idagdag ang profile bilang isang contact upang makatanggap ng mga update sa iyong timeline.", + "statuses-descr": "Ibahagi kung ano ang nasa isip mo at manatiling nai-update sa iyong mga contact", + "statuses-my-status-descr": "Ibahagi kung ano ang nasa isip mo. Ang sinumang bumibisita sa iyong profile ay makakakita ng iyong kalagayan. Ang mga taong in-add ka bilang kanilang contact ay makakatanggap ng iyong mga update sa kanilang timeline", + "step-i-of-n": "gabay{{step}}sa{{number}}", + "sticker": "Sticker", + "sticker-market": "Sticker market", + "storage": "Imbakan", + "submit": "Ipasa", + "submit-bug": "Magsumite ng isang bug", + "success": "Tagumpay", + "suggested-min-tip": "iminungkahing minimum na tip", + "suggested-price-limit": "Iminumungkahing limitasyon sa presyo", + "swap": "magpalit", + "swap-details": "Magpalit ng mga detalye", + "switch-to-simple-interface": "Lumipat sa simpleng interface", + "symbol": "Simbolo", + "sync-all-devices": "Sync lahat ng aparato", + "sync-in-progress": "Syncing...", + "sync-settings": "Mga setting ng pag-sync", + "sync-synced": "Sa pag-sync", + "syncing-devices": "Syncing...", + "system": "System", + "tabs": "tabs", + "tag-was-lost": "nawala ang tag", + "tap-card-again": "Tapikin muli ang card sa likod ng iyong telepono", + "terms-of-service": "Mga Tuntunin ng Paggamit", + "test-networks": "Mga network ng pagsubok", + "text-input-disabled": "Mangyaring maghintay sandali ...", + "thank-you": "Salamat", + "this-device": "Ang aparato na ito", + "this-device-desc": "Ang iyong mga keys ay naka-encrypt at ligtas na nakaimbak sa iyong aparato", + "this-is-you-signing": "Ito ang iyong signing phrase", + "this-will-take-few-seconds": "Ito ay tatagal ng ilang segundo", + "three-days": "Tatlong araw", + "three-words-description": "Dapat mong makita ang mga 3 salita bago mag-sign sa bawat transaksyon", + "three-words-description-2": "Kung nakakita ka ng ibang kombinasyon, kanselahin ang transaksyon at mag-sign out", + "timeline": "Timeline", + "tip-cap": "Tip cap", + "to": "Para kay", + "to-block": "Block", + "to-enable-biometric": "Para paganahin{{bio-type-label}} kailangan mong i-save ang iyong password sa unlock screen", + "to-encrypt-enter-password": "Para ma encrypt ang account ilagay ang iyong password", + "to-see-this-message": "Upang makita ang mensaheng ito,", + "token": "Token", + "token-auto-validate-decimals-error": "Maling mga decimals para sa token {{symbol}} sa address {{address}} - itakda sa {{expected}} ngunit nakita bilang {{actual}}", + "token-auto-validate-name-error": "Maling pangalan para sa token {{symbol}} sa address {{address}} - itakda sa {{expected}} ngunit nakita bilang {{actual}}", + "token-auto-validate-symbol-error": "Maling simbolo para sa token{{symbol}}sa address{{address}}- itakda sa{{expected}}ngunit nakita bilang{{actual}}", + "token-details": "detalye ng token", + "topic-name-error": "Gumamit lamang ng mga maliliit na titik (a to z), numbero at dashes (-) Huwag gumamit ng chat keys", + "total-gas": "Kabuuang gas", + "transaction": "Transaksyon", + "transaction-data": "Data ng transaksyon", + "transaction-declined": "Hindi tinanggap ang transaksyon", + "transaction-description": "Isaalang-alang itong kumpleto pagkatapos ng 12 kumpirmasyon sa network.", + "transaction-details": "Mga detalye ng transaksyon", + "transaction-failed": "Nabigo ang transaksyon", + "transaction-fee": "Bayad sa transaksyon", + "transaction-history": "Kasaysayan ng Transaksyon", + "transaction-request": "Kahilingan sa Transaksyon", + "transaction-sent": "Ipinadala ang transaksyon", + "transaction-signed": "Ang transaksyon ay matagumpay na naka-sign", + "transactions": "Transaksyon", + "transactions-filter-select-all": "Piliin lahat", + "transactions-filter-title": "Filter ng kasaysayan", + "transactions-history": "Kasaysayan ng Transaksyon", + "transactions-history-empty": "Wala pang transaksyon sa iyong kasaysayan", + "transactions-history-loading": "Naglo-load ng kasaysayan ng transaksyon. Maaaring tumagal ito ng ilang sandali.", + "transactions-load-more": "Mag-load pa", + "transactions-management-enabled": "Pangangasiwa ng transaksyon", + "transactions-sign": "Sign", + "transfer-ma-unknown-error-desc-1": "Mukhang hindi tinanggal ang iyong multiaccount. Maaaring na-reset ang database", + "transfer-ma-unknown-error-desc-2": "Mangyaring suriin ang iyong listahan ng account at subukang muli. Kung ang account ay hindi nakalista pumunta sa Access existing keys upang mabawi gamit ang seed phrase", + "transfers-fetching-failure": "Hindi ma-update ang kasaysayan ng paglilipat. Suriin ang iyong koneksyon at hilahin pababa upang subukang muli", + "tribute-required-by-multiaccount": "{{multiaccount-name}}nangangailangan ng SNT para magsimula ng isang chat.", + "tribute-state-paid": "Bayad ang nai-ambag", + "tribute-state-pending": "Pending na tribute", + "tribute-state-required": "Nangangailangan{{snt-amount}}SNT tribute", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Magdagdag ng mga kaibigan bilang isang contact upang payagan ang mga chat nang walang bayad sa pagkilala.", + "tribute-to-talk-are-you-friends": "Magkaibigan ba kayo?", + "tribute-to-talk-ask-to-be-added": "Hilingin na maidagdag bilang isang contact", + "tribute-to-talk-contact-received-your-tribute": "natanggap ang iyong parangal. Maaari ka nang ligtas na makipag-chat sa bawat isa.", + "tribute-to-talk-desc": "I-monetize iyong pansin sa pamamagitan ng pag-uutos sa SNT para sa mga bagong tao upang magsimula ng isang chat", + "tribute-to-talk-disabled": "Ang Tribute to Talk ay di pinagana", + "tribute-to-talk-disabled-note": "Simula ngayon, ang mga baguhan ay maaaring magsimula ng isang chat sa iyo nang hindi nagpapadala ng SNT.", + "tribute-to-talk-enabled": "Pinapagana mo ang Tribute to Talk", + "tribute-to-talk-finish-desc": "Mula ngayon, makakatanggap ka lamang ng mga chat mula sa mga contact, at mga taong nagbayad", + "tribute-to-talk-learn-more-1": "Ang iyong oras at atensyon ay ang iyong pinakamahalagang pag-aari. Hinahayaan ka ng Tribute to Talk na magtakda ka ng isang halaga ng SNT na kinakailangan para sa mga bagong tao upang magsimula ng isang chat sa iyo.", + "tribute-to-talk-learn-more-2": "Ang sinumang wala sa iyong listahan ng contact ay hihilingin na bayaran, at maaari kang tumugon sa sandaling mayroon sila.", + "tribute-to-talk-learn-more-3": "Maaari mong palaging maibalik ang pera, ngunit upang matiyak na ang mga kaibigan ay maaaring maabot mo nang malayang, idagdag ang mga ito bilang isang contact muna.", + "tribute-to-talk-paywall-learn-more-1": "Ang aming oras at pansin ay ang aming pinakamahalagang pag-aari. Hinahayaan ka ng Tribute to Talk na makipag-ugnay sa mga bagong tao kapalit ng pagbabayad sa SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para magsimula ng isang chat sa isang taong may set ng pagkilala, bayaran lamang ang kinakailangang SNT at idadagdag ka bilang isang contact.", + "tribute-to-talk-paywall-learn-more-3": "Kung kilala mo ang mga ito, maaari mong ibahagi ang iyong profile sa labas ng Status na idaragdag nang libre.", + "tribute-to-talk-pending": "nakabinbing kumpirmasyon ng Tribute", + "tribute-to-talk-pending-note": "Tribute transaction ay nakabinbing kumpirmasyon sa network. Maaari mong suriin ito sa Status sa kasaysayan ng transaksyon", + "tribute-to-talk-removing-note": "Ang pag-alis ng Tribute to tak ay papayagan ang mga baguhan na magsimula ng isang chat nang hindi nagpapadala ng SNT. Nangangailangan ng isang transaksyon na gagawin.", + "tribute-to-talk-set-snt-amount": "Itakda ang halaga ng SNT na kinakailangan para sa mga bagong tao upang magsimula ng isang chat", + "tribute-to-talk-signing": "Naghihintay na mag-sign transaksyon", + "tribute-to-talk-transaction-failed-note": "Nabigo ang transaksyon at ang iyong mga setting ng Tribute to Talk ay hindi nabago", + "tribute-to-talk-tribute-received1": "Natanggap ang ambag. Ikaw at", + "tribute-to-talk-tribute-received2": "ngayon ay mga contact at maaaring ligtas na makipag-chat sa bawat isa.", + "tribute-to-talk-you-require-snt": "Kailangan mo ng SNT para sa mga bagong tao na magsimula ng isang chat.", + "try-again": "Subukan muli", + "try-keeping-the-card-still": "Subukang panatilihin pa rin ang card", + "turn-nfc-description": "NFC ay hindi pinagana sa iyong aparato. Maaari mo itong paganahin sa mga setting", + "turn-nfc-on": "I-on ang NFC upang magpatuloy", + "two-minutes": "dalawang minuto", + "tx-fail-description1": "Ang transaksyon na ito ay malamang na mabigo. Mag-sign sa iyong sariling panganib gamit ang pasadyang bayad sa network.", + "tx-fail-description2": "Ang transaksyon na ito ay malamang na mabigo. Magtakda ng isang pasadyang bayad sa network upang mag-sign sa iyong sariling peligro.", + "type": "Uri", + "type-a-message": "Mensahe", + "ulc-enabled": "Pinapagana ang ULC", + "unable-to-fetch": "Hindi makuha ang kasaysayan ng chat", + "unable-to-read-this-code": "Hindi mabasa ang code na ito", + "unable-to-send-messages": "Hindi makapadala at makatanggap ng mga mensahe", + "unblock": "I-unblock", + "unblock-contact": "I-unblock ang gumagamit na ito", + "unknown-status-go-error": "hindi kinikilala status-go error", + "unlimited": "Walang limitasyon", + "unlock": "I-unlock", + "unmute": "Unmute", + "unpair-card": "Ang kawalan ng pag-asa card", + "unpair-card-confirmation": "Ang operasyon na ito ay mawawalan ng pag-asa ang card mula sa kasalukuyang aparato. Nangangailangan ng pahintulot ng 6-digit na passcode. Gusto mo bang magpatuloy?", + "unpair-keycard": "Hindi pagpares ng keycard mula sa iyong telepono.", + "unpair-keycard-warning": "Ang iyong pairing code\/PUK at PIN ay mananatiling hindi nagbago", + "unpaired-keycard-text": "Ang Keycard na iyong tinapik ay hindi nauugnay sa teleponong ito", + "unpaired-keycard-title": "Mukhang hindi naipares ang iyong card", + "unpin": "I-unpin", + "update": "Update", + "update-to-listen-audio": "I-update sa pinakabagong bersyon upang makinig sa isang audio message dito!", + "update-to-see-image": "I-update sa pinakabagong bersyon upang makita ang isang magandang imahe dito!", + "update-to-see-sticker": "I-update sa pinakabagong bersyon upang makita ang isang magandang sticker dito!", + "updates-to-tos": "Mga Update sa Mga Tuntunin ng Serbisyo", + "updates-to-tos-desc": "Bago ka magpatuloy, mangyaring suriin ang Mga Tuntunin ng Serbisyo at kumpirmahing buong responsibilidad mo para sa kung paano mo ginagamit ang app.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Gamitin bilang larawan sa profile", + "use-valid-contact-code": "Mangyaring mag-enter o mag-scan ng isang wastong chat key o username", + "validation-amount-invalid-number": "Ang halaga ay hindi isang wastong numero", + "validation-amount-is-too-precise": "Masyadong tumpak ang halaga. Sobrang bilang ng mga decimals ay{{decimals}}", + "verified-community": "✓beripikadong komunidad", + "version": "Bersyon ng app", + "view": "Tingnan", + "view-cryptokitties": "Tingnan sa CryptoKitties", + "view-cryptostrikers": "Tingnan sa CryptoStrikers", + "view-data": "Tingnan ang data", + "view-details": "Tingnan ang mga detalye", + "view-etheremon": "Tingnan sa Etheremon", + "view-gitcoin": "Tingnan sa Gitcoin", + "view-on-opensea": "Tingnan sa OpenSea", + "view-profile": "Tingnan ang Profile", + "view-public-dashboard": "Tingnan ang pampublikong dashboard", + "view-rules": "Tingnan ang mga patakaran", + "view-signing": "Tingnan ang signing phrase", + "view-superrare": "Tingnan sa SuperRare", + "waiting-for-wifi": "Walang Wi-fi, hindi pinagana ang pag-sync ng mensahe.", + "waiting-for-wifi-change": "Mga settings", + "waiting-to-sign": "Naghihintay na mag-sign ng transaksyon ...", + "waiting-wi-fi": "Naghihintay para sa Wi-Fi…", + "waku-bloom-filter-mode": "Waku Bloom mode ng filter", + "wakuv2-change-nodes": "Sigurado ka bang nais mong baguhin ang mga node ng Wakuv2?", + "wakuv2-node-format": "\/ ip4 \/ {node-ip} \/ tcp \/ {port} \/ p2p \/ {id}", + "wakuv2-settings": "Settings sa Waku V2", + "wallet": "Pitaka", + "wallet-address": "Address ng Wallet", + "wallet-asset": "Asset", + "wallet-assets": "Assets", + "wallet-backup-recovery-title": "Back up mo ang seed phrase", + "wallet-choose-recipient": "Piliin ang Tumatanggap", + "wallet-collectibles": "Mga Kolektibo", + "wallet-connect": "Kumonekta sa Wallet", + "wallet-connect-2.0": "Magconnect sa Wallet 2.0", + "wallet-connect-app-connected": "ay konektado", + "wallet-connect-go-back": "Bumalik sa iyong browser o dapp", + "wallet-connect-proposal-description": "Sa pamamagitan ng pagkonekta pinapayagan mong si {{name}} makuha ang address ng iyong account at paganahin ang Web3", + "wallet-connect-proposal-title": "Gustong kumonekta sa iyong wallet", + "wallet-insufficient-funds": "Hindi sapat na pondo", + "wallet-insufficient-gas": "hindi sapat ang gas ng ETH mo", + "wallet-invalid-address": "Di-wastong address::\n{{data}}", + "wallet-invalid-address-checksum": "Error sa address:\n{{data}}", + "wallet-invalid-chain-id": "Hindi tumutugma ang network:\n{{data}}ngunit ang kasalukuyang chain ay{{chain}}", + "wallet-key-content": "Ang isang 64 character na hex address batay sa pamantayan ng Ethereum at nagsisimula sa 0x. na Humaharap sa publiko, ang iyong account address ay na maibahagi sa iba kung gusto mo matanggap ang pondo. Tinukoy din bilang isang \"Ethereum address\" o \"wallet address.\"", + "wallet-key-title": "Address ng account", + "wallet-manage-accounts": "Pamahalaan ang mga account", + "wallet-manage-app-connections": "Pamahalaan ang mga koneksyon sa app", + "wallet-manage-assets": "Pamahalaan ang mga assets", + "wallet-request": "Kahilingan", + "wallet-send": "Ipadala", + "wallet-send-min-units": "Min 21000 units", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Settings ng Pitaka", + "wallet-total-value": "Kabuuang halaga", + "wallet-transaction-total-fee": "Kabuuang Bayad", + "wants-to-access-profile": "nais na ma-access sa iyong profile", + "warning": "Warning", + "warning-message": "Paumanhin, nililimitahan namin ang pagpapadala ng maraming mga mensahe nang mabilis na magkakasunod upang maiwasan ang spam. Mangyaring subukang muli sa isang sandali", + "warning-sending-to-contract-descr": "Ang address na iyong pinasok ay isang smart contract, magpadala ng pondo sa address na ito ay pwedeng magresulta ng pagkawala ng mga pondo. Makipag-ugnay sa DApp, bukas ang DApp sa anumang Status DApp Browser.", + "watch-only": "panoorin lamang", + "wc-brand-guide": "Patnubay sa paggamit ng tatak tulad ng mga trademark at logo", + "wc-disclaimer": "Mga Disclaimer (kabilang ang mga third party provider), mga warranty, at ligal na paglabas", + "wc-dispute": "Mga probisyon sa paglutas ng hindi pagtatalo", + "wc-how-to-use-status-app": "Paano magagamit ang Status app kasama ang privacy at seguridad", + "wc-new-tos-based-on-principles-prefix": "Mga Bagong Tuntunin ng Serbisyo na dinisenyo batay sa aming", + "web-view-error": "Hindi ma-load ang pahina", + "websites": "Websites", + "webview-camera-permission-requests": "Mga kahilingan sa pahintulot sa Webview camera", + "webview-camera-permission-requests-subtitle": "Kapag pinagana, ang mga website at dapps ay maaaring hilingin na gamitin ang iyong camera", + "welcome-blank-community-message": "Lilitaw ang iyong mga komunidad dito.", + "welcome-blank-message": "Ang iyong mga chat ay lilitaw dito. Upang simulan ang mga bagong chat pindutin ang button ⊕", + "welcome-community-blank-message": "Lilitaw ang channel mo rito. Upang gumawa ng bagong channel, i-click ang ⊕ button at pillin ang \"Gumawa ng Channel\"", + "welcome-community-blank-message-edit-chats": "Lalabas dito ang iyong mga channel. Upang lumikha ng bagong channel, bumalik sa screen ng komunidad, mag-click sa ⊕ button at piliin ang \"Gumawa ng channel\"", + "welcome-screen-text": "I-set up ang iyong wallet, anyayahan ang mga kaibigan na mag-chat\nat mag-browse ng mga sikat na dapps!", + "welcome-to-status": "Maligayang pagdating sa Status!", + "welcome-to-status-description": "I-set up ang iyong crypto wallet, anyayahan ang mga kaibigan na mag-chat at mag-browse sa mga desentralisadong apps", + "what-changed": "Ano ang nagbago", + "what-is-shared": "Ano ang ibinabahagi", + "whats-on-your-mind": "Ano ang nasa isip mo…", + "word-count": "Bilang ng salita", + "word-n": "Word #{{number}}", + "word-n-description": "Upang masuri kung nai-back up ang iyong seed phrase ng tama, ilagay ang word#{{number}}sa itaas.", + "words-n": { + "zero": "", + "one": "Isang salita", + "two": "", + "few": "", + "many": "", + "other": "mga salita" + }, + "write-down-and-store-securely": "Isulat ang mga code\nat itago sila ng ligtas", + "wrong-address": "Maling address", + "wrong-card": "maling card", + "wrong-card-text": "Nag-tap ka ng isang kard na hindi tumutugma sa mga keys na iyong napili", + "wrong-contract": "Maling contract", + "wrong-keycard-text": "Ang Keycard na iyong tinapik ay hindi nauugnay sa teleponong ito", + "wrong-keycard-title": "Mukhang naka-tap ka ng\nisang maling keycard", + "wrong-password": "Maling password", + "wrong-word": "Maling salita", + "yes": "Oo", + "you": "ikaw", + "you-already-have-an-asset": "Mayroon ka nang isang asset na {{value}}", + "you-are-all-set": "Handa ka na!", + "you-are-all-set-description": "Kung mawala ang iyong telepono, maaari mo na ngayong ma-access ang iyong mga pondo at chat key gamit ang iyong seed phrase", + "you-can-change-account": "Maaari mong baguhin ang pangalan at kulay ng account sa nais mo", + "you-can-choose-preview-websites": "Maaari kang pumili kung alin sa mga sumusunod na website ang maaaring mag-preview ng link ng mga paglalarawan at larawan sa mga chat", + "you-can-fetch": "Maaari mong makuha ang kasaysayan ng chat", + "you-dont-have-contacts": "Wala ka pang mga contact.", + "you-dont-have-contacts-invite-friends": "Wala ka pang contact.\n Imbitahin ang iyong mga kaibigan na magsimulang mag-chat.", + "you-dont-have-stickers": "Wala ka pang sticker", + "you-will-need-this-code": "Kakailanganin mo ang code na ito upang buksan ang Status at mga transaksyon sa pag-sign", + "you-will-start-from-scratch": "Magsisimula ka mula sa simula ng isang bagong hanay", + "your-card-is-frozen": "Ang iyong Keycard ay naka frozen. I-reset ang card access", + "your-contact-code": "Pinapahintulutan ng pagbibigay ng pag-access ang DApp na makuha ang iyong susi sa chat", + "your-data-belongs-to-you": "Kung mawala mo ang iyong seed phrase mawawala mo rin, ang iyong data at pondo", + "your-data-belongs-to-you-description": "Kung nawalan ka ng pag-access, halimbawa sa pagkawala ng iyong telepono, maaari mo lamang ma-access ang iyong mga key gamit ang iyong seed phrase. Walang sinuman dapat nakaalam ng iyong seed phrase kung hindi ikaw lamang, kung mangyaring Isulat mo at Panatilihing ligtas", + "your-keys": "Ang iyong susi", + "your-price-limit": "Ang iyong limitasyon sa presyo", + "your-recovery-phrase": "Ang iyong seed phrase", + "your-recovery-phrase-description": "ito ang iyong seed phrase. Ginagamit mo ito upang patunayan na ito ang iyong pitaka. ikaw lamang makita ito nang isang beses! Isulat ito sa papel at itago ito sa isang ligtas na lugar. Kakailanganin mo ito kung nawala o muling i-install ang iyong pitaka.", + "your-tip-limit": "ang iyong tip limit", + "youre-on-mobile-network": "Ikaw ay nasa mobile network" +} diff --git a/translations/fr.json b/translations/fr.json new file mode 100644 index 00000000000..d7fdf6a45c0 --- /dev/null +++ b/translations/fr.json @@ -0,0 +1,1800 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "You": "Vous", + "about-app": "À propos", + "about-key-storage-content": "Status n'aura jamais accès à votre clé privée. Assurez-vous de sauvegarder votre phrase de récupération. Si vous perdez votre téléphone, c’est le seul moyen d’accéder à vos clés.", + "about-key-storage-title": "A propos du stockage des clés", + "about-names-content": "Personne ne peut prendre votre identité! Vous êtes anonyme par défaut et n'avez jamais à révéler votre vrai nom. Vous pouvez enregistrer un nom personnalisé à peu de frais.", + "about-names-title": "Les noms ne peuvent pas être modifiés", + "about-sharing-data": "À propos du partage de données", + "accept": "Accepter", + "accept-and-add": "Accepter et ajouter", + "accept-and-continue": "Accepter et continuer", + "accept-and-share-address": "Accepter et partager l'adresse", + "accept-community-rules": "J'accepte les règles de la communauté", + "accept-new-chats-from": "Accepter les conversations de", + "accept-status-tos-prefix": "J'accepte Status", + "access-existing-keys": "Récupérer des clés existantes", + "access-key": "Clé d'accès", + "account-added": "Compte ajouté", + "account-color": "Couleur du compte", + "account-content": "Vous pouvez comparer les comptes de Status à des comptes bancaires. Comme un compte bancaire, un compte a généralement une adresse et un solde; Vous utilisez ce compte pour effectuer des transactions avec Ethereum. Vous pouvez avoir plusieurs comptes dans votre portefeuille. Tous accessibles en déverrouillant le Status", + "account-exists-title": "Le compte existe déjà", + "account-is-used": "Ce compte est actuellement utilisé avec des applications décentralisées dans le navigateur.", + "account-name": "Nom du compte", + "account-settings": "Paramètres du compte", + "account-title": "Compte", + "accounts": "Comptes", + "actions": "Actions", + "active-members": "Membres actifs", + "active-online": "En ligne", + "active-unknown": "Inconnu", + "activity": "Activité", + "add": "Ajouter", + "add-a-watch-account": "Ajouter un compte de veille uniquement", + "add-account": "Ajouter un compte", + "add-account-description": "Vous pouvez importer tout type de compte Ethereum pour l'ajouter à votre portefeuille Status.", + "add-account-incorrect-password": "Le mot de passe semble être incorrect. Entrez le mot de passe que vous utilisez pour déverrouiller l'application.", + "add-an-account": "Ajouter un compte", + "add-bootnode": "Ajouter bootnode", + "add-contact": "Ajouter un contact", + "add-custom-token": "Ajouter un jeton personnalisé", + "add-favourite": "Ajouter un favori", + "add-mailserver": "Ajouter un nœud de Status", + "add-members": "Ajouter des membres", + "add-network": "Ajouter réseau", + "add-new-contact": "Ajouter un nouveau contact", + "add-nickname": "Ajouter un pseudo (facultatif)", + "add-node": "Ajouter un nœud", + "add-private-key-account": "Ajouter un compte à partir d'une clé privée", + "add-seed-account": "Ajouter un compte avec une phrase de récupération", + "add-text": "Ajouter du texte", + "add-to-contacts": "Ajouter aux contacts", + "add-to-contacts-text": "En ajoutant un utilisateur à votre liste de contacts, vous partagez l'adresse de votre portefeuille.", + "add-to-favourites": "Ajouter aux favoris", + "add-watch-account": "Ajouter un compte de veille uniquement", + "added": "ajouté", + "address": "Adresse", + "address-or-ens-name": "Adresse ou nom d'utilisateur ENS", + "address-received": "Adresse reçue", + "address-request-accepted": "Demande d'adresse acceptée", + "address-requested": "Adresse demandée", + "admin": "Admin", + "advanced": "Avancé", + "advanced-settings": "Réglages avancés", + "advertiser-description": "Vous avez découvert Status grâce à un partenaire. Acceptez-vous que Status vérifie votre adresse IP une seule fois afin d'être récompensé ? Ces informations ne seront utilisées pour rien d'autre et seront entièrement supprimées après 7 jours.", + "advertiser-starter-pack-accept": "Accepter", + "advertiser-starter-pack-decline": "Décliner", + "advertiser-starter-pack-description": "Voici quelques crypto pour démarrer ! Utilisez-les pour obtenir des autocollants, un nom ENS et essayer des dapps", + "advertiser-starter-pack-title": "Pack de démarrage", + "advertiser-title": "Paramètres de confidentialité par défaut", + "agree-by-continuing": "En continuant, vous acceptez \n notre", + "all": "Tout", + "all-connections": "Toutes les connexions", + "allow": "Autoriser", + "allow-and-send": "Autoriser et envoyer", + "allow-mention-notifications": "Afficher les mentions @", + "allowing-authorizes-this-dapp": "Autoriser cette DApp à récupérer votre adresse de portefeuille et à activer Web3", + "alphabetically": "Alphabétiquement", + "already-have-asset": "Vous avez déjà cet actif", + "amount": "Montant", + "and": "et", + "anyone": "Tout le monde", + "app-connections": "Connexions de l'appli", + "appearance": "Apparence", + "apply": "Appliquer", + "approve": "Approuver", + "are-you-sure": "Êtes-vous sûr?", + "are-you-sure-description": "Vous ne pourrez jamais plus voir toute la phrase de récupération", + "are-you-sure-to-cancel": "Êtes-vous sûr de vouloir annuler ?", + "are-you-sure?": "Êtes-vous sûr?", + "ask-in-status": "Poser une question ou signaler un bug", + "at": "à", + "attribution-received": "{{attrib}} sur {{max}} bonus reçus", + "audio": "Audio", + "audio-message": "Message audio", + "audio-recorder": "Enregistreur", + "audio-recorder-error": "Erreur d'enregistrement", + "audio-recorder-max-ms-reached": "Temps d’enregistrement maximal atteint", + "audio-recorder-permissions-error": "Vous devez donner l'autorisation d'envoyer des messages audio", + "authorize": "Autoriser", + "available": "Disponible", + "available-participants": { + "one": "Vous pouvez choisir un participant de plus", + "other": "Vous pouvez choisir {{count}} participants en plus" + }, + "back": "Retour", + "back-up": "Sauvegarder", + "back-up-seed-phrase": "Sauvegardez votre phrase de récupération", + "back-up-your-seed-phrase": "Sauvegardez votre phrase de récupération", + "backup-disabled": "Désactivé", + "backup-recovery-phrase": "Phrase de récupération de sauvegarde", + "bad-fees-description": "Vos frais de priorité sont inférieurs à ceux que nous conseillons.", + "balance": "Solde", + "begin-set-up": "Commencer l'installation", + "below-base-fee": "plafond des frais inférieur au prix de base", + "biometric-auth-android-sensor-desc": "Capteur tactile", + "biometric-auth-android-sensor-error-desc": "Échec", + "biometric-auth-android-title": "Authentification requise", + "biometric-auth-confirm-logout": "Reconnecter", + "biometric-auth-confirm-message": "L'authentification biométrique est nécessaire pour continuer, si ce n'est pas possible, veuillez vous reconnecter avec ton mot de passe de votre multicompte.", + "biometric-auth-confirm-title": "Vous devez vous authentifier!", + "biometric-auth-confirm-try-again": "Essayez à nouveau", + "biometric-auth-error": "Impossible d'effectuer l'authentification biométrique ( {{code}} )", + "biometric-auth-login-error-title": "Erreur d'authentification biométrique", + "biometric-auth-login-ios-fallback-label": "Entrer le mot de passe", + "biometric-auth-reason-login": "Se connecter à Status", + "biometric-auth-reason-verify": "Vérifier l'authentification", + "biometric-disable-bioauth": "désactiver {{bio-type-label}}", + "biometric-disable-password-description": "Si vous désactivez cette option, vous allez également", + "biometric-disable-password-title": "Désactiver l'enregistrement du mot de passe", + "biometric-enable": "Si vous ne souhaitez pas utiliser votre Keycard à chaque fois pour accéder à l'application, activez {{bio-type-label}}", + "biometric-enable-button": "Activer {{bio-type-label}}", + "biometric-enable-keycard": "Si vous ne souhaitez pas utiliser votre Keycard à chaque fois pour accéder à l'application, activez {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Empreinte digitale", + "biometric-secure-with": "Sécurisé avec {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "Mot de passe BIP39", + "biu": "Gras, italique et souligné (BIU)", + "blank-contacts-text": "Vos contacts apparaîtront ici", + "blank-keycard-text": "Vous pouvez continuer avec votre Keycard une fois que vous avez généré vos clés et votre nom.", + "blank-keycard-title": "On dirait que vous avez utilisé \nune Keycard vierge", + "blank-messages-text": "Vos messages seront ici", + "block": "Bloc", + "block-contact": "Bloquer le contact", + "block-contact-details": "Le blocage supprimera les messages précédents de cet utilisateur et empêchera les nouveaux de vous atteindre.", + "block-user": "Bloquer l'utilisateur", + "block-user?": "Bloquer l'utilisateur ?", + "blocked-users": "Utilisateurs bloqués", + "bold": "Gras", + "bootnode-address": "Adresse Bootnode", + "bootnode-details": "Détails du bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes activés", + "bootnodes-settings": "Paramètres Bootnodes", + "browsed-websites": "Les sites Web parcourus apparaîtront ici.", + "browser": "Navigateur", + "browser-not-secure": "La connexion n'est pas sécurisée ! Ne signez pas de transactions et n'envoyez pas de données personnelles sur ce site.", + "browser-secure": "La connexion est sécurisée. Assurez-vous de faire vraiment confiance à ce site avant de signer des transactions ou d'entrer des données personnelles.", + "browsers": "Navigateurs", + "browsing-cancel": "Annuler", + "browsing-open-in-android-web-browser": "Ouvrir dans Android", + "browsing-open-in-ios-web-browser": "Ouvrir dans iOS", + "browsing-open-in-status": "Ouvert dans Status", + "browsing-site-blocked-description1": "Nous avons détecté une activité malveillante potentielle à partir de cette adresse. Pour vous protéger et protéger votre portefeuille, nous empêchons toute navigation ultérieure. \n\n Si vous pensez que c'est une erreur, faites-le nous savoir dans le", + "browsing-site-blocked-description2": " chat public.", + "browsing-site-blocked-go-back": "Revenir en arrière", + "browsing-site-blocked-title": "Ce site est bloqué", + "browsing-title": "Parcourir", + "bug-report": "Signaler un bug", + "build-yourself": "Pour utiliser cette application sans accepter ces conditions d'utilisation, vous pouvez en développer votre propre version", + "buy-crypto": "Acheter de la crypto", + "buy-crypto-choose-a-service": "Utilisez le service de votre choix pour acheter de la crypto", + "buy-crypto-description": "Trouver une DApp pour acheter de la crypto", + "buy-crypto-leaving": "Vous quittez Status et accédez maintenant à un site tiers afin de finaliser votre achat", + "buy-crypto-title": "On dirait que votre portefeuille est vide", + "camera-access-error": "Pour accorder l'autorisation requise pour la caméra, accédez aux paramètres de votre système et assurez-vous que Status > Caméra est sélectionné.", + "can-not-add-yourself": "C'est vous, pour commencer un chat, choisissez quelqu'un d'autre", + "can-send-messages": "Vous pouvez envoyer et recevoir de nouveaux messages", + "cancel": "Annuler", + "cancel-keycard-setup": "Annuler la configuration de la Carte d'accès", + "cancelling": "Annulation", + "cannot-pin-desc": "Vous pouvez épingler un maximum de trois messages. Retirez au moins une épingle pour épingler un nouveau message.", + "cannot-pin-title": "Vous ne pouvez pas épingler ce message !", + "cannot-read-card": "Je ne peux pas lire la carte.\nTenez-la à l'arrière de votre téléphone.", + "cannot-use-default-pin": "Le code PIN 000000 n'est pas autorisé. \nVeuillez utiliser un autre numéro", + "cant-open-public-chat": "Impossible d'ouvrir le chat public", + "cant-report-bug": "Impossible de signaler un bogue", + "card-is-blank": "Cette carte est vierge", + "card-reseted": "La carte a été réinitialisée", + "card-unpaired": "La carte a été dissociée du périphérique actuel", + "category": "Catégorie", + "category-title": "Titre de la catégorie", + "change-fleet": "Changer la fleet en {{fleet}}", + "change-group-privacy": "Modifier la confidentialité du groupe", + "change-logging-enabled": "Êtes-vous sûr de vouloir {{enable}} vous connecter?", + "change-pairing": "Changer le code de couplage", + "change-pairing-description": "Changer le code de couplage n'affecte pas les appariements déjà effectués. Cependant, tout les nouveaux appariements nécessiteront le nouveau code.", + "change-pairing-title": "Choisir un nouveau code de couplage", + "change-passcode": "Changer le code d'accès", + "change-password": "Changer le mot de passe", + "change-pin": "Changer le code PIN", + "change-puk": "Changer le PUK à 12 chiffres", + "change-tip": "Changer la valeur du pourboire", + "changed-amount-warning": "Le montant a été changé de {{old}} à {{new}}", + "changed-asset-warning": "L'actif a été changé de {{old}} à {{new}}", + "chaos-mode": "Mode Chaos", + "chaos-unicorn-day": "Journée de la Licorne du Chaos", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Discuter et effectuer des transactions en privé avec vos amis.", + "chat-is-a-contact": "Contact", + "chat-is-not-a-contact": "Pas un contact", + "chat-key": "Code de contact", + "chat-key-content": "Les messages sur le protocole de conversation de Status sont envoyés et reçus à l'aide de clés de chiffrement. Le code de contact public est une chaîne de caractères que vous partagez avec les autres afin qu'ils puissent vous envoyer des messages dans Status.", + "chat-key-title": "Code de contact", + "chat-link-previews": "Aperçu des liens de chat", + "chat-name": "nom du chat", + "chat-name-content": "Trois mots aléatoires, dérivés algorithmiquement de votre code de contact et utilisés comme pseudonyme par défaut dans les discussions. Les noms de discussions sont complètement uniques; aucun autre utilisateur ne peut avoir les mêmes trois mots.", + "chat-name-title": "Nom de discussion", + "chat-notification-preferences": "Paramètres de notification", + "chat-settings": "Paramètres de Chat", + "chats": "Chats", + "check-on-opensea": "Vérifier sur OpenSea", + "check-your-recovery-phrase": "Vérifiez votre phrase de récupération", + "choose-actions": "Choisir des actions", + "choose-authentication-method": "Choisissez une méthode d'authentification pour protéger votre multicompte", + "choose-new-location-for-keystore": "Choisissez un nouvel emplacement pour enregistrer votre fichier de clés", + "choose-storage": "Choisissez le stockage", + "clear": "Effacer", + "clear-all": "Tout effacer", + "clear-history": "Effacer l'historique", + "clear-history-action": "Effacer", + "clear-history-confirmation": "Effacer l'historique?", + "clear-history-confirmation-content": "Êtes-vous sûr de vouloir effacer l'historique de ce chat ?", + "clear-history-title": "Effacer l'historique?", + "clear-history?": "Effacer l'historique ?", + "close": "Fermer", + "close-all": "Tout fermer", + "close-app-button": "Confirmer", + "close-app-content": "L'application va s'arrêter et se fermer. Lorsque vous le rouvrirez, le réseau sélectionné sera utilisé", + "close-app-title": "Avertissement!", + "collectibles-leak-metadata": "Vous pouvez exposer vos NFT ici. Si vous les faites, l'adresse de votre portefeuille et votre adresse IP seront également affichées.", + "command-button-send": "Envoyer", + "communities": "Communautés", + "communities-alpha": "Communautés (alpha)", + "communities-enabled": "Communautés activées", + "communities-verified": "✓ Communauté Status vérifiée", + "community": "Communauté", + "community-channel": "Chaîne communautaire", + "community-channel-read-requirements-met": "Les conditions requises \"afficher uniquement\" sont remplies", + "community-channel-read-requirements-not-met": "Les conditions requises pour \"afficher uniquement\" ne sont pas remplies", + "community-channel-write-requirements-met": "Les conditions d'affichage et de publication sont remplies", + "community-channel-write-requirements-not-met": "Les conditions d'affichage et de publication ne sont pas remplies", + "community-color": "Couleur de la communauté", + "community-color-placeholder": "Choisissez une couleur", + "community-edit-title": "Modifier la communauté", + "community-emoji-thumbnail-title": "Miniature", + "community-enter-channel-info": "Quand vous entrez dans la chaîne, le propriétaire du nœud pourra voir vos adresses publiques", + "community-image-pick": "Choisissez une image", + "community-image-remove": "Enlever", + "community-image-take": "Prenez une photo", + "community-info": "Informations de la communauté", + "community-info-not-found": "Informations de la communauté introuvable", + "community-invite-title": "Inviter", + "community-join-requirements-changed": "Les critères de jetons ont changé", + "community-join-requirements-met": "Les conditions d'adhésion sont remplies", + "community-join-requirements-not-met": "Les conditions d'adhésion ne sont pas remplies", + "community-join-requirements-tokens-lost": "Vous n'avez plus les jetons requis", + "community-key": "Clé privée de la communauté", + "community-key-placeholder": "Entrez la clé privée de votre communauté", + "community-link": "Lien de la communauté", + "community-members": { + "one": "{{count}} membre", + "other": "{{count}} membres" + }, + "community-members-title": "Membres", + "community-message-preview": "Invitation à rejoindre {{community-name}}", + "community-notification-settings": "Paramètres de notification", + "community-private-key": "Clé privée de la communauté", + "community-requests-to-join-title": "Demandes d'adhésion", + "community-roles": "Rôles", + "community-rules": "Règles communautaires", + "community-share-title": "Partager", + "community-thumbnail-image": "Vignette", + "community-thumbnail-upload": "Télécharger", + "complete-hardwallet-setup": "Cette carte est maintenant une partie essentielle de votre sécurité multi-compte. Les transactions ne peuvent pas être envoyées sans elle.", + "completed": "Terminé", + "confirm": "Confirmer", + "confirm-new-password": "Confirmer le nouveau mot de passe", + "confirm-pairing-code-placeholder": "Confirmez votre code de couplage...", + "confirm-password-placeholder": "Confirmer votre mot de passe", + "confirmation-request": "Demande de confirmation", + "confirmations": "Confirmations", + "confirmations-helper-text": "Lorsque la transaction a 12 confirmations, vous pouvez la considérer comme réglée.", + "connect": "Connecter", + "connect-mailserver-content": "Se connecter à {{name}} ?", + "connect-wallet": "Connecter le portefeuille", + "connected": "Connecté", + "connected-to": "Connecté à", + "connecting": "Connexion...", + "connecting-requires-login": "La connexion à un autre réseau nécessite une connexion", + "connection-status": "Statut de la connexion", + "connection-with-the-card-lost": "Connexion avec la carte\n a été perdu", + "connection-with-the-card-lost-setup-text": "Pour reprendre l'installation, maintenez la carte à l'arrière de votre téléphone et maintenez-la près du téléphone", + "connection-with-the-card-lost-text": "Pour continuer, maintenir la carte au dos de votre téléphone", + "contact-code": "Code de contact", + "contact-request-sent": "demande de contact envoyée", + "contact-requests": "Demandes de contact", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "contacts": "Contacts", + "contacts-descr": "Vos contacts s'afficheront ici. Vous recevrez des mises à jour de statut de la part de tous vos contacts", + "contacts-empty": "Les contacts avec des noms d'utilisateur ENS apparaîtront ici", + "continue": "Continuer", + "continue-anyway": "Continuer quand même", + "contract-address": "Adresse du contrat", + "contract-interaction": "Interaction contractuelle", + "copy-info": "Copier l'information", + "copy-qr": "Copier le code", + "copy-text": "Copier le texte", + "copy-to-clipboard": "Copie", + "copy-transaction-hash": "Copier l'ID de transaction", + "cost-fee": "Coût\/Frais", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Créer", + "create-a-pin": "Créer un code PIN à 6 chiffres", + "create-a-puk": "Créer le PUK à 12 chiffres", + "create-category": "Créer une catégorie", + "create-channel": "Créer une chaîne", + "create-channel-title": "Nouvelle chaîne", + "create-community": "Créer une communauté", + "create-group-chat": "Créer un chat de groupe", + "create-multiaccount": "Créer multicompte", + "create-new-key": "Générer une nouvelle clé", + "create-pin": "Créer un code PIN à chiffres", + "create-pin-description": "Vous aurez besoin de votre carte et de ce code PIN à 6 chiffres pour vous connecter et confirmer les transactions.", + "created-group-chat-description": "Vous avez créé le groupe {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Devise", + "currency-display-name-aed": "Dirham émirati", + "currency-display-name-afn": "Afghanistan Afghani", + "currency-display-name-ars": "Peso argentin", + "currency-display-name-aud": "Dollar australien", + "currency-display-name-bbd": "Dollar de la Barbade", + "currency-display-name-bdt": "Taka bangladais", + "currency-display-name-bgn": "Lev bulgare", + "currency-display-name-bhd": "Dinar bahreïni", + "currency-display-name-bnd": "Dollar de Brunéi Darussalam", + "currency-display-name-bob": "Bolíviano Bolivien", + "currency-display-name-brl": "Brésil Real", + "currency-display-name-btn": "Ngultrum bhoutanais", + "currency-display-name-cad": "Dollar canadien", + "currency-display-name-chf": "Franc Suisse", + "currency-display-name-clp": "peso chilien", + "currency-display-name-cny": "Yuan Renminbi Chinois", + "currency-display-name-cop": "Peso colombien", + "currency-display-name-crc": "Costa Rica Colon", + "currency-display-name-czk": "Couronne tchèque", + "currency-display-name-dkk": "Couronne danoise", + "currency-display-name-dop": "République Dominicaine Peso", + "currency-display-name-egp": "Livre égyptienne", + "currency-display-name-etb": "Birr éthiopien", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Livre sterling", + "currency-display-name-gel": "Lari Géorgien", + "currency-display-name-ghs": "Cedi du Ghana", + "currency-display-name-hkd": "Dollar de Hong Kong", + "currency-display-name-hrk": "Kuna Croate", + "currency-display-name-huf": "Hongrie Forint", + "currency-display-name-idr": "Roupie indonésienne", + "currency-display-name-ils": "Israël Shekel", + "currency-display-name-inr": "Roupie indienne", + "currency-display-name-isk": "Couronne islandaise", + "currency-display-name-jmd": "Dollar jamaïcain", + "currency-display-name-jpy": "Yen japonais", + "currency-display-name-kes": "Shilling Kenyan", + "currency-display-name-krw": "Corée (Sud) Won", + "currency-display-name-kwd": "Dinar Koweïtien", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Roupie du Sri Lanka", + "currency-display-name-mad": "Dirham Marocain", + "currency-display-name-mdl": "Leu moldave", + "currency-display-name-mur": "Roupie mauricienne", + "currency-display-name-mwk": "Kwacha malawien", + "currency-display-name-mxn": "Peso mexicain", + "currency-display-name-myr": "Ringgit De Malaisie", + "currency-display-name-mzn": "Mozambique Metical", + "currency-display-name-nad": "Dollar Namibien", + "currency-display-name-ngn": "Nigéria Naira", + "currency-display-name-nok": "Couronne norvégienne", + "currency-display-name-npr": "Roupie Du Népal", + "currency-display-name-nzd": "Dollar néo-zélandais", + "currency-display-name-omr": "Rial d'Oman", + "currency-display-name-pen": "Pérou Sol", + "currency-display-name-pgk": "Kina de Papouasie-Nouvelle-Guinée", + "currency-display-name-php": "Peso Philippines", + "currency-display-name-pkr": "Roupie pakistanaise", + "currency-display-name-pln": "Zloty polonais", + "currency-display-name-pyg": "Guarani Paraguayen", + "currency-display-name-qar": "Riyal Du Qatar", + "currency-display-name-ron": "Leu Roumain", + "currency-display-name-rsd": "Dinar Serbe", + "currency-display-name-rub": "Rouble russe", + "currency-display-name-sar": "Arabie Saoudite Riyal", + "currency-display-name-sek": "Couronne suédoise", + "currency-display-name-sgd": "Dollar de Singapour", + "currency-display-name-thb": "Baht thaïlandais", + "currency-display-name-try": "Lire turque", + "currency-display-name-ttd": "Dollar de Trinité-et-Tobago", + "currency-display-name-twd": "Taiwan Nouveau Dollar", + "currency-display-name-tzs": "Shilling tanzanien", + "currency-display-name-uah": "Hryvnia ukrainien", + "currency-display-name-ugx": "Shilling Ougandais", + "currency-display-name-usd": "Dollar des États-Unis", + "currency-display-name-uyu": "Peso uruguayen", + "currency-display-name-vef": "Bolívar Du Venezuela", + "currency-display-name-vnd": "Dong vietnamien", + "currency-display-name-zar": "Afrique du Sud Rand", + "current": "Actuel", + "current-average-tip": "Moyenne actuelle des pourboires", + "current-base-fee": "Tarif de base actuel", + "current-minimum-tip": "Pourboire minimum actuel", + "current-network": "Réseau actuel", + "current-password": "Mot de passe actuel", + "current-pin": "Entrez le code PIN à 6 chiffres", + "current-pin-description": "Entrez votre code PIN pour continuer", + "custom": "Personnalisé", + "custom-networks": "Réseaux personnalisés", + "custom-node": "Vous utilisez un paramètre RPC personnalisé. L'historique de vos transferts locaux est peut-être incomplet.", + "custom-seed-phrase": "Phrase de récupération non valide", + "custom-seed-phrase-text-1": "Cette phrase de récupération ne correspond pas à notre dictionnaire. Vérifiez les mots mal orthographiés.", + "cut": "Couper", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Accepter et Ouvrir", + "dapp-starter-pack-description": "Voici quelques crypto pour démarrer ! Utilisez-les pour obtenir des autocollants, un nom ENS et essayer des dapps", + "dapp-starter-pack-title": "Kit de départ", + "dapp-would-like-to-connect-wallet": "souhaite se connecter à votre portefeuille", + "dapps": "ÐApps", + "dapps-permissions": "Autorisations DApp", + "dark": "Foncé", + "data": "Données", + "data-collected": "Données collectées", + "data-collected-subtitle": "Le tableau ci-dessous montre les données exactes qui sont stockées et envoyées. Les données sont validées contre les règles publiques pour s'assurer qu'aucune donnée sensible ne soit envoyée. Ne faites pas confiance, vérifiez.", + "data-syncing": "Synchronisation des données", + "database-reset-content": "Discussions, contacts et paramètres ont été supprimés. Vous pouvez utiliser votre compte avec votre Keycard", + "database-reset-title": "Réinitialiser la base de données", + "database-reset-warning": "La base de données sera réinitialisée. Les discussions, les contacts et les paramètres seront supprimés", + "datetime-ago": "il y a", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "one": "jour", + "other": "jours" + }, + "datetime-day-short": { + "one": "j", + "other": "j" + }, + "datetime-hour": { + "one": "heure", + "other": "heures" + }, + "datetime-hour-short": { + "one": "h", + "other": "h" + }, + "datetime-minute": { + "one": "minute", + "other": "minutes" + }, + "datetime-minute-short": { + "one": "m", + "other": "m" + }, + "datetime-second": { + "one": "seconde", + "other": "secondes" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "aujourd'hui", + "datetime-yesterday": "Hier", + "decimals": "Décimales", + "decline": "Décliner", + "decryption-failed-content": "Une erreur s'est produite lors du décryptage de vos données. Vous devrez peut-être effacer vos anciennes données et générer un nouveau compte. Appuyez sur \"Appliquer\" pour effacer ou \"Annuler\" pour réessayer", + "default": "Défaut", + "default-assets": "ERC20 et ERC721 par défaut", + "default-sync-period": "Synchroniser l'historique de", + "delete": "Supprimer", + "delete-account": "Supprimer mon compte", + "delete-and-leave-group": "Supprimer et quitter le groupe", + "delete-bootnode": "Supprimer bootnode", + "delete-bootnode-are-you-sure": "Êtes-vous sûr de vouloir supprimer ce bootnode ?", + "delete-bootnode-title": "Supprimer bootnode", + "close-chat": "Supprimer le chat", + "close-chat-confirmation": "Êtes-vous sûr de vouloir supprimer ce chat?", + "delete-confirmation": "Supprimer?", + "delete-for-everyone": "Supprimer pour tous", + "delete-for-me": "Supprimer", + "delete-keys-keycard": "Supprimer les clés de la Keycard", + "delete-mailserver": "Supprimer le nœud de Status", + "delete-mailserver-are-you-sure": "Êtes-vous sûr de vouloir supprimer ce nœud de Status ?", + "delete-mailserver-title": "Supprimer le nœud de Status", + "delete-message": "Supprimer le message", + "delete-my-account": "Supprimer mon compte", + "delete-my-profile": "Supprimer mon profil", + "delete-network-confirmation": "Êtes-vous sûr de vouloir supprimer ce réseau ?", + "delete-network-error": "Veuillez vous connecter à un autre réseau avant de supprimer celui-ci.", + "delete-network-title": "Supprimer le réseau?", + "delete-node": "Supprimer le nœud", + "delete-node-are-you-sure": "Êtes-vous sûr de vouloir supprimer ce nœud ?", + "delete-node-title": "Supprimer le nœud", + "delete-profile": "Supprimer le profil", + "delete-profile-warning": "Avertissement : Si vous n’avez pas écrit votre phrase seed, vous perdrez l’accès à vos fonds après avoir supprimé votre profil", + "deny": "Refuser", + "derivation-path": "Chemin de dérivation", + "describe-channel": "Description du canal", + "description": "Description", + "dev-mode": "Mode de développement", + "dev-mode-settings": "Paramètres du mode de développement", + "device-syncing": "Synchronisation des appareils", + "devices": "Appareils", + "disable": "désactiver", + "disable-all": "Tout désactiver", + "disable-later-in-settings": "Vous pouvez désactiver cette fonction plus tard dans les paramètres", + "disabled": "Désactivé", + "disconnected": "Chat hors ligne", + "discover": "Découvrir", + "discover-communities": "Découvrez les communautés", + "dismiss": "Rejeter", + "display-collectibles": "Afficher les collectors", + "done": "Fait", + "dont-ask": "Ne plus demander", + "edit": "Modifier", + "edit-channel-title": "Modifier le canal", + "edit-chats": "Modifier les discussions", + "edit-community": "Modifier la communauté", + "edit-favourite": "Modifier le favori", + "edit-group": "Modifier le groupe", + "edit-message": "Modifier le message", + "edit-name-and-image": "Modifier le nom et l'image", + "edit-name-image": "Modifier le nom et l'image", + "edit-nickname": "Modifier le pseudo", + "edit-profile": "Modifier le profil", + "edited": "Modifié", + "editing-message": "Modification du message", + "empty-activity-center": "Les notifications de vos discussions apparaîtront ici", + "empty-chat-description": "Il n'y a pas de messages \ndans ce chat pour le moment", + "empty-chat-description-community": "C'est calme ici depuis {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Tous les messages que vous envoyez ici sont cryptés et ne peuvent être lus que par vous.", + "empty-chat-description-public": "Les dernières {{quiet-hours}} ont été calmes. Commencer la conversation ou", + "empty-chat-description-public-share-this": "partager ce chat.", + "empty-keycard-required": "Nécessite une Keycard vide", + "empty-pending-invitations-descr": "Les personnes souhaitant rejoindre le groupe avec un lien d'invitation apparaîtront ici", + "empty-tab": "Onglet vide", + "enable": "activer", + "enable-all": "Tout activer", + "enable-link-previews": "Activer l'aperçu des liens dans le chat ?", + "encrypt-with-password": "Crypter avec mot de passe", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Ajouter un nom d'utilisateur", + "ens-agree-to": "Accepter de", + "ens-chat-settings": "Paramètres de Chat", + "ens-custom-domain": "Domaine personnalisé", + "ens-custom-username-hints": "Tapez le nom d'utilisateur complet, y compris le domaine personnalisé comme nom d'utilisateur.domaine.eth.eth", + "ens-custom-username-taken": "Le nom d'utilisateur ne vous appartient pas :(", + "ens-deposit": "Dépôt", + "ens-dismiss-message": "Cliquez ici pour ignorer", + "ens-displayed-with": "Vos messages sont affichés aux autres avec", + "ens-get-name": "Obtenir un nom d'utilisateur universel", + "ens-got-it": "Ok, j'ai compris", + "ens-locked": "Nom d'utilisateur verrouillé. Vous ne pourrez pas le déverrouiller avant le {{date}}", + "ens-name-content": "Pseudonyme personnalisé pour votre code de contact que vous pouvez enregistrer à l'aide du service du service de nom Ethereum ENS. Les noms ENS sont des noms d'utilisateur décentralisés.", + "ens-name-not-found": "Impossible de résoudre le nom d'utilisateur ENS", + "ens-name-title": "Nom ENS", + "ens-network-restriction": "Disponible uniquement sur Mainnet", + "ens-no-usernames": "Vous n'avez aucun nom d'utilisateur connecté", + "ens-powered-by": "Propulsé par Ethereum Name Services", + "ens-primary-username": "Nom d'utilisateur principal", + "ens-register": "S'inscrire", + "ens-registration-failed": "Pour enregistrer le nom d'utilisateur, veuillez réessayer.", + "ens-registration-failed-title": "La transaction a échoué", + "ens-registration-failure": "L'enregistrement a échoué", + "ens-registration-in-progress": "Enregistrement en cours...", + "ens-release-username": "Nom d'utilisateur libre", + "ens-remove-hints": "La suppression séparera le nom d'utilisateur de votre clé.", + "ens-remove-username": "Supprimer le nom d'utilisateur", + "ens-saved": "est maintenant connecté avec votre code de contact et peut être utilisé sur Status.", + "ens-saved-title": "Nom d'utilisateur ajouté", + "ens-show-username": "Afficher mon nom d'utilisateur ENS dans les chats", + "ens-terms-header": "Conditions d'enregistrement des noms", + "ens-terms-point-1": "Les fonds sont déposés pendant 1 an. Votre SNT sera verrouillé, mais pas dépensé.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (registre ENS).", + "ens-terms-point-2": "Après 1 an, vous pouvez libérer le nom et récupérer votre dépôt, ou ne prendre aucune mesure pour garder le nom.", + "ens-terms-point-3": "Si les conditions du contrat changent - par exemple, si Status fait des mises à jour du contrat - l'utilisateur a le droit de libérer le nom d'utilisateur quelle que soit la durée du contrat.", + "ens-terms-point-4": "Le contrôleur des contrats ne peut pas accéder à vos fonds déposés. Ils ne peuvent être déplacés qu'à l'adresse qui les a envoyés.", + "ens-terms-point-5": "Votre (vos) adresse(s) sera (seront) publiquement associée(s) à votre nom ENS.", + "ens-terms-point-6": "Les noms d'utilisateurs sont créés en tant que nœuds de sous domaines de stateofus.eth et sont soumis aux conditions du contrat intelligent ENS.", + "ens-terms-point-7": "Vous autorisez le contrat à transférer SNT en votre nom. Cela ne peut se produire que lorsque vous approuvez une transaction pour autoriser le transfert.", + "ens-terms-point-8": "Ces conditions sont garanties par la logique contractuelle intelligente des adresses :", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Conditions d'enregistrement des noms.", + "ens-test-message": "Salut", + "ens-transaction-pending": "Transaction en cours.....", + "ens-understand": "Je comprends que l'adresse de mon portefeuille sera publiquement connectée à mon nom d'utilisateur.", + "ens-username": "Nom d'utilisateur ENS", + "ens-username-already-added": "Le nom d'utilisateur est maintenant connecté avec votre clé et peut être utilisé dans Status.", + "ens-username-available": "✓ Nom d'utilisateur disponible !", + "ens-username-connected": "Ce nom d'utilisateur vous appartient et est connecté à votre code de contact", + "ens-username-connected-continue": "Continuer à établir 'afficher mon nom d'utilisateur ENS dans les discussions'.", + "ens-username-connected-with-different-key": "Pour continuer, vous devrez effectuer une transaction pour connecter votre nom d'utilisateur à votre clé.", + "ens-username-connection-confirmation": "{{username}} sera connecté quand la transaction sera terminée.", + "ens-username-hints": "Au moins 4 caractères. Lettres latines, chiffres et minuscules seulement.", + "ens-username-invalid": "Lettres et chiffres uniquement", + "ens-username-owned": "✓ Le nom d'utilisateur vous appartient.", + "ens-username-owned-continue": "En continuant, vous connecterez ce nom d'utilisateur avec votre clé.", + "ens-username-registration-confirmation": "Joli! {{username}} vous appartient quand la transaction est terminée.", + "ens-username-taken": "Nom d'utilisateur déjà pris :(", + "ens-username-you-can-follow-progress": "Vous pouvez suivre l'évolution dans la section Historique des transactions de votre portefeuille.", + "ens-usernames": "Noms d'utilisateurs ENS", + "ens-usernames-details": "Enregistrer un nom d'utilisateur universel pour être facilement reconnu par les autres utilisateurs", + "ens-want-custom-domain": "Je possède un nom sur un autre domaine", + "ens-want-domain": "Je veux un domaine stateofus.eth", + "ens-welcome-hints": "Les noms ENS transforment ces adresses d'une longueur insensée en noms d'utilisateur uniques.", + "ens-welcome-point-customize": "Un nom ENS peut remplacer votre nom composé de trois mots aléatoires dans les conversations. Vous serez @votrenom plutôt que {{name}}.", + "ens-welcome-point-customize-title": "Choisissez votre pseudonyme", + "ens-welcome-point-receive": "D'autres utilisateurs peuvent vous envoyer des fonds en une étape simple.", + "ens-welcome-point-receive-title": "Recevez des transactions dans la discussion", + "ens-welcome-point-register": "Inscrivez-vous une fois pour garder le nom pour toujours. Après 1 an, vous pouvez libérer le nom et récupérer votre SNT.", + "ens-welcome-point-register-title": "10 SNT pour s'enregistrer", + "ens-welcome-point-simplify": "Vous pouvez recevoir des fonds grâce à votre nom ENS facile à partager plutôt qu'à votre hash hexadécimal (0x...).", + "ens-welcome-point-simplify-title": "Simplifiez votre adresse ETH", + "ens-welcome-point-verify": "Vous pouvez vérifier et ajouter tous les noms d'utilisateur que vous possédez au cours des prochaines étapes.", + "ens-welcome-point-verify-title": "Possédez-vous déjà un nom d'utilisateur ?", + "ens-your-username": "Votre nom d'utilisateur", + "ens-your-usernames": "Vos noms d'utilisateurs", + "ens-your-your-name": "Votre nom ENS", + "enter-12-words": "Entrez les 12 mots de votre phrase de récupération, séparés par un espace", + "enter-a-private-key": "Entrer une clé privée", + "enter-a-seed-phrase": "Entrer une phrase de récupération", + "enter-address": "Entrer l'adresse", + "enter-channel": "Entrer dans la chaîne", + "enter-contact-code": "ENS (vitalik94) ou clé de chat (0x04…)", + "enter-pair-code": "Entrez votre code d'authentification", + "enter-pair-code-description": "Le code de jumelage peut être défini à partir d'un client Status déjà jumelé.", + "enter-password": "Entrer le mot de passe", + "enter-password-migration-prompt": "Renseignez votre mot de passe pour transférer vos contacts, discussions et paramètres liés à vos clés", + "enter-pin": "Entrez le code PIN à 6 chiffres", + "enter-puk-code": "Entrez le code PUK", + "enter-puk-code-description": "Le code PIN a été bloqué. \nVeuillez entrer le code PUK pour débloquer le code PIN.", + "enter-recipient-address-or-username": "Entrer l'adresse ou le nom d'utilisateur du destinataire", + "enter-seed-phrase": "Entrez la phrase de récupération", + "enter-url": "Entrer l'URL", + "enter-user-pk": "Entrez la clé publique de l'utilisateur", + "enter-watch-account-address": "Scannez un QR code \n ou \n entrez l'adresse à regarder", + "enter-word": "Entrer le mot", + "enter-your-code": "Entrez votre code à 6 chiffres", + "enter-your-password": "Entrez votre mot de passe...", + "error": "Erreur", + "error-unable-to-get-balance": "Impossible d'obtenir le solde", + "error-unable-to-get-prices": "Erreur de conversion de devise. Actualisez votre écran pour réessayer.", + "error-unable-to-get-token-balance": "Impossible d'obtenir le solde du token", + "errors": "Erreurs", + "eth": "ETH", + "ethereum-address": "Adresse Ethereum", + "ethereum-node-started-incorrectly-description": "Le nœud Ethereum a été démarré avec une configuration incorrecte, l'application sera arrêtée pour récupérer de cette condition. Identifiant réseau configuré = {{network-id}} , actuel = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Le noeud Ethereum a mal démarré", + "etherscan-lookup": "Regarder sur Etherscan", + "everyone": "Tous", + "expand-all": "Développer tout", + "export-account": "Exporter le compte", + "export-key": "Exporter la clé privée", + "external-link": "Lien externe", + "external-storage-denied": "Accès non-autorisé au stockage externe", + "failed": "Échoué", + "faq": "Foire aux questions", + "fast": "Rapide", + "favourite": "Favoris", + "favourite-description": "Vos sites Web préférés apparaîtront ici", + "favourites": "Favoris", + "favourites-empty": "Les adresses ajoutées aux favoris apparaîtront ici", + "featured": "Présenté", + "fee-cap": "Plafond des frais", + "fee-explanation": "Prix global maximal pour la transaction. Si le tarif de base du bloc actuel sont supérieurs, la transaction sera incluse dans le bloc suivant avec un tarif de base inférieur.", + "fee-options": "Options de frais suggérées", + "fetch-community": "Rechercher la communauté", + "fetch-messages": "récupérer-les-messages", + "fetch-timeline": "Afficher", + "fetching-community": "À la recherche de la communauté...", + "find": "Trouver", + "finish": "Finir", + "finishing-card-setup": "Finition de la configuration de la carte", + "fleet": "Fleet", + "fleet-settings": "Paramètres de la fleet", + "follow": "Suivre", + "follow-your-interests": "Se lancer dans une conversation publique et rencontrez de nouvelles personnes", + "free": "↓ Gratuit", + "from": "De", + "gas-amount-limit": "Plafond de \"gas\"", + "gas-limit": "Limite de gaz", + "gas-price": "Prix du gaz", + "gas-used": "Gaz utilisé", + "gated": "Securisé", + "generate-a-key": "Générer une clé", + "generate-a-new-account": "Créez une nouvelle clé", + "generate-a-new-key": "Générer une nouvelle clé", + "generate-account": "Créez une clé", + "generate-an-account": "Générez un compte", + "generate-new-key": "Générer une nouvelle clé", + "generating-codes-for-pairing": "> Téléchargement du logiciel produit sur carte\n > Génération de codes de déverrouillage et de couplage", + "generating-keys": "Génération de clés ...", + "generating-mnemonic": "Génération d'une phrase de récupération", + "get-a-keycard": "Obtenez une Keycard", + "get-started": "Commencer", + "get-status-at": "Obtenir Status à http:\/\/status.im", + "get-stickers": "Obtenir des autocollants", + "gif": "GIF", + "give-a-short-description": "Donnez une brève description", + "give-a-short-description-community": "Donnez une brève description", + "give-permissions-camera": "Donner la permission \n pour accéder à la caméra", + "glossary": "Glossaire", + "go-to-settings": "Aller aux paramètres...", + "got-it": "J'ai compris", + "grant-face-id-permissions": "Pour accorder l'autorisation Face ID requise, accédez aux paramètres de votre système et assurez-vous que l'option Status > Face ID est sélectionnée.", + "group-chat": "Chat de groupe", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** a été nommé administrateur", + "group-chat-all-contacts-invited": "Tous vos contacts sont déjà dans le groupe", + "group-chat-created": "**{{member}}** a créé le groupe **{{name}}**", + "group-chat-decline-invitation": "Décliner l'invitation", + "group-chat-member-added": "**{{member}}** a été invité", + "group-chat-member-joined": "**{{member}}** a rejoint le groupe", + "group-chat-member-removed": "**{{member}}** a quitté le groupe", + "group-chat-members-count": "{{selected}} \/ {{max}} membres", + "group-chat-name-changed": "** {{member}} ** a changé le nom du groupe en ** {{name}} **", + "group-chat-no-contacts": "Vous n'avez pas encore de contacts.\nInvitez vos amis à commencer à chatter", + "group-details": "Détails du groupe", + "group-info": "Informations sur le groupe", + "group-invite": "Invitation au groupe", + "group-invite-link": "Lien d'invitation au groupe", + "group-membership-request": "Demande d'inscription au groupe", + "groups": "Groupes", + "gwei": "Gwei", + "has-permissions": "a la permission d'accéder", + "hash": "Hash", + "help": "aide", + "help-capitalized": "Aide", + "help-center": "Centre d'aide", + "help-improve-status": "Aider à améliorer Status", + "hide": "Masquer", + "hide-content-when-switching-apps": "Bloquer les captures d'écran", + "hide-content-when-switching-apps-ios": "Masquer l'aperçu", + "history": "Histoire", + "history-nodes": "Nœuds de Status", + "hold-card": "Tenir la carte à l'arrière\n de votre téléphone", + "home": "Accueil", + "hooks": "Crochets", + "how-it-works": "Comment ça marche", + "http-gateway-error": "Oups, la demande a échoué!", + "identifier": "Identifiant", + "identity-verification": "Vérification d'identité", + "identity-verification-request": "Vérification d'identité", + "identity-verification-request-sent": "demande", + "image": "Image", + "image-remove-current": "Supprimer la photo actuelle", + "image-source-gallery": "Sélectionnez à partir de la galerie", + "image-source-make-photo": "Capturer", + "image-source-title": "Modifier l'image", + "import": "Importer", + "import-community": "Importer une communauté", + "import-community-title": "Importer une communauté", + "in-contacts": "Dans les contacts", + "include": "Inclure", + "incoming": "Entrant", + "incoming-transaction": "Transaction entrante", + "incorrect-code": [ + "str", + "Désolé, le code était incorrect, veuillez le saisir à nouveau" + ], + "increase-gas": "Rajouter du gaz", + "initialization": "Initialisation", + "install": "Installer", + "intro-message1": "Bienvenue sur Status! \n Appuyez sur ce message pour définir votre mot de passe et commencer.", + "intro-privacy-policy-note1": "Status ne collecte, ne partage et ne vend aucune donnée personnelle. En continuant, vous acceptez la ", + "intro-privacy-policy-note2": "politique de respect de la vie privée", + "intro-text": "Status est votre porte d'entrée vers le web décentralisé", + "intro-text1": "Discutez sur un réseau peer-to-peer crypté, où vos messages ne peuvent être ni censurés ni piratés", + "intro-text2": "Envoyez et recevez des bien numériques partout dans le monde — sans compte bancaire requis", + "intro-text3": "Découvrez des jeux, des plateformes d'échanges et des réseaux sociaux où vous êtes seul propriétaire de vos données", + "intro-title1": "Communication privée et sécurisée", + "intro-title2": "Portefeuille crypto sécurisé", + "intro-title3": "Applications décentralisées", + "intro-wizard-text1": "Votre compte est contrôlé par une clé. Cette clé est stockée dans votre téléphone, vous seul y avez accès", + "intro-wizard-text2": "Une clé est utilisée pour discuter. Elle est liée à nom qui ne peut pas être modifié.", + "intro-wizard-text3": "Si vous possédez une Keycard, stockez-y vos clés pour une sécurité renforcée.", + "intro-wizard-text4": "Sécurisez et cryptez vos clés", + "intro-wizard-text6": "Facilitez la signature et l'envoi de transactions en activant la signature par empreinte digitale.", + "intro-wizard-title-alt4": "Créer un mot de passe", + "intro-wizard-title-alt5": "Confirmer votre mot de passe", + "intro-wizard-title1": "intro-assistant-titre1", + "intro-wizard-title2": "Choisissez un pseudo", + "intro-wizard-title3": "Sélectionnez où stocker les clés", + "intro-wizard-title4": "Créer un code à 6 chiffres", + "intro-wizard-title5": "Confirmer le code", + "intro-wizard-title6": "Activer les notifications", + "introduce-yourself": "Présentez-vous avec un message court", + "invalid-address-qr-code": "Le QR code scanné ne contient pas d'adresse valide", + "invalid-format": "Format invalide \nDoit être {{format}}", + "invalid-key-confirm": "Appliquer", + "invalid-key-content": "La base de données multi-comptes ne peut pas être cryptée car le fichier est corrompu. Il n'y a aucun moyen de le restaurer. Si vous appuyez sur le bouton \"Annuler\", rien ne se passera. Si vous appuyez sur le bouton \" {{erase-multiaccounts-data-button-text}} \", la base de données multi-comptes sera supprimée et vous pourrez déverrouiller plusieurs comptes. Toutes les données multi-comptes seront perdues.", + "invalid-number": "Numéro invalide", + "invalid-pairing-password": "Mot de passe d'appariement invalide", + "invalid-public-chat-topic": "Sujet de chat public non valide", + "invalid-range": "Format non valide, doit être compris entre {{min}} et {{max}}.", + "invalid-username-or-key": "Nom d'utilisateur ou discussion invalide", + "invite": "inviter", + "invite-button": "Inviter", + "invite-chat-accept": "Accepter", + "invite-chat-accept-join": "Accepter et rejoindre", + "invite-chat-intro": "Un ami vous a invité à rejoindre Status. Voici quelques crypto pour démarrer ! Utilisez-les pour enregistrer un nom ENS ou acheter un pack d'autocollants", + "invite-chat-name": "Référence d'ami", + "invite-chat-pending": "En attente", + "invite-chat-rule": "Accepter récompensera également votre ami avec un bonus de parrainage crypto", + "invite-chat-starter-pack": "Kit de départ", + "invite-contacts": "Inviter des personnes à partir de la liste de contacts", + "invite-friends": "Inviter des amis", + "invite-friends-to-status": "Inviter des amis à utiliser Status", + "invite-instruction-fifth": "Vous pouvez utiliser votre bonus de parrainage quand vous le souhaité", + "invite-instruction-first": "Vous envoyez un lien d'invitation unique à votre ami pour télécharger et rejoindre Status", + "invite-instruction-fourth": "Vous recevez votre bonus de référence et votre ami le Pack Starter", + "invite-instruction-second": "Votre ami télécharge Status et crée un compte (sur Android)", + "invite-instruction-third": "Un chat avec votre ami est lancé, où il confirme votre recommandation", + "invite-people": "Inviter des personnes", + "invite-people-from-contacts": "Inviter des personnes de la liste de contacts", + "invite-privacy-policy-public": "Vous avez installé Status avec un lien de parrainage. En rejoignant cette discussion, vous attribuez votre parrain et acceptez ", + "invite-privacy-policy1": "En acceptant que vous acceptiez le programme de référence", + "invite-privacy-policy2": "Conditions générales.", + "invite-public-chat-home": "Invitation par parrainage", + "invite-public-chat-intro": "Voici quelques crypto pour démarrer ! Utilisez-les pour obtenir des autocollants, un nom ENS et essayer des dapps", + "invite-receive-account": "Compte pour recevoir votre bonus de référence", + "invite-reward": "Gagnez du crypto pour chaque ami invité !", + "invite-reward-friend": "Ami:", + "invite-reward-friend-description": "Votre ami recevra un kit de départ composé de{{reward}} pour commencer", + "invite-reward-friend-name": "Kit de départ", + "invite-reward-you": "Toi", + "invite-reward-you-description": "Invitez un ami et recevez {{reward}} un bonus de référence en gage de notre gratitude. Utilisez-le pour obtenir des autocollants, un nom d'utilisateur ENS et essayer les Dapps", + "invite-reward-you-name": "Bonus de référence", + "invite-select-account": "Sélectionnez un compte pour recevoir votre bonus de référence", + "invite-warning": "Cette promotion est valide uniquement pour les utilisateurs d'un appareil Android ne résidant pas aux États-Unis. L'ami doit confirmer sa référence dans les 7 jours", + "invited": "invité", + "italic": "Italique", + "join": "Joindre", + "join-a-community": "ou rejoindre une communauté", + "join-group-chat": "Rejoindre le groupe", + "join-group-chat-description": "{{username}} vous a invité à rejoindre le groupe {{group-name}}", + "join-me": "Hey rejoignez-moi sur Status: {{url}}", + "join-new-private-chat": "Démarrer un nouveau chat privé", + "join-new-public-chat": "Rejoignez un chat public", + "join-open-community": "Rejoindre la communauté", + "joined": "Rejoint", + "joined-group-chat-description": "Vous avez rejoint {{group-name}} à l'invitation de {{username}}", + "key": "Clé", + "key-managment": "Gestion des clés", + "key-on-device": "La clé privée est enregistrée sur cet appareil", + "keycard": "Keycard", + "keycard-access-reset": "L'accès par Keycard est réinitialisé", + "keycard-applet-install-instructions": "Pour installer l'applet, suivez les instructions sur https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation.", + "keycard-awaiting-description": "Essayez de bouger la carte pour trouver le lecteur NFC sur votre appareil", + "keycard-awaiting-title": "Encore en train de rechercher", + "keycard-backup": "Créer une Keycard de sauvegarde", + "keycard-backup-success-body": "Carte de sauvegarde créée avec succès. Vous pouvez maintenant l'utiliser avec votre compte, tout comme la carte principale.", + "keycard-backup-success-title": "Sauvegarde réussie", + "keycard-blocked": "La Keycard a été bloquée. \nVous devez réinitialiser la carte pour continuer à l'utiliser.", + "keycard-can-use-with-new-passcode": "Vous pouvez utiliser cette carte avec votre nouveau code d’accès", + "keycard-cancel-setup-text": "Ceci annulera la configuration de la carte d'accès. Il est fortement recommandé de terminer l'installation afin d'utiliser la carte d'accès. Voulez-vous vraiment annuler ?", + "keycard-cancel-setup-title": "Opération dangereuse", + "keycard-connected-description": "Essayez de ne pas bouger la carte", + "keycard-connected-title": "Connecté", + "keycard-desc": "Vous possédez une Keycard ? Stockez vos clés dessus; vous en aurez besoin pour vos transactions", + "keycard-dont-ask-card": "Ne pas demander de carte pour se connecter", + "keycard-enter-new-passcode": "Entrez nouveau code d'accès {{step}}\/2", + "keycard-error-description": "Connectez à nouveau la carte pour continuer", + "keycard-error-title": "Connexion perdue", + "keycard-factory-reset": "Rétablir les paramètres usine de la carte", + "keycard-factory-reset-text": "Cette opération supprimera toutes les phrases mnémonique sur la carte. Vérifiez d'avoir une sauvegarde de la phrase mnémonique de cette carte", + "keycard-factory-reset-title": "Voulez-vous vraiment effectuer une réinitialisation d’usine ?", + "keycard-free-pairing-slots": "Keycard dispose {{n}} de ports de couplage gratuits", + "keycard-has-multiaccount-on-it": "Cette carte a déjà un multi-compte dessus. Si vous souhaitez la changer, connectez-vous d'abord et réinitialisez votre carte. Si vous souhaitez importer un multi-compte par carte d'accès, veuillez utiliser \"Ajouter un multi-compte existant\".", + "keycard-init-description": "Mettez la carte à l'arrière de votre téléphone pour continuer", + "keycard-init-title": "A la recherche de cartes...", + "keycard-is-blocked-details": "Vous ne pouvez plus utiliser cette carte pour accéder à ce compte ou le signer. Il y a eu trop de tentatives infructueuses de code d'accès et de PUK.", + "keycard-is-blocked-instructions": "Pour accéder à votre compte, réinstallez Status et utilisez une nouvelle Keycard, utilisez un autre portefeuille ou réinitialisez-la Keycard manuellement.", + "keycard-is-blocked-title": "Keycard est bloqué", + "keycard-is-frozen-details": "Afin de protéger vos avoirs, votre carte est bloquée. Réinitialisez votre carte pour la débloquer et pour effectuer des transactions. Vous pouvez utiliser votre PUK ou votre phrase mnémonique.", + "keycard-is-frozen-factory-reset": "Réinitialiser avec mnémonique", + "keycard-is-frozen-reset": "Réinitialiser l'accès à la carte avec le PUK", + "keycard-is-frozen-title": "Keycard est gelée", + "keycard-onboarding-finishing-header": "Presque terminé", + "keycard-onboarding-intro-header": "Stockez vos clés sur votre Keycard", + "keycard-onboarding-intro-text": "Soyez-prêt, cela va prendre quelques minutes, mais ceci est important pour sécuriser votre compte.", + "keycard-onboarding-mnemonic-text": "Vous aurez également besoin d'un morceau de papier et d'un crayon pour écrire votre phrase mnémonique.", + "keycard-onboarding-pairing-header": "Jumelage de la carte...", + "keycard-onboarding-pin-text": "Vous devrez créer un code à 6 chiffres qui sera utilisé pour protéger l'accès à votre Keycard.", + "keycard-onboarding-preparing-header": "Préparation de la carte...", + "keycard-onboarding-puk-code-header": "Écrivez les codes\n et les stocker en toute sécurité", + "keycard-onboarding-recovery-phrase-description": "Avec cette phrase de récupération, vous pouvez toujours récupérer votre clé. Notez la phrase de récupération. Gardez-la en sécurité, hors ligne et séparé de cet appareil.", + "keycard-onboarding-recovery-phrase-header": "Sauvegardez la phrase de récupération", + "keycard-onboarding-recovery-phrase-text": "Rien que pour vos yeux. C'est la phrase de récupération magique utilisée pour générer votre clé.", + "keycard-onboarding-start-header": "Tenez la carte au dos \n de votre téléphone pour commencer", + "keycard-onboarding-start-step1": "Créer un code d'accès", + "keycard-onboarding-start-step1-text": "Environ 1 minute. Créez un code à 6 chiffres pour crypter vos clés", + "keycard-onboarding-start-step2": "Notez le code PUK et le code de couplage", + "keycard-onboarding-start-step2-text": "Environ 1 minute. Vous allez avoir besoin d'un bout de papier et d'un crayon pour ça", + "keycard-onboarding-start-step3": "Sauvegardez la phrase de récupération", + "keycard-onboarding-start-step3-text": "Environ 1 minute. Aussi un morceau de papier et un crayon sont nécessaires", + "keycard-onboarding-start-text": "Et maintenez la carte au contact téléphonique \n pendant la configuration. L'installation prendra environ 4 minutes", + "keycard-processing-description": "Essayez de ne pas bouger la carte", + "keycard-processing-title": "Traitement en cours...", + "keycard-recover": "Carte perdu ou gelée ?", + "keycard-recover-text": "Si vous avez votre phrase mnémonique, vous pouvez créer une nouvelle Keycard associée à ce compte. Vous pouvez soit utiliser une nouvelle Keycard, ou réinitialiser une carte gelée.", + "keycard-recover-title": "Créer une nouvelle carte pour ce compte ?", + "keycard-recovery-intro-button-text": "Commencer la récupération", + "keycard-recovery-intro-header": "Récupérer une clé stockée sur une Keycard", + "keycard-recovery-intro-text": "Si vous avez précédemment généré une clé à l'aide d'une Keycard et que vous souhaitez à présent utiliser cette clé sur cet appareil", + "keycard-recovery-no-key-header": "Il n'y a rien à \n récupérer ici", + "keycard-recovery-no-key-text": "Votre Keycard n'a pas de clé stockée dessus. Pour l'utiliser, générez une nouvelle clé et choisissez votre Keycard pour stocker la clé.", + "keycard-recovery-phrase-confirm-header": "Confirmer la phrase de récupération", + "keycard-recovery-phrase-confirmation-text": "Attention, dernière chance ! Sans la phrase de récupération, vous ne pourrez accéder ni à votre clé, ni aux actifs qui lui sont associés si vous perdez votre appareil.", + "keycard-recovery-phrase-confirmation-title": "Vous avez écrit la phrase de récupération ?", + "keycard-recovery-success-header": "Votre clé a été récupérée avec succès", + "keycard-redeem-title": "Échangez contre", + "keycard-redeem-tx": "Remboursement des actifs", + "keycard-redeem-tx-desc": "Appuyez sur la carte pour signer et recevoir des actifs", + "keycard-reset-passcode": "Réinitialiser le code d’accès", + "keycard-success-description": "Vous pouvez maintenant retirer la carte", + "keycard-success-title": "Succès", + "keycard-unauthorized-operation": "Vous n'êtes pas autorisé à effectuer cette opération.\nS'il vous plaît rentrez une carte valide et essayer à nouveau.", + "keycard-upsell-subtitle": "Sécurité et fonctionnalité renforcées", + "language": "Langue", + "learn-more": "En savoir plus", + "learn-more-about-keycard": "En savoir plus sur la Keycard", + "leave": "Partir", + "leave-chat": "Quitter le chat", + "leave-chat-confirmation": "L'historique de vos conversations sera définitivement effacée de votre appareil. Vous ne pourrez plus les retrouver même si vous décidiez de vous réinscrire dans le futur.", + "leave-community": "Quitter la communauté", + "leave-community-message": "Nous serons tristes de vous voir partir, mais n'oubliez pas que vous pouvez revenir à tout moment !", + "leave-community?": "Quitter la communauté ?", + "leave-confirmation": "Quitter {{chat-name}}", + "leave-group": "Quitter le groupe", + "leave-group?": "Quitter le groupe ?", + "left": "gauche", + "les-ulc": "LES \/ ULC", + "lets-go": "Allons-y", + "lifestyle": "Mode de vie", + "light": "Clair", + "link-to-community": "Lien vers la communauté", + "linked-on": "Lié le {{date}}", + "load-messages-before": "avant le {{date}}", + "load-more-messages": "↓ Récupérer plus de messages", + "load-more-timeline": "Afficher plus", + "loading": "Chargement...", + "local-notifications": "Notifications locales", + "lock-app-with": "Verrouiller l'application avec", + "log-level": "Niveau de journal", + "log-level-settings": "Paramètres de niveau de journal", + "logging": "Connexion", + "logging-enabled": "Connexion activée?", + "login-pin-description": "Entrez votre code PIN à 6 chiffres pour vous connecter à votre multi-compte", + "logout": "Déconnecter", + "logout-app-content": "Le multi-compte sera déconnecté. Si vous vous reconnectez, le réseau sélectionné sera utilisé", + "logout-are-you-sure": "Êtes-vous sûr que vous voulez\npour vous déconnecter?", + "logout-key-management": "Vous devez vous déconnecter pour accéder à la gestion des clés.", + "logout-title": "Se déconnecter ?", + "looking-for-cards": "A la recherche de cartes...", + "lost-connection": "Connexion perdue", + "low-tip": "le pourboire est trop bas", + "lower-than-average-tip": "pourboire inférieur à la moyenne", + "mail-should-be-configured": "Le client e-mail doit être configuré", + "mailserver-address": "Adresse du nœud de Status", + "mailserver-automatic": "Sélection automatique", + "mailserver-automatic-switch-explanation": "Choisissez le nœud d'historique le plus rapide disponible", + "mailserver-connection-error": "Impossible de se connecter au nœud de Status", + "mailserver-content": "Un nœud dans le réseau Status qui dirige et stocke les messages pour une durée maximale de 30 jours.", + "mailserver-details": "Détails du nœud de Status", + "mailserver-error-content": "Le nœud de Status sélectionné n'a pas pu être joint.", + "mailserver-error-title": "Erreur de connexion au nœud de Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address} : {port}", + "mailserver-pick-another": "Choisir un autre nœud de Status", + "mailserver-reconnect": "Impossible de se connecter au nœud de Status. Appuyez pour vous reconnecter", + "mailserver-request-error-content": "L'erreur suivante a été renvoyée par le nœud de Status: {{error}}", + "mailserver-request-error-status": "Une erreur s'est produite lors de l'extraction de l'historique, vérifiez les journaux pour plus de détails.", + "mailserver-request-error-title": "Erreur de requête de serveur du nœud de Status", + "mailserver-request-retry": "Réessayer la demande", + "mailserver-retry": "Réessayer", + "mailserver-title": "Nœud de Status", + "main-currency": "Devise principale", + "main-networks": "Principaux réseaux", + "main-wallet": "Portefeuille principal", + "mainnet-network": "Réseau principal", + "make-admin": "Faire admin", + "make-moderator": "Attribuer le rôle de modérateur", + "manage-keys-and-storage": "Gérer les clés et le stockage", + "manage-members": "Gérer les membres", + "mark-all-read": "Marquer tout comme lu", + "mark-as-read": "Marquer comme lu", + "mark-untrustworthy": "Marquer comme non fiable", + "mark-user-untrustworthy": "Marquer {{username}} comme non fiable", + "master-account": "Compte principal", + "max-fee": "Frais maxima", + "max-priority-fee": "Frais de priorité maxima", + "maximum-fee": "Frais maxima", + "maybe-later": "Peut-être plus tard", + "member-ban": "Bannir le membre", + "member-kick": "Bannir le membre", + "members": { + "one": "1 membre", + "other": "{{count}} membres" + }, + "members-active": { + "one": "1 membre", + "other": "{{count}} membres" + }, + "members-active-none": "pas de membres", + "members-count": "{{count}} membres", + "members-label": "Membres", + "members-limit-reached": "Nombre maximum de membres atteint", + "members-title": "Membres", + "membership": "Adhésion", + "membership-approval": "Exiger une approbation", + "membership-approval-description": "L'adhésion à votre communauté est gratuite mais les nouveaux membres doivent d'abord être approuvés par le créateur de la communauté.", + "membership-button": "Conditions d'adhésion", + "membership-declined": "La demande d'inscription a été refusée", + "membership-description": "L'inscription au groupe doit être approuvée par l'administrateur du groupe", + "membership-ens": "Nécessite un nom d'utilisateur ENS", + "membership-ens-description": "Votre communauté nécessite un nom d'utilisateur ENS pour pouvoir y accéder", + "membership-free": "Sans conditions", + "membership-free-description": "Votre communauté est accessible à tous", + "membership-invite": "Exige l'invitation d'un autre membre", + "membership-invite-description": "Votre communauté ne peut être rejointe que sur invitation des membres de la communauté", + "membership-none": "Aucun", + "membership-none-placeholder": "Vous pouvez exiger que les nouveaux membres répondent à certains critères avant de pouvoir adhérer. Ces critères peuvent être modifiés à tout moment.", + "membership-request-denied": "Demande d'adhésion refusée", + "membership-request-pending": "Demande d'adhésion en cours", + "membership-requests": "Demandes d'adhésion", + "membership-title": "Conditions d'adhésion", + "mention": "Mentionner", + "mentions": "Mentions", + "message": "Message", + "message-deleted": "Message supprimé", + "message-deleted-for-you": "Message supprimé pour vous", + "message-not-sent": "Message non envoyé", + "message-options-cancel": "Annuler", + "message-reply": "Répondre", + "messages": "Messages", + "messages-from-contacts-only-subtitle": "Seulement vos contacts peuvent commencer une conversation avec vous ou vous inviter dans un groupe", + "messages-gap-warning": "Certains messages peuvent être manquants", + "might-break": "Peut casser quelques ÐApps", + "migration-successful": "Migration réussie", + "migration-successful-text": "Compte migré avec succès vers Keycard", + "migrations-failed-content": "{{message}}\nversion du schéma : initiale {{initial-version}}, actuelle {{current-version}}, dernière {{last-version}}\n\nUne erreur de base de données s’est produite. Vos fonds et votre clé de chat sont en sécurité. D’autres données, comme vos conversations et vos contacts, ne peuvent pas être restaurées. Le bouton « {{erase-multiaccounts-data-button-text}} » supprime toutes les autres données et vous permet d’accéder à vos fonds et d’envoyer des messages.", + "miners-higher-fee": "Il est plus probable que les mineurs fassent passer votre transaction en priorité si vous payez plus de frais.", + "mobile-network-ask-me": "Me demander quand sur le réseau mobile", + "mobile-network-continue-syncing": "Continuer de synchroniser", + "mobile-network-continue-syncing-details": "Vous pouvez aussi modifier cela dans les paramètres", + "mobile-network-go-to-settings": "Aller aux paramètres", + "mobile-network-settings": "Données mobiles", + "mobile-network-sheet-configure": "Vous pouvez configurer la synchronisation\nplus précisément dans", + "mobile-network-sheet-offline": "Pas de Wi-fi, la synchronisation des messages est désactivée.", + "mobile-network-sheet-offline-details": "La synchronisation via le réseau mobile est désactivée", + "mobile-network-sheet-remember-choice": "Mémoriser mon choix", + "mobile-network-sheet-settings": "réglages", + "mobile-network-start-syncing": "Lancer la synchronisation", + "mobile-network-stop-syncing": "Arrêter la synchronisation", + "mobile-network-stop-syncing-details": "Jusqu'à ce que vous soyez en Wi-Fi ?", + "mobile-network-use-mobile": "Utiliser les données mobiles", + "mobile-network-use-mobile-data": "Status utilise beaucoup de données lors de la synchronisation des discussions et du portefeuille.", + "mobile-network-use-wifi": "Wi-Fi uniquement", + "mobile-syncing-sheet-details": "Status utilise beaucoup de données lors de la synchronisation des discussions et du portefeuille", + "mobile-syncing-sheet-title": "Synchroniser en utilisant les données mobiles ?", + "more": "plus", + "move-and-reset": "Déplacer et réinitialiser", + "move-keystore-file": "Déplacer le fichier de clés", + "move-keystore-file-to-keycard": "Déplacer le fichier de clés vers la Keycard ?", + "multiaccount-exists-content": "Ce multi-compte existe déjà. Si vous avez perdu votre mot de passe, votre code ou votre Keycard vous devez juste le déverrouiller.", + "multiaccount-exists-title": "Le multi-compte existe déjà", + "multiaccounts-recover-enter-phrase-text": "Entrez 12, 15, 18, 21 ou 24 mots. \nSéparez les mots par un seul espace.", + "multiaccounts-recover-enter-phrase-title": "Entrez votre phrase de récupération", + "music": "Musique", + "mutal-contacts": "Contacts mutuels", + "mute": "mode silencieux", + "mute-chat": "Masquer le chat", + "mute-community": "Masquer la communauté", + "mute-group": "Masquer le groupe", + "my-accounts": "Mes comptes", + "my-accounts-empty": "Vos comptes disponibles apparaîtront ici", + "my-profile": "Mon profil", + "my-status": "Mon statut", + "n-photos": "{{count}} photos", + "name": "Nom", + "name-of-token": "Le nom de votre jeton", + "name-optional": "Nom (optionnel)", + "name-your-channel": "Nommez votre chaîne", + "name-your-channel-placeholder": "Nom du réseau", + "name-your-community": "Nommez votre communauté", + "name-your-community-placeholder": "Un nom accrocheur", + "need-help": "Besoin d'aide ?", + "network": "Réseau", + "network-chain": "Chaîne de réseau", + "network-details": "Détails du réseau", + "network-fee": "Frais de réseau", + "network-id": "ID réseau", + "network-info": "Informations sur le réseau", + "network-invalid-network-id": "L'identifiant réseau spécifié ne correspond pas à l'identifiant réseau par l'url RPC", + "network-invalid-status-code": "Code status non valide: {{code}}", + "network-invalid-url": "L'URL du réseau est invalide", + "network-settings": "Paramètres réseau", + "new": "Nouveau", + "new-category": "Nouvelle catégorie", + "new-chat": "Nouveau chat", + "new-community-title": "Nouvelle communauté", + "new-contact": "Nouveau contact", + "new-contract": "Nouveau contrat", + "new-favourite": "Nouveau favori", + "new-group": "Nouveau groupe", + "new-group-chat": "Nouveau chat de groupe", + "new-messages-header": "Nouveaux messages", + "new-network": "Nouveau réseau", + "new-password": "Nouveau mot de passe", + "new-pin-description": "Entrez le nouveau code PIN à 6 chiffres", + "new-public-group-chat": "Rejoindre le chat public", + "new-puk-description": "Entrez le nouveau PUK à 12 chiffres", + "new-status": "Nouveau statut", + "new-tab": "Nouvel onglet", + "next": "Suivant", + "nickname": "Pseudo", + "nickname-description": "Les pseudos aident à identifier les autres membres dans Status. Vous êtes le seul à seul voir vos pseudos", + "no": "Non", + "no-collectibles": "Aucun collector disponible", + "no-contacts": "Pas encore de contacts", + "no-keycard-applet-on-card": "Pas d'applet Keycard sur la carte", + "no-messages": "Pas de messages", + "no-pairing-slots-available": "Cette carte est déjà couplée à 5 appareils et ne peut pas être couplée à celui-ci. Veuillez utiliser l'un des appareils jumelés, vous connecter avec cette carte et libérer des fentes de couplage sur la carte.", + "no-pinned-messages": "Aucun message épinglé", + "no-pinned-messages-community-desc": "Cette chaîne ne contient aucun message épinglé.", + "no-pinned-messages-desc": "Ce chat ne contient aucun message épinglé.", + "no-result": "Aucun résultat", + "no-thanks": "Non merci", + "no-tokens-found": "Aucun jeton trouvé", + "node-address": "Adresse du nœud", + "node-details": "Détails du nœud", + "node-info": "Informations sur les nœuds", + "node-version": "Version nœud", + "nodes-disabled": "Nœuds de Status désactivés", + "non-archival-node": "Le paramètre RPC ne prend pas en charge les demandes d'archivage. L'historique de vos transferts locaux est peut-être incomplet.", + "non-contacts": "Non contacts", + "nonce": "Nonce", + "none": "aucun", + "normal": "Normal", + "not-applicable": "Non applicable pour les transactions non signées", + "not-connected-nodes": "Le nœud de Status n'est pas connecté", + "not-connected-to-peers": "Pas de connexion à des pairs", + "not-enough-snt": "Pas assez SNT", + "not-found": "Introuvable", + "not-keycard-text": "La carte que vous avez utilisée n'est pas une Keycard. Vous devez acheter une Keycard pour l'utiliser", + "not-keycard-title": "Pas une Keycard", + "not-registered": "pas inscrit", + "notification-settings": "Notifications", + "notifications": "Notifications", + "notifications-non-contacts": "Notifications hors contacts", + "notifications-preferences": "Préférences de notification", + "notifications-servers": "Serveurs de notification", + "notifications-switch": "Afficher les notifications", + "notifications-transactions": "Transactions dans le portefeuille", + "notify": "Notifier", + "now": "Maintenant", + "off": "Désactivé", + "off-status-tree": "Arbre Status désactivé", + "offline": "Hors ligne", + "offline-messaging-use-history-explanation": "Activez les nœuds d'historique pour récupérer les messages envoyés quand l'application était fermée. Lorsqu'il est activé, un nœud d'historique obtient votre adresse IP. Lorsqu'il est désactivé, vous ne recevrez pas de messages si l'application est fermée et vous ne les verrez pas lors de l'ouverture ultérieure de l'application.", + "offline-messaging-use-history-nodes": "Utiliser les nœuds d'historique", + "ok": "OK", + "ok-continue": "D'accord, continuez", + "ok-got-it": "OK, j'ai compris", + "ok-save-pass": "OK, enregistrer le mot de passe", + "okay": "D'accord", + "on": "Sur", + "on-status-tree": "Sur l'arbre Status", + "once-enabled-share-metadata": "Une fois activés, les liens publiés dans le chat peuvent partager vos métadonnées avec le site", + "one-day": "Un jour", + "one-month": "Un mois", + "one-week": "Une semaine", + "online": "En ligne", + "only-mentions": "Uniquement les @mentions", + "open": "Ouvrir", + "open-chat": "Ouvrir le chat", + "open-dapp": "Ouvrir ÐApp", + "open-dapp-store": "Découvrir les ÐApps", + "open-home": "Ouvrir...", + "open-in-new-tab": "Ouvrir dans un nouvel onglet", + "open-membership": "Participation ouverte", + "open-nfc-settings": "Ouvrir les paramètres NFC", + "opened": "Ouvert", + "opening-buy-crypto": "Ouverture de {{site}} ...", + "optimal": "Optimal", + "optional": "optionnel", + "or": "ou", + "outgoing": "Sortant", + "outgoing-transaction": "Transaction sortante", + "owner": "Propriétaire", + "page-camera-request-blocked": "Demandes d'utilisation de la caméra bloquées. Pour activer les demandes, allez aux Paramètres", + "page-would-like-to-use-camera": "souhaite utiliser votre caméra", + "pair": "Coupler les appareils", + "pair-card": "Coupler à cet appareil", + "pair-code": "Code de couplage", + "pair-code-explanation": "Couplez la Keycard avez différents appareils (jusqu'à 5) afin de déverrouiller et signer des transactions avec la même Keycard", + "pair-code-placeholder": "Code de paire ...", + "pair-this-card": "Associez cette carte", + "pair-this-device": "Publicité de l'appareil", + "pair-this-device-description": "Jumelez vos appareils pour synchroniser les contacts et les conversations entre eux.", + "paired-devices": "Appareils jumelés", + "pairing": "Jumelage", + "pairing-card": "Carte de couplage", + "pairing-changed": "Le code de couplage a été modifié", + "pairing-code-placeholder": "Code de couplage...", + "pairing-code_error1": "Les codes de couplage ne correspondent pas.", + "pairing-go-to-installation": "Aller aux paramètres de couplage", + "pairing-maximum-number-reached-content": "Veuillez désactiver l'un de vos appareils avant d'en activer un nouveau.", + "pairing-maximum-number-reached-title": "Nombre maximum d'appareils atteints", + "pairing-new-installation-detected-content": "Un nouveau périphérique a été détecté. \nPour utiliser vos appareils correctement, il est important de les coupler et de les activer avant de les utiliser. \nVeuillez vous rendre dans la section des appareils sous Paramètres pour coupler vos appareils.", + "pairing-new-installation-detected-title": "Nouvel appareil détecté", + "pairing-no-info": "Pas d'infos", + "pairing-please-set-a-name": "Veuillez définir un nom pour votre appareil.", + "passphrase": "Passphrase", + "password": "Mot de passe", + "password-description": "Au moins 6 caractères. Vous aurez besoin de ce mot de passe pour ouvrir Status et confirmer les transactions.", + "password-mismatch": "Le nouveau mot de passe et la confirmation ne correspondent pas", + "password-placeholder": "Mot de passe", + "password-placeholder2": "Confirmer votre mot de passe", + "password-reset-in-progress": "Modification du mot de passe...", + "password-reset-success": "Mot de passe réinitialisé", + "password-reset-success-message": "Vous devrez vous reconnecter", + "password_error1": "Les mots de passe ne correspondent pas.", + "paste": "Coller", + "paste-json": "Coller JSON", + "pay-to-chat": "Payer pour chatter", + "peer-content": "Un appareil connecté au réseau de discussion Status. Chaque utilisateur peut représenter un ou plusieurs pairs, selon leur nombre d'appareils.", + "peer-title": "Pair", + "peer-to-peer": "Pair-à-pair", + "peers": "Pairs", + "pending": "En attente", + "pending-confirmation": "Dans l'attente d'une confirmation....", + "pending-invitations": "Demandes d'inscription en cours", + "pending-requests": "Demandes en cours", + "per-gas-price-limit": "Plafond du prix \"\/gas\"", + "per-gas-tip-limit": "Plafond du pourboire \"\/gas\"", + "permissions": "Permissions", + "phone-e164": "International 1", + "photos": "Photos", + "photos-access-error": "Pour accorder l'autorisation d'utiliser les photos requises, veuillez vous rendre dans les paramètres de votre système et vous assurer que l'option Status > Photos est sélectionnée.", + "pin": "Épingler", + "pin-changed": "Le code PIN a été changé", + "pin-code": "Code PIN à 6 chiffres", + "pin-limit-reached": "Limite d'épinglage atteinte. Retirez d'abord un message précédent.", + "pin-mismatch": "Code PIN incorrect", + "pin-one-attempt": "une tentative", + "pin-one-attempt-blocked-after": "avant que votre Keycard ne soit bloquée", + "pin-one-attempt-blocked-before": "Attention, vous n'avez que", + "pin-one-attempt-frozen-after": "avant que votre Keycard ne soit gelée", + "pin-one-attempt-frozen-before": "Attention, vous n'avez que", + "pin-retries-left": "Il vous reste {{number}} tentatives", + "pin-to-channel": "Épingler à la chaîne", + "pin-to-chat": "Épingler au chat", + "pinned-a-message": "a épinglé un message", + "pinned-by": "Épinglé par", + "pinned-messages": "Messages épinglés", + "pinned-messages-2": "Messages épinglés", + "pinned-messages-count": { + "one": "1 message épinglé", + "other": "{{count}} messages épinglés" + }, + "pinned-messages-empty": "Les messages épinglés apparaîtront ici. Pour épingler un message, maintenez-le enfoncé et appuyez sur « Épingler »", + "podcasts": "Podcasts", + "preference": "Préférence", + "preview-privacy": "Aperçu du mode de confidentialité", + "previewing-may-share-metadata": "Prévisualiser les liens de ces sites internet peut partager vos métadonnées avec leurs propriétaires", + "principles": "Principes", + "privacy": "Confidentialité", + "privacy-and-security": "Confidentialité et sécurité", + "privacy-photos": "Confidentialité de la photo de profil", + "privacy-policy": "Politique de confidentialité", + "privacy-show-to-warning": "Votre photo de profil continuera à s'afficher pour les personnes qui l'ont déjà vue", + "private-key": "Clé privée", + "private-notifications": "Notifications", + "private-notifications-descr": "Status vous informera des nouveaux messages. Vous pouvez modifier vos préférences de notification ultérieurement dans les paramètres.", + "processing": "Veuillez patienter un instant...", + "product-information": "Informations sur le produit", + "profile": "Profil", + "profile-deleted-content": "Votre profil a été supprimé avec succès", + "profile-deleted-keycard": "Vous pouvez maintenant restaurer une autre biclé sur votre Keycard", + "profile-deleted-title": "Profil supprimé", + "profile-details": "Détails du profil", + "profile-not-found": "Profil non trouvé", + "profile-pic-pick": "Sélectionnez à partir de la galerie", + "profile-pic-remove": "Supprimer la photo", + "profile-pic-take": "Prendre une photo", + "profile-picture-updated": "Votre photo de profil a été mise à jour", + "public": "Public", + "public-channel": "Canal public", + "public-chat": "Chat public", + "public-chat-description": "Une discussion publique est l'endroit pour communiquer avec les autres, se faire des amis et parler des sujets qui vous intéressent.", + "public-chats": "Chats publics", + "public-group-status": "Public", + "public-group-topic": "Sujet", + "public-key": "Clé publique", + "puk-and-pairing-codes-displayed": "Affichage des codes PUK et des codes de couplages", + "puk-changed": "Le PUK à 12 chiffres a été modifié", + "puk-code": "Code PUK", + "puk-code-explanation": "Si vous oubliez votre code PIN à 6 chiffres ou si vous le saisissez 3 fois de manière incorrecte, vous aurez besoin de ce code pour déverrouiller votre carte.", + "puk-mismatch": "Le code PUK ne correspond pas", + "push-failed-transaction": "Votre transaction a échoué", + "push-failed-transaction-body": "{{value}} {{currency}} à {{to}}", + "push-inbound-transaction": "Vous avez reçu {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} au {{to}}", + "push-notifications-server-enabled": "Serveur activé", + "push-notifications-servers": "serveurs de notifications push", + "push-outbound-transaction": "Vous avez envoyé {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} au {{to}}", + "quiet-days": "{{quiet-days}} jours", + "quiet-hours": "{{quiet-hours}} heures", + "re-encrypt-key": "Crypter à nouveau votre clé", + "receive": "Recevoir", + "receive-transaction": "Recevoir la transaction", + "received": "Reçu", + "recent": "Récent", + "recent-empty": "Les adresses récemment utilisées apparaîtront ici", + "recent-recipients": "Contacts", + "recently-used-stickers": "Les autocollants récemment utilisés apparaîtront ici", + "recipient": "Bénéficiaire", + "recipient-code": "Entrez l'adresse du destinataire", + "recipient-code-placeholder": "0x... ou username.domain.eth", + "recover": "Récupérer", + "recover-key": "Récupérer des clés existantes", + "recover-keycard-multiaccount-not-supported": "Les clés de ce compte existent déjà et ne peuvent pas être ajoutées. Si vous avez perdu votre mot de passe, code d'accès ou Keycard, désinstallez l'application, réinstallez la et vous pourrez accéder à vos clés en utilisant votre phrase mnémonique", + "recover-with-keycard": "Récupérer avec la Keycard", + "recover-with-seed-phrase": "Récupérer avec une phrase de récupération", + "recovering-key": "Récupération de la clé ...", + "recovery-confirm-phrase": "Confirmer la phrase de récupération", + "recovery-phrase": "Phrase de récupération", + "recovery-success-text": "Vous devrez créer un nouveau code ou mot de passe pour recrypter votre clé", + "recovery-typo-dialog-description": "Veuillez noter que votre phrase de départ doit utiliser exactement les mêmes mots et l'ordre que vous l'avez reçu", + "recovery-typo-dialog-title": "La phrase de récupérations est-elle correcte?", + "redeem-amount": "{{quantity}} bonus disponibles", + "redeem-now": "Échangez maintenant", + "redeem-success": "L'échange du bonus a fonctionné !", + "reduced-tip": "le pourboire de priorité sera réduit", + "refresh": "Rafraîchir", + "registered": "inscrit", + "reject-and-delete": "Refuser et supprimer", + "remember-me": "Se souvenir de moi", + "remind-me-later": "Me le rappeler plus tard", + "remove": "Enlever", + "remove-favourite": "Supprimer le favori", + "remove-from-chat": "Supprimer du chat", + "remove-from-contacts": "Retirer des contacts", + "remove-from-contacts-text": "En supprimant un utilisateur de votre liste de contacts, vous ne leur cachez pas l'adresse de votre portefeuille", + "remove-group": "Supprimer le groupe", + "remove-network": "Supprimer le réseau", + "remove-token": "Supprimer le jeton", + "remove-user-from-group": "Supprimer {{username}} du groupe", + "removed": "supprimé", + "rename": "Renommer", + "repeat-pin": "Répéter le nouveau code PIN", + "repeat-puk": "Répéter le nouveau code PUK", + "replied": "Répondu", + "replies": "Réponses", + "replying-to": "Répondre à {{author}}", + "report-bug-email-template": "1. Description du problème \n (Décrivez la fonctionnalité que vous souhaitez ou résumez brièvement le bogue et ce que vous avez fait, ce à quoi vous vous attendiez et ce qui se passe réellement. Sections ci-dessous) \n\n\n 2. Étapes à suivre pour reproduire \n (Décrivez comment nous pouvons répliquer le bogue étape par étape.) \n - Ouvrir Status \n -... \n - Étape 3, etc. \n\n\n 3. Comportement attendu \n (Décrivez ce que vous attendiez.) \n\n\n 4. Comportement réel \n (Décrivez ce qui s'est réellement passé.) \n\n\n 5. Joignez des captures d’écran permettant de faire la démonstration du problème. \n", + "request-access": "Demander l’accès", + "request-feature": "Demander une fonctionnalité", + "request-membership": "Demande d'inscription", + "request-pending": "Demande en cours...", + "request-to-join": "Demande d'adhésion", + "request-transaction": "Demande de transaction", + "required-field": "Champ requis", + "resend-message": "Renvoyer", + "reset-card": "Réinitialiser la carte", + "reset-card-description": "Cette opération réinitialisera la carte à son état initial. Toutes les données de la carte, y compris les clés privées, seront effacées. L'opération n'est pas réversible.", + "reset-database": "Réinitialiser la base de données", + "reset-database-warning": "Supprimez les discussions, les contacts et les paramètres. Requis lorsque vous avez perdu votre mot de passe", + "reset-database-warning-keycard": "Supprimez les discussions, les contacts et les paramètres.", + "reset-password": "Réinitialiser le mot de passe", + "restore-defaults": "Restaurer les valeurs par défaut", + "retry": "Réessayer", + "revoke-access": "Révoquer l'accès", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Copier", + "rpc-usage-filter": "Méthodes de filtre", + "rpc-usage-filter-methods": "Méthodes de filtre", + "rpc-usage-get-stats": "Actualiser", + "rpc-usage-info": "Statistiques d'utilisation du RPC", + "rpc-usage-reset": "Réinitialiser", + "save": "Sauvegarder", + "save-image-library": "Enregistrer l'image dans la bibliothèque", + "save-password": "Enregistrer le mot de passe", + "save-password-unavailable": "Définir le mot de passe de l'appareil pour enregistrer le mot de passe", + "save-password-unavailable-android": "Enregistrer le mot de passe n'est pas disponible : il se peut que votre appareil soit enraciné ou ne dispose pas des fonctions de sécurité nécessaires.", + "scan-qr": "Scannez le QR code", + "scan-qr-code": "Scannez un QR code avec une adresse de portefeuille", + "scan-tokens": "Scanner les jetons", + "search": "Rechercher", + "search-contacts": "Rechercher des contacts", + "search-discover-communities": "Rechercher des communautés ou des catégories", + "search-no-chat-found": "Aucun résultat trouvé. Voulez-vous dire", + "secret-keys-confirmation-text": "Vous en aurez besoin pour continuer à utiliser votre Keycard au cas où vous perdriez votre téléphone.", + "secret-keys-confirmation-title": "Avez-vous écrit les codes?", + "security": "Sécurité", + "see-details": "Voir les détails", + "see-it-again": "VOIR DE NOUVEAU", + "see-sticker-set": "Voir toute la série d'autocollants", + "see-suggestions": "Voir les suggestions", + "seed-key-uid-mismatch": "Phrase mnémonique ne correspond pas", + "seed-key-uid-mismatch-desc-1": "La phrase de récupération saisie ne correspond pas à {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Pour gérer les clés de ce compte, vérifiez votre phrase de récupération et réessayez.", + "seed-phrase-content": "Un ensemble de mots faciles à lire, sélectionnés au hasard dans la liste standard BIP39 et utilisés pour récupérer votre compte ou accéder à votre compte Ethereum sur d'autres portefeuilles et appareils. Également appelé « phrase mnémonique », « expression de récupération » ou « sauvegarde de portefeuille » dans l'écosystème cryptographique. La plupart des applications cryptographique utilisent ce même standard pour générer des comptes.", + "seed-phrase-placeholder": "Phrase de récupération", + "seed-phrase-title": "Phrase de récupération", + "select": "Sélectionner", + "select-account": "Sélectionner le compte", + "select-account-dapp": "Sélectionnez le compte que vous souhaitez utiliser avec Dapps", + "select-account-first": "Sélectionner d'abord un compte", + "select-chat": "Sélectionnez le chat pour commencer la messagerie", + "select-new-location-for-keys": "Sélectionnez un nouvel emplacement pour enregistrer votre\/vos clé(s) privée(s)", + "selected": "Sélectionné", + "send": "Envoyer", + "send-logs": "Signaler un bug", + "send-logs-to": "Signaler un bogue à {{email}}", + "send-message": "Envoyer un message", + "send-push-notifications-description": "En cas de désactivation, la personne qui reçoit vos messages ne sera pas avertie de leur réception", + "send-reply": "Envoyer la réponse", + "send-request": "Envoyer une requête", + "send-request-amount": "Montant", + "send-request-amount-max-decimals": "Le nombre maximum de décimales est {{asset-decimals}}", + "send-request-unknown-token": "Jeton inconnu - {{asset}}", + "send-sending-to": "à {{recipient-name}}", + "send-transaction": "Envoyer la transaction", + "sending": "Envoi", + "sent": "Envoyé", + "sent-at": "Envoyé à", + "server": "Serveur", + "set-a-topic": "Créer un sujet", + "set-currency": "Choisir votre devise", + "set-custom-fee": "établir frais personnalisés", + "set-dapp-access-permissions": "Définir les autorisations d'accès DApp", + "set-max": "Choisir le maximum", + "settings": "Réglages", + "share": "Partager", + "share-address": "Partager l'adresse", + "share-chat": "Partager un chat", + "share-community": "Partager la communauté", + "share-contact-code": "Partager mon code de contact", + "share-dapp-text": "Découvrez ce DApp que j'utilise sur Status: {{link}}", + "share-image": "Partager l'image", + "share-invite-link": "Partager un lien d'invitation", + "share-link": "Partager le lien", + "share-my-profile": "Partager mon profil", + "share-profile": "Partager le profil", + "share-profile-link": "Partager le lien du profil", + "share-public-chat-text": "Découvrez ce chat public sur l'application Status: {{link}}", + "shared": "Partagé", + "sharing-copied-to-clipboard": "Copié", + "sharing-copy-to-clipboard": "Copier", + "sharing-data-desc-1": "Les données sont validées par rapport aux règles publiques afin de garantir qu'aucune donnée sensible n'est envoyée. Ne faites pas confiance, vérifiez.", + "sharing-data-desc-2": "Les données d'utilisation sont envoyées cryptées de bout en bout sur le réseau peer-to-peer de Status.", + "sharing-data-desc-3": "Au lieu de votre clé de chat habituelle, une clé à usage unique est utilisée", + "sharing-data-desc-4": "Les données d'utilisation ne peuvent pas être associées à votre adresse IP", + "sharing-data-desc-5": "Les données cumulées de tous les utilisateurs sont disponibles publiquement.", + "sharing-data-desc-6": "Les données sont supprimées de votre téléphone après leur envoi.", + "sharing-share": "Partager...", + "shell-placeholder-subtitle": "Ouvrir les onglets de vos communautés, de vos messages, de votre compte portefeuille et de vos fenêtres de navigation", + "shell-placeholder-title": "Vos applications seront exécutées ici", + "show-less": "Afficher moins", + "show-more": "Afficher plus", + "show-notifications": "Afficher les notifications", + "show-profile-pictures": "Afficher les photos de profil de", + "show-profile-pictures-to": "Révélez votre photo de profil à", + "show-qr": "Afficher le QR code", + "show-transaction-data": "Afficher les données de transaction", + "sign-and-send": "Signer et envoyer", + "sign-anyway": "Signez quand même", + "sign-in": "Se connecter", + "sign-message": "Signer un message", + "sign-out": "Se déconnecter", + "sign-request-failed": "Impossible de signer le message", + "sign-with": "Se connecter avec", + "sign-with-password": "Signer avec mot de passe", + "sign-you-in": "Vous connecter...", + "signing": "Signer", + "signing-a-message": "Signature d'un message", + "signing-phrase": "Phrase de signature", + "skip": "Passer", + "slow": "Lent", + "something-went-wrong": "Quelque chose a mal tourné", + "soon": "Bientôt", + "sort-communities": "Trier les communautés", + "specify-address": "Spécifiez l'adresse", + "specify-name": "Spécifiez un nom", + "specify-network-id": "Spécifier l'id réseau", + "specify-rpc-url": "Spécifier une URL RPC", + "specify-server-public-key": "Entrez la clé publique du serveur", + "start-chat": "Démarrer le chat", + "start-conversation": "Démarrer la conversation", + "start-group-chat": "Démarrer le chat de groupe", + "start-new-chat": "Démarrer un nouveau chat", + "starter-pack-coming": "Le kit de départ arrive", + "starter-pack-coming-description": "Peut prendre de quelques minutes à quelques heures", + "starter-pack-received": "Pack de démarrage reçu", + "starter-pack-received-description": "Voici quelques crypto pour démarrer ! Utilisez-les pour obtenir des autocollants, un nom ENS et essayer des dapps", + "status": "Status", + "status-confirmed": "Confirmé", + "status-hardwallet": "Porte-monnaie électronique Status", + "status-is-open-source": "Status est à code ouvert", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status a tendance à utiliser beaucoup de données lors de la synchronisation des discussions. Vous pouvez choisir de ne pas synchroniser lorsque vous êtes sur le réseau mobile", + "status-not-sent-click": "Non confirmé. Cliquez pour les options", + "status-not-sent-tap": "Pas confirmé. Appuyez sur options pour", + "status-pending": "En attente", + "status-sent": "Envoyé", + "status-tx-not-found": "TX non trouvé", + "status-updates-descr": "Les mises à jour de statut s’affichent ici. Ajoutez le profil à vos contacts pour recevoir les mises à jour sur votre journal.", + "statuses-descr": "Partagez vos idées et restez à jour avec vos contacts", + "statuses-my-status-descr": "Partagez vos idées. Toute personne visitant votre profil pourra voir votre statut. Les personnes qui vous ajoutent comme contact recevront vos mises à jour sur leur chronologie", + "step-i-of-n": "Étape {{step}} de {{number}}", + "sticker": "Autocollant", + "sticker-market": "Marché des autocollants", + "storage": "Stockage", + "strikethrough": "Barré", + "submit": "Soumettre", + "submit-bug": "Soumettre un bogue", + "success": "Succès", + "successful-connection": "Connexion réussie", + "suggested-min-tip": "Pourboire minimum conseillé", + "suggested-price-limit": "Prix maximum conseillé", + "symbol": "Symbole", + "sync-all-devices": "Synchroniser tous les appareils", + "sync-in-progress": "Synchronisation...", + "sync-settings": "Paramètres de synchronisation", + "sync-synced": "En sync", + "syncing-devices": "Synchronisation...", + "system": "Système", + "tabs": "Onglets", + "tag-was-lost": "L'étiquette a été perdue", + "tap-card-again": "Poser à nouveau la carte à l'arrière de votre téléphone", + "terms-of-service": "Conditions d'utilisation", + "test-networks": "Réseaux de test", + "text-input-disabled": "Veuillez patienter un instant...", + "thank-you": "Merci", + "this-device": "Cet appareil", + "this-device-desc": "Votre clé sera cryptée et stockée en toute sécurité", + "this-is-you-signing": "Voici votre phrase de signature", + "this-will-take-few-seconds": "Cela prendra quelques secondes", + "three-days": "Trois jours", + "three-words-description": "Vous devriez voir ces trois mots avant de signer chaque transaction", + "three-words-description-2": "Si vous voyez une combinaison différente, annulez la transaction et déconnectez-vous.", + "timeline": "Chronologie", + "tip-cap": "Plafond des pourboires", + "to": "À", + "to-block": "Bloc", + "to-enable-biometric": "Pour activer {{bio-type-label}}, vous devez enregistrer votre mot de passe.", + "to-encrypt-enter-password": "Pour crypter le compte, veuillez entrer votre mot de passe", + "to-see-this-message": "Pour voir ce message,", + "token-auto-validate-decimals-error": "Décimales erronées pour le jeton {{symbol}} à l'adresse {{address}} - défini sur {{expected}} mais détecté comme étant {{actual}}", + "token-auto-validate-name-error": "Nom incorrect pour le jeton {{symbol}} à l'adresse {{address}} - défini sur {{expected}} mais détecté comme {{actual}}", + "token-auto-validate-symbol-error": "Mauvais symbole pour le jeton {{symbol}} à l'adresse {{address}} - défini sur {{expected}} mais détecté comme {{actual}}", + "token-details": "Détails du jeton", + "token-price": "Prix du jeton", + "topic-name-error": "Utilisez uniquement des lettres minuscules (a à z), des chiffres et des tirets (-). Ne pas utiliser les codes de contact", + "total-members": "Nombre total de membres", + "transaction": "Transaction", + "transaction-data": "Données de transaction", + "transaction-declined": "Transaction refusée", + "transaction-description": "Considérez-le comme terminé après 12 confirmations sur le réseau.", + "transaction-details": "Détails de la transaction", + "transaction-failed": "La transaction a échoué", + "transaction-history": "Historique des transactions", + "transaction-request": "Demande de transaction", + "transaction-sent": "Transaction envoyée", + "transaction-signed": "La transaction a été signée avec succès", + "transactions": "Transactions", + "transactions-filter-select-all": "Tout sélectionner", + "transactions-filter-title": "Filtrer l'historique", + "transactions-history": "Historique des transactions", + "transactions-history-empty": "Aucune transaction dans votre historique pour le moment", + "transactions-history-loading": "Chargement de l'historique des transactions. Cela peut prendre un certain temps.", + "transactions-load-more": "Afficher plus", + "transactions-management-enabled": "Gestion des transactions (alpha)", + "transactions-sign": "Connecter", + "transfer-ma-unknown-error-desc-1": "Il semble que votre multi-compte n'a pas été supprimé. La base de données a peut-être été réinitialisée", + "transfer-ma-unknown-error-desc-2": "Veuillez vérifier votre liste de comptes et réessayer. Si le compte n'est pas répertorié, allez sur le lien Accéder aux clés existantes pour récupérer avec votre phrase récupération", + "transfers-fetching-failure": "L'historique des transferts n'a pas pu être mis à jour. Vérifiez votre connexion et tirez vers le bas pour réessayer", + "tribute-required-by-multiaccount": "{{multiaccount-name}} requiert des SNT pour commencer un chat.", + "tribute-state-paid": "Hommage rendu", + "tribute-state-pending": "Hommage en attente", + "tribute-state-required": "Requiert un {{snt-amount}} hommage SNT", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Ajoutez des amis en tant que contact pour autoriser les discussions sans paiement tribute.", + "tribute-to-talk-are-you-friends": "Êtes-vous amis?", + "tribute-to-talk-ask-to-be-added": "Demander à être ajouté en tant que contact", + "tribute-to-talk-contact-received-your-tribute": " a reçu votre hommage. Vous pouvez maintenant discuter entre vous en toute sécurité.", + "tribute-to-talk-desc": "Monétisez votre attention en exigeant des SNT pour de nouvelles personnes de commencer un chat", + "tribute-to-talk-disabled": "Tribute to Talk désactivé", + "tribute-to-talk-disabled-note": "A partir de maintenant, de nouvelles personnes peuvent commencer un chat avec vous sans envoyer des SNT.", + "tribute-to-talk-enabled": "Vous avez activé Tribute to Talk.", + "tribute-to-talk-finish-desc": "À partir de maintenant, vous ne recevrez plus que des chats de vos contacts, et des personnes qui ont payé ", + "tribute-to-talk-learn-more-1": "Votre temps et votre attention sont vos atouts les plus précieux. Tribute to Talk vous permet de définir la quantité de SNT requise pour permettre à de nouvelles personnes de commencer une conversation avec vous.", + "tribute-to-talk-learn-more-2": "Toute personne ne figurant pas dans votre liste de contacts sera priée de payer et vous pourrez répondre une fois qu'ils l'auront été.", + "tribute-to-talk-learn-more-3": "Vous pouvez toujours renvoyer l'argent, mais pour que vos amis puissent vous joindre librement, ajoutez-les d'abord en tant que contact.", + "tribute-to-talk-paywall-learn-more-1": "Notre temps et notre attention sont nos atouts les plus précieux. Tribute to Talk vous permet de contacter de nouvelles personnes en échange d'un paiement SNT.", + "tribute-to-talk-paywall-learn-more-2": "Pour commencer une conversation avec quelqu'un qui a un ensemble d'hommage, il suffit de payer le SNT requis et vous serez ajouté comme un contact.", + "tribute-to-talk-paywall-learn-more-3": "Si vous les connaissez, vous pouvez partager votre profil en dehors de Status pour être ajouté gratuitement.", + "tribute-to-talk-pending": "Tribute en attente de confirmation", + "tribute-to-talk-pending-note": "La transaction Tribute est en attente de confirmation sur le réseau. Vous pouvez vérifier son statut dans l'historique des transactions", + "tribute-to-talk-removing-note": "La suppression de Tribute to Talk permettra aux nouvelles personnes de démarrer une discussion sans envoyer des SNT. Nécessite une transaction à effectuer.", + "tribute-to-talk-set-snt-amount": "Définir la quantité de SNT requise pour que les nouvelles personnes commencent un chat", + "tribute-to-talk-signing": "En attente de la signature de la transaction", + "tribute-to-talk-transaction-failed-note": "La transaction a échoué et vos paramètres Tribute to Talk n'ont pas été modifiés.", + "tribute-to-talk-tribute-received1": "Hommage reçu. Vous et ", + "tribute-to-talk-tribute-received2": " sont maintenant des contacts et peuvent discuter entre eux en toute sécurité.", + "tribute-to-talk-you-require-snt": "Vous avez besoin de SNT pour que de nouvelles personnes commencent un chat.", + "try-again": "Essayez à nouveau", + "try-keeping-the-card-still": "Essayez de ne pas bouger la carte", + "turn-nfc-description": "NFC est désactivé sur votre appareil. Vous pouvez l'activer dans les paramètres", + "turn-nfc-on": "Allumez le NFC pour continuer", + "two-minutes": "deux minutes", + "tx-fail-description1": "Cette transaction est susceptible d'échouer. Signez à vos propres risques en utilisant les frais de réseau personnalisés.", + "tx-fail-description2": "Cette transaction est susceptible d'échouer. Fixez des frais de réseau personnalisés pour signer à vos propres risques.", + "type": "Type", + "type-a-message": "Message", + "type-something": "Écrire quelque chose", + "ulc-enabled": "ULC activé", + "unable-to-fetch": "Impossible de récupérer l'historique des discussions", + "unable-to-read-this-code": "Impossible de lire ce code", + "unable-to-send-messages": "Impossible d'envoyer et de recevoir des messages", + "unblock": "Débloquer", + "unblock-contact": "Débloquer le contact", + "undo": "Annuler", + "unknown-status-go-error": "Erreur inconnue status-go", + "unlock": "Déverrouiller", + "unmute": "Réactiver", + "unmute-chat": "Réactiver le chat", + "unmute-community": "Réactiver la communauté", + "unmute-group": "Réactiver le groupe", + "unpair-card": "Dissocier la carte", + "unpair-card-confirmation": "Cette opération va dissocier la carte du périphérique actuel. Nécessite une autorisation par code PIN. Voulez-vous poursuivre?", + "unpair-keycard": "Dissocier la Keycard de ce téléphone", + "unpair-keycard-warning": "Votre code de jumelage PUK (clé personnelle de déblocage) et PIN restent inchangés", + "unpaired-keycard-text": "La Keycard que vous avez utilisée n'est pas associée à ce téléphone", + "unpaired-keycard-title": "On dirait que votre carte n'est plus jumelée", + "unpin": "Retirer l'épingle", + "unpin-from-channel": "Retirer de la chaîne", + "unpin-from-chat": "Retirer l'épingle du chat", + "untrustworthy": "Non fiable", + "update": "Mettre à jour", + "update-to-listen-audio": "Mettez à jour la dernière version pour écouter un message audio ici !", + "update-to-see-image": "Mettez à jour la dernière version pour voir une belle image ici !", + "update-to-see-sticker": "Mettez à jour la dernière version pour voir un joli autocollant ici !", + "updates-to-tos": "Mises à jour des conditions d’utilisation", + "updates-to-tos-desc": "Avant de continuer, veuillez consulter les Conditions d’utilisation et confirmer que vous assumez l’entière responsabilité de la façon dont vous utilisez l’application.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Utiliser une photo de profil", + "use-valid-contact-code": "Veuillez entrer ou scanner un code de contact ou un nom d'utilisateur valide.", + "validation-amount-invalid-number": "Le montant n'est pas un nombre valide", + "validation-amount-is-too-precise": "Le montant est trop précis. Le nombre maximum de décimales est {{decimals}} .", + "verified-community": "✓ Communauté vérifiée", + "version": "Version de l'application", + "view": "Vue", + "view-community-rules": "Afficher les règles de la communauté", + "view-cryptokitties": "Voir dans CryptoKitties", + "view-cryptostrikers": "Afficher dans CryptoStrikers", + "view-data": "Voir les données", + "view-details": "Voir les détails", + "view-etheremon": "Voir dans Etheremon", + "view-gitcoin": "Voir sur Gitcoin", + "view-members": "Voir les membres", + "view-on-opensea": "Voir sur OpenSea", + "view-pinned-messages": "Afficher les messages épinglés", + "view-profile": "Voir le profil", + "view-public-dashboard": "Voir le tableau de bord public", + "view-rules": "Voir les règles", + "view-signing": "Voir la phrase de signature", + "view-superrare": "Vue en SuperRare", + "vote-to-feature": "Voter pour mettre en avant cette communauté", + "waiting-for-wifi": "Historique synchronisé hors ligne, en attente de Wi-Fi.", + "waiting-for-wifi-change": "Paramètres", + "waiting-to-sign": "En attente de la signature de la transaction....", + "waiting-wi-fi": "En attente de Wi-Fi…", + "waku-bloom-filter-mode": "Mode filtre de Bloom de Waku", + "wakuv2-change-nodes": "Êtes-vous sûr de vouloir changer les nœuds Wakuv2 ?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Réglages Waku v2", + "wallet": "Portefeuille", + "wallet-address": "Adresse de portefeuille", + "wallet-asset": "Actif", + "wallet-assets": "Actifs", + "wallet-backup-recovery-title": "Sauvegardez votre phrase de récupération", + "wallet-choose-recipient": "Choisissez le destinataire", + "wallet-collectibles": "Collectors", + "wallet-insufficient-funds": "Fonds insuffisants", + "wallet-insufficient-gas": "Pas assez d'ETH pour le gaz", + "wallet-invalid-address": "Adresse invalide: \n {{data}}", + "wallet-invalid-address-checksum": "Erreur d'adresse: \n {{data}}", + "wallet-invalid-chain-id": "Le réseau ne correspond pas: \n {{data}} mais la chaîne actuelle est {{chain}}", + "wallet-key-content": "Une adresse hexadécimale de 64 caractères basée sur la norme Ethereum et commençant par 0x. Face au public, votre clé de portefeuille est partagée avec les autres quand vous souhaitez recevoir des fonds. Également appelée «adresse Ethereum» ou «adresse de portefeuille».", + "wallet-key-title": "Adresse du compte", + "wallet-manage-accounts": "Gérer les comptes", + "wallet-manage-assets": "Gérer les actifs", + "wallet-request": "Requête", + "wallet-send": "Envoyer", + "wallet-send-min-units": "Min 21000 unités", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Paramètres du portefeuille", + "wallet-total-value": "Valeur totale", + "wallet-transaction-total-fee": "Total des frais", + "wants-to-access-profile": "veut accéder à votre profil", + "warning": "Avertissement", + "warning-message": "Désolé, nous limitons l'envoi de plusieurs messages en succession rapide pour éviter le spam. Veuillez réessayer dans un instant.", + "warning-sending-to-contract-descr": "L'adresse que vous avez saisie est un contrat intelligent, l'envoi de fonds à cette adresse peut entraîner une perte de fonds. Pour interagir avec un DApp, ouvrez le DApp dans le navigateur Status DApp.", + "watch-only": "Compte de veille uniquement", + "wc-brand-guide": "Conseils sur l'utilisation des marques telles que les marques et les logos", + "wc-disclaimer": "Avis de non-responsabilité (y compris des fournisseurs tiers), garanties et décharges légales", + "wc-dispute": "Dispositions relatives au règlement des litiges", + "wc-how-to-use-status-app": "Comment utiliser l'application Status pour la confidentialité et la sécurité", + "wc-new-tos-based-on-principles-prefix": "De nouvelles conditions d'utilisation conçues sur la base de nos", + "web-view-error": "Impossible de charger la page", + "websites": "Sites internet", + "webview-camera-permission-requests": "Demandes d'autorisation de la caméra en Webview", + "webview-camera-permission-requests-subtitle": "Lorsqu'ils sont activés, les sites Web et les Dapps peuvent faire une demande d'utilisation de votre caméra", + "welcome-blank-community-message": "Vos communautés apparaîtront ici.", + "welcome-blank-message": "Vos discussions apparaîtront ici. Pour démarrer une nouvelle discussion, appuyez sur la touche ⊕", + "welcome-community-blank-message": "Vos discussions apparaîtront ici. Pour démarrer de nouvelles discussions, cliquez sur les trois points ci-dessus et sélectionnez \"Créer une chaîne\"", + "welcome-screen-text": "Configurez votre portefeuille, invitez vos amis à chatter\n et parcourez les dapps populaires !", + "welcome-to-status": "Bienvenue sur Status", + "welcome-to-status-description": "Configurez votre portefeuille crypto, invitez vos amis à discuter et parcourez les applications décentralisées", + "what-changed": "Ce qui a changé", + "what-is-shared": "Ce qui est partagé", + "whats-on-your-mind": "À quoi pensez-vous ?", + "whats-trending": "Découvrez les tendances", + "word-count": "Nombre de mots", + "word-n": "Mot # {{number}}", + "word-n-description": "Afin de vérifier si vous avez correctement sauvegardé votre phrase de récupération, entrez le mot #{{number}} ci-dessus.", + "words-n": { + "one": "1 mot", + "other": "{{count}} mots" + }, + "write-down-and-store-securely": "Écrire des codes \n & stockez-les en toute sécurité", + "wrong-address": "Mauvaise adresse", + "wrong-card": "Mauvaise carte", + "wrong-card-text": "Vous avez tapé sur une carte qui ne correspond pas au multi-compte sélectionné.", + "wrong-contract": "Mauvais contrat", + "wrong-keycard-text": "La Keycard que vous avez utilisée n'est pas associée à ce téléphone", + "wrong-keycard-title": "On dirait que vous avez utilisée \nune mauvaise Keycard", + "wrong-password": "Mauvais mot de passe", + "wrong-word": "Mauvais mot", + "yes": "Oui", + "you": "vous", + "you-already-have-an-asset": "Vous avez déjà un atout {{value}}", + "you-are-all-set": "Vous êtes prêts !", + "you-are-all-set-description": "Si vous perdez votre téléphone, vous pouvez maintenant accéder à vos fonds et à votre clé de chat en utilisant votre expression de semences", + "you-can-change-account": "Vous pouvez changer le nom du compte et la couleur à votre guise", + "you-can-choose-preview-websites": "Vous pouvez choisir lequel des sites internet suivants peut prévisualiser le lien des descriptions et des images dans les chats", + "you-can-fetch": "Vous pouvez récupérer l'historique des discussions", + "you-dont-have-contacts": "Pas encore de contacts", + "you-dont-have-contacts-invite-friends": "Vous n'avez pas encore de contacts.\nInvitez vos amis à discuter.", + "you-dont-have-stickers": "Vous n'avez pas encore de stickers", + "you-must-always-hold": "Vous devez toujours détenir :", + "you-must-hold": "Vous devez détenir :", + "you-must-now-hold": "Vous devez maintenant détenir :", + "you-will-need-this-code": "Vous aurez besoin de ce code pour ouvrir Status et signer des transactions.", + "you-will-start-from-scratch": "Vous recommencerez depuis le début avec un nouvel ensemble de clés", + "your-answer": "Votre réponse", + "your-card-is-frozen": "Votre Keycard est gelée. Réinitialiser l'accès à la carte", + "your-contact-code": "Accorder un accès autorise ce DApp à récupérer votre code de contact", + "your-data-belongs-to-you": "Si vous perdez votre phrase de récupération, vous perdez vos données et vos fonds", + "your-data-belongs-to-you-description": "Status ne peut pas vous aider à récupérer votre multi-compte si vous perdez votre phrase de récupération. Vous êtes responsable de la sécurité de vos données. Ecrire votre phrase de récupération quelque part sur constitue la meilleure protection.", + "your-keys": "Vos clés", + "your-price-limit": "Votre plafond des frais", + "your-recovery-phrase": "Votre phrase de récupération", + "your-recovery-phrase-description": "Ceci est votre phrase de récupération. Vous l'utilisez pour prouver qu'il s'agit de votre portefeuille. Vous ne le voyez qu'une fois! Ecrivez-le sur du papier et conservez-le dans un endroit sûr. Vous en aurez besoin si vous perdez ou réinstallez votre portefeuille.", + "your-tip-limit": "Votre plafond des pourboires", + "youre-on-mobile-network": "Vous êtes sur un réseau mobile" +} diff --git a/translations/fr_ch.json b/translations/fr_ch.json new file mode 100644 index 00000000000..2d14ccd4da7 --- /dev/null +++ b/translations/fr_ch.json @@ -0,0 +1,129 @@ +{ + "confirm": "Confirmer", + "amount": "Montant", + "members-active": { + "one": "1 membre, 1 actif", + "other": "{{count}} membres, {{count}} actif(s)", + "zero": "pas de membres" + }, + "chat-name": "Nom de chat", + "phew-here-is-your-passphrase": "*Pffff* c'était dur, voici votre phrase de passe, *notez-la et gardez-la en sécurité!* Vous en aurez besoin pour récupérer votre compte.", + "public-group-topic": "Sujet", + "chat-settings": "Paramètres de chat", + "offline": "Hors ligne", + "invited": "invité", + "address": "Adresse", + "new-public-group-chat": "Rejoindre le chat public", + "datetime-hour": { + "one": "heure", + "other": "heures" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Supprimer", + "add-members": "Ajouter des membres", + "done": "Terminé", + "close-chat": "Supprimer la discussion", + "new-group-chat": "Nouveau chat de groupe", + "sign-in": "S'identifier", + "datetime-yesterday": "hier", + "create-new-account": "Créer un nouveau compte", + "datetime-ago": "avant", + "contacts": "Contacts", + "got-it": "J'ai compris", + "active-online": "En ligne", + "password": "Mot de passe", + "browsing-title": "Parcourir", + "discover": "Découverte", + "browsing-cancel": "Annuler", + "intro-status": "Chattez avec moi pour configurer votre compte et changer vos paramètres !", + "name": "Nom", + "show-qr": "Montrer QR", + "connect": "Se connecter", + "edit": "Modifier", + "account-generation-message": "Une seconde svp, je dois lancer quelques formules magiques pour générer votre compte !", + "no-messages": "Pas de messages", + "passphrase": "Phrase de passe", + "recipient": "Destinataire", + "members-title": "Membres", + "new-group": "Nouveau groupe", + "phone-e164": "International 1", + "settings": "Paramètres", + "chats": "Chats", + "transaction": "Transaction", + "public-group-status": "Public", + "image-source-make-photo": "Capture", + "start-conversation": "Débuter une conversation", + "save": "Sauvegarder", + "sharing-copy-to-clipboard": "Copier vers le presse-papiers", + "sync-in-progress": "En cours de synchronisation...", + "send-transaction": "Envoyer la transaction", + "incorrect-code": [ + "str", + "Désolé, le code est incorrect, veuillez réessayer" + ], + "image-source-gallery": "Sélectionner dans la galerie", + "sync-synced": "Synchronisé", + "status-pending": "En attendant", + "datetime-day": { + "one": "jour", + "other": "jours" + }, + "scan-qr": "Scannner QR", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "next": "Suivant", + "recent": "Récent", + "status": "Statut", + "from": "De", + "wrong-password": "Mauvais mot de passe", + "in-contacts": "Dans les contacts", + "sharing-share": "Partagez…", + "type-a-message": "Tapez un message…", + "clear-history": "Effacer l'historique", + "no-contacts": "Pas encore de contacts", + "datetime-today": "aujourd'hui", + "web-view-error": "oups, erreur", + "error": "Erreur", + "more": "plus", + "cancel": "Annuler", + "can-not-add-yourself": "Vous ne pouvez pas vous ajouter vous-même", + "add-to-contacts": "Ajouter aux contacts", + "available": "Disponible", + "You": "Vous", + "main-wallet": "Portefeuille principal", + "members": { + "one": "1 membre", + "other": "{{count}} membres", + "zero": "pas de membres" + }, + "intro-message1": "Bienvenue dans le statut\nTapez ce message pour établir votre mot de passe et vous lancer !", + "new-contact": "Nouveau Contact", + "datetime-second": { + "one": "seconde", + "other": "secondes" + }, + "recover": "Restaurer", + "datetime-minute": { + "one": "minute", + "other": "minutes" + }, + "browsing-open-in-android-web-browser": "Ouvrir dans le navigateur", + "browsing-open-in-ios-web-browser": "Ouvrir dans le navigateur", + "edit-profile": "Modifier le profil", + "active-unknown": "Inconnu", + "public-key": "Clé publique", + "profile": "Profil", + "none": "Aucun", + "removed": "supprimé", + "message": "Message", + "here-is-your-passphrase": "Voici votre phrase de passe, *notez-la et gardez-la en sécurité!* Vous en aurez besoin pour récupérer votre compte.", + "image-source-title": "Image du profil", + "left": "restant", + "to": "À", + "status-not-sent-click": "Non confirmé. Cliquez pour les options", + "status-not-sent-tap": "Pas confirmé. Appuyez sur options pour", + "status-sent": "Envoyé", + "data": "Données" +} diff --git a/translations/fy.json b/translations/fy.json new file mode 100644 index 00000000000..83a90c27c26 --- /dev/null +++ b/translations/fy.json @@ -0,0 +1,131 @@ +{ + "confirm": "Befestigje", + "amount": "Bedrach", + "members-active": { + "one": "1 lid, 1 aktive", + "other": "{{count}} leden, {{count}} aktive", + "zero": "gjin leden" + }, + "chat-name": "Chatnamme", + "phew-here-is-your-passphrase": "*Poah* dat wie dreech, hjir is dyn wachtsin, *skriuw dizze op en bewarje him goed!* Do silst him nedich ha om dyn account te herstelle.", + "public-group-topic": "Ûnderwerp", + "chat-settings": "Chatynstellingen", + "offline": "Offline", + "invited": "útnoege", + "address": "Adres", + "new-public-group-chat": "Doch mei yn iepenbare chat", + "datetime-hour": { + "one": "oere", + "other": "oeren" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "Om de kamera tastimming te jaan, gea nei dyn systeem ynstellings en wêz wis dat Status > Camera selektearre is.", + "remove": "Fuortsmite", + "add-members": "Foegje leden ta", + "photos-access-error": "Om ús tastimming te jaan oan dyn foto's, gea nei dyn systeem ynstellings en wêz wis dat Status > Foto's selektearre is.", + "done": "Klear", + "close-chat": "Chat fuortsmite", + "new-group-chat": "Nije groepchat", + "sign-in": "Ynlogge", + "datetime-yesterday": "juster", + "create-new-account": "Nij akkount oanmeitsje", + "datetime-ago": "lyn", + "contacts": "Kontaktpersoanen", + "got-it": "Befetsje ik", + "active-online": "Online", + "password": "Wachtwurd", + "browsing-title": "Blêdzje", + "discover": "Ûntdekking", + "browsing-cancel": "Ôfbrekke", + "intro-status": "Chat mei my om dyn account yn te stellen en dyn ynstellingen te wizigjen!", + "name": "Namme", + "show-qr": "Toan QR", + "connect": "Ferbine", + "edit": "Bewurkje", + "account-generation-message": "Jou my in momintsje, ik moat wat yngewikkelde berekkeningen dwaan om dyn account oan te meitsjen !", + "no-messages": "Gjin berjochten", + "passphrase": "Wachtsin", + "recipient": "Ûntfanger", + "members-title": "Leden", + "new-group": "Nije groep", + "phone-e164": "Ynternasjonaal 1", + "settings": "Ynstellingen", + "delete": "Wiskje", + "chats": "Chats", + "transaction": "Transaksje", + "public-group-status": "Iepenbier", + "image-source-make-photo": "Foto nimme", + "start-conversation": "Start konversaasje", + "save": "Opslaan", + "sharing-copy-to-clipboard": "Nei it klamboerd ta kopiearje", + "sync-in-progress": "Wurdt syngronisearre ...", + "send-transaction": "Stjoer transaksje", + "incorrect-code": [ + "str", + "Sorry, de koade wie ferkeard, fier hem opnei yn" + ], + "image-source-gallery": "Kies út galerij", + "sync-synced": "Syngronisearre", + "status-pending": "Yn behanneling", + "datetime-day": { + "one": "dei", + "other": "dagen" + }, + "scan-qr": "QR scanne", + "contact-s": { + "one": "kontakt", + "other": "kontakten" + }, + "next": "Folgjende", + "recent": "Koartlyn", + "status": "Status", + "from": "Fan", + "wrong-password": "Ferkeard wachtwurd", + "in-contacts": "Yn kontakten", + "sharing-share": "Diele...", + "type-a-message": "Typ in berjocht...", + "clear-history": "Wis skiednis", + "no-contacts": "Noch gjin kontaktpersoanen", + "datetime-today": "hjoed", + "web-view-error": "oeps, flater", + "error": "Flater", + "more": "mear", + "cancel": "Ôfbrekke", + "can-not-add-yourself": "Do kinst dysels net tafoegje", + "add-to-contacts": "Oan kontaktpersoanen tafoegje", + "available": "Beskikber", + "You": "Do", + "main-wallet": "Haadbeurs", + "members": { + "one": "1 lid", + "other": "{{count}} leden", + "zero": "gjin leden" + }, + "intro-message1": "Wolkom by Status\nTik op dit berjocht om dyn wachtwurd yn te stellen en oan de slach te gean!", + "new-contact": "Nije kontaktpersoanen", + "datetime-second": { + "one": "sekonde ", + "other": " sekonden" + }, + "recover": "Herstelle", + "datetime-minute": { + "one": "minút", + "other": "minuten" + }, + "browsing-open-in-android-web-browser": "Iepenje yn web blêder", + "browsing-open-in-ios-web-browser": "Iepenje yn web blêder", + "edit-profile": "Profyl oanpasse", + "active-unknown": "Ûnbekend", + "public-key": "Iepenbiere kaai", + "profile": "Profyl", + "none": "Gjin", + "removed": "ferwidere", + "message": "Berjocht", + "here-is-your-passphrase": "Dat wie dreech, hjir is dyn wachtsin, *skriuw dizze op en bewarje him goed!* Do silst him nedich ha om dyn account te herstelle.", + "image-source-title": "Profylfoto", + "current-network": "Aktuele netwurk", + "left": "gie fuort", + "to": "Ta", + "status-sent": "Ferstjoerd", + "data": "Data" +} diff --git a/translations/he.json b/translations/he.json new file mode 100644 index 00000000000..91f0bf4482d --- /dev/null +++ b/translations/he.json @@ -0,0 +1,131 @@ +{ + "confirm": "אשר", + "amount": "כמות", + "members-active": { + "one": "חבר אחד", + "other": "{{count}} חברים", + "zero": "אין חברים" + }, + "chat-name": "שם הצ'אט", + "phew-here-is-your-passphrase": "פוו זה היה קשה, הנה משפט הקוד שלך, *תרשום אותו ותשמור עליו!* אתה תצטרך אותו כדי לשחזר את המשתמש שלך", + "public-group-topic": "נושא", + "chat-settings": "הגדרות צ'אט", + "offline": "לא מחובר", + "invited": "הוזמן", + "address": "כתובת", + "new-public-group-chat": "הצטרף לצ'אט פומבי", + "datetime-hour": { + "one": "שעה", + "other": "שעות" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": ".כדי להעניק את הרשאת המצלמה הנדרשת, בבקשה, תלכו להגדרות המערכת ותוודאו שהאופציה שנבחרה היא סטטוס > מצלמה", + "remove": "הסר", + "add-members": "הוסף מספרים", + "photos-access-error": ".כדי להעניק את הרשאת התמונות הנדרשת, בבקשה, תלכו להגדרות המערכת ותוודאו שהאופציה שנבחרה היא סטטוס > תמונות", + "done": "הושלם", + "close-chat": "מחק צ'אט", + "new-group-chat": "צ'אט קבוצתי חדש", + "sign-in": "התחבר", + "datetime-yesterday": "אתמול", + "create-new-account": "יצר איש קשר חדש", + "datetime-ago": "לפני", + "contacts": "אנשי קשר", + "got-it": "קיבלתי", + "active-online": "מחובר", + "password": "סיסמא", + "browsing-title": "דפדף", + "discover": "גילוי", + "browsing-cancel": "בטל", + "intro-status": "דבר איתי כדי להסדיר את המשתמש שלך ולשנות את ההגדרות", + "name": "שם", + "show-qr": "הראה ברקוד", + "connect": "התחבר", + "edit": "ערוך", + "account-generation-message": "!שניה, אני הולך להשתמש בקצת קסם מתמטי ולייצר את חשבונך", + "no-messages": "אין הודעות", + "passphrase": "משפט קוד", + "recipient": "מקבל", + "members-title": "חבר", + "new-group": "קבוצה חדשה", + "phone-e164": "בין לאומי 1", + "settings": "הגדרות", + "delete": "מחק", + "chats": "צ'אטים", + "transaction": "העברות", + "public-group-status": "פומבי", + "image-source-make-photo": "צלם", + "start-conversation": "התחל שיחה", + "save": "שמור", + "sharing-copy-to-clipboard": "העתק לשולחן העבודה", + "sync-in-progress": "...מסנכרן", + "send-transaction": "שלח עיסקה", + "incorrect-code": [ + "str", + "סליחה הקוד שגוי, אנא נסה שנית" + ], + "image-source-gallery": "בחר מהגלריה", + "sync-synced": "מסונכרן", + "status-pending": "ממתין", + "datetime-day": { + "one": "יום", + "other": "ימים" + }, + "scan-qr": "סרוק ברקוד", + "contact-s": { + "one": "איש קשר", + "other": "אנשי קשר" + }, + "next": "הבא", + "recent": "חדש", + "status": "סטטוס", + "from": "מ", + "wrong-password": "סיסמא שגויה", + "in-contacts": "באנשי קשר", + "sharing-share": "...שתף", + "type-a-message": "...הקלד הודעה", + "clear-history": "נקה היסטוריה", + "no-contacts": "אין שום אנשי קשר", + "datetime-today": "היום", + "web-view-error": "אופס,טעות", + "error": "שגיאה", + "more": "עוד", + "cancel": "בטל", + "can-not-add-yourself": "אתה לא יכול להוסיף את עצמך", + "add-to-contacts": "הוסף לאנשי קשר", + "available": "זמין", + "You": "אתה", + "main-wallet": "ארנק ראשי", + "members": { + "one": "חבר אחד", + "other": "{{count}} חברים", + "zero": "אין חברים" + }, + "intro-message1": "!ברוך הבא לסטטוס הקש על הודעה זו כדי לייצר סיסמא ולהתחיל", + "new-contact": "איש קשר חדש", + "datetime-second": { + "one": "שניה", + "other": "שניות" + }, + "recover": "שחזר", + "datetime-minute": { + "one": "דקה", + "other": "דקות" + }, + "browsing-open-in-android-web-browser": "פתח בדפדפן", + "browsing-open-in-ios-web-browser": "פתח בדפדפן", + "edit-profile": "ערוך פרופיל", + "active-unknown": "לא ידוע", + "public-key": "מפתח פומבי", + "profile": "פרופיל", + "none": "אף אחד", + "removed": "הוסר", + "message": "הודעה", + "here-is-your-passphrase": "הנה משפט הקוד שלך, *תרשום אותו ותשמור עליו!* אתה תצטרך אותו כדי לשחזר את המשתמש שלך.", + "image-source-title": "תמונת פרופיל", + "current-network": "Current network", + "left": "עזב", + "to": "ל", + "status-sent": "נשלחה", + "data": "נתונים" +} diff --git a/translations/hi.json b/translations/hi.json new file mode 100644 index 00000000000..d01af59245d --- /dev/null +++ b/translations/hi.json @@ -0,0 +1,1874 @@ +{ + "K": "K", + "M": "एम", + "NFT": "एनएफटी", + "You": "आप", + "about-app": "लगभग", + "about-key-storage-content": "Status कभी भी आपकी निजी कुंजी तक नहीं पहुंच पाएगी। अपने बीज वाक्यांश का बैकअप लेना सुनिश्चित करें। यदि आप अपना फोन खो देते हैं तो यह आपकी चाबियों तक पहुंचने का एकमात्र तरीका है।", + "about-key-storage-title": "कुंजी भंडारण के बारे में", + "about-names-content": "कोई भी आपके होने का दिखावा नहीं कर सकता! आप डिफ़ॉल्ट रूप से गुमनाम हैं और आपको कभी भी अपना वास्तविक नाम प्रकट नहीं करना है। आप एक छोटे से शुल्क के लिए एक कस्टम नाम पंजीकृत कर सकते हैं।", + "about-names-title": "नाम नहीं बदले जा सकते", + "about-sharing-data": "डेटा साझा करने के बारे में", + "accept": "स्वीकार करना", + "accept-and-add": "स्वीकार करें और जोड़ें", + "accept-and-continue": "स्वीकार करें और जारी रखें", + "accept-and-share-address": "स्वीकार करें और पता साझा करें", + "accept-community-rules": "मैं समुदाय के नियमों से सहमत हूं", + "accept-new-chats-from": "से नई चैट स्वीकार करें", + "accept-status-tos-prefix": "मैं Status स्वीकार करता हूं", + "accepted": "स्वीकृत", + "access-existing-keys": "मौजूदा कुंजियों तक पहुंचें", + "access-key": "आगमन चाबी", + "account-added": "खाता जोड़ा गया", + "account-color": "खाते का रंग", + "account-content": "आप स्टेटस में खातों की तुलना बैंक खातों से कर सकते हैं। बैंक खाते की तरह, खाते में आमतौर पर एक पता और शेष राशि होती है; आप इस खाते का उपयोग इथेरियम पर लेनदेन करने के लिए करते हैं। आपके वॉलेट में कई खाते हो सकते हैं। स्थिति को अनलॉक करके सभी को एक्सेस किया गया।", + "account-exists-title": "खाता पहले से मौजूद है", + "account-is-used": "खाते का उपयोग ब्राउज़र में Dapps के साथ किया जा रहा है।", + "account-name": "खाता नाम", + "account-settings": "अकाउंट सेटिंग", + "account-title": "खाता", + "accounts": "हिसाब किताब", + "actions": "कार्रवाई", + "active-members": "सक्रिय सदस्य", + "active-online": "ऑनलाइन", + "active-unknown": "अज्ञात", + "activity": "गतिविधि", + "add": "जोड़ें", + "add-a-watch-account": "केवल देखने के लिए पता जोड़ें", + "add-account": "एक खाता जोड़ें", + "add-account-description": "आप इसे अपने स्टेटस वॉलेट में जोड़ने के लिए किसी भी प्रकार के एथेरियम खाते को आयात कर सकते हैं", + "add-account-incorrect-password": "पासवर्ड गलत लगता है। वह पासवर्ड दर्ज करें जिसका उपयोग आप ऐप को अनलॉक करने के लिए करते हैं।", + "add-an-account": "एक खाता जोड़ें", + "add-bootnode": "बूटनोड जोड़ें", + "add-contact": "संपर्क जोड़ें", + "add-custom-token": "कस्टम टोकन जोड़ें", + "add-favourite": "पसंदीदा जोड़ें", + "add-mailserver": "Status नोड जोड़ें", + "add-members": "सदस्यों को जोड़ें", + "add-network": "नेटवर्क जोड़ें", + "add-new-contact": "नए संपर्क को जोड़े", + "add-nickname": "एक उपनाम जोड़ें (वैकल्पिक)", + "add-node": "नोड जोड़ें", + "add-private-key-account": "निजी कुंजी से खाता जोड़ें", + "add-seed-account": "एक बीज वाक्यांश के साथ खाता जोड़ें", + "add-text": "शब्द जोड़ें", + "add-to-contacts": "संपर्क के खाते में जोड़ दे", + "add-to-contacts-text": "किसी उपयोगकर्ता को अपनी संपर्क सूची में जोड़कर, आप अपना बटुआ पता साझा करते हैं", + "add-to-favourites": "पसंदीदा में जोड़ें", + "add-watch-account": "केवल देखने के लिए खाता जोड़ें", + "added": "जोड़ा", + "address": "पता", + "address-or-ens-name": "पता या ईएनएस नाम", + "address-received": "पता प्राप्त", + "address-request-accepted": "पता अनुरोध स्वीकार किया गया", + "address-requested": "पता अनुरोधित", + "admin": "व्यवस्थापक", + "advanced": "विकसित", + "advanced-settings": "एडवांस सेटिंग", + "advertiser-description": "आपने एक भागीदार के लिए धन्यवाद स्थिति की खोज की है। क्या आपको ऐतराज है अगर Status एक बार आपके आईपी पते की जांच कर ले ताकि उन्हें इनाम मिल जाए? इस जानकारी का उपयोग किसी और चीज के लिए नहीं किया जाएगा और इसे 7 दिनों के बाद पूरी तरह से हटा दिया जाएगा।", + "advertiser-starter-pack-accept": "स्वीकार करना", + "advertiser-starter-pack-decline": "पतन", + "advertiser-starter-pack-description": "शुरू करने के लिए यहां कुछ क्रिप्टो है! स्टिकर, एक ENS नाम प्राप्त करने के लिए इसका उपयोग करें और dapps आज़माएं", + "advertiser-starter-pack-title": "स्टार्टर पैक", + "advertiser-title": "डिफ़ॉल्ट रूप से गोपनीयता", + "agree-by-continuing": "जारी रखकर आप सहमत हैं\n हमारे लिए", + "all": "सभी", + "all-connections": "सभी कनेक्शन", + "allow": "अनुमति देना", + "allow-and-send": "अनुमति दें और भेजें", + "allow-mention-notifications": "@ उल्लेख दिखाएं", + "allowing-authorizes-this-dapp": "अनुमति देना इस DApp को आपके वॉलेट पते को पुनः प्राप्त करने और Web3 को सक्षम करने के लिए अधिकृत करता है", + "alphabetically": "वर्णानुक्रम", + "already-have-asset": "आपके पास पहले से ही यह संपत्ति है", + "amount": "राशि", + "and": "तथा", + "anyone": "कोई भी", + "app-commit": "ऐप्लिकेशन कमिट", + "app-connections": "ऐप्लिकेशन कनेक्शन", + "appearance": "उपस्थिति", + "apply": "आवेदन करना", + "approve": "मंज़ूरी देना", + "approve-limit": "सीमा अनुमोदित करें", + "approve-token": "टोकन स्वीकृत करें", + "approve-token-contract-desc": "एक अनुबंध के साथ एक टोकन को मंजूरी देने से यह आपकी टोकन शेष राशि खर्च कर सकता है। यदि आपको लगता है कि कोई परियोजना अविश्वसनीय है, तो उनके साथ टोकन स्वीकृत न करें, या केवल उस राशि को स्वीकृत करें जिसका आप उनके साथ उपयोग करेंगे।", + "are-you-sure": "क्या आपको यकीन है?", + "are-you-sure-description": "आप पूरे बीज वाक्यांश को दोबारा नहीं देख पाएंगे", + "are-you-sure-to-cancel": "पक्का आप रद्द करना चाहते हैं?", + "are-you-sure?": "क्या आपको यकीन है?", + "ask-in-status": "कोई प्रश्न पूछें या बग की रिपोर्ट करें", + "at": "पर", + "attribution-received": "{{attrib}} प्राप्त हुए {{max}} बोनस में से", + "audio": "ऑडियो", + "audio-message": "ऑडियो संदेश", + "audio-recorder": "रिकॉर्डर", + "audio-recorder-error": "रिकॉर्डर त्रुटि", + "audio-recorder-max-ms-reached": "अधिकतम रिकॉर्डिंग समय तक पहुंच गया", + "audio-recorder-permissions-error": "आपको ऑडियो संदेश भेजने की अनुमति देनी होगी", + "authorize": "अधिकृत", + "available": "उपलब्ध", + "available-participants": { + "one": "You can select one more participant", + "other": "You can select {{count}} more participants" + }, + "back": "वापस", + "back-up": "बैक अप", + "back-up-seed-phrase": "बैक अप बीज वाक्यांश", + "back-up-your-seed-phrase": "अपने बीज वाक्यांश का बैकअप लें", + "backing-up": "बैकअप ले रहा है...", + "backup-disabled": "अक्षम", + "backup-enabled": "सक्रिय", + "backup-recovery-phrase": "बैक अप बीज वाक्यांश", + "backup-settings": "बैकअप सेटिंग्स", + "backup-through-waku": "waku . के माध्यम से बैकअप", + "bad-fees-description": "आपका प्राथमिकता शुल्क हमारे सुझाए गए मापदंडों से कम है।", + "balance": "संतुलन", + "begin-set-up": "सेटअप शुरू करें", + "below-base-fee": "आधार शुल्क से कम अधिकतम शुल्क", + "biometric-auth-android-sensor-desc": "स्पर्श संवेदक", + "biometric-auth-android-sensor-error-desc": "अनुत्तीर्ण होना", + "biometric-auth-android-title": "प्रमाणीकरण की आवश्यकता है", + "biometric-auth-confirm-logout": "पुन लॉगिन", + "biometric-auth-confirm-message": "बायोमेट्रिक प्रमाणीकरण जारी रखने के लिए आवश्यक है, यदि संभव नहीं है तो कृपया अपने पासवर्ड या पासकोड के साथ अपनी चाबियाँ अनलॉक करें", + "biometric-auth-confirm-title": "आपको प्रमाणित करना होगा!", + "biometric-auth-confirm-try-again": "पुनः प्रयास करें", + "biometric-auth-error": "बायोमेट्रिक प्रमाणीकरण करने में असमर्थ ( {{code}} )", + "biometric-auth-login-error-title": "बायोमेट्रिक प्रमाणीकरण त्रुटि", + "biometric-auth-login-ios-fallback-label": "पास वर्ड दर्ज करें", + "biometric-auth-reason-login": "Status में लॉगिन करें", + "biometric-auth-reason-verify": "प्रमाणीकरण सत्यापित करें", + "biometric-disable-bioauth": "अक्षम {{bio-type-label}}", + "biometric-disable-password-description": "यदि आप इसे अक्षम करते हैं, तो आप भी करेंगे", + "biometric-disable-password-title": "पासवर्ड सहेजना अक्षम करें", + "biometric-enable": "यदि आप ऐप को एक्सेस करने के लिए हर बार अपना पासवर्ड दर्ज नहीं करना चाहते हैं, तो {{bio-type-label}} साइन इन सक्षम करें", + "biometric-enable-button": "{{bio-type-label}} सक्षम करें", + "biometric-enable-keycard": "यदि आप ऐप को एक्सेस करने के लिए हर बार अपने कीकार्ड का उपयोग नहीं करना चाहते हैं, तो {{bio-type-label}} साइन इन सक्षम करें", + "biometric-faceid": "फेस आईडी", + "biometric-fingerprint": "अंगुली की छाप", + "biometric-secure-with": "{{bio-type-label}} साथ सुरक्षित", + "biometric-touchid": "टच आईडी", + "bip39-password-placeholder": "BIP39 पासवर्ड", + "biu": "BIU", + "blank-contacts-text": "आपके संपर्क यहां होंगे", + "blank-keycard-text": "एक बार जब आप अपनी चाबियां और नाम बना लेते हैं तो आप अपने कीकार्ड के साथ आगे बढ़ सकते हैं", + "blank-keycard-title": "ऐसा लगता है कि आपने टैप किया है\n एक खाली कीकार्ड", + "blank-messages-text": "आपके संदेश यहां होंगे", + "block": "अवरोध पैदा करना", + "block-contact": "इस उपयोगकर्ता को ब्लॉक करें", + "block-contact-details": "अवरोधित करने से इस उपयोगकर्ता के पिछले संदेश हट जाएंगे और नए संदेशों को आप तक पहुंचने से रोक दिया जाएगा", + "block-user": "उपयोगकर्ता को ब्लॉक करें", + "blocked-users": "रोके गए उपयोगकर्ता", + "bold": "बोल्ड", + "bootnode-address": "बूटनोड पता", + "bootnode-details": "बूटनोड विवरण", + "bootnode-format": "एनोड: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "बूटनोड्स", + "bootnodes-enabled": "बूटनोड्स सक्षम", + "bootnodes-settings": "बूटनोड्स सेटिंग्स", + "browsed-websites": "ब्राउज़र इतिहास यहां दिखाई देगा", + "browser": "ब्राउज़र", + "browser-not-secure": "कनेक्शन सुरक्षित नहीं है! इस साइट पर लेनदेन पर हस्ताक्षर न करें या व्यक्तिगत डेटा न भेजें।", + "browser-secure": "कनेक्शन सुरक्षित है। लेन-देन पर हस्ताक्षर करने या व्यक्तिगत डेटा दर्ज करने से पहले सुनिश्चित करें कि आप वास्तव में इस साइट पर भरोसा करते हैं।", + "browsers": "ब्राउज़र्स", + "browsing-cancel": "रद्द करना", + "browsing-open-in-android-web-browser": "Android में खोलें", + "browsing-open-in-ios-web-browser": "iOS में खोलें", + "browsing-open-in-status": "Status में खोलें", + "browsing-site-blocked-description1": "हमें इस पते से संभावित दुर्भावनापूर्ण गतिविधि का पता चला है। आपकी और आपके वॉलेट की सुरक्षा के लिए, हम आगे नेविगेशन को रोक रहे हैं। \n\n अगर आपको लगता है कि यह एक त्रुटि है, तो हमें इसमें बताएं", + "browsing-site-blocked-description2": "सार्वजनिक चैट।", + "browsing-site-blocked-go-back": "वापस जाओ", + "browsing-site-blocked-title": "यह साइट अवरुद्ध है", + "browsing-title": "ब्राउज़", + "bug-report": "एक बग रिपोर्ट करो", + "bug-report-description": "* विवरण", + "bug-report-description-placeholder": "आवश्यक, खाली नहीं हो सकता", + "bug-report-steps": "प्रजनन के चरण", + "bug-report-steps-placeholder": "- ऐप खोलो\n - कुछ करो\n - और फिर कुछ और...", + "bug-report-submit-email": "लॉग संग्रह के साथ ईमेल द्वारा सबमिट करें", + "bug-report-submit-gh-issue": "लॉग के बिना GitHub समस्या सबमिट करें", + "bug-report-too-short-description": "विवरण बहुत छोटा है", + "build-yourself": "इन उपयोग की शर्तों के बिना ऐप का उपयोग करने के लिए, आप अपना स्वयं का संस्करण बना सकते हैं", + "buy-crypto": "क्रिप्टो खरीदें", + "buy-crypto-choose-a-service": "क्रिप्टो खरीदने के लिए आप जिस सेवा का उपयोग करना चाहते हैं उसे चुनें", + "buy-crypto-description": "अभी क्रिप्टो खरीदने के लिए एक डैप खोजें", + "buy-crypto-leaving": "आप Status छोड़ रहे हैं और अपनी खरीदारी पूरी करने के लिए किसी तीसरे पक्ष की वेबसाइट में प्रवेश कर रहे हैं", + "buy-crypto-title": "लगता है आपका बटुआ खाली है", + "camera-access-error": "आवश्यक कैमरा अनुमति देने के लिए, कृपया अपनी सिस्टम सेटिंग में जाएं और सुनिश्चित करें किStatus> कैमरा चयनित है।", + "can-not-add-yourself": "वह आप हैं, चैट शुरू करने के लिए किसी और को चुनें", + "can-send-messages": "आप नए संदेश भेज और प्राप्त कर सकते हैं", + "cancel": "रद्द करना", + "cancel-keycard-setup": "कीकार्ड सेटअप रद्द करें", + "cancelling": "रद्द कर रहा है", + "cannot-read-card": "कार्ड नहीं पढ़ सकते।\n कृपया इसे अपने फ़ोन के पीछे रखें", + "cannot-use-default-pin": "पासकोड 000000 की अनुमति नहीं है।\n कृपया किसी अन्य नंबर का उपयोग करें", + "cant-open-public-chat": "सार्वजनिक चैट नहीं खोल सकते", + "cant-report-bug": "बग की रिपोर्ट नहीं कर सकता", + "card-is-blank": "यह कार्ड खाली है", + "card-reseted": "कार्ड रीसेट कर दिया गया है", + "card-unpaired": "कार्ड को वर्तमान डिवाइस से अयुग्मित कर दिया गया है", + "category": "श्रेणी", + "category-title": "श्रेणी शीर्षक", + "change-fleet": "बेड़े को {{fleet}} में बदलें", + "change-logging-enabled": "क्या आप वाकई {{enable}} लॉगिंग करना चाहते हैं?", + "change-pairing": "पेयरिंग कोड बदलें", + "change-pairing-description": "पेयरिंग कोड बदलने से वर्तमान पेयरिंग प्रभावित नहीं होती है। हालांकि, किसी भी नई जोड़ी के लिए नए कोड की आवश्यकता होगी।", + "change-pairing-title": "नया पेयरिंग कोड बनाएं", + "change-passcode": "पासकोड बदलें", + "change-password": "पासवर्ड बदलें", + "change-pin": "6 अंकों का पासकोड बदलें", + "change-puk": "12 अंकों का PUK बदलें", + "change-tip": "टिप बदलें", + "changed-amount-warning": "राशि को {{old}} से {{new}} में बदल दिया गया था", + "changed-asset-warning": "एसेट को {{old}} से बदलकर {{new}} कर दिया गया था", + "chaos-mode": "अराजक अंदाज़", + "chaos-unicorn-day": "अराजकता गेंडा दिवस", + "chaos-unicorn-day-details": "!", + "chat": "बात करना", + "chat-and-transact": "दोस्तों के साथ निजी तौर पर चैट करें और लेन-देन करें", + "chat-is-a-contact": "संपर्क करना", + "chat-is-not-a-contact": "संपर्क नहीं", + "chat-key": "चैट कुंजी", + "chat-key-content": "Status चैट प्रोटोकॉल पर संदेश एन्क्रिप्शन कुंजियों का उपयोग करके भेजे और प्राप्त किए जाते हैं। सार्वजनिक चैट कुंजी वर्णों की एक स्ट्रिंग है जिसे आप दूसरों के साथ साझा करते हैं ताकि वे आपको Status में संदेश भेज सकें।", + "chat-key-title": "चैट कुंजी", + "chat-link-previews": "चैट लिंक पूर्वावलोकन", + "chat-name": "चैट का नाम", + "chat-name-content": "तीन यादृच्छिक शब्द, आपकी चैट कुंजी से एल्गोरिथम के रूप में व्युत्पन्न और चैट में आपके डिफ़ॉल्ट उपनाम के रूप में उपयोग किए जाते हैं। चैट नाम पूरी तरह से अद्वितीय हैं; किसी अन्य उपयोगकर्ता के पास समान तीन शब्द नहीं हो सकते।", + "chat-name-title": "चैट नाम", + "chat-notification-preferences": "अधिसूचना सेटिंग", + "chat-settings": "चैट सेटिंग्स", + "chats": "चैट", + "check-on-block-explorer": "ब्लॉक एक्सप्लोरर पर चेक करें", + "check-on-opensea": "ओपनसी पर चेक करें", + "check-your-recovery-phrase": "अपने बीज वाक्यांश की जाँच करें", + "choose-actions": "क्रिया चुनें", + "choose-authentication-method": "एक प्रमाणीकरण विधि चुनें", + "choose-new-location-for-keystore": "अपनी कीस्टोर फ़ाइल को सहेजने के लिए एक नया स्थान चुनें", + "choose-storage": "भंडारण चुनें", + "clear": "साफ़", + "clear-all": "सभी साफ करें", + "clear-history": "इतिहास मिटा दें", + "clear-history-action": "साफ़", + "clear-history-confirmation": "इतिहास मिटा दें?", + "clear-history-confirmation-content": "क्या आप वाकई इस चैट इतिहास को मिटाना चाहते हैं?", + "clear-history-title": "इतिहास मिटा दें?", + "clear-history?": "इतिहास मिटा दें", + "cleared-chat-description-public": "यहां सन्नाटा पसरा हुआ है। बातचीत शुरू करें या", + "close": "बंद करे", + "close-all": "सब बंद करें", + "close-app-button": "पुष्टि करना", + "close-app-content": "ऐप बंद हो जाएगा और बंद हो जाएगा। जब आप इसे फिर से खोलते हैं, तो चयनित नेटवर्क का उपयोग किया जाएगा", + "close-app-title": "चेतावनी!", + "collectibles-leak-metadata": "आप यहां अपने एनएफटी प्रदर्शित कर सकते हैं। अगर आप ऐसा करते हैं, तो आप अपना वॉलेट और आईपी पता साझा करेंगे", + "command-button-send": "भेजना", + "communities": "समुदाय", + "communities-alpha": "समुदाय (अल्फ़ा)", + "communities-enabled": "समुदाय सक्षम", + "communities-verified": "✓ सत्यापित स्टेटस समुदाय", + "community": "समुदाय", + "community-channel": "सामुदायिक चैनल", + "community-channel-read-requirements-met": "केवल पूरी की गई आवश्यकताओं को देखें", + "community-channel-read-requirements-not-met": "केवल वे आवश्यकताएं देखें जो पूरी नहीं हुई हैं", + "community-channel-write-requirements-met": "देखें और पोस्ट की आवश्यकताएं पूरी हुईं", + "community-channel-write-requirements-not-met": "देखें और पोस्ट आवश्यकताएँ पूरी नहीं हुईं", + "community-color": "सामुदायिक रंग", + "community-color-placeholder": "एक रंग चुनें", + "community-edit-title": "समुदाय संपादित करें", + "community-emoji-thumbnail-title": "थंबनेल", + "community-enter-channel-info": "चैनल में प्रवेश करने से आपके सार्वजनिक पते नोड स्वामी के सामने प्रकट हो जाएंगे", + "community-image-delete": "Empty", + "community-image-pick": "एक छवि चुनें", + "community-image-remove": "हटाना", + "community-image-take": "एक तस्वीर लें", + "community-info": "समुदाय की जानकारी", + "community-info-not-found": "समुदाय की जानकारी नहीं मिली", + "community-invite-title": "आमंत्रित करना", + "community-join-requirements-changed": "टोकन आवश्यकताएं बदल गई हैं", + "community-join-requirements-met": "शामिल होने की आवश्यकताएं पूरी हुईं", + "community-join-requirements-not-met": "शामिल होने की आवश्यकताएं पूरी नहीं हुईं", + "community-join-requirements-tokens-lost": "अब आपके पास आवश्यक टोकन नहीं हैं", + "community-key": "सामुदायिक निजी कुंजी", + "community-key-placeholder": "अपनी समुदाय निजी कुंजी टाइप करें", + "community-link": "सामुदायिक लिंक", + "community-members": { + "one": "{{count}} सदस्य", + "other": "{{count}} सदस्यों" + }, + "community-members-title": "सदस्य", + "community-message-preview": "{{community-name}} में शामिल होने का आमंत्रण", + "community-notification-settings": "अधिसूचना सेटिंग", + "community-private-key": "सामुदायिक निजी कुंजी", + "community-requests-to-join-title": "सदस्यता अनुरोध", + "community-roles": "भूमिकाएँ", + "community-rules": "सामुदायिक नियम", + "community-share-title": "साझा करना", + "community-thumbnail-image": "थंबनेल छवि", + "community-thumbnail-upload": "डालना", + "complete-hardwallet-setup": "यह कार्ड अब लिंक हो गया है। लेन-देन पर हस्ताक्षर करने और अपनी चाबियों को अनलॉक करने के लिए आपको इसकी आवश्यकता है", + "completed": "पुरा होना।", + "confirm": "पुष्टि करना", + "confirm-new-password": "नए पासवर्ड की पुष्टि करें", + "confirm-pairing-code-placeholder": "अपने युग्मन कोड की पुष्टि करें...", + "confirm-password-placeholder": "अपने पासवर्ड की पुष्टि करें...", + "confirmation-request": "पुष्टिकरण के लिए अनुरोध", + "confirmations": "पुष्टिकरण", + "confirmations-helper-text": "जब लेन-देन में 12 पुष्टिकरण होते हैं, तो आप इसे व्यवस्थित मान सकते हैं।", + "connect": "जोड़ना", + "connect-mailserver-content": "{{name}} से कनेक्ट करें?", + "connect-wallet": "वॉलेट कनेक्ट करें", + "connected": "जुड़े हुए", + "connected-to": "से जुड़ा", + "connecting": "कनेक्ट हो रहा है...", + "connecting-requires-login": "दूसरे नेटवर्क से कनेक्ट करने के लिए लॉगिन की आवश्यकता है", + "connection-request": "कनेक्शन अनुरोध", + "connection-status": "संपर्क स्थिति", + "connection-with-the-card-lost": "कार्ड के साथ कनेक्शन\n खो गया है", + "connection-with-the-card-lost-setup-text": "सेटअप फिर से शुरू करने के लिए कार्ड को पकड़ें\n अपने फोन के पीछे और बनाए रखें\n कार्ड से फोन संपर्क", + "connection-with-the-card-lost-text": "आगे बढ़ने के लिए कार्ड को अपने फ़ोन के पीछे पकड़ें", + "contact-code": "चैट कुंजी", + "contact-request": "संपर्क अनुरोध", + "contact-request-accepted": "स्वीकृत ✓", + "contact-request-declined": "अस्वीकृत (x)", + "contact-request-header": "👋 संपर्क अनुरोध", + "contact-request-pending": "लंबित...", + "contact-request-sent": "संपर्क अनुरोध भेजा गया", + "contact-requests": "संपर्क अनुरोध", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "contacts": "संपर्क", + "contacts-descr": "आपके संपर्क यहां दिखाई देंगे। आप संपर्क के रूप में जोड़े गए किसी भी व्यक्ति से Status अपडेट प्राप्त करेंगे", + "contacts-empty": "ईएनएस नामों वाले संपर्क यहां दिखाई देंगे", + "continue": "जारी रखें", + "continue-anyway": "फिर भी जारी रखें", + "contract-address": "अनुबंध का पता", + "contract-interaction": "अनुबंध बातचीत", + "contract-isnt-supported": "अनुबंध समर्थित नहीं है", + "copy-info": "जानकारी कॉपी करें", + "copy-qr": "कॉपी कोड", + "copy-text": "पाठ कॉपी करें", + "copy-to-clipboard": "प्रतिलिपि", + "copy-transaction-hash": "लेन-देन आईडी कॉपी करें", + "cost-fee": "लागत\/शुल्क", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "सृजन करना", + "create-a-pin": "6 अंकों का पासकोड बनाएं", + "create-a-puk": "12 अंकों का PUK बनाएं", + "create-category": "श्रेणी बनाएं", + "create-channel": "एक चैनल बनाएं", + "create-channel-title": "नया चैनल", + "create-community": "एक समुदाय बनाएं", + "create-group-chat": "ग्रुप चैट बनाएं", + "create-multiaccount": "चाबियाँ उत्पन्न करें", + "create-new-key": "नई चाबियां प्राप्त करें", + "create-pin": "6 अंकों का पासकोड बनाएं", + "create-pin-description": "Status को अनलॉक करने और लेन-देन की पुष्टि करने के लिए आपको अपने कार्ड + इस 6-अंकीय पासकोड की आवश्यकता होगी", + "created-group-chat-description": "आपने {{group-name}} बनाया है", + "cryptokitty-name": "क्रिप्टोकिट्टी # {{id}}", + "currency": "मुद्रा", + "currency-display-name-aed": "अमीराती दिरहाम", + "currency-display-name-afn": "अफ़ग़ानिस्तान", + "currency-display-name-ars": "अर्जेंटीना पेसो", + "currency-display-name-aud": "ऑस्ट्रलियन डॉलर", + "currency-display-name-bbd": "बारबाडोस डॉलर", + "currency-display-name-bdt": "बांग्लादेशी टका", + "currency-display-name-bgn": "बल्गेरियाई लेवी", + "currency-display-name-bhd": "बहरीन दिनारी", + "currency-display-name-bnd": "ब्रुनेई दारुस्सलाम डॉलर", + "currency-display-name-bob": "बोलीविया बोलिवियानो", + "currency-display-name-brl": "ब्राजील रियल", + "currency-display-name-btn": "भूटानी न्गुलट्रूम", + "currency-display-name-cad": "कनाडा डॉलर", + "currency-display-name-chf": "स्विट्ज़रलैंड फ़्रैंक", + "currency-display-name-clp": "चिली पेसो", + "currency-display-name-cny": "चीन युआन रॅन्मिन्बी", + "currency-display-name-cop": "कोलंबिया पेसो", + "currency-display-name-crc": "कोस्टा रिका कोलोन", + "currency-display-name-czk": "चेक कोरुना", + "currency-display-name-dkk": "डेनमार्क क्रोन", + "currency-display-name-dop": "डोमिनिकन गणराज्य पेसो", + "currency-display-name-egp": "मिस्र पाउंड", + "currency-display-name-etb": "इथियोपियन बिररू", + "currency-display-name-eur": "यूरो", + "currency-display-name-gbp": "ब्रिटिश पाउंड", + "currency-display-name-gel": "जॉर्जियाई लारिक", + "currency-display-name-ghs": "घाना सेडि", + "currency-display-name-hkd": "हांगकांग का डॉलर", + "currency-display-name-hrk": "क्रोएशिया कुनाक", + "currency-display-name-huf": "हंगरी फ़ोरिंटो", + "currency-display-name-idr": "इंडोनेशिया रुपिया", + "currency-display-name-ils": "इज़राइल शेकेल", + "currency-display-name-inr": "भारतीय रुपया", + "currency-display-name-isk": "आइसलैंड क्रोना", + "currency-display-name-jmd": "जमैका डॉलर", + "currency-display-name-jpy": "जापानी येन", + "currency-display-name-kes": "केन्याई शिलिंग", + "currency-display-name-krw": "कोरिया (दक्षिण) वोन", + "currency-display-name-kwd": "कुवैती दिनारी", + "currency-display-name-kzt": "कज़ाखस्तान टेंगे", + "currency-display-name-lkr": "श्रीलंका रुपया", + "currency-display-name-mad": "मोरक्कन दिरहम", + "currency-display-name-mdl": "मोल्दोवन ल्यू", + "currency-display-name-mur": "मॉरीशस रुपया", + "currency-display-name-mwk": "मलावी क्वाचा", + "currency-display-name-mxn": "मेक्सिको पेसो", + "currency-display-name-myr": "मलेशिया रिंगित", + "currency-display-name-mzn": "मोज़ाम्बिक मेटिकल", + "currency-display-name-nad": "नामीबिया डॉलर", + "currency-display-name-ngn": "नाइजीरिया नायरा", + "currency-display-name-nok": "नॉर्वे क्रोन", + "currency-display-name-npr": "नेपाल रुपया", + "currency-display-name-nzd": "न्यूज़ीलैंड डॉलर", + "currency-display-name-omr": "ओमान रियाल", + "currency-display-name-pen": "पेरू सोलो", + "currency-display-name-pgk": "पापुआ न्यू गिनी किना", + "currency-display-name-php": "फिलीपींस पेसो", + "currency-display-name-pkr": "पाकिस्तानी रुपया", + "currency-display-name-pln": "पोलिश ज़्लॉटी", + "currency-display-name-pyg": "पराग्वे गुआरानी", + "currency-display-name-qar": "कतर रियाल", + "currency-display-name-ron": "रोमानिया लेउ", + "currency-display-name-rsd": "सर्बिया दिनारी", + "currency-display-name-rub": "रूस रूबल", + "currency-display-name-sar": "सऊदी अरब रियाल", + "currency-display-name-sek": "स्वीडन क्रोना", + "currency-display-name-sgd": "सिंगापुर का डॉलर", + "currency-display-name-thb": "थाईलैंड बहतो", + "currency-display-name-try": "तुर्की लीरास", + "currency-display-name-ttd": "त्रिनिदाद और टोबैगो डॉलर", + "currency-display-name-twd": "ताइवान नया डॉलर", + "currency-display-name-tzs": "तंजानिया शिलिंग", + "currency-display-name-uah": "यूक्रेन रिव्निया", + "currency-display-name-ugx": "युगांडा शिलिंग", + "currency-display-name-usd": "यूनाइटेड स्टेट का डॉलर", + "currency-display-name-uyu": "उरुग्वे पेसो", + "currency-display-name-vef": "वेनेज़ुएला बोलिवार", + "currency-display-name-vnd": "वियतनाम डोंग", + "currency-display-name-zar": "दक्षिण अफ्रीका रैंड", + "current": "वर्तमान", + "current-average": "वर्तमान औसत", + "current-average-tip": "वर्तमान औसत टिप", + "current-base": "वर्तमान आधार", + "current-base-fee": "वर्तमान आधार शुल्क", + "current-minimum-tip": "वर्तमान न्यूनतम टिप", + "current-network": "वर्तमान नेटवर्क", + "current-password": "वर्तमान पासवर्ड", + "current-pin": "6 अंकों का पासकोड दर्ज करें", + "current-pin-description": "आगे बढ़ने के लिए अपना 6 अंकों का पासकोड दर्ज करें", + "custom": "रिवाज़", + "custom-networks": "कस्टम नेटवर्क", + "custom-node": "आप कस्टम RPC समापन बिंदु का उपयोग कर रहे हैं। आपका स्थानीय स्थानान्तरण इतिहास अधूरा हो सकता है।", + "custom-seed-phrase": "अमान्य बीज वाक्यांश", + "custom-seed-phrase-text-1": "यह बीज वाक्यांश हमारे समर्थित शब्दकोश से मेल नहीं खाता। गलत वर्तनी वाले शब्दों की जाँच करें।", + "dapp": "ऐप", + "dapp-starter-pack-accept": "स्वीकार करें और खोलें", + "dapp-starter-pack-description": "शुरू करने के लिए यहां कुछ क्रिप्टो है! स्टिकर, एक ENS नाम प्राप्त करने के लिए इसका उपयोग करें और dapps आज़माएं", + "dapp-starter-pack-title": "स्टार्टर पैक", + "dapp-would-like-to-connect-wallet": "से जुड़ना चाहते हैं", + "dapps": "ऐप्स", + "dapps-permissions": "डीएपी अनुमतियाँ", + "dark": "अंधेरा", + "data": "डेटा", + "data-collected": "आकड़ों को एकत्र किया", + "data-collected-subtitle": "नीचे दी गई तालिका सटीक डेटा दिखाती है जो संग्रहीत और भेजा जाएगा। कोई संवेदनशील डेटा नहीं भेजा जाता है यह सुनिश्चित करने के लिए डेटा को सार्वजनिक नियमों के विरुद्ध मान्य किया जाता है। विश्वास मत करो, सत्यापित करो।", + "data-syncing": "डेटा सिंकिंग", + "database-reset-content": "चैट, संपर्क और सेटिंग्स हटा दी गई हैं। आप अपने खाते का उपयोग अपने कीकार्ड के साथ कर सकते हैं", + "database-reset-title": "डेटाबेस रीसेट", + "database-reset-warning": "डेटाबेस रीसेट हो जाएगा। चैट, संपर्क और सेटिंग हटा दी जाएंगी", + "datetime-ago": "पहले", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "day", + "other": "days" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hour", + "other": "hours" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minute", + "other": "minutes" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "second", + "other": "seconds" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "आज", + "datetime-yesterday": "कल", + "decimals": "दशमलव", + "decline": "पतन", + "declined": "इंकार कर दिया", + "decryption-failed-content": "आपका डेटा डिक्रिप्ट करने में एक त्रुटि हुई। आपको अपने पुराने डेटा को मिटाने और एक नया खाता बनाने की आवश्यकता हो सकती है। मिटाने के लिए \"लागू करें\" पर टैप करें या फिर से कोशिश करने के लिए \"रद्द करें\" पर टैप करें", + "default": "चूक", + "default-assets": "डिफ़ॉल्ट ERC20 और ERC721", + "default-sync-period": "के लिए सिंक इतिहास", + "delete": "मिटाना", + "delete-account": "खाता हटा दो", + "delete-and-leave-group": "समूह हटाएं और छोड़ें", + "delete-bootnode": "बूटनोड हटाएं", + "delete-bootnode-are-you-sure": "क्या आप वाकई इस बूटनोड को हटाना चाहते हैं?", + "delete-bootnode-title": "बूटनोड हटाएं", + "delete-category-confirmation": "क्या आप वाकई इस श्रेणी को हटाना चाहते हैं?", + "close-chat": "चैट हटाएं", + "close-chat-confirmation": "क्या आप वाकई इस चैट को हटाना चाहते हैं?", + "delete-confirmation": "मिटाना?", + "delete-for-everyone": "सभी के लिए हटाएं", + "delete-for-me": "मेरे लिए हटाएं", + "delete-keys-keycard": "Keycard से कुंजियाँ हटाएं", + "delete-mailserver": "Status नोड हटाएं", + "delete-mailserver-are-you-sure": "क्या आप वाकई इस Status नोड को हटाना चाहते हैं?", + "delete-mailserver-title": "Status नोड हटाएं", + "delete-message": "संदेश को हटाएं", + "delete-my-account": "मेरा एकाउंट हटा दो", + "delete-my-profile": "मेरी प्रोफ़ाइल हटाएं", + "delete-network-confirmation": "क्या आप वाकई इस नेटवर्क को हटाना चाहते हैं?", + "delete-network-error": "कृपया इसे हटाने से पहले किसी दूसरे नेटवर्क से कनेक्ट करें", + "delete-network-title": "नेटवर्क मिटाएं?", + "delete-node": "नोड हटाएँ", + "delete-node-are-you-sure": "क्या आप वाकई इस श्रेणी को हटाना चाहते हैं?", + "delete-node-title": "नोड हटाएँ", + "delete-profile": "प्रोफ़ाइल हटाएं", + "delete-profile-warning": "चेतावनी: यदि आपने अपना बीज वाक्यांश नहीं लिखा है, तो आप अपनी प्रोफ़ाइल हटाने के बाद अपने धन तक पहुंच खो देंगे", + "deny": "मना करना", + "derivation-path": "व्युत्पत्ति पथ", + "describe-channel": "चैनल का वर्णन करें", + "description": "विवरण", + "dev-mode": "विकास मोड", + "dev-mode-settings": "विकास मोड सेटिंग्स", + "device-syncing": "डिवाइस सिंकिंग", + "devices": "उपकरण", + "disable": "अक्षम करना", + "disable-all": "सबको सक्षम कर दो", + "disable-later-in-settings": "आप इसे बाद में सेटिंग में अक्षम कर सकते हैं", + "disabled": "अक्षम", + "disconnect": "डिस्कनेक्ट", + "disconnected": "ऑफ़लाइन चैट करें", + "discover": "खोज करना", + "discover-communities": "समुदायों की खोज करें", + "dismiss": "नकार देना", + "display-collectibles": "संग्रहणीय प्रदर्शित करें", + "done": "पूर्ण", + "dont-ask": "मुझसे दोबारा मत पूछो", + "edit": "संपादन करना", + "edit-categories": "श्रेणियाँ संपादित करें", + "edit-channel-title": "चैनल संपादित करें", + "edit-chats": "चैट संपादित करें", + "edit-community": "समुदाय संपादित करें", + "edit-favourite": "पसंदीदा संपादित करें", + "edit-group": "समूह संपादित करें", + "edit-message": "संदेश संपादित करें", + "edit-name-and-image": "नाम और छवि संपादित करें", + "edit-name-image": "नाम और छवि संपादित करें", + "edit-profile": "प्रोफ़ाइल संपादित करें", + "edited": "संपादित", + "editing-message": "संदेश संपादित करना", + "empty-activity-center": "आपकी चैट सूचनाएं\n यहाँ दिखाई देगा", + "empty-chat-description": "कोई संदेश नहीं है\n इस चैट में अभी तक", + "empty-chat-description-community": "यहाँ पिछले {{quiet-hours}} ।", + "empty-chat-description-one-to-one": "आपके द्वारा यहां भेजे गए कोई भी संदेश एन्क्रिप्ट किए गए हैं और केवल आपके द्वारा पढ़े जा सकते हैं और", + "empty-chat-description-public": "यहाँ पिछले {{quiet-hours}} । बातचीत शुरू करें या", + "empty-chat-description-public-share-this": "इस चैट को साझा करें।", + "empty-keycard-required": "एक खाली कीकार्ड की आवश्यकता है", + "empty-pending-invitations-descr": "जो लोग समूह में शामिल होना चाहते हैं\n एक आमंत्रण लिंक के माध्यम से यहां दिखाई देगा", + "empty-tab": "खाली टैब", + "enable": "सक्षम", + "enable-all": "सभी को सक्षम करें", + "enable-link-previews": "चैट में लिंक पूर्वावलोकन सक्षम करें?", + "encrypt-with-password": "पासवर्ड से एन्क्रिप्ट करें", + "ens-10-SNT": "10 एसएनटी", + "ens-add-username": "उपयोगकर्ता नाम जोड़ें", + "ens-agree-to": "सहमत होना", + "ens-chat-settings": "चैट सेटिंग्स", + "ens-custom-domain": "कस्टम डोमेन", + "ens-custom-username-hints": "कस्टम डोमेन जैसे username.domain.eth . सहित संपूर्ण उपयोगकर्ता नाम टाइप करें", + "ens-custom-username-taken": "उपयोगकर्ता नाम आपका नहीं है :(", + "ens-deposit": "जमा करना", + "ens-dismiss-message": "खारिज करने के लिए यहां क्लिक करें", + "ens-displayed-with": "आपके संदेश दूसरों को प्रदर्शित होते हैं", + "ens-get-name": "एक सार्वभौमिक उपयोगकर्ता नाम प्राप्त करें", + "ens-got-it": "ठीक मिल गया", + "ens-locked": "उपयोगकर्ता नाम लॉक किया गया। आप इसे {{date}} तक रिलीज़ नहीं कर पाएंगे", + "ens-name-content": "आपकी चैट कुंजी के लिए कस्टम उपनाम जिसे आप इथेरियम नाम सेवा का उपयोग करके पंजीकृत कर सकते हैं। ENS नाम विकेंद्रीकृत उपयोगकर्ता नाम हैं।", + "ens-name-not-found": "ईएनएस नाम हल नहीं कर सकता", + "ens-name-title": "ईएनएस नाम", + "ens-network-restriction": "केवल मेननेट पर उपलब्ध है", + "ens-no-usernames": "आपका कोई उपयोगकर्ता नाम जुड़ा नहीं है", + "ens-powered-by": "एथेरियम नाम सेवाओं द्वारा संचालित", + "ens-primary-username": "प्राथमिक उपयोगकर्ता नाम", + "ens-register": "पंजीकरण करवाना", + "ens-registration-failed": "उपयोगकर्ता नाम पंजीकृत करने के लिए, कृपया पुन: प्रयास करें।", + "ens-registration-failed-title": "लेन - देन विफल", + "ens-registration-failure": "पंजीकरण विफल", + "ens-registration-in-progress": "पंजीकरण जारी है...", + "ens-release-username": "उपयोगकर्ता नाम जारी करें", + "ens-remove-hints": "हटाने से उपयोगकर्ता नाम आपकी कुंजी से अलग हो जाएगा.", + "ens-remove-username": "उपयोगकर्ता नाम हटाएं", + "ens-saved": "अब आपकी चैट कुंजी से कनेक्ट हो गया है और Status में उपयोग किया जा सकता है।", + "ens-saved-title": "उपयोगकर्ता नाम जोड़ा गया", + "ens-show-username": "चैट में मेरा ईएनएस उपयोगकर्ता नाम दिखाएं", + "ens-terms-header": "नाम पंजीकरण की शर्तें", + "ens-terms-point-1": "फंड 1 साल के लिए जमा किया जाता है। आपका SNT लॉक हो जाएगा, लेकिन खर्च नहीं होगा।", + "ens-terms-point-10": "0x000000000C2E074eC69A0dFb2997BA6C7d2e1e (ईएनएस रजिस्ट्री)।", + "ens-terms-point-2": "1 वर्ष के बाद, आप नाम जारी कर सकते हैं और अपनी जमा राशि वापस प्राप्त कर सकते हैं, या नाम रखने के लिए कोई कार्रवाई नहीं कर सकते हैं।", + "ens-terms-point-3": "यदि अनुबंध की शर्तें बदल जाती हैं - उदाहरण के लिए Status अनुबंध को अपग्रेड करती है - उपयोगकर्ता को उपयोगकर्ता नाम जारी करने का अधिकार है, भले ही समय की परवाह किए बिना।", + "ens-terms-point-4": "अनुबंध नियंत्रक आपके जमा किए गए धन तक नहीं पहुंच सकता है। उन्हें केवल उस पते पर वापस ले जाया जा सकता है जिसने उन्हें भेजा था।", + "ens-terms-point-5": "आपका पता (पते) सार्वजनिक रूप से आपके ईएनएस नाम से जुड़ा होगा।", + "ens-terms-point-6": "उपयोगकर्ता नाम Stateofus.eth के उपडोमेन नोड्स के रूप में बनाए जाते हैं और ENS स्मार्ट अनुबंध शर्तों के अधीन होते हैं।", + "ens-terms-point-7": "आप अपनी ओर से एसएनटी को स्थानांतरित करने के लिए अनुबंध को अधिकृत करते हैं। यह तभी हो सकता है जब आप हस्तांतरण को अधिकृत करने के लिए किसी लेन-देन को स्वीकृति देते हैं।", + "ens-terms-point-8": "पते पर स्मार्ट अनुबंध तर्क द्वारा इन शर्तों की गारंटी दी जाती है:", + "ens-terms-point-9": "{{address}} (Status उपयोगकर्ता नाम रजिस्ट्रार)", + "ens-terms-registration": "नाम पंजीकरण की शर्तें।", + "ens-test-message": "अरे", + "ens-transaction-pending": "लेन-देन लंबित...", + "ens-understand": "मैं समझता\/समझती हूं कि मेरे वॉलेट का पता सार्वजनिक रूप से मेरे उपयोगकर्ता नाम से जुड़ा होगा।", + "ens-username": "ईएनएस उपयोगकर्ता नाम", + "ens-username-already-added": "उपयोगकर्ता नाम पहले से ही आपकी चैट कुंजी से जुड़ा हुआ है और Status के अंदर उपयोग किया जा सकता है।", + "ens-username-available": "उपयोगकर्ता नाम उपलब्ध है!", + "ens-username-connected": "यह उपयोगकर्ता नाम आपके स्वामित्व में है और आपकी चैट कुंजी से जुड़ा है।", + "ens-username-connected-continue": "'चैट में मेरा ईएनएस उपयोगकर्ता नाम दिखाएं' सेट करना जारी रखें।", + "ens-username-connected-with-different-key": "जारी रखने के लिए उपयोगकर्ता नाम को आपकी वर्तमान चैट कुंजी से जोड़ने के लिए लेन-देन की आवश्यकता होगी।", + "ens-username-connection-confirmation": "लेन-देन पूरा होने के बाद {{username}} कनेक्ट हो जाएगा।", + "ens-username-hints": "कम से कम 4 अक्षर। केवल लैटिन अक्षर, संख्याएं और लोअरकेस।", + "ens-username-invalid": "सिर्फ अक्षर और अंक।", + "ens-username-invalid-name-warning": "आपके एनएनएस नामों में से एक की पंजीकरण प्रक्रिया अमान्य स्थिति में समाप्त हो गई है। वॉलेट लेनदेन के लिए नाम का उपयोग न करें और support@status.im . पर हमारे समर्थन तक पहुंचें", + "ens-username-owned": "उपयोगकर्ता नाम आपके स्वामित्व में है।", + "ens-username-owned-continue": "जारी रखने से यह उपयोगकर्ता नाम आपकी चैट कुंजी से कनेक्ट हो जाएगा।", + "ens-username-registration-confirmation": "अच्छा! लेन-देन पूरा होने के बाद आप {{username}} के स्वामी हैं।", + "ens-username-registration-invalid": "चेतावनी! अमान्य स्थिति में पंजीकरण प्रक्रिया समाप्त हो गई है। वॉलेट लेनदेन के लिए नाम का उपयोग न करें और support@status.im . पर हमारे समर्थन तक पहुंचें", + "ens-username-taken": "उपयोगकर्ता नाम पहले ही लिया जा चुका है :(", + "ens-username-you-can-follow-progress": "आप अपने वॉलेट के लेन-देन इतिहास अनुभाग में प्रगति का अनुसरण कर सकते हैं।", + "ens-usernames": "ईएनएस उपयोगकर्ता नाम", + "ens-usernames-details": "अन्य उपयोगकर्ताओं द्वारा आसानी से पहचाने जाने के लिए एक सार्वभौमिक उपयोगकर्ता नाम पंजीकृत करें", + "ens-want-custom-domain": "मेरे पास दूसरे डोमेन पर एक नाम है", + "ens-want-domain": "मुझे एक Stateofus.eth डोमेन चाहिए", + "ens-welcome-hints": "ENS नाम उन पागल-लंबे पतों को अद्वितीय उपयोगकर्ता नामों में बदल देते हैं।", + "ens-welcome-point-customize": "एक ईएनएस नाम चैट में आपके यादृच्छिक 3-शब्द नाम को बदल सकता है। {{name}} के बजाय @yourname बनें।", + "ens-welcome-point-customize-title": "अपना चैट नाम अनुकूलित करें", + "ens-welcome-point-receive": "अन्य लोग आपको एक आसान चरण में चैट के माध्यम से धनराशि भेज सकते हैं।", + "ens-welcome-point-receive-title": "चैट में लेनदेन प्राप्त करें", + "ens-welcome-point-register": "नाम हमेशा कायम रखने के लिए एक बार रजिस्टर करें। 1 वर्ष के बाद आप नाम जारी कर सकते हैं और अपना एसएनटी वापस प्राप्त कर सकते हैं।", + "ens-welcome-point-register-title": "10 एसएनटी रजिस्टर करने के लिए", + "ens-welcome-point-simplify": "आप अपने हेक्साडेसिमल हैश (0x...) के बजाय अपने साझा करने में आसान ईएनएस नाम पर धन प्राप्त कर सकते हैं।", + "ens-welcome-point-simplify-title": "अपने ईटीएच पते को सरल बनाएं", + "ens-welcome-point-verify": "आप अगले चरणों में अपने स्वामित्व वाले किसी भी उपयोगकर्ता नाम को सत्यापित और जोड़ सकते हैं।", + "ens-welcome-point-verify-title": "पहले से ही एक उपयोगकर्ता नाम के मालिक हैं?", + "ens-your-username": "तुम्हारा प्रयोगकर्ती नाम", + "ens-your-usernames": "आपके उपयोगकर्ता नाम", + "ens-your-your-name": "आपका ईएनएस नाम", + "enter-12-words": "अपने बीज वाक्यांश के 12 शब्द दर्ज करें, एकल रिक्त स्थान से अलग करें", + "enter-a-private-key": "एक निजी कुंजी दर्ज करें", + "enter-a-seed-phrase": "बीज वाक्यांश दर्ज करें", + "enter-address": "पता दर्ज करें", + "enter-channel": "चैनल दर्ज करें", + "enter-contact-code": "ENS (vitalik94) या चैट कुंजी (0x04…)", + "enter-pair-code": "अपना पेयरिंग कोड दर्ज करें", + "enter-pair-code-description": "पेयरिंग कोड पहले से युग्मित Status क्लाइंट से सेट किया जा सकता है", + "enter-password": "पास वर्ड दर्ज करें", + "enter-password-migration-prompt": "संपर्क, चैट और सेटिंग को अपनी कुंजियों के साथ स्थानांतरित करने के लिए अपना पासवर्ड दर्ज करें", + "enter-pin": "6 अंकों का पासकोड दर्ज करें", + "enter-puk-code": "PUK कोड दर्ज करें", + "enter-puk-code-description": "6 अंकों का पासकोड ब्लॉक कर दिया गया है।\n पासकोड को अनवरोधित करने के लिए कृपया PUK कोड दर्ज करें।", + "enter-recipient-address-or-username": "प्राप्तकर्ता का पता या उपयोगकर्ता नाम दर्ज करें", + "enter-seed-phrase": "बीज वाक्यांश दर्ज करें", + "enter-url": "यू आर एल दर्ज करो", + "enter-user-pk": "उपयोगकर्ता सार्वजनिक कुंजी दर्ज करें", + "enter-watch-account-address": "एक क्यूआर कोड स्कैन करें\n या\n देखने के लिए पता दर्ज करें", + "enter-word": "शब्द दर्ज करें", + "enter-your-code": "अपना 6 अंकों का पासकोड दर्ज करें", + "enter-your-password": "अपना पासवर्ड डालें", + "error": "त्रुटि", + "error-unable-to-get-balance": "संतुलन प्राप्त करने में असमर्थ", + "error-unable-to-get-prices": "मुद्रा रूपांतरण त्रुटि। पुन: प्रयास करने के लिए अपनी स्क्रीन रीफ़्रेश करें।", + "error-unable-to-get-token-balance": "टोकन बैलेंस प्राप्त करने में असमर्थ", + "errors": "त्रुटियाँ", + "eth": "ईटीएच", + "ethereum-address": "एथेरियम पता", + "ethereum-node-started-incorrectly-description": "एथेरियम नोड को गलत कॉन्फ़िगरेशन के साथ शुरू किया गया था, उस स्थिति से उबरने के लिए एप्लिकेशन को रोक दिया जाएगा। कॉन्फ़िगर किया गया नेटवर्क आईडी = {{network-id}} , वास्तविक = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "एथेरियम नोड गलत तरीके से शुरू हुआ", + "etherscan-lookup": "इथरस्कैन पर देखें", + "everyone": "हर कोई", + "expand-all": "सभी का विस्तार करें", + "export-account": "निर्यात खाता", + "export-key": "निजी कुंजी निर्यात करें", + "external-link": "बाहरी लिंक", + "external-storage-denied": "बाहरी संग्रहण तक पहुंच अस्वीकार कर दी गई है", + "failed": "अनुत्तीर्ण होना", + "faq": "अक्सर पूछे जाने वाले प्रश्नों", + "fast": "तेज", + "favourite": "पसंदीदा", + "favourite-description": "आपकी पसंदीदा वेबसाइट यहां दिखाई देंगी", + "favourites": "पसंदीदा", + "favourites-empty": "पसंदीदा में जोड़े गए पते यहां दिखाई देंगे", + "featured": "विशेष रुप से प्रदर्शित", + "fee-cap": "शुल्क सीमा", + "fee-explanation": "लेन-देन के लिए अधिकतम समग्र मूल्य। यदि ब्लॉक आधार शुल्क इससे अधिक है, तो इसे निम्न आधार शुल्क के साथ निम्नलिखित ब्लॉक में शामिल किया जाएगा।", + "fee-options": "सुझाए गए शुल्क विकल्प☺", + "fetch-community": "समुदाय लायें", + "fetch-messages": "संदेश प्राप्त करें", + "fetch-timeline": "लायें", + "fetching-community": "समुदाय लाया जा रहा है...", + "find": "खोज", + "finish": "खत्म करना", + "finishing-card-setup": "फिनिशिंग कार्ड सेटअप", + "fleet": "बेड़ा", + "fleet-settings": "बेड़े सेटिंग्स", + "follow": "अनुसरण", + "follow-your-interests": "सार्वजनिक चैट में शामिल हों और नए लोगों से मिलें", + "free": "मुक्त", + "from": "से", + "gas-amount-limit": "गैस राशि सीमा", + "gas-limit": "गैस सीमा", + "gas-price": "गैस की कीमत", + "gas-used": "इस्तेमाल की जाने वाली गैस", + "gated": "गेटेड", + "generate-a-key": "चाबियाँ उत्पन्न करें", + "generate-a-new-account": "एक खाता उत्पन्न करें", + "generate-a-new-key": "एक नई कुंजी उत्पन्न करें", + "generate-account": "चाबियाँ उत्पन्न करें", + "generate-an-account": "एक खाता उत्पन्न करें", + "generate-new-key": "चाबियाँ उत्पन्न करें", + "generating-codes-for-pairing": "> कार्ड में उत्पाद सॉफ्टवेयर डाउनलोड करना\n > अनलॉकिंग और पेयरिंग कोड जनरेट करना", + "generating-keys": "कुंजियाँ बनाई जा रही हैं...", + "generating-mnemonic": "बीज वाक्यांश उत्पन्न करना", + "get-a-keycard": "एक कीकार्ड प्राप्त करें", + "get-started": "शुरू हो जाओ", + "get-status-at": "http:\/\/status.im . पर Status प्राप्त करें", + "get-stickers": "स्टिकर प्राप्त करें", + "gif": "जीआईएफ", + "give-a-short-description": "संक्षिप्त विवरण दें", + "give-a-short-description-community": "इसका संक्षिप्त विवरण दें", + "give-permissions-camera": "अनुमति दे\n कैमरा एक्सेस करने के लिए", + "glossary": "शब्दकोष", + "go-to-settings": "सेटिंग्स में जाओ...", + "got-it": "समझ गया", + "grant-face-id-permissions": "आवश्यक फेस आईडी अनुमति देने के लिए, कृपया अपने सिस्टम सेटिंग्स पर जाएं और सुनिश्चित करें कि Status > फेस आईडी चुना गया है", + "group-chat": "समूह बातचीत", + "group-chat-admin": "व्यवस्थापक", + "group-chat-admin-added": "** {{member}} ** को व्यवस्थापक बना दिया गया है", + "group-chat-all-contacts-invited": "आपके सभी संपर्क पहले से ही समूह में हैं", + "group-chat-created": "** {{member}} ** ने समूह बनाया ** {{name}} **", + "group-chat-decline-invitation": "आमंत्रण अस्वीकार करें", + "group-chat-member-added": "** {{member}} ** को आमंत्रित किया गया है", + "group-chat-member-joined": "** {{member}} ** समूह में शामिल हो गया है", + "group-chat-member-removed": "** {{member}} ** ने समूह छोड़ दिया", + "group-chat-members-count": "{{selected}} \/ {{max}} सदस्य", + "group-chat-name-changed": "** {{member}} ** ने समूह का नाम बदलकर ** {{name}} ** कर दिया", + "group-chat-no-contacts": "आपके पास अभी तक कोई संपर्क नहीं है।\n चैटिंग शुरू करने के लिए अपने दोस्तों को आमंत्रित करें", + "group-info": "समूह की जानकारी", + "group-invite": "समूह आमंत्रण", + "group-invite-link": "समूह आमंत्रण लिंक", + "group-membership-request": "समूह सदस्यता अनुरोध", + "groups": "समूहों", + "gwei": "ग्वि", + "has-permissions": "एक्सेस करने की अनुमति है", + "hash": "हैश", + "help": "मदद", + "help-capitalized": "मदद", + "help-center": "सहायता केंद्र", + "help-improve-status": "स्टेटस सुधारने में मदद करें", + "hide": "छुपाना", + "hide-content-when-switching-apps": "स्क्रीनशॉट को ब्लॉक करें", + "hide-content-when-switching-apps-ios": "पूर्वावलोकन छुपाएं", + "history": "इतिहास", + "history-nodes": "स्टेटस नोड्स", + "hold-card": "कार्ड को पीछे से पकड़ें\n आपके फोन का", + "home": "घर", + "hooks": "हुक्स", + "how-it-works": "यह काम किस प्रकार करता है", + "http-gateway-error": "ओह, अनुरोध विफल!", + "identifier": "पहचानकर्ता", + "identity-verification": "पहचान की जाँच", + "identity-verification-request": "पहचान की जाँच", + "image": "छवि", + "image-remove-current": "वर्तमान तस्वीर हटा दे", + "image-source-gallery": "गैलरी से चुनें", + "image-source-make-photo": "कब्ज़ा करना", + "image-source-title": "तस्वीर संपादित करें", + "import": "आयात", + "import-community": "एक समुदाय आयात करें", + "import-community-title": "एक समुदाय आयात करें", + "in-contacts": "संपर्कों में", + "include": "शामिल करना", + "incoming": "आने वाली", + "incoming-transaction": "आवक लेनदेन", + "incorrect-code": [ + "एसटीआर", + "क्षमा करें, कोड गलत था, कृपया इसे फिर से दर्ज करें" + ], + "increase-gas": "गैस बढ़ाएँ", + "initialization": "प्रारंभ", + "install": "स्थापित करें", + "insufficient-balance-to-cover-fee": "लेन-देन शुल्क को कवर करने के लिए पर्याप्त शेष राशि नहीं", + "intro-message1": "Status में आपका स्वागत है!\n अपना पासवर्ड सेट करने और आरंभ करने के लिए इस संदेश को टैप करें।", + "intro-privacy-policy-note1": "Status आपके व्यक्तिगत डेटा को एकत्र या लाभ नहीं करता है। जारी रखकर, आप इससे सहमत हैं", + "intro-privacy-policy-note2": "गोपनीयता नीति", + "intro-text": "Status विकेंद्रीकृत वेब के लिए आपका प्रवेश द्वार है", + "intro-text1": "पीयर-टू-पीयर, एन्क्रिप्टेड नेटवर्क पर चैट करें जहां संदेशों को सेंसर या हैक नहीं किया जा सकता है", + "intro-text2": "दुनिया में कहीं भी डिजिटल संपत्ति भेजें और प्राप्त करें—किसी बैंक खाते की आवश्यकता नहीं है", + "intro-text3": "ऐसे गेम, एक्सचेंज और सोशल नेटवर्क एक्सप्लोर करें जहां आप अकेले अपने डेटा के मालिक हैं", + "intro-title1": "वास्तव में निजी संचार", + "intro-title2": "सुरक्षित क्रिप्टो वॉलेट", + "intro-title3": "विकेंद्रीकृत ऐप्स", + "intro-wizard-text1": "चाबियों का एक सेट आपके खाते को नियंत्रित करता है। आपकी चाबियां आपके फ़ोन पर रहती हैं, इसलिए केवल आप ही उनका उपयोग कर सकते हैं", + "intro-wizard-text2": "एक कुंजी चैट के लिए है। यह एक पठनीय नाम के साथ आता है जिसे बदला नहीं जा सकता।", + "intro-wizard-text3": "यदि आपके पास एक कीकार्ड है, तो बेहतर सुरक्षा के लिए अपनी चाबियां वहां संगृहीत करें।", + "intro-wizard-text4": "अपनी कुंजियों को सुरक्षित और एन्क्रिप्ट करें", + "intro-wizard-text6": "Status आपको नए संदेशों के बारे में सूचित करेगी। आप अपनी अधिसूचना प्राथमिकताओं को बाद में सेटिंग में संपादित कर सकते हैं", + "intro-wizard-title-alt4": "एक पासवर्ड बनाएं", + "intro-wizard-title-alt5": "अपने पासवर्ड की पुष्टि करें", + "intro-wizard-title1": "अपनी चाबियां प्राप्त करें", + "intro-wizard-title2": "एक चैट नाम चुनें", + "intro-wizard-title3": "कुंजी भंडारण चुनें", + "intro-wizard-title4": "6 अंकों का पासकोड बनाएं", + "intro-wizard-title5": "पासकोड की पुष्टि करें", + "intro-wizard-title6": "सूचनाएं सक्षम करें", + "introduce-yourself": "एक संक्षिप्त संदेश के साथ अपना परिचय दें", + "invalid-address-qr-code": "स्कैन किए गए क्यूआर कोड में कोई मान्य पता नहीं है", + "invalid-format": "अवैध प्रारूप\n {{format}} होना चाहिए", + "invalid-key-confirm": "आवेदन करना", + "invalid-key-content": "फ़ाइल दूषित होने के कारण डेटाबेस को एन्क्रिप्ट नहीं किया जा सकता है। आपके फंड और चैट कुंजी सुरक्षित हैं। अन्य डेटा, जैसे आपकी चैट और संपर्क, को पुनर्स्थापित नहीं किया जा सकता है। “ {{erase-multiaccounts-data-button-text}} ” बटन, अन्य सभी डेटा को हटा देगा और आपको अपने फंड तक पहुंचने और संदेश भेजने की अनुमति देगा", + "invalid-number": "अमान्य संख्या", + "invalid-pairing-password": "अमान्य युग्मन पासवर्ड", + "invalid-public-chat-topic": "अमान्य सार्वजनिक चैट विषय", + "invalid-range": "अमान्य प्रारूप, {{min}} और {{max}} के बीच होना चाहिए", + "invalid-username-or-key": "अमान्य उपयोगकर्ता नाम या चैट कुंजी", + "invite": "आमंत्रित करें", + "invite-button": "आमंत्रित करना", + "invite-chat-accept": "स्वीकार करना", + "invite-chat-accept-join": "स्वीकार करें और जुड़ें", + "invite-chat-intro": "स्टेटस में शामिल होने के लिए आपको किसी मित्र द्वारा भेजा गया था। शुरू करने के लिए यहां कुछ क्रिप्टो है! ENS नाम पंजीकृत करने या स्टिकर पैक खरीदने के लिए इसका उपयोग करें", + "invite-chat-name": "मित्र रेफरल", + "invite-chat-pending": "लंबित", + "invite-chat-rule": "स्वीकार करने से आपके मित्र को क्रिप्टो रेफरल बोनस भी मिलेगा", + "invite-chat-starter-pack": "स्टार्टर पैक", + "invite-contacts": "संपर्क सूची से लोगों को आमंत्रित करें", + "invite-friends": "मित्रों को आमंत्रित करें", + "invite-friends-to-status": "दोस्तों को स्टेटस पर आमंत्रित करें", + "invite-instruction-fifth": "आप अपने रेफ़रल बोनस को कभी भी भुनाना चुन सकते हैं।", + "invite-instruction-first": "स्टेटस डाउनलोड करने और इसमें शामिल होने के लिए आप अपने मित्र को एक अनूठा आमंत्रण लिंक भेजते हैं", + "invite-instruction-fourth": "आप अपना रेफरल बोनस और अपने मित्र को स्टार्टर पैक प्राप्त करते हैं", + "invite-instruction-second": "आपका मित्र स्टेटस डाउनलोड करता है और एक खाता बनाता है (Android पर)", + "invite-instruction-third": "आपके मित्र के साथ एक चैट शुरू की जाती है, जहां वे आपके रेफ़रल की पुष्टि करते हैं", + "invite-people": "लोगों को आमंत्रित करो", + "invite-privacy-policy-public": "आपने रेफ़रल लिंक के माध्यम से Status स्थापित किया है। इस चैट में शामिल होकर आप अपने रेफ़रलकर्ता को श्रेय देते हैं और इससे सहमत होते हैं", + "invite-privacy-policy1": "स्वीकार करके आप रेफरल कार्यक्रम से सहमत होते हैं", + "invite-privacy-policy2": "नियम और शर्तें।", + "invite-public-chat-home": "रेफरल आमंत्रण", + "invite-public-chat-intro": "शुरू करने के लिए यहां कुछ क्रिप्टो है! ENS नाम पंजीकृत करने या स्टिकर पैक खरीदने के लिए इसका उपयोग करें", + "invite-receive-account": "अपना रेफ़रल बोनस प्राप्त करने के लिए खाता", + "invite-reward": "आपके द्वारा आमंत्रित प्रत्येक मित्र के लिए क्रिप्टो कमाएँ!", + "invite-reward-friend": "दोस्त:", + "invite-reward-friend-description": "आरंभ करने के लिए आपके मित्र को कुछ {{reward}} से युक्त एक स्टार्टर पैक प्राप्त होगा", + "invite-reward-friend-name": "स्टार्टर पैक", + "invite-reward-you": "आप:", + "invite-reward-you-description": "किसी मित्र को आमंत्रित करें और रेफ़रल बोनस के रूप में {{reward}} प्राप्त करें। स्टिकर, एक ENS नाम प्राप्त करने के लिए इसका उपयोग करें और dapps आज़माएं", + "invite-reward-you-name": "रेफरल बोनस", + "invite-select-account": "अपना रेफ़रल बोनस प्राप्त करने के लिए एक खाते का चयन करें", + "invite-warning": "यह प्रचार केवल Android डिवाइस के उपयोगकर्ताओं के लिए मान्य है, जो यूएस के निवासी नहीं हैं। मित्र को 7 दिनों के भीतर रेफ़रल की पुष्टि करनी होगी", + "invited": "आमंत्रित", + "italic": "तिरछा", + "join": "जोड़ना", + "join-a-community": "या एक समुदाय में शामिल हों", + "join-group-chat": "समूह में शामिल हों", + "join-group-chat-description": "{{username}} ने आपको समूह में शामिल होने के लिए आमंत्रित किया {{group-name}}", + "join-me": "स्टेटस पर मुझसे जुड़ें: {{url}}", + "join-new-private-chat": "एक नई निजी चैट शुरू करें", + "join-new-public-chat": "एक सार्वजनिक चैट में शामिल हों", + "join-open-community": "समुदाय में शामिल हों", + "joined": "में शामिल हो गए", + "joined-group-chat-description": "आप {{username}} के आमंत्रण से {{group-name}} में शामिल हुए हैं", + "key": "चाबी", + "key-managment": "मुख्य प्रबंधन", + "key-on-device": "इस डिवाइस पर निजी कुंजी सहेजी गई है", + "keycard": "कुंजी कार्ड", + "keycard-access-reset": "कीकार्ड पहुंच रीसेट है", + "keycard-applet-install-instructions": "एप्लेट स्थापित करने के लिए कृपया https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation पर दिए गए निर्देशों का पालन करें", + "keycard-awaiting-description": "अपने डिवाइस पर NFC रीडर खोजने के लिए कार्ड को इधर-उधर घुमाने का प्रयास करें", + "keycard-awaiting-title": "अभी भी देख रहा है...", + "keycard-backup": "एक बैकअप कीकार्ड बनाएं", + "keycard-backup-success-body": "बैकअप कार्ड सफलतापूर्वक बनाया गया। अब आप इसे अपने खाते के साथ प्राथमिक कार्ड की तरह ही उपयोग कर सकते हैं।", + "keycard-backup-success-title": "बैकअप सफल", + "keycard-blocked": "कीकार्ड ब्लॉक कर दिया गया है।\n कार्ड का उपयोग जारी रखने के लिए आपको उसे रीसेट करना होगा।", + "keycard-can-use-with-new-passcode": "आप इस कार्ड का उपयोग अपने नए पासकोड के साथ कर सकते हैं", + "keycard-cancel-setup-text": "यह कीकार्ड सेटअप रद्द कर देगा। कीकार्ड का उपयोग करने के लिए सेटअप को पूरा करने की अत्यधिक अनुशंसा की जाती है। क्या आप वाकई रद्द करना चाहते हैं?", + "keycard-cancel-setup-title": "खतरनाक ऑपरेशन", + "keycard-connected-description": "कार्ड को स्थिर रखने का प्रयास करें", + "keycard-connected-title": "जुड़े हुए", + "keycard-desc": "एक कीकार्ड के मालिक हैं? उस पर अपनी चाबियाँ संग्रहीत करें; आपको लेनदेन के लिए इसकी आवश्यकता होगी", + "keycard-dont-ask-card": "साइन इन करने के लिए कार्ड न मांगें", + "keycard-enter-new-passcode": "नया पासकोड दर्ज करें {{step}} \/2", + "keycard-error-description": "जारी रखने के लिए कार्ड को फिर से कनेक्ट करें", + "keycard-error-title": "संपर्क टूट गया", + "keycard-factory-reset": "फ़ैक्टरी सेटिंग पर कार्ड लौटाएं", + "keycard-factory-reset-text": "ऐसा करने से कार्ड पर संग्रहीत कोई भी स्मरक वाक्यांश हटा दिया जाएगा। सुनिश्चित करें कि आपके पास इस कीकार्ड के साथ उपयोग किए जा रहे स्मरक वाक्यांश का बैकअप है।", + "keycard-factory-reset-title": "क्या आप वाकई फ़ैक्टरी रीसेट करना चाहते हैं?", + "keycard-free-pairing-slots": "कीकार्ड में {{n}} फ्री पेयरिंग स्लॉट हैं", + "keycard-has-multiaccount-on-it": "यह कार्ड भरा हुआ है। प्रत्येक कार्ड में एक मुख्य की-जोड़ी हो सकती है", + "keycard-init-description": "जारी रखने के लिए कार्ड को अपने फ़ोन के पीछे रखें", + "keycard-init-title": "कार्ड ढूंढ रहे हैं...", + "keycard-is-blocked-details": "अब आप इस कार्ड का उपयोग इस खाते तक पहुंचने या उस पर हस्ताक्षर करने के लिए नहीं कर सकते हैं। बहुत सारे असफल पासकोड और PUK प्रयास हुए हैं।", + "keycard-is-blocked-instructions": "अपने खाते तक पहुंचने के लिए आपको अपना कार्ड फ़ैक्टरी रीसेट करना होगा। प्रक्रिया शुरू करने के लिए नीचे दिए गए बटन पर टैप करें, आपको अपने स्मरक की आवश्यकता होगी।", + "keycard-is-blocked-title": "कीकार्ड अवरुद्ध है", + "keycard-is-frozen-details": "आपकी संपत्ति की सुरक्षा के लिए, आपका कार्ड फ्रीज कर दिया गया है। इसे अनफ्रीज करने के लिए अपना कार्ड रीसेट करें और लेनदेन भेजने में सक्षम हों। आप इसे अपने PUK या अपने स्मरक के साथ कर सकते हैं।", + "keycard-is-frozen-factory-reset": "स्मरक के साथ रीसेट करें", + "keycard-is-frozen-reset": "PUK . के साथ रीसेट करें", + "keycard-is-frozen-title": "कीकार्ड फ़्रीज़ हो गया है", + "keycard-onboarding-finishing-header": "पूरी तरह खत्म करना", + "keycard-onboarding-intro-header": "कीकार्ड पर अपनी चाबियां संगृहीत करें", + "keycard-onboarding-intro-text": "तैयार हो जाइए, इसमें कुछ मिनट लग सकते हैं, लेकिन आपके खाते को सुरक्षित करना महत्वपूर्ण है", + "keycard-onboarding-mnemonic-text": "अपने बीज वाक्यांश को लिखने के लिए आपको एक कागज के टुकड़े और एक पेंसिल की भी आवश्यकता होगी।", + "keycard-onboarding-pairing-header": "कार्ड जोड़ा जा रहा है...", + "keycard-onboarding-pin-text": "आपको एक 6-अंकीय पासकोड बनाना होगा जिसका उपयोग आपके कीकार्ड तक पहुंच की सुरक्षा के लिए किया जाएगा।", + "keycard-onboarding-preparing-header": "कार्ड तैयार किया जा रहा है...", + "keycard-onboarding-puk-code-header": "कोड नीचे लिखें\n और उन्हें सुरक्षित रूप से स्टोर करें", + "keycard-onboarding-recovery-phrase-description": "अपनी कुंजी वापस पाने के लिए आपको इस बीज वाक्यांश की आवश्यकता है। नीचे लिखें। इसे सुरक्षित, ऑफ़लाइन और इस डिवाइस से अलग रखें.", + "keycard-onboarding-recovery-phrase-header": "बैक अप बीज वाक्यांश", + "keycard-onboarding-recovery-phrase-text": "केवल तुम्हारी आँखों के लिए। यह वह जादुई बीज है जिसका उपयोग आपकी चाबी बनाने के लिए किया जाता है।", + "keycard-onboarding-start-header": "कार्ड को पीछे से पकड़ें\n शुरू करने के लिए अपने फोन का", + "keycard-onboarding-start-step1": "पासकोड बनाएं", + "keycard-onboarding-start-step1-text": "लगभग 1 मिनट। अपनी कुंजियों को एन्क्रिप्ट करने के लिए 6 अंकों का पासकोड बनाएं", + "keycard-onboarding-start-step2": "PUK और पेयरिंग कोड लिखें", + "keycard-onboarding-start-step2-text": "लगभग 1 मिनट। इसके लिए आपको एक कागज के टुकड़े और एक पेंसिल की आवश्यकता होगी", + "keycard-onboarding-start-step3": "बीज वाक्यांश का बैकअप लें", + "keycard-onboarding-start-step3-text": "लगभग 1 मिनट। कागज का एक टुकड़ा और एक पेंसिल भी आवश्यक है", + "keycard-onboarding-start-text": "और कार्ड से फोन संपर्क बनाए रखें\n सेटअप के दौरान। सेटअप में लगभग 4 मिनट का समय लगेगा", + "keycard-processing-description": "कार्ड को स्थिर रखने का प्रयास करें", + "keycard-processing-title": "संसाधित किया जा रहा है...", + "keycard-recover": "खोया या जमे हुए कार्ड?", + "keycard-recover-text": "यदि आपके पास अपना मुहावरा है तो आप इस खाते से संबद्ध एक नया कीकार्ड बना सकते हैं। आप या तो नए कीकार्ड का उपयोग कर सकते हैं या फ्रोजन पर फ़ैक्टरी रीसेट कर सकते हैं।", + "keycard-recover-title": "इस खाते के लिए नया कार्ड बनाएं?", + "keycard-recovery-intro-button-text": "वसूली शुरू करें", + "keycard-recovery-intro-header": "कीकार्ड पर संग्रहीत कुंजियाँ पुनर्प्राप्त करें", + "keycard-recovery-intro-text": "यदि आपने पहले और अब इस उपकरण पर इन कुंजियों का उपयोग करना चाहते हैं, तो आपने कीकार्ड का उपयोग करके कुंजियाँ बनाई हैं", + "keycard-recovery-no-key-header": "करने के लिए कुछ भी नहीं है\n यहां पुनर्प्राप्त करें", + "keycard-recovery-no-key-text": "आपके कीकार्ड में कोई कुंजी संग्रहीत नहीं है। इसका उपयोग करने के लिए, एक नई कुंजी बनाएं और कुंजी को संग्रहीत करने के लिए अपना कीकार्ड चुनें", + "keycard-recovery-phrase-confirm-header": "बीज वाक्यांश की पुष्टि करें", + "keycard-recovery-phrase-confirmation-text": "आपके पास दूसरा मौका नहीं होगा! यदि आप एक्सेस खो देते हैं, उदाहरण के लिए, अपना कीकार्ड खो जाने से, आप केवल अपनी कुंजी को अपने बीज वाक्यांश के साथ एक्सेस कर सकते हैं। कोई नहीं, लेकिन आपके पास अपना बीज वाक्यांश है। नीचे लिखें। उसे सुरक्षित रखें।", + "keycard-recovery-phrase-confirmation-title": "बीज वाक्यांश नीचे लिखा?", + "keycard-recovery-success-header": "आपकी चाबियां हो गई हैं\n सफलतापूर्वक पुनर्प्राप्त", + "keycard-redeem-title": "रिडीम करें", + "keycard-redeem-tx": "संपत्ति भुनाएं", + "keycard-redeem-tx-desc": "एसेट पर हस्ताक्षर करने और प्राप्त करने के लिए कार्ड पर टैप करें", + "keycard-reset-passcode": "पासकोड रीसेट करें", + "keycard-success-description": "आप अभी कार्ड निकाल सकते हैं", + "keycard-success-title": "सफलता", + "keycard-unauthorized-operation": "आप इस कार्रवाई को करने के लिए अनधिकृत हैं।\n कृपया मान्य कार्ड पर टैप करें और पुनः प्रयास करें।", + "keycard-upsell-subtitle": "बढ़ी सुरक्षा और सुविधा", + "kicked": "लात मारी", + "language": "भाषा", + "last-backup-performed": "अंतिम बैकअप निष्पादित किया गया:", + "last-transaction": "अंतिम लेनदेन", + "learn-more": "और अधिक जानें", + "learn-more-about-keycard": "Keycard के बारे में और जानें", + "leave": "छोड़", + "leave-chat": "चैट छोड़ें", + "leave-chat-confirmation": "आपके डिवाइस से चैट इतिहास हटा दिया जाएगा। फिर से जुड़ने के बाद आप अपना कोई भी इतिहास पुनः प्राप्त नहीं कर पाएंगे।", + "leave-community": "समुदाय छोड़ो", + "leave-community-message": "आपको जाते हुए देखकर हमें दुख होगा लेकिन याद रखें, आप किसी भी समय वापस आ सकते हैं!", + "leave-community?": "समुदाय छोड़ें?", + "leave-confirmation": "{{chat-name}} छोड़ें", + "leave-group": "समूह छोड़ दें", + "left": "बाएँ", + "les-ulc": "एलईएस\/यूएलसी", + "lets-go": "चलिए चलते हैं", + "lifestyle": "जीवन शैली", + "light": "रोशनी", + "limit": "सीमा", + "link-to-community": "समुदाय से लिंक करें", + "linked-on": "{{date}} को लिंक किया गया", + "load-messages-before": "{{date}} से पहले", + "load-more-messages": "↓ अधिक संदेश प्राप्त करें", + "load-more-timeline": "अधिक प्राप्त करें", + "loading": "लोड हो रहा है...", + "local-notifications": "स्थानीय सूचनाएं", + "local-notifications-subtitle": "पृष्ठभूमि सेवा सक्षम करें", + "lock-app-with": "लॉक ऐप", + "log-level": "छांटने का स्तर", + "log-level-settings": "लॉग स्तर सेटिंग्स", + "logging": "लॉगिंग", + "logging-enabled": "लॉगिंग सक्षम है?", + "login-pin-description": "अपनी चाबियों को अनलॉक करने के लिए अपना 6-अंकीय पासकोड दर्ज करें", + "logout": "लॉग आउट", + "logout-app-content": "खाता लॉग आउट हो जाएगा। जब आप इसे फिर से अनलॉक करते हैं, तो चयनित नेटवर्क का उपयोग किया जाएगा", + "logout-are-you-sure": "क्या आप वाकई यह चाहते हैं\n लॉग आउट करने के लिए?", + "logout-key-management": "आपको कुंजी प्रबंधन तक पहुँचने के लिए लॉग आउट करने की आवश्यकता है.", + "logout-title": "लॉग आउट?", + "looking-for-cards": "कार्ड ढूंढ रहे हैं...", + "lost-connection": "खोया तार", + "low-tip": "टिप बहुत कम है", + "lower-than-average-tip": "औसत टिप से कम", + "mail-should-be-configured": "मेल क्लाइंट को कॉन्फ़िगर किया जाना चाहिए", + "mailserver-address": "Status नोड पता", + "mailserver-automatic": "स्वचालित चयन", + "mailserver-automatic-switch-explanation": "उपलब्ध सबसे तेज़ Status नोड चुनें", + "mailserver-connection-error": "Status नोड से कनेक्ट नहीं हो सका", + "mailserver-content": "स्टेटस नेटवर्क में एक नोड जो संदेशों को 30 दिनों तक रूट और स्टोर करता है।", + "mailserver-details": "Status नोड विवरण", + "mailserver-error-content": "आपके द्वारा चयनित Status नोड तक नहीं पहुंचा जा सका.", + "mailserver-error-title": "Status नोड से जुड़ने में त्रुटि", + "mailserver-format": "एनोड: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "एक और Status नोड चुनें", + "mailserver-reconnect": "Status नोड से कनेक्ट नहीं हो सका। पुनः कनेक्ट करने के लिए टैप करें", + "mailserver-request-error-content": "निम्न त्रुटि Status नोड द्वारा दी गई थी: {{error}}", + "mailserver-request-error-status": "इतिहास लाते समय एक त्रुटि हुई, विवरण के लिए लॉग जांचें", + "mailserver-request-error-title": "Status नोड अनुरोध त्रुटि", + "mailserver-request-retry": "पुन: प्रयास अनुरोध", + "mailserver-retry": "पुन: प्रयास करें", + "mailserver-title": "स्टेटस नोड", + "main-account": "मुख्य खाता", + "main-currency": "मुख्य मुद्रा", + "main-networks": "मुख्य नेटवर्क", + "main-wallet": "मुख्य वॉलेट", + "mainnet-network": "मुख्य नेटवर्क", + "make-admin": "एडमिन बनाओ", + "make-moderator": "मॉडरेटर बनाएं", + "manage-connections": "अनुप्रयोग कनेक्शंस के भीतर से कनेक्शंस प्रबंधित करें", + "manage-keys-and-storage": "चाबियाँ और भंडारण प्रबंधित करें", + "manage-members": "सदस्यों का प्रबंधन करें", + "mark-all-read": "सभी को पढ़ा दिखाएं", + "mark-as-read": "पढ़े हुए का चिह्नित", + "mark-untrustworthy": "अविश्वसनीय के रूप में चिह्नित करें", + "master-account": "मास्टर खाता", + "max-fee": "अधिकतम शुल्क", + "max-priority-fee": "अधिकतम प्राथमिकता शुल्क", + "maximum-fee": "अधिकतम शुल्क", + "maximum-fee-desc": "लेन-देन के लिए अधिकतम समग्र मूल्य। यदि वर्तमान ब्लॉक आधार शुल्क इससे अधिक है, तो आपके लेन-देन को निम्न आधार शुल्क के साथ निम्नलिखित ब्लॉक में शामिल किया जाएगा।", + "maybe-later": "शायद बाद में", + "member-ban": "सदस्य को प्रतिबंधित करें", + "member-kick": "किक सदस्य", + "members": { + "one": "1 member", + "other": "{{count}} members" + }, + "members-active": { + "one": "1 member", + "other": "{{count}} members" + }, + "members-active-none": "कोई सदस्य नहीं", + "members-count": "{{count}} सदस्य", + "members-label": "सदस्यों", + "members-limit-reached": "सदस्यों की सीमा पूरी हो गई", + "members-title": "सदस्यों", + "membership": "सदस्यता", + "membership-approval": "अनुमोदन की आवश्यकता है", + "membership-approval-description": "आपका समुदाय शामिल होने के लिए स्वतंत्र है, लेकिन नए सदस्यों को पहले समुदाय निर्माता द्वारा अनुमोदित होना आवश्यक है", + "membership-button": "सदस्यता की आवश्यकता", + "membership-declined": "सदस्यता अनुरोध अस्वीकार कर दिया गया था", + "membership-description": "समूह सदस्यता के लिए आपको समूह व्यवस्थापक द्वारा स्वीकार किया जाना आवश्यक है", + "membership-ens": "ईएनएस उपयोगकर्ता नाम की आवश्यकता है", + "membership-ens-description": "आपके समुदाय को शामिल होने के लिए एक ENS उपयोगकर्ता नाम की आवश्यकता है", + "membership-free": "आवश्यकता नही है", + "membership-free-description": "आपका समुदाय किसी के भी शामिल होने के लिए स्वतंत्र है", + "membership-invite": "किसी अन्य सदस्य से आमंत्रण की आवश्यकता है", + "membership-invite-description": "आपके समुदाय में केवल मौजूदा समुदाय के सदस्यों के आमंत्रण द्वारा ही शामिल किया जा सकता है", + "membership-none": "कोई भी नहीं", + "membership-none-placeholder": "नए सदस्यों के शामिल होने से पहले आपको कुछ मानदंडों को पूरा करने की आवश्यकता हो सकती है। इसे किसी भी समय बदला जा सकता है", + "membership-request-denied": "सदस्यता अनुरोध अस्वीकृत", + "membership-request-pending": "सदस्यता अनुरोध लंबित", + "membership-requests": "सदस्यता अनुरोध", + "membership-title": "सदस्यता की आवश्यकता", + "mention": "उल्लेख", + "mentions": "उल्लेख", + "message": "संदेश", + "message-deleted": "संदेश हटाये", + "message-deleted-for-everyone": "संदेश सभी के लिए हटा दिया गया", + "message-deleted-for-you": "आपके लिए संदेश हटा दिया गया", + "message-not-sent": "संदेश नहीं भेजा गया", + "message-options-cancel": "रद्द करना", + "message-reply": "जवाब", + "messages": "संदेशों", + "messages-from-contacts-only-subtitle": "केवल वे लोग जिन्हें आपने संपर्क के रूप में जोड़ा है, वे ही आपके साथ एक नई चैट शुरू कर सकते हैं या आपको किसी समूह में आमंत्रित कर सकते हैं", + "messages-gap-warning": "कुछ संदेश गायब हो सकते हैं", + "might-break": "कुछ ऐप्स . तोड़ सकते हैं", + "migration-successful": "माइग्रेशन सफल", + "migration-successful-text": "खाता सफलतापूर्वक Keycard में माइग्रेट हो गया", + "migrations-failed-content": "{{message}}\n स्कीमा संस्करण: प्रारंभिक {{initial-version}} , वर्तमान {{current-version}} , अंतिम {{last-version}} \n\n एक डेटाबेस त्रुटि हुई। आपके फंड और चैट कुंजी सुरक्षित हैं। अन्य डेटा, जैसे आपकी चैट और संपर्क, को पुनर्स्थापित नहीं किया जा सकता है। \" {{erase-multiaccounts-data-button-text}} \" बटन, अन्य सभी डेटा को हटा देगा और आपको अपने फंड तक पहुंचने और संदेश भेजने की अनुमति देगा।", + "miners-higher-fee": "यदि आप अधिक शुल्क का भुगतान करते हैं तो खनिक आपके लेन-देन को पहले शामिल कर सकते हैं।", + "minimum-received": "न्यूनतम प्राप्त", + "mobile-network-ask-me": "मोबाइल नेटवर्क पर मुझसे पूछें", + "mobile-network-continue-syncing": "समन्वयन जारी रखें", + "mobile-network-continue-syncing-details": "आप इसे बाद में सेटिंग में बदल सकते हैं", + "mobile-network-go-to-settings": "सेटिंग्स में जाओ", + "mobile-network-settings": "मोबाइल सामग्री", + "mobile-network-sheet-configure": "आप सिंकिंग को और अधिक में कॉन्फ़िगर कर सकते हैं\n विवरण में", + "mobile-network-sheet-offline": "कोई वाई-फ़ाई नहीं, संदेश समन्वयन अक्षम है.", + "mobile-network-sheet-offline-details": "मोबाइल नेटवर्क का उपयोग करके समन्वयन करना बंद है", + "mobile-network-sheet-remember-choice": "मेरी पसंद याद रखें", + "mobile-network-sheet-settings": "समायोजन", + "mobile-network-start-syncing": "समन्वयन प्रारंभ करें", + "mobile-network-stop-syncing": "सिंक करना बंद करें", + "mobile-network-stop-syncing-details": "वाई-फ़ाई से कनेक्ट होने तक?", + "mobile-network-use-mobile": "मोबाइल डेटा का उपयोग करें", + "mobile-network-use-mobile-data": "चैट और वॉलेट को सिंक करते समय स्टेटस बहुत अधिक डेटा का उपयोग करता है।", + "mobile-network-use-wifi": "केवल वाई - फाई", + "mobile-syncing-sheet-details": "चैट और वॉलेट को सिंक करते समय स्टेटस बहुत अधिक डेटा का उपयोग करता है।", + "mobile-syncing-sheet-title": "मोबाइल डेटा का उपयोग करके सिंक करें?", + "more": "अधिक", + "move-and-reset": "ले जाएँ और रीसेट करें", + "move-keystore-file": "कीस्टोर फ़ाइल ले जाएँ", + "move-keystore-file-to-keycard": "कीस्टोर फ़ाइल को कीकार्ड में ले जाएँ?", + "multiaccount-exists-content": "इस खाते की कुंजियां पहले से मौजूद हैं और इन्हें दोबारा नहीं जोड़ा जा सकता. यदि आपने अपना पासवर्ड, पासकोड या कीकार्ड खो दिया है, तो ऐप को अनइंस्टॉल करें, पुनः स्थापित करें और अपना बीज वाक्यांश दर्ज करके अपनी कुंजियों तक पहुंचें", + "multiaccount-exists-title": "इस खाते की कुंजियाँ पहले से मौजूद हैं", + "multiaccounts-recover-enter-phrase-text": "12, 15, 18, 21 या 24 शब्द दर्ज करें।\n एक ही स्थान से शब्दों को अलग करें।", + "multiaccounts-recover-enter-phrase-title": "अपना बीज वाक्यांश दर्ज करें", + "music": "संगीत", + "mutal-contacts": "आपसी संपर्क", + "mute": "आवाज़ बंद करना", + "mute-chat": "म्यूट चैट", + "mute-community": "समुदाय को म्यूट करें", + "mutual-contact-requests": "पारस्परिक संपर्क अनुरोध", + "my-accounts": "मेरा खाता", + "my-accounts-empty": "आपके उपलब्ध खाते यहां दिखाई देंगे", + "my-profile": "मेरी प्रोफाइल", + "my-status": "मेरी Status", + "n-photos": "{{count}} फ़ोटो", + "name": "नाम", + "name-of-token": "आपके टोकन का नाम", + "name-optional": "नाम: (वैकल्पिक)", + "name-your-channel": "अपने चैनल को नाम दें", + "name-your-channel-placeholder": "चैनल का नाम", + "name-your-community": "अपने समुदाय को नाम दें", + "name-your-community-placeholder": "एक आकर्षक नाम", + "need-help": "मदद की ज़रूरत है?", + "negative": "नेगटिव", + "network": "नेटवर्क", + "network-chain": "नेटवर्क श्रृंखला", + "network-details": "नेटवर्क विवरण", + "network-fee": "नेटवर्क शुल्क", + "network-id": "नेटवर्क आईडी", + "network-info": "नेटवर्क जानकारी", + "network-invalid-network-id": "निर्दिष्ट नेटवर्क आईडी RPC url द्वारा नेटवर्क आईडी के अनुरूप नहीं है", + "network-invalid-status-code": "अमान्य स्थिति कोड: {{code}}", + "network-invalid-url": "नेटवर्क URL अमान्य है", + "network-settings": "संजाल विन्यास", + "never": "कभी नहीं", + "new": "नया", + "new-category": "नई श्रेणी", + "new-chat": "नई चैट", + "new-community-title": "नया समुदाय", + "new-contact": "नया कॉन्ट्रैक्ट", + "new-contract": "नया सम्पर्क", + "new-favourite": "नया पसंदीदा", + "new-group": "नया समूह", + "new-group-chat": "नया समूह चैट", + "new-messages-header": "नए संदेश", + "new-network": "नया नेटवर्क", + "new-password": "नया पासवर्ड", + "new-pin-description": "नया 6-अंकीय पासकोड दर्ज करें", + "new-public-group-chat": "सार्वजनिक चैट में शामिल हों", + "new-puk-description": "नया 12-अंकीय PUK दर्ज करें", + "new-status": "नई Status", + "new-tab": "नया टैब", + "new-ui": "नया यूआई", + "next": "अगला", + "nickname": "उपनाम", + "nickname-description": "उपनाम आपको Status में दूसरों की पहचान करने में मदद करते हैं।\n आपके द्वारा जोड़े गए प्रचलित नाम केवल आप ही देख सकते हैं", + "no": "नहीं", + "no-collectibles": "कोई संग्रहणीय उपलब्ध नहीं", + "no-contacts": "अभी तक कोई संपर्क नहीं", + "no-keycard-applet-on-card": "कार्ड पर कोई कीकार्ड एप्लेट नहीं", + "no-messages": "कोई संदेश नहीं", + "no-pairing-slots-available": "यह कार्ड पहले से ही 5 उपकरणों के साथ जोड़ा गया है और इसे इससे नहीं जोड़ा जा सकता है। कृपया युग्मित उपकरणों में से किसी एक का उपयोग करें, इस कार्ड से लॉग इन करें और कार्ड पर युग्मन स्लॉट खाली करें", + "no-pinned-messages": "कोई पिन किए गए संदेश नहीं", + "no-result": "कोई परिणाम नहीं", + "no-thanks": "जी नहीं, धन्यवाद", + "no-tokens-found": "कोई टोकन नहीं मिला", + "node-address": "नोड विवरण", + "node-details": "नोड विवरण", + "node-info": "नोड जानकारी", + "node-version": "नोड संस्करण", + "nodes-disabled": "स्टेटस नोड्स अक्षम", + "non-archival-node": "RPC समापन बिंदु अभिलेखीय अनुरोधों का समर्थन नहीं करता है। आपका स्थानीय स्थानान्तरण इतिहास अधूरा हो सकता है।", + "non-contacts": "गैर संपर्क", + "nonce": "अस्थायी रूप से", + "none": "कोई नहीं", + "normal": "सामान्य", + "not-applicable": "अहस्ताक्षरित लेनदेन के लिए लागू नहीं", + "not-connected-nodes": "स्टेटस नोड से जुड़ा नहीं है", + "not-connected-to-peers": "किसी भी साथी से जुड़ा नहीं है", + "not-enough-snt": "पर्याप्त नहीं SNT", + "not-found": "नहीं मिला", + "not-keycard-text": "आपके द्वारा उपयोग किया गया कार्ड कीकार्ड नहीं है। इसका उपयोग करने के लिए आपको एक कीकार्ड खरीदना होगा", + "not-keycard-title": "कीकार्ड नहीं", + "not-registered": "पंजीकृत नहीं है", + "notification-settings": "सूचनाएं", + "notifications": "सूचनाएं", + "notifications-non-contacts": "गैर-संपर्कों से सूचनाएं", + "notifications-preferences": "सूचना की प्राथमिकताएं", + "notifications-servers": "अधिसूचना सर्वर", + "notifications-switch": "सूचनाएं दिखाएं", + "notifications-transactions": "वॉलेट लेनदेन", + "notify": "सूचित करें", + "now": "अब", + "off": "बंद", + "off-status-tree": "ऑफ स्टेटस ट्री", + "offline": "ऑफलाइन", + "offline-messaging-use-history-explanation": "ऐप बंद होने के दौरान भेजे गए संदेशों को लाने के लिए Status नोड्स सक्षम करें। सक्षम होने पर, एक स्थिति नोड को आपका आईपी पता मिल जाता है। अक्षम होने पर आपको ऐप बंद होने पर संदेश प्राप्त नहीं होंगे और जब आप बाद में ऐप खोलेंगे तो उन्हें नहीं देख पाएंगे।", + "offline-messaging-use-history-nodes": "Status नोड्स का प्रयोग करें", + "ok": "ठीक है", + "ok-continue": "ठीक है, जारी रखें", + "ok-got-it": "ठीक है समझ आ गया", + "ok-save-pass": "ठीक है, पासवर्ड सेव करें", + "okay": "ठीक", + "on": "पर", + "on-status-tree": "स्टेटस ट्री पर", + "once-enabled-share-metadata": "एक बार सक्षम होने पर, चैट में पोस्ट किए गए लिंक साइट के साथ आपका मेटाडेटा साझा कर सकते हैं", + "one-day": "एक दिन", + "one-month": "एक माह", + "one-week": "एक हफ्ता", + "online": "ऑनलाइन", + "open": "खुला", + "open-chat": "चैट खोलें", + "open-dapp": "ऐप . खोलें", + "open-dapp-store": "ऐप्स . खोजें", + "open-home": "खुला...", + "open-in-new-tab": "नए टैब में खोलें", + "open-membership": "खुली सदस्यता", + "open-nfc-settings": "एनएफसी सेटिंग्स खोलें", + "open-on-block-explorer": "ब्लॉक एक्सप्लोरर पर खोलें", + "opened": "खुल गया", + "opening-buy-crypto": "Opening {{site}}...", + "optimal": "इष्टतम", + "optional": "वैकल्पिक", + "or": "या", + "outgoing": "मिलनसार", + "outgoing-transaction": "आउटगोइंग लेनदेन", + "owner": "स्वामी", + "page-camera-request-blocked": "कैमरा अनुरोध अवरुद्ध। कैमरा अनुरोधों को सक्षम करने के लिए सेटिंग्स पर जाएं", + "page-would-like-to-use-camera": "अपने कैमरे का उपयोग करना चाहेंगे", + "pair": "जोड़ी उपकरण", + "pair-card": "इस डिवाइस से जोड़े", + "pair-code": "जोड़ी कोड", + "pair-code-explanation": "कुंजी को अनलॉक करने और उसी कीकार्ड से लेन-देन पर हस्ताक्षर करने के लिए कार्ड को किसी भिन्न डिवाइस (5 तक तक) से जोड़ता है", + "pair-code-placeholder": "कोड जोड़े...", + "pair-this-card": "इस कार्ड को जोड़ो", + "pair-this-device": "विज्ञापन डिवाइस", + "pair-this-device-description": "संपर्कों और उनके बीच चैट को सिंक करने के लिए अपने उपकरणों को जोड़ें", + "paired-devices": "युग्मित उपकरण", + "pairing": "बाँधना", + "pairing-card": "पेयरिंग कार्ड", + "pairing-changed": "पेयरिंग कोड बदल दिया गया है", + "pairing-code-placeholder": "कोड जोड़ा जा रहा है...", + "pairing-code_error1": "पेयरिंग कोड मेल नहीं खाते।", + "pairing-go-to-installation": "पेयरिंग सेटिंग में जाएं", + "pairing-maximum-number-reached-content": "कृपया एक नया डिवाइस सक्षम करने से पहले अपने किसी एक डिवाइस को अक्षम कर दें।", + "pairing-maximum-number-reached-title": "उपकरणों की अधिकतम संख्या तक पहुंच गया", + "pairing-new-installation-detected-content": "एक नए उपकरण का पता चला है।\n अपने उपकरणों का सही ढंग से उपयोग करने के लिए, उनका उपयोग करने से पहले उन्हें युग्मित करना और सक्षम करना महत्वपूर्ण है।\n कृपया अपने डिवाइस को पेयर करने के लिए सेटिंग के तहत डिवाइस सेक्शन में जाएं।", + "pairing-new-installation-detected-title": "नए उपकरण का पता चला", + "pairing-no-info": "कोई सूचना नहीं", + "pairing-please-set-a-name": "कृपया अपने डिवाइस के लिए एक नाम सेट करें।", + "passphrase": "पदबंध", + "password": "पासवर्ड", + "password-description": "कम से कम 6 वर्ण। आपका पासवर्ड आपकी चाबियों की सुरक्षा करता है। आपको स्टेटस अनलॉक करने और लेन-देन करने के लिए इसकी आवश्यकता है।", + "password-mismatch": "नया पासवर्ड और पुष्टि मेल नहीं खाता", + "password-placeholder": "पासवर्ड...", + "password-placeholder2": "अपने पासवर्ड की पुष्टि करें", + "password-reset-in-progress": "पासवर्ड बदल रहा है...", + "password-reset-success": "पासवर्ड बदला गया", + "password-reset-success-message": "आपको फिर से साइन इन करना होगा", + "password_error1": "पासवर्ड मेल नहीं खाते।", + "paste": "पेस्ट करें", + "paste-json": "JSON पेस्ट करें", + "pay-to-chat": "चैट करने के लिए भुगतान करें", + "peer-content": "Status चैट नेटवर्क से जुड़ा एक उपकरण। प्रत्येक उपयोगकर्ता अपने उपकरणों की संख्या के आधार पर एक या अधिक साथियों का प्रतिनिधित्व कर सकता है।", + "peer-title": "समकक्ष", + "peer-to-peer": "पीयर टू पीयर", + "peers": "समकक्ष लोग", + "peers-count": "साथियों की गिनती", + "peers-stats": "सहकर्मी आँकड़े", + "pending": "लंबित", + "pending-confirmation": "पुष्टि लंबित...", + "pending-invitations": "लंबित सदस्यता अनुरोध", + "pending-requests": "अनुरोध लंबित", + "per-gas-price-limit": "प्रति गैस मूल्य सीमा", + "per-gas-tip-limit": "प्रति-गैस टिप सीमा", + "perform-backup": "बैकअप निष्पादित करें", + "permissions": "अनुमतियां", + "phone-e164": "अंतर्राष्ट्रीय 1", + "photos": "तस्वीरें", + "photos-access-error": "आवश्यक फ़ोटो अनुमति देने के लिए, कृपया अपनी सिस्टम सेटिंग में जाएं और सुनिश्चित करें कि Status > फ़ोटो चयनित है।", + "pin": "पिन", + "pin-changed": "6 अंकों का पासकोड बदल दिया गया है", + "pin-code": "6 अंकों का पासकोड", + "pin-limit-reached": "पिन की सीमा पूरी हो गई है. पहले किसी पिछले संदेश को अनपिन करें।", + "pin-mismatch": "गलत पासकोड", + "pin-one-attempt": "एक प्रयास", + "pin-one-attempt-blocked-after": "इससे पहले कि आपका कीकार्ड ब्लॉक हो जाए", + "pin-one-attempt-blocked-before": "सावधान रहें, आपके पास केवल", + "pin-one-attempt-frozen-after": "इससे पहले कि आपका कीकार्ड फ़्रीज़ हो जाए", + "pin-one-attempt-frozen-before": "सावधान रहें, आपके पास केवल", + "pin-retries-left": "{{number}} प्रयास बाकी हैं", + "pin-to-channel": "चैनल पर पिन करें", + "pin-to-chat": "चैट में पिन करें", + "pinned-a-message": "एक संदेश पिन किया", + "pinned-by": "द्वारा पिन किया गया", + "pinned-messages": "पिन किए गए संदेश", + "pinned-messages-count": { + "one": "1 पिन किया गया संदेश", + "other": "{{count}} पिन किए गए संदेश" + }, + "pinned-messages-empty": "पिन किए गए संदेश यहां दिखाई देंगे. किसी संदेश को पिन करने के लिए, उसे दबाकर रखें और `पिन करें` पर टैप करें", + "podcasts": "पॉडकास्ट", + "positive": "पॉज़िटीव", + "powered-by-paraswap": "Paraswap . द्वारा संचालित", + "preference": "पसंद", + "preview-privacy": "पूर्वावलोकन गोपनीयता मोड", + "previewing-may-share-metadata": "इन वेबसाइटों के लिंक का पूर्वावलोकन करने से आपका मेटाडेटा उनके स्वामियों के साथ साझा किया जा सकता है", + "price-impact": "मूल्य प्रभाव", + "price-impact-desc": "इस लेनदेन के लिए अनुमानित मूल्य प्रभाव। यदि वर्तमान ब्लॉक आधार शुल्क इससे अधिक है, तो आपके लेन-देन को निम्न आधार शुल्क के साथ निम्नलिखित ब्लॉक में शामिल किया जाएगा।", + "principles": "सिद्धांतों", + "priority": "प्राथमिकता", + "privacy": "गोपनीयता", + "privacy-and-security": "गोपनीयता और सुरक्षा", + "privacy-photos": "प्रोफ़ाइल फ़ोटो गोपनीयता", + "privacy-policy": "गोपनीयता नीति", + "privacy-show-to-warning": "जिन लोगों ने आपकी प्रोफ़ाइल तस्वीर पहले ही देख ली है, वे आगे भी ऐसा करते रहेंगे", + "private-key": "निजी चाबी", + "private-notifications": "निजी सूचनाएं", + "private-notifications-descr": "Status आपको नए संदेशों के बारे में सूचित करेगी। आप अपनी अधिसूचना प्राथमिकताएं बाद में सेटिंग में संपादित कर सकते हैं।", + "processing": "बस एक पल", + "product-information": "उत्पाद की जानकारी", + "profile": "प्रोफ़ाइल", + "profile-deleted-content": "आपकी प्रोफ़ाइल सफलतापूर्वक हटा दी गई थी", + "profile-deleted-keycard": "अब आप अपने कीकार्ड पर एक और की-जोड़ी को पुनर्स्थापित कर सकते हैं", + "profile-deleted-title": "प्रोफ़ाइल मिटा दी गई है", + "profile-details": "प्रोफ़ाइल विवरण", + "profile-not-found": "प्रोफ़ाइल नहीं मिला", + "profile-pic-pick": "गैलरी से चुनें", + "profile-pic-remove": "फोटो हटाएं", + "profile-pic-take": "फोटो लो", + "profile-picture-updated": "प्रोफ़ाइल चित्र अपडेट किया गया", + "public": "जनता", + "public-channel": "सार्वजनिक चैनल", + "public-chat": "सार्वजनिक चैट", + "public-chat-description": "अपनी रुचियों के लिए सार्वजनिक चैट में शामिल हों! कोई भी नई शुरुआत कर सकता है।", + "public-chats": "सार्वजनिक चैट", + "public-group-status": "जनता", + "public-group-topic": "विषय", + "public-key": "सार्वजनिक कुंजी", + "puk-and-pairing-codes-displayed": "PUK और पेयरिंग कोड प्रदर्शित", + "puk-changed": "12 अंकों का PUK बदल दिया गया है", + "puk-code": "पीयूके कोड", + "puk-code-explanation": "यदि आप अपना 6 अंकों का पासकोड भूल जाते हैं या इसे 3 बार गलत तरीके से दर्ज करते हैं, तो आपको अपना कार्ड अनलॉक करने के लिए इस कोड की आवश्यकता होगी।", + "puk-mismatch": "गलत PUK कोड", + "push-failed-transaction": "आपका लेन-देन विफल रहा", + "push-failed-transaction-body": "{{value}} {{currency}} से {{to}}", + "push-inbound-transaction": "आपने {{value}} {{currency}} प्राप्त किया", + "push-inbound-transaction-body": "{{from}} से {{to}} तक", + "push-notifications-server-enabled": "सर्वर सक्षम", + "push-notifications-servers": "पुश सूचना सर्वर", + "push-outbound-transaction": "आपने {{value}} {{currency}} भेजा है", + "push-outbound-transaction-body": "{{from}} से {{to}} तक", + "quiet-days": "{{quiet-days}} दिन", + "quiet-hours": "{{quiet-hours}} घंटे", + "re-encrypt-key": "अपनी कुंजियों को फिर से एन्क्रिप्ट करें", + "rearrange-categories": "श्रेणियाँ पुनर्व्यवस्थित करें", + "receive": "पाना", + "receive-transaction": "लेन-देन प्राप्त करें", + "received": "प्राप्त हुआ", + "recent": "हाल का", + "recent-empty": "हाल ही में उपयोग किए गए पते यहां दिखाई देंगे", + "recent-recipients": "संपर्क", + "recently-used-stickers": "हाल ही में उपयोग किए गए स्टिकर यहां दिखाई देंगे", + "recipient": "प्राप्तकर्ता", + "recipient-code": "प्राप्तकर्ता का पता दर्ज करें", + "recipient-code-placeholder": "0x... या username.domain.eth", + "recover": "वसूल करना", + "recover-key": "मौजूदा कुंजियों तक पहुंचें", + "recover-keycard-multiaccount-not-supported": "इस खाते की कुंजियां पहले से मौजूद हैं और इन्हें दोबारा नहीं जोड़ा जा सकता. यदि आपने अपना पासवर्ड, पासकोड या कीकार्ड खो दिया है, तो ऐप को अनइंस्टॉल करें, पुनः स्थापित करें और अपना बीज वाक्यांश दर्ज करके अपनी कुंजियों तक पहुंचें", + "recover-with-keycard": "Keycard के साथ पुनर्प्राप्त करें", + "recover-with-seed-phrase": "बीज वाक्यांश के साथ पुनर्प्राप्त करें", + "recovering-key": "कुंजियों तक पहुंचना...", + "recovery-confirm-phrase": "बीज वाक्यांश की पुष्टि करें", + "recovery-phrase": "बीज वाक्यांश", + "recovery-success-text": "अपनी कुंजियों को फिर से एन्क्रिप्ट करने के लिए आपको एक नया कोड या पासवर्ड बनाना होगा", + "recovery-typo-dialog-description": "कृपया ध्यान दें, आपके बीज वाक्यांश को ठीक उसी शब्द और क्रम का उपयोग करना चाहिए जैसा आपने इसे प्राप्त किया था", + "recovery-typo-dialog-title": "क्या बीज वाक्यांश सही है?", + "redeem-amount": "{{quantity}} बोनस उपलब्ध है", + "redeem-now": "अब एवज करें", + "redeem-success": "बोनस सफलता भुनाएं!", + "reduced-tip": "प्राथमिकता टिप कम हो जाएगी", + "refresh": "ताज़ा करना", + "registered": "दर्ज कराई", + "reject": "अस्वीकार", + "reject-and-delete": "अस्वीकार करें और हटाएं", + "remember-me": "पहचाना की नहीं", + "remind-me-later": "मुझे इसे फिर से दिखाओ", + "remote-notifications": "दूरस्थ सूचनाएँ", + "remote-notifications-subtitle": "Google पुश सूचनाएँ सक्षम करें", + "remove": "हटाना", + "remove-favourite": "पसंदीदा हटाएं", + "remove-from-chat": "चैट से हटाएं", + "remove-from-contacts": "संपर्कों में से निकालें", + "remove-from-contacts-text": "किसी उपयोगकर्ता को अपनी संपर्क सूची से हटाकर आप उनसे अपना बटुआ पता नहीं छिपाते हैं", + "remove-group": "समूह हटाएं", + "remove-network": "नेटवर्क हटाएं", + "remove-token": "टोकन हटाएं", + "removed": "निकाला गया", + "removed-from-contacts": "संपर्कों से हटाया गया", + "rename": "नाम बदलें", + "repeat-pin": "नया 6-अंकीय पासकोड दोहराएं", + "repeat-puk": "नया 12-अंकीय PUK दोहराएं", + "replies": "जवाब", + "replying-to": "{{author}} को प्रत्युत्तर देना", + "report-bug-email-template": "1. मुद्दा विवरण\n {{description}}\n \n\n 2. पुनरुत्पादन के चरण\n {{steps}}\n \n\n 3. स्क्रीनशॉट संलग्न करें जो समस्या को प्रदर्शित कर सकते हैं, कृपया\n", + "request-access": "अनुरोध का उपयोग", + "request-feature": "एक सुविधा का अनुरोध करें", + "request-membership": "सदस्यता का अनुरोध करें", + "request-pending": "अनुरोध अपूर्ण है…", + "request-processed-after-node-online": "समुदाय स्वामी नोड के वापस ऑनलाइन होने पर आपके अनुरोध पर कार्रवाई की जाएगी।", + "request-to-join": "शामिल होने का अनुरोध", + "request-transaction": "लेनदेन का अनुरोध करें", + "required-field": "आवश्यक क्षेत्र", + "resend-message": "पुन: भेजें", + "reset-card": "कार्ड रीसेट करें", + "reset-card-description": "यह कार्रवाई कार्ड को प्रारंभिक स्थिति में रीसेट कर देगी। यह निजी कुंजी सहित सभी कार्ड डेटा मिटा देगा। ऑपरेशन प्रतिवर्ती नहीं है।", + "reset-database": "डेटाबेस रीसेट करें", + "reset-database-warning": "चैट, संपर्क और सेटिंग्स हटाएं। आवश्यक है जब आप अपना पासवर्ड खो चुके हों", + "reset-database-warning-keycard": "चैट, संपर्क और सेटिंग्स हटाएं।", + "reset-password": "पासवर्ड रीसेट", + "restore-defaults": "डिफॉल्ट्स का पुनःस्थापन", + "retry": "पुन: प्रयास करें", + "revoke-access": "एक्सेस अक्षम करें", + "rpc-url": "आरपीसी यूआरएल", + "rpc-usage-copy": "प्रतिलिपि", + "rpc-usage-filter": "फ़िल्टर के तरीके", + "rpc-usage-filter-methods": "फ़िल्टर के तरीके", + "rpc-usage-filtered-total": "{{filtered-total}} {{total}}", + "rpc-usage-get-stats": "ताज़ा करना", + "rpc-usage-info": "RPC उपयोग के आँकड़े", + "rpc-usage-reset": "रीसेट", + "rpc-usage-total": "कुल मूल्य", + "safe-estimate": "सुरक्षित अनुमान", + "save": "बचाना", + "save-image-library": "छवि को पुस्तकालय में सहेजें", + "save-password": "पासवर्ड को बचाओ", + "save-password-unavailable": "पासवर्ड बचाने के लिए डिवाइस पासकोड सेट करें", + "save-password-unavailable-android": "पासवर्ड सहेजना अनुपलब्ध है: आपका डिवाइस रूट हो सकता है या आवश्यक सुरक्षा सुविधाओं का अभाव हो सकता है।", + "say-hi": "हाय कहो", + "scan-qr": "क्यू आर कोड स्कैन करें", + "scan-qr-code": "वॉलेट पते के साथ QR कोड स्कैन करें", + "scan-tokens": "टोकन स्कैन करें", + "search": "खोज", + "search-contacts": "संपर्क खोजें", + "search-no-chat-found": "खोजने पर कोई परिणाम नहीं मिला। क्या मतलब है आपका", + "secret-keys-confirmation-text": "यदि आप कभी भी अपना फ़ोन खो देते हैं, तो आपको अपने कीकार्ड का उपयोग जारी रखने के लिए उनकी आवश्यकता होगी।", + "secret-keys-confirmation-title": "कोड लिख दिया?", + "security": "सुरक्षा", + "see-details": "विस्तृत जानकारी देखें", + "see-it-again": "इसे फिर से देखें", + "see-sticker-set": "पूरा स्टिकर सेट देखें", + "see-suggestions": "सुझाव देखें", + "seed-key-uid-mismatch": "बीज मेल नहीं खाता", + "seed-key-uid-mismatch-desc-1": "आपके द्वारा दर्ज किया गया बीज वाक्यांश {{multiaccount-name}} मेल नहीं खाता", + "seed-key-uid-mismatch-desc-2": "इस खाते की कुंजी प्रबंधित करने के लिए अपने बीज वाक्यांश को सत्यापित करें और पुनः प्रयास करें।", + "seed-phrase-content": "पढ़ने के लिए अनुकूल शब्दों का एक सेट, जिसे BIP39 मानक सूची से बेतरतीब ढंग से चुना गया है और अन्य पर्स और उपकरणों पर आपके एथेरियम खाते को पुनर्प्राप्त या एक्सेस करने के लिए उपयोग किया जाता है। क्रिप्टो पारिस्थितिकी तंत्र में \"स्मरक वाक्यांश,\" \"पुनर्प्राप्ति वाक्यांश\" या \"वॉलेट बैकअप\" के रूप में भी जाना जाता है। अधिकांश क्रिप्टो ऐप खाते बनाने के लिए इसी मानक का उपयोग करते हैं।", + "seed-phrase-placeholder": "बीज वाक्यांश...", + "seed-phrase-title": "बीज वाक्यांश", + "select": "चुनना", + "select-account": "खाता चुनें", + "select-account-dapp": "उस खाते का चयन करें जिसे आप डैप्स के साथ उपयोग करना चाहते हैं", + "select-account-first": "पहले एक खाता चुनें", + "select-chat": "मैसेजिंग शुरू करने के लिए चैट का चयन करें", + "select-new-location-for-keys": "अपनी निजी कुंजी (कुंजी) सहेजने के लिए एक नया स्थान चुनें", + "select-token-to-receive": "प्राप्त करने के लिए टोकन का चयन करें", + "select-token-to-swap": "स्वैप करने के लिए टोकन का चयन करें", + "selected": "चुन लिया", + "send": "भेजें", + "send-contact-request-message": "चैट शुरू करने के लिए आपको संपर्क बनने की जरूरत है", + "send-logs": "एक बग रिपोर्ट करो", + "send-logs-to": "{{email}} को बग की रिपोर्ट करें", + "send-message": "मेसेज भेजें", + "send-push-notifications": "पुश सूचनाएं भेजें", + "send-push-notifications-description": "अक्षम होने पर, आपके संदेश प्राप्त करने वाले व्यक्ति को उनके आने की सूचना नहीं दी जाएगी", + "send-request": "अनुरोध भेजा", + "send-request-amount": "राशि", + "send-request-amount-max-decimals": "दशमलव की अधिकतम संख्या {{asset-decimals}}", + "send-request-unknown-token": "अज्ञात टोकन - {{asset}}", + "send-sending-to": "को {{recipient-name}}", + "send-transaction": "लेन-देन भेजें", + "sending": "भेजना", + "sent": "भेज दिया", + "sent-at": "पर भेजा गया", + "server": "सर्वर", + "set-a-topic": "एक विषय बनाएं", + "set-currency": "मुद्रा सेट करें", + "set-custom-fee": "कस्टम शुल्क सेट करें", + "set-dapp-access-permissions": "डीएपी एक्सेस अनुमतियां सेट करें", + "set-max": "अधिकतम सेट करें", + "settings": "समायोजन", + "share": "साझा करना", + "share-address": "पता साझा करें", + "share-chat": "चैट साझा करें", + "share-community": "समुदाय साझा करें", + "share-contact-code": "मेरी चैट कुंजी साझा करें", + "share-dapp-text": "इस डीएपी को देखें जो मैं Status पर उपयोग कर रहा हूं: {{link}}", + "share-image": "चित्र साझा करें", + "share-invite-link": "एक आमंत्रण लिंक साझा करें", + "share-link": "लिंक शेयर करें", + "share-logs": "लॉग साझा करें", + "share-my-profile": "मेरी प्रोफ़ाइल साझा करें", + "share-profile": "प्रोफ़ाइल साझा करें", + "share-profile-link": "प्रोफ़ाइल लिंक साझा करें", + "share-public-chat-text": "इस सार्वजनिक चैट को Status ऐप पर देखें: {{link}}", + "shared": "साझा", + "sharing-copied-to-clipboard": "कॉपी किया गया", + "sharing-copy-to-clipboard": "प्रतिलिपि", + "sharing-data-desc-1": "यह सुनिश्चित करने के लिए कि कोई संवेदनशील डेटा नहीं भेजा जाता है, डेटा को सार्वजनिक नियमों के विरुद्ध मान्य किया जाता है। भरोसा मत करो, सत्यापित करो।☺", + "sharing-data-desc-2": "उपयोग डेटा स्टेटस 'पीयर-टू-पीयर नेटवर्क' पर एंड-टू-एंड एन्क्रिप्टेड भेजा जाता है", + "sharing-data-desc-3": "आपकी नियमित चैट कुंजी के बजाय, एकल उपयोग कुंजी का उपयोग किया जाता है", + "sharing-data-desc-4": "उपयोग डेटा को आपके आईपी पते से संबद्ध नहीं किया जा सकता", + "sharing-data-desc-5": "सभी उपयोगकर्ताओं का संचयी डेटा सार्वजनिक रूप से उपलब्ध है", + "sharing-data-desc-6": "डेटा भेजे जाने के बाद आपके फ़ोन से डेटा हटा दिया जाता है", + "sharing-share": "साझा करना", + "shell-placeholder-subtitle": "अपने समुदायों, संदेशों के टैब खोलें,\n वॉलेट खाता और ब्राउज़र विंडो", + "shell-placeholder-title": "आपके ऐप्स यहां चलेंगे", + "show-less": "कम दिखाएं", + "show-more": "और दिखाओ", + "show-notifications": "सूचनाएं दिखाएं", + "show-profile-pictures": "से प्रोफ़ाइल चित्र देखें", + "show-profile-pictures-to": "को अपना प्रोफ़ाइल चित्र दिखाएं", + "show-qr": "क्यूआर कोड दिखाएं", + "show-transaction-data": "लेन-देन डेटा दिखाएं", + "sign-and-send": "साइन करें और भेजें", + "sign-anyway": "वैसे भी साइन करें", + "sign-in": "साइन इन करें", + "sign-message": "संदेश पर हस्ताक्षर करें", + "sign-out": "साइन आउट", + "sign-request-failed": "संदेश पर हस्ताक्षर नहीं कर सका", + "sign-with": "के साथ साइन इन करें", + "sign-with-password": "पासवर्ड से साइन करें", + "sign-you-in": "आपको साइन इन कर रहा है…", + "signing": "हस्ताक्षर", + "signing-a-message": "एक संदेश पर हस्ताक्षर करना", + "signing-phrase": "हस्ताक्षर वाक्यांश", + "skip": "छोडना", + "slippage": "फिसलन", + "slow": "धीमा", + "something-went-wrong": "कुछ गलत हो गया", + "soon": "जल्दी", + "sort-communities": "समुदायों को सॉर्ट करें", + "specify-address": "पता निर्दिष्ट करें", + "specify-name": "एक नाम निर्दिष्ट करें", + "specify-network-id": "नेटवर्क आईडी निर्दिष्ट करें", + "specify-rpc-url": "RPC URL निर्दिष्ट करें", + "specify-server-public-key": "सर्वर सार्वजनिक कुंजी दर्ज करें", + "specify-symbol": "एक प्रतीक निर्दिष्ट करें", + "start-chat": "बातचीत शुरू कीजिए", + "start-conversation": "बातचीत शुरू करें", + "start-group-chat": "समूह चैट प्रारंभ करें", + "start-new-chat": "नई चैट शुरू करें", + "starter-pack-coming": "स्टार्टर पैक आपके रास्ते में आ रहा है", + "starter-pack-coming-description": "कुछ मिनटों से लेकर घंटों तक का समय लग सकता है", + "starter-pack-received": "स्टार्टर पैक प्राप्त", + "starter-pack-received-description": "शुरू करने के लिए यहां कुछ क्रिप्टो है! स्टिकर, एक ENS नाम प्राप्त करने के लिए इसका उपयोग करें और dapps आज़माएं", + "status": "Status", + "status-always-online": "हमेशा ऑनलाइन", + "status-automatic": "स्वचालित", + "status-automatic-subtitle": "स्वचालित रूप से status सेट करें", + "status-confirmed": "की पुष्टि की", + "status-dnd": "परेशान न करें", + "status-dnd-subtitle": "सभी सूचनाओं को म्यूट करता है", + "status-hardwallet": "Status हार्डवॉलेट", + "status-inactive": "निष्क्रिय", + "status-inactive-subtitle": "आपकी ऑनलाइन स्थिति छुपाता है", + "status-is-open-source": "Status ओपन-सोर्स है", + "status-keycard": "Status कीकार्ड", + "status-mobile-descr": "चैट को सिंक करते समय Status बहुत अधिक डेटा का उपयोग करती है। मोबाइल नेटवर्क पर होने पर आप सिंक नहीं करना चुन सकते हैं", + "status-not-sent-click": "पुष्टि नहीं। विकल्पों के लिए क्लिक करें", + "status-not-sent-tap": "पुष्टि नहीं। विकल्पों के लिए टैप करें", + "status-pending": "लंबित", + "status-sent": "भेजा", + "status-tx-not-found": "TX नहीं मिला", + "status-updates-descr": "स्टेटस अपडेट यहां दिखाई देंगे। अपनी टाइमलाइन पर अपडेट प्राप्त करने के लिए प्रोफ़ाइल को संपर्क के रूप में जोड़ें।", + "statuses-descr": "जो आपके मन में है उसे साझा करें और अपने संपर्कों से अपडेट रहें", + "statuses-my-status-descr": "जो आपके मन में है उसे साझा करें। आपकी प्रोफ़ाइल पर जाने वाला कोई भी व्यक्ति आपकी स्थिति देख सकेगा। जो लोग आपको अपने संपर्क के रूप में जोड़ते हैं, उन्हें आपके अपडेट उनकी टाइमलाइन पर प्राप्त होंगे", + "step-i-of-n": "{{number}} का चरण {{step}} }", + "sticker": "स्टीकर", + "sticker-market": "स्टिकर बाजार", + "storage": "भंडारण", + "strikethrough": "स्ट्राइकथ्रू", + "submit": "प्रस्तुत", + "submit-bug": "एक बग सबमिट करें", + "success": "सफलता", + "successful-connection": "सफल कनेक्शन", + "suggested-min-tip": "सुझाया गया मि. बख्शीश", + "suggested-price-limit": "सुझाई गई मूल्य सीमा", + "swap": "अदला-बदली", + "swap-details": "स्वैप विवरण", + "switch-to-simple-interface": "साधारण इंटरफ़ेस पर स्विच करें", + "symbol": "प्रतीक", + "sync-all-devices": "सभी उपकरणों को सिंक करें", + "sync-in-progress": "सिंक किया जा रहा है...", + "sync-settings": "सिंक सेटिंग्स", + "sync-synced": "मेल में", + "syncing-devices": "सिंक किया जा रहा है...", + "system": "प्रणाली", + "tabs": "टैब", + "tag-was-lost": "टैग खो गया था", + "tap-card-again": "अपने फ़ोन के पीछे कार्ड को फिर से टैप करें", + "terms-of-service": "उपयोग की शर्तें", + "test-networks": "टेस्ट नेटवर्क", + "text-input-disabled": "एक क्षण प्रतीक्षा करें...", + "thank-you": "शुक्रिया", + "this-device": "यह डिवाइस", + "this-device-desc": "आपकी कुंजियों को एन्क्रिप्ट किया जाएगा और आपके डिवाइस पर सुरक्षित रूप से संग्रहीत किया जाएगा", + "this-is-you-signing": "यह आपका हस्ताक्षर वाक्यांश है", + "this-will-take-few-seconds": "इसमें कुछ सेकंड लगेंगे", + "three-days": "तीन दिन", + "three-words-description": "प्रत्येक लेनदेन पर हस्ताक्षर करने से पहले आपको इन 3 शब्दों को देखना चाहिए", + "three-words-description-2": "यदि आप कोई भिन्न संयोजन देखते हैं, तो लेन-देन रद्द करें और साइन आउट करें", + "timeline": "समय", + "tip-cap": "टिप कैप", + "to": "तक", + "to-block": "अवरोध पैदा करना", + "to-enable-biometric": "{{bio-type-label}} को सक्षम करने के लिए, आपको अनलॉक स्क्रीन पर अपना पासवर्ड सहेजना होगा", + "to-encrypt-enter-password": "खाते को एन्क्रिप्ट करने के लिए कृपया अपना पासवर्ड दर्ज करें", + "to-see-this-message": "यह संदेश देखने के लिए,", + "token": "टोकन", + "token-auto-validate-decimals-error": "{{address}} {{symbol}} के लिए गलत दशमलव - {{expected}} पर सेट लेकिन {{actual}} के रूप में पाया गया", + "token-auto-validate-name-error": "{{address}} पर {{symbol}} टोकन के लिए गलत नाम - {{expected}} पर सेट किया गया लेकिन {{actual}} के रूप में पाया गया", + "token-auto-validate-symbol-error": "{{address}} {{symbol}} के लिए गलत प्रतीक - {{expected}} पर सेट किया गया लेकिन {{actual}} के रूप में पाया गया", + "token-details": "टोकन विवरण", + "token-price": "टोकन मूल्य", + "topic-name-error": "केवल लोअरकेस अक्षरों (a से z), संख्याओं और डैश (-) का उपयोग करें। चैट कुंजियों का उपयोग न करें", + "total-gas": "कुल गैस", + "total-members": "कुल सदस्य", + "transaction": "लेन-देन", + "transaction-data": "लेन - देन के डेटा", + "transaction-declined": "लेन - देन से इनकार कर दिया गया है", + "transaction-description": "नेटवर्क पर 12 पुष्टि के बाद इसे पूरा करने पर विचार करें।", + "transaction-details": "लेनदेन का विवरण", + "transaction-failed": "लेन - देन विफल", + "transaction-fee": "लेन-देन शुल्क", + "transaction-history": "लेनदेन का इतिहास", + "transaction-request": "लेनदेन अनुरोध", + "transaction-sent": "लेन-देन भेजा गया", + "transaction-signed": "लेन-देन पर सफलतापूर्वक हस्ताक्षर किए गए हैं", + "transactions": "लेनदेन", + "transactions-filter-select-all": "सभी का चयन करे", + "transactions-filter-title": "फ़िल्टर इतिहास", + "transactions-history": "लेनदेन का इतिहास", + "transactions-history-empty": "आपके इतिहास में अभी तक कोई लेन-देन नहीं है", + "transactions-history-loading": "लेन-देन इतिहास लोड हो रहा है. इसमें कुछ समय लग सकता है।", + "transactions-load-more": "और लोड करें", + "transactions-management-enabled": "लेनदेन प्रबंधन (अल्फा)", + "transactions-sign": "संकेत", + "transfer-ma-unknown-error-desc-1": "ऐसा लगता है कि आपका बहुखाता हटाया नहीं गया था। डेटाबेस रीसेट किया गया हो सकता है", + "transfer-ma-unknown-error-desc-2": "कृपया अपनी खाता सूची जांचें और पुन: प्रयास करें। यदि खाता सूचीबद्ध नहीं है, तो बीज वाक्यांश के साथ पुनर्प्राप्त करने के लिए मौजूदा कुंजियों तक पहुंचें पर जाएं", + "transfers-fetching-failure": "स्थानांतरण इतिहास अपडेट नहीं किया जा सका। अपना कनेक्शन जांचें और पुन: प्रयास करने के लिए नीचे खींचें", + "tribute-required-by-multiaccount": "{{multiaccount-name}} को चैट शुरू करने के लिए SNT की आवश्यकता है।", + "tribute-state-paid": "श्रद्धांजलि अर्पित", + "tribute-state-pending": "श्रद्धांजलि लंबित", + "tribute-state-required": "{{snt-amount}} SNT श्रद्धांजलि की आवश्यकता है", + "tribute-to-talk": "बात करने के लिए श्रद्धांजलि", + "tribute-to-talk-add-friends": "श्रद्धांजलि भुगतान के बिना चैट की अनुमति देने के लिए मित्रों को संपर्क के रूप में जोड़ें।", + "tribute-to-talk-are-you-friends": "क्या तुम दोस्त हो?", + "tribute-to-talk-ask-to-be-added": "संपर्क के रूप में जोड़े जाने के लिए कहें", + "tribute-to-talk-contact-received-your-tribute": "आपकी श्रद्धांजलि प्राप्त की। अब आप सुरक्षित रूप से एक दूसरे के साथ चैट कर सकते हैं।", + "tribute-to-talk-desc": "नए लोगों के लिए चैट शुरू करने के लिए एसएनटी की आवश्यकता के द्वारा अपना ध्यान मुद्रीकृत करें", + "tribute-to-talk-disabled": "टॉक टू ट्रिब्यूट डिसेबल्ड", + "tribute-to-talk-disabled-note": "अब से, नए लोग बिना SNT भेजे आपके साथ चैट शुरू कर सकते हैं।", + "tribute-to-talk-enabled": "आपके पास ट्रिब्यूट टू टॉक सक्षम है।", + "tribute-to-talk-finish-desc": "अब से, आप केवल संपर्कों और भुगतान करने वाले लोगों से ही चैट प्राप्त करेंगे", + "tribute-to-talk-learn-more-1": "आपका समय और ध्यान आपकी सबसे मूल्यवान संपत्ति हैं। टॉक टू ट्रिब्यूट आपको नए लोगों के लिए आपके साथ चैट शुरू करने के लिए आवश्यक एसएनटी की मात्रा निर्धारित करने देता है।", + "tribute-to-talk-learn-more-2": "जो कोई भी आपकी संपर्क सूची में नहीं है, उसे भुगतान करने के लिए कहा जाएगा, और उनके पास होने पर आप जवाब दे सकते हैं।", + "tribute-to-talk-learn-more-3": "आप हमेशा पैसे वापस भेज सकते हैं, लेकिन यह सुनिश्चित करने के लिए कि मित्र आप तक स्वतंत्र रूप से पहुंच सकें, पहले उन्हें संपर्क के रूप में जोड़ें।", + "tribute-to-talk-paywall-learn-more-1": "हमारा समय और ध्यान हमारी सबसे मूल्यवान संपत्ति है। ट्रिब्यूट टू टॉक आपको एसएनटी भुगतान के बदले नए लोगों से संपर्क करने देता है।", + "tribute-to-talk-paywall-learn-more-2": "किसी ऐसे व्यक्ति के साथ चैट शुरू करने के लिए जिसके पास ट्रिब्यूट सेट है, बस आवश्यक एसएनटी का भुगतान करें और आपको एक संपर्क के रूप में जोड़ा जाएगा।", + "tribute-to-talk-paywall-learn-more-3": "यदि आप उन्हें जानते हैं, तो आप मुफ्त में जोड़े जाने के लिए अपनी प्रोफ़ाइल Status के बाहर साझा कर सकते हैं।", + "tribute-to-talk-pending": "श्रद्धांजलि लंबित पुष्टि", + "tribute-to-talk-pending-note": "श्रद्धांजलि लेनदेन की पुष्टि नेटवर्क पर लंबित है। आप लेन-देन इतिहास में इसकी स्थिति की जांच कर सकते हैं", + "tribute-to-talk-removing-note": "ट्रिब्यूट टू टॉक को हटाने से नए लोग बिना एसएनटी भेजे चैट शुरू कर सकेंगे। लेन-देन करने की आवश्यकता है।", + "tribute-to-talk-set-snt-amount": "नए लोगों के लिए चैट शुरू करने के लिए आवश्यक एसएनटी की मात्रा निर्धारित करें", + "tribute-to-talk-signing": "लेन-देन पर हस्ताक्षर करने की प्रतीक्षा कर रहा है", + "tribute-to-talk-transaction-failed-note": "लेन-देन विफल हो गया है और आपकी ट्रिब्यूट टू टॉक सेटिंग को नहीं बदला गया है", + "tribute-to-talk-tribute-received1": "श्रद्धांजलि मिली। आप और", + "tribute-to-talk-tribute-received2": "अब संपर्क हैं और एक दूसरे के साथ सुरक्षित रूप से चैट कर सकते हैं।", + "tribute-to-talk-you-require-snt": "नए लोगों के लिए चैट शुरू करने के लिए आपको SNT की आवश्यकता होती है।", + "try-again": "पुनः प्रयास करें", + "try-keeping-the-card-still": "कार्ड को स्थिर रखने का प्रयास करें", + "turn-nfc-description": "आपके डिवाइस पर NFC अक्षम है। आप इसे सेटिंग में सक्षम कर सकते हैं", + "turn-nfc-on": "जारी रखने के लिए NFC चालू करें", + "two-minutes": "दो मिनट", + "tx-fail-description1": "यह लेनदेन विफल होने की संभावना है। कस्टम नेटवर्क शुल्क का उपयोग करके अपने जोखिम पर साइन इन करें।", + "tx-fail-description2": "यह लेनदेन विफल होने की संभावना है। अपने जोखिम पर हस्ताक्षर करने के लिए एक कस्टम नेटवर्क शुल्क निर्धारित करें।", + "type": "प्रकार", + "type-a-message": "संदेश", + "ulc-enabled": "यूएलसी सक्षम", + "unable-to-fetch": "चैट इतिहास लाने में असमर्थ", + "unable-to-read-this-code": "इस कोड को पढ़ने में असमर्थ", + "unable-to-send-messages": "संदेश भेजने और प्राप्त करने में असमर्थ", + "unblock": "अनब्लॉक", + "unblock-contact": "इस उपयोगकर्ता को अनब्लॉक करें", + "undo": "पूर्ववत", + "unknown-status-go-error": "अज्ञात स्थिति-जाने त्रुटि", + "unlimited": "असीमित", + "unlock": "अनलॉक", + "unmute": "अनम्यूट", + "unmute-chat": "चैट अनम्यूट करें", + "unmute-community": "समुदाय अनम्यूट करें", + "unmute-group": "समूह अनम्यूट करें", + "unpair-card": "अनपेयर कार्ड", + "unpair-card-confirmation": "यह कार्रवाई मौजूदा डिवाइस से कार्ड को अलग कर देगी। 6-अंकीय पासकोड प्राधिकरण की आवश्यकता है। क्या आप आगे बढ़ना चाहते हैं?", + "unpair-keycard": "इस फ़ोन से कीकार्ड अनपेयर करें", + "unpair-keycard-warning": "आपका पेयरिंग कोड\/PUK और पिन अपरिवर्तित रहता है", + "unpaired-keycard-text": "आपके द्वारा टैप किया गया कीकार्ड इस फ़ोन से संबद्ध नहीं है", + "unpaired-keycard-title": "ऐसा लगता है कि आपका कार्ड अयुग्मित कर दिया गया है", + "unpin": "अनपिन", + "unpin-from-channel": "चैनल से अनपिन करें", + "unpin-from-chat": "चैट से अनपिन करें", + "untrustworthy": "अविश्वसनीय चिह्नित करें", + "update": "अपडेट करना", + "update-to-listen-audio": "यहां ऑडियो संदेश सुनने के लिए नवीनतम संस्करण में अपडेट करें!", + "update-to-see-image": "यहां एक अच्छी छवि देखने के लिए नवीनतम संस्करण में अपडेट करें!", + "update-to-see-sticker": "यहां एक अच्छा स्टिकर देखने के लिए नवीनतम संस्करण में अपडेट करें!", + "updates-to-tos": "उपयोग की शर्तों के अपडेट", + "updates-to-tos-desc": "जारी रखने से पहले, कृपया उपयोग की शर्तों की समीक्षा करें और पुष्टि करें कि आप ऐप का उपयोग कैसे करते हैं, इसकी पूरी जिम्मेदारी लेते हैं।", + "url": "यूआरएल", + "usd-currency": "USD", + "use-as-profile-picture": "प्रोफ़ाइल चित्र के रूप में उपयोग करें", + "use-valid-contact-code": "कृपया कोई मान्य चैट कुंजी या उपयोगकर्ता नाम दर्ज करें या स्कैन करें", + "validation-amount-invalid-number": "राशि कोई मान्य संख्या नहीं है", + "validation-amount-is-too-precise": "राशि बहुत सटीक है। दशमलव की अधिकतम संख्या {{decimals}} ।", + "verified-community": "सत्यापित समुदाय", + "version": "एप्लिकेशन वेरीज़न", + "view": "देखना", + "view-community-rules": "समुदाय नियम देखें", + "view-cryptokitties": "क्रिप्टोकरंसी में देखें", + "view-cryptostrikers": "क्रिप्टोस्ट्राइकर्स में देखें", + "view-data": "डेटा देखें", + "view-details": "विवरण देखें", + "view-etheremon": "एथेरमोन में देखें", + "view-gitcoin": "गिटकोइन में देखें", + "view-members": "सदस्यों को देखें", + "view-on-opensea": "ओपनसी पर देखें", + "view-profile": "प्रोफ़ाइल देखें", + "view-public-dashboard": "सार्वजनिक डैशबोर्ड देखें", + "view-rules": "नियम देखें", + "view-signing": "हस्ताक्षर वाक्यांश देखें", + "view-superrare": "सुपर रेयर में देखें", + "vote-to-feature": "इस समुदाय को दिखाने के लिए वोट करें", + "waiting-for-wifi": "कोई वाई-फ़ाई नहीं, संदेश समन्वयन अक्षम है.", + "waiting-for-wifi-change": "समायोजन", + "waiting-to-sign": "लेन-देन पर हस्ताक्षर करने के लिए प्रतीक्षारत...", + "waiting-wi-fi": "वाई-फ़ाई की प्रतीक्षा की जा रही है…", + "waku-bloom-filter-mode": "वाकू ब्लूम फ़िल्टर मोड", + "wakuv2-change-nodes": "क्या आप वाकई Wakuv2 नोड्स बदलना चाहते हैं?", + "wakuv2-node-format": "\/आईपी4\/ {node-ip} \/टीसीपी\/ {port} \/पी2पी\/ {id}", + "wakuv2-settings": "वाकू v2 सेटिंग्स", + "wallet": "बटुआ", + "wallet-address": "वॉलेट का पता", + "wallet-asset": "संपत्ति", + "wallet-assets": "संपत्तियां", + "wallet-backup-recovery-title": "अपने बीज वाक्यांश का बैकअप लें", + "wallet-choose-recipient": "प्राप्तकर्ता चुनें", + "wallet-collectibles": "संग्रह", + "wallet-connect": "वॉलेट कनेक्ट", + "wallet-connect-2.0": "वॉलेट कनेक्ट 2.0", + "wallet-connect-app-connected": "जुड़ा हुआ है", + "wallet-connect-go-back": "अपने ब्राउज़र या dapp पर वापस जाएँ", + "wallet-connect-proposal-description": "कनेक्ट करके आप {{name}} को अपना खाता पता पुनर्प्राप्त करने और Web3 को सक्षम करने की अनुमति देते हैं", + "wallet-connect-proposal-title": "अपने वॉलेट से जुड़ना चाहेंगे", + "wallet-insufficient-funds": "अपर्याप्त कोष", + "wallet-insufficient-gas": "गैस के लिए पर्याप्त ईटीएच नहीं", + "wallet-invalid-address": "अमान्य पता:\n {{data}}", + "wallet-invalid-address-checksum": "पते में त्रुटि:\n {{data}}", + "wallet-invalid-chain-id": "नेटवर्क मेल नहीं खाता:\n {{data}} लेकिन वर्तमान श्रृंखला {{chain}}", + "wallet-key-content": "एथेरियम मानक पर आधारित और 0x से शुरू होने वाला 64 वर्ण का हेक्स पता। जब आप धन प्राप्त करना चाहते हैं, तो सार्वजनिक रूप से, आपके खाते का पता दूसरों के साथ साझा किया जाता है। इसे \"एथेरियम एड्रेस\" या \"वॉलेट एड्रेस\" के रूप में भी जाना जाता है।", + "wallet-key-title": "खाते का पता", + "wallet-manage-accounts": "खाते प्रबंधित करें", + "wallet-manage-app-connections": "ऐप्लिकेशन कनेक्शंस प्रबंधित करें", + "wallet-manage-assets": "संपत्ति प्रबंधित करें", + "wallet-request": "अनुरोध", + "wallet-send": "भेजना", + "wallet-send-min-units": "न्यूनतम 21000 इकाइयां", + "wallet-send-min-wei": "न्यूनतम 1 वी", + "wallet-settings": "वॉलेट सेटिंग", + "wallet-total-value": "कुल मूल्य", + "wallet-transaction-total-fee": "कुल शुल्क", + "wants-to-access-profile": "आपकी प्रोफ़ाइल तक पहुंचना चाहता है", + "warning": "चेतावनी", + "warning-message": "क्षमा करें, हम स्पैम को रोकने के लिए एक के बाद एक कई संदेश भेजने को सीमित करते हैं। कृपया एक क्षण में पुन: प्रयास करें", + "warning-sending-to-contract-descr": "आपके द्वारा दर्ज किया गया पता एक स्मार्ट अनुबंध है, इस पते पर धनराशि भेजने से धन की हानि हो सकती है। डीएपी के साथ बातचीत करने के लिए, Status डीएपी ब्राउज़र में डीएपी खोलें।", + "watch-only": "घड़ी-केवल", + "wc-brand-guide": "ट्रेडमार्क और लोगो जैसे ब्रांडिंग का उपयोग करने पर मार्गदर्शन", + "wc-disclaimer": "अस्वीकरण (तृतीय पक्ष प्रदाताओं सहित), वारंटी, और कानूनी रिलीज", + "wc-dispute": "विवाद समाधान प्रावधान", + "wc-how-to-use-status-app": "गोपनीयता और सुरक्षा सहित स्टेटस ऐप का उपयोग कैसे करें", + "wc-new-tos-based-on-principles-prefix": "हमारे के आधार पर डिज़ाइन की गई उपयोग की नई शर्तें", + "web-view-error": "पेज लोड करने में असमर्थ", + "websites": "वेबसाइटें", + "webview-camera-permission-requests": "वेबव्यू कैमरा अनुमति अनुरोध", + "webview-camera-permission-requests-subtitle": "सक्षम होने पर, वेबसाइट और डैप आपके कैमरे का उपयोग करने के लिए कह सकते हैं", + "welcome-blank-community-message": "आपके समुदाय यहां दिखाई देंगे.", + "welcome-blank-message": "आपकी चैट यहां दिखाई देंगी। नई चैट शुरू करने के लिए बटन दबाएं", + "welcome-community-blank-message": "आपके चैनल यहां दिखाई देंगे. एक नया चैनल बनाने के लिए, बटन पर क्लिक करें और \"चैनल बनाएं\" चुनें", + "welcome-community-blank-message-edit-chats": "आपके चैनल यहां दिखाई देंगे. एक नया चैनल बनाने के लिए, सामुदायिक स्क्रीन पर वापस जाएं, बटन पर क्लिक करें और \"चैनल बनाएं\" चुनें", + "welcome-screen-text": "अपना वॉलेट सेट करें, दोस्तों को चैट करने के लिए आमंत्रित करें\n और लोकप्रिय डैप ब्राउज़ करें!", + "welcome-to-status": "Status में आपका स्वागत है!", + "welcome-to-status-description": "अपना क्रिप्टो वॉलेट सेट करें, दोस्तों को चैट करने और विकेन्द्रीकृत ऐप्स ब्राउज़ करने के लिए आमंत्रित करें", + "what-changed": "किया बदल गया", + "what-is-shared": "क्या साझा किया जाता है", + "whats-on-your-mind": "आपके दिमाग में क्या है…", + "whats-trending": "देखें कि क्या चलन में है", + "word-count": "शब्द गणना", + "word-n": "शब्द # {{number}}", + "word-n-description": "यह जांचने के लिए कि क्या आपने अपने बीज वाक्यांश का सही ढंग से बैकअप लिया है, ऊपर # {{number}} शब्द दर्ज करें।", + "words-n": { + "one": "1 word", + "other": "{{count}} words" + }, + "write-down-and-store-securely": "कोड नीचे लिखें\n और उन्हें सुरक्षित रूप से स्टोर करें", + "wrong-address": "गलत पता", + "wrong-card": "गलत कार्ड", + "wrong-card-text": "टैप किया गया कार्ड आपके द्वारा चुनी गई कुंजियों के अनुरूप नहीं है", + "wrong-contract": "गलत अनुबंध", + "wrong-keycard-text": "आपके द्वारा टैप किया गया कीकार्ड इस फ़ोन से संबद्ध नहीं है", + "wrong-keycard-title": "ऐसा लगता है कि आपने टैप किया है\n एक गलत कीकार्ड", + "wrong-password": "गलत पासवर्ड", + "wrong-word": "गलत शब्द", + "yes": "हां", + "you": "तुम", + "you-already-have-an-asset": "आपके पास पहले से ही एक संपत्ति है {{value}}", + "you-are-all-set": "तुम सब सेट हो!", + "you-are-all-set-description": "यदि आप अपना फोन खो देते हैं, तो अब आप अपने बीज वाक्यांश का उपयोग करके अपने फंड और चैट कुंजी तक पहुंच सकते हैं", + "you-can-change-account": "आप खाते का नाम और रंग अपनी इच्छानुसार बदल सकते हैं", + "you-can-choose-preview-websites": "आप चुन सकते हैं कि निम्नलिखित में से कौन सी वेबसाइट चैट में विवरण और चित्रों के लिंक का पूर्वावलोकन कर सकती है", + "you-can-fetch": "आप चैट इतिहास ला सकते हैं", + "you-dont-have-contacts": "आपके पास अभी तक कोई संपर्क नहीं है।", + "you-dont-have-contacts-invite-friends": "आपके पास अभी तक कोई संपर्क नहीं है।\n चैट शुरू करने के लिए अपने दोस्तों को आमंत्रित करें।", + "you-dont-have-stickers": "आपके पास अभी तक कोई स्टिकर नहीं है", + "you-must-always-hold": "आपको हमेशा धारण करना चाहिए:", + "you-must-hold": "आपको धारण करना चाहिए:", + "you-must-now-hold": "अब आपको धारण करना चाहिए:", + "you-will-need-this-code": "Status खोलने और लेन-देन पर हस्ताक्षर करने के लिए आपको इस कोड की आवश्यकता होगी", + "you-will-start-from-scratch": "आप नए सिरे से चाबियों के एक नए सेट के साथ शुरुआत करेंगे", + "your-card-is-frozen": "आपका कीकार्ड फ़्रीज़ हो गया है। कार्ड एक्सेस रीसेट करें", + "your-contact-code": "पहुँच प्रदान करना इस DApp को आपकी चैट कुंजी पुनः प्राप्त करने के लिए अधिकृत करता है", + "your-data-belongs-to-you": "यदि आप अपना बीज वाक्यांश खो देते हैं तो आप अपना डेटा और धन खो देते हैं", + "your-data-belongs-to-you-description": "यदि आप पहुंच खो देते हैं, उदाहरण के लिए अपना फोन खो देने से, आप केवल अपने बीज वाक्यांश के साथ अपनी कुंजियों तक पहुंच सकते हैं। कोई नहीं, लेकिन आपके पास अपना बीज वाक्यांश है। नीचे लिखें। उसे सुरक्षित रखें", + "your-keys": "आपकी चाभियां", + "your-price-limit": "आपकी कीमत सीमा", + "your-recovery-phrase": "आपका बीज वाक्यांश", + "your-recovery-phrase-description": "यह आपका बीज वाक्यांश है। आप इसका उपयोग यह साबित करने के लिए करते हैं कि यह आपका बटुआ है। आप इसे केवल एक बार देख सकते हैं! इसे कागज पर लिखकर सुरक्षित स्थान पर रख दें। यदि आप अपना बटुआ खो देते हैं या पुनः स्थापित करते हैं तो आपको इसकी आवश्यकता होगी।", + "your-tip-limit": "आपकी टिप सीमा", + "youre-on-mobile-network": "आप मोबाइल नेटवर्क पर हैं" +} diff --git a/translations/hu.json b/translations/hu.json new file mode 100644 index 00000000000..21b4750509c --- /dev/null +++ b/translations/hu.json @@ -0,0 +1,127 @@ +{ + "confirm": "Megerősít", + "amount": "Összeg", + "members-active": { + "one": "1 tag, 1 aktív", + "other": "{{count}} tag, {{count}} aktív", + "zero": "nincsenek tagok" + }, + "chat-name": "Csevegés neve", + "phew-here-is-your-passphrase": "*Hűha* ez nehéz volt, de kész a jelmondatod, *írd fel valahova és vigyázz rá!* Szükséged lesz hozzá felhasználói fiókod helyreállításához.", + "public-group-topic": "Téma", + "chat-settings": "Csevegés beállítások", + "offline": "Offline", + "invited": "meghívott", + "address": "Cím", + "new-public-group-chat": "Csatlakozás nyilvános csevegéshez", + "datetime-hour": { + "one": "óra", + "other": "óra" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Eltávolítás", + "add-members": "Tagok hozzáadása", + "done": "Kész", + "close-chat": "Csevegés törlése", + "new-group-chat": "Új csoportos csevegés", + "sign-in": "Bejelentkezés", + "datetime-yesterday": "tegnap", + "create-new-account": "Új fiók létrehozása", + "datetime-ago": "ezelőtt", + "contacts": "Kapcsolatok", + "got-it": "Értem", + "active-online": "Online", + "password": "Jelszó", + "browsing-title": "Böngészés", + "discover": "Felfedezés", + "browsing-cancel": "Mégse", + "intro-status": "Csevegj velem felhasználói fiókod létrehozásáról és beállításaid megváltoztatásáról!", + "name": "Név", + "show-qr": "QR mutatása", + "connect": "Kapcsolódás", + "edit": "Szerkesztés", + "account-generation-message": "Adj egy percet, varázsolok egy kicsit és létre is hozom a felhasználói fiókodat!", + "no-messages": "Nincsenek üzenetek", + "passphrase": "Jelmondat", + "recipient": "Címzett", + "members-title": "Tagok", + "new-group": "Új csoport", + "phone-e164": "1. nemzetközi", + "settings": "Beállítások", + "chats": "Csevegések", + "transaction": "Tranzakció", + "public-group-status": "Nyilvános", + "image-source-make-photo": "Rögzítés", + "start-conversation": "Beszélgetés indítása", + "save": "Mentés", + "sharing-copy-to-clipboard": "Másolás vágólapra", + "sync-in-progress": "Szinkronizálás...", + "send-transaction": "Tranzakció küldése", + "incorrect-code": [ + "str", + "Sajnáljuk, hibás kód, kérjük, add meg újból" + ], + "image-source-gallery": "Kiválasztás a galériából", + "sync-synced": "Szinkronizálás folyamatban", + "status-pending": "Függőben levő", + "datetime-day": { + "one": "nap", + "other": "nap" + }, + "scan-qr": "QR beolvasása", + "contact-s": { + "one": "névjegy", + "other": "névjegyek" + }, + "next": "Következő", + "recent": "Legutóbbi", + "status": "Állapot", + "from": "Feladó", + "wrong-password": "Hibás jelszó", + "in-contacts": "Névjegyekben", + "sharing-share": "Megosztás...", + "type-a-message": "Írj egy üzenetet...", + "clear-history": "Előzmények törlése", + "no-contacts": "Még nincsenek kapcsolatok", + "datetime-today": "ma", + "web-view-error": "hoppá, hiba", + "error": "Hiba", + "more": "több", + "cancel": "Mégse", + "can-not-add-yourself": "Magadat nem adhatod hozzá", + "add-to-contacts": "Hozzáadás a kapcsolatokhoz", + "available": "Elérhető", + "You": "Te", + "main-wallet": "Fő zseb", + "members": { + "one": "1 tag", + "other": "{{count}} tag", + "zero": "nincsenek tagok" + }, + "intro-message1": "Üdv az Állapotnál\nÉrints erre a üzenetre, állítsd be a jelszavad és fogj hozzá!", + "new-contact": "Új kapcsolat", + "datetime-second": { + "one": "másodperc", + "other": "másodperc" + }, + "recover": "Visszaállítás", + "datetime-minute": { + "one": "perc", + "other": "perc" + }, + "browsing-open-in-android-web-browser": "Megnyitás új böngészőben", + "browsing-open-in-ios-web-browser": "Megnyitás új böngészőben", + "edit-profile": "Profil szerkesztése", + "active-unknown": "Ismeretlen", + "public-key": "Nyilvános kulcs", + "profile": "Profil", + "none": "Semmi", + "removed": "eltávolított", + "message": "Üzenet", + "here-is-your-passphrase": "Kész a jelmondatod, *írd fel valahová és őrizd meg!* Szükséged lesz hozzá felhasználói fiókod helyreállításához.", + "image-source-title": "Profilkép", + "left": "maradt", + "to": "Címzett", + "status-sent": "Elküldve", + "data": "Adatok" +} diff --git a/translations/id.json b/translations/id.json new file mode 100644 index 00000000000..098dab7fcc6 --- /dev/null +++ b/translations/id.json @@ -0,0 +1,1418 @@ +{ + "You": "Kamu", + "about-app": "Tentang", + "about-key-storage-content": "Status tidak akan pernah mengakses kunci pribadi Anda. Pastikan untuk mencadangkan frase seed Anda. Jika Anda kehilangan ponsel, itu adalah satu-satunya cara untuk mengakses kunci Anda.", + "about-key-storage-title": "Tentang penyimpanan kunci", + "about-names-content": "Tidak ada yang bisa berpura-pura menjadi Anda! Anda anonim secara default dan tidak perlu mengungkapkan nama asli Anda. Anda dapat mendaftarkan nama khusus dengan sedikit biaya.", + "about-names-title": "Nama tidak dapat diubah", + "about-sharing-data": "Tentang berbagi data", + "about-sharing-data-subtitle": "Sebagai proyek komunitas open-source, Status meminta Anda untuk membagikan data anonim dan non-invasif untuk meningkatkan aplikasi. Ini sangat memilih, dan dapat diubah kapan saja di Pengaturan.", + "accept": "Menerima", + "accept-and-add": "Terima dan tambahkan", + "accept-and-share-address": "Terima dan bagikan alamat", + "accept-new-chats-from": "Terima obrolan baru dari", + "access-existing-keys": "Akses kunci yang ada", + "access-key": "Kunci akses", + "account-added": "Akun ditambahkan", + "account-color": "Warna akun", + "account-content": "Anda dapat membandingkan akun dalam Status dengan rekening bank. Seperti halnya rekening bank, akun biasanya memiliki alamat dan saldo; Anda menggunakan akun ini untuk bertransaksi di Ethereum. Anda dapat memiliki beberapa akun di dompet Anda. Semua diakses dengan membuka Status.", + "account-exists-title": "Akun sudah ada", + "account-name": "Nama akun", + "account-settings": "Pengaturan akun", + "account-title": "Akun", + "accounts": "Akun", + "active-online": "Online", + "active-unknown": "Tidak dikenal", + "add": "Menambahkan", + "add-a-watch-account": "Tambahkan alamat khusus arloji", + "add-account": "Tambahkan akun", + "add-account-description": "Anda dapat mengimpor segala jenis akun Ethereum untuk menambahkannya ke dompet Status Anda", + "add-account-incorrect-password": "Kata sandi sepertinya salah. Masukkan kata sandi yang Anda gunakan untuk membuka kunci aplikasi.", + "add-an-account": "Tambahkan akun", + "add-bootnode": "Tambahkan bootnode", + "add-contact": "Tambah kontak", + "add-custom-token": "Tambahkan token khusus", + "add-mailserver": "Tambahkan simpul sejarah", + "add-members": "Tambahkan anggota", + "add-network": "Tambahkan jaringan", + "add-new-contact": "Tambahkan kontak baru", + "add-nickname": "Tambahkan nama panggilan (opsional)", + "add-private-key-account": "Tambahkan akun dari kunci pribadi", + "add-seed-account": "Tambahkan akun dengan frase awal", + "add-to-contacts": "Tambahkan ke Kontak", + "add-to-contacts-text": "Dengan menambahkan pengguna ke daftar kontak Anda, Anda membagikan alamat dompet Anda", + "add-to-favourites": "Tambahkan ke favorit", + "add-watch-account": "Tambahkan akun khusus arloji", + "address": "Alamat", + "address-or-ens-name": "Alamat atau nama ENS", + "address-received": "Alamat diterima", + "address-request-accepted": "Permintaan alamat diterima", + "address-requested": "Alamat yang diminta", + "advanced": "Maju", + "advanced-settings": "Pengaturan lanjutan", + "advertiser-description": "Anda telah menemukan Status berkat mitra. Apakah Anda keberatan jika Status memeriksa alamat IP Anda sekali sehingga mendapat imbalan? Informasi ini tidak akan digunakan untuk hal lain dan akan dihapus sepenuhnya setelah 7 hari.", + "advertiser-starter-pack-accept": "Menerima", + "advertiser-starter-pack-decline": "Menurun", + "advertiser-starter-pack-description": "Inilah beberapa crypto untuk Anda mulai! Gunakan untuk mendapatkan stiker, nama ENS, dan coba dapps", + "advertiser-starter-pack-title": "Paket awal", + "advertiser-title": "Privasi secara default", + "agree-by-continuing": "Dengan melanjutkan, Anda setuju \nuntuk kita", + "all": "Semua", + "allow": "Mengizinkan", + "allow-and-send": "Perbolehkan dan kirim", + "allow-mention-notifications": "Tampilkan @ sebutan", + "allowing-authorizes-this-dapp": "Mengizinkan otorisasi DApp ini untuk mengambil alamat dompet Anda dan mengaktifkan Web3", + "already-have-asset": "Anda sudah memiliki aset ini", + "amount": "Jumlah", + "anyone": "Siapa saja", + "appearance": "Penampilan", + "apply": "Menerapkan", + "are-you-sure": "Apakah kamu yakin?", + "are-you-sure-description": "Anda tidak akan dapat melihat seluruh frase seed lagi", + "are-you-sure-to-cancel": "Anda yakin ingin membatalkan?", + "are-you-sure?": "Apakah kamu yakin?", + "ask-in-status": "Ajukan pertanyaan atau laporkan bug", + "at": "at", + "attribution-received": "{{attrib}} dari {{max}} bonus diterima", + "audio": "Audio", + "audio-recorder": "Perekam", + "audio-recorder-error": "Kesalahan perekam", + "audio-recorder-max-ms-reached": "Waktu perekaman maksimum tercapai", + "audio-recorder-permissions-error": "Anda harus memberikan izin untuk mengirim pesan audio", + "authorize": "Mengizinkan", + "available": "Tersedia", + "available-participants": { + "other": "Anda dapat memilih {{count}} lebih banyak peserta" + }, + "back": "Kembali", + "back-up-seed-phrase": "Cadangkan phrase seed", + "back-up-your-seed-phrase": "Cadangkan frase seed Anda", + "backup-disabled": "Dengan disabilitas", + "backup-recovery-phrase": "Cadangkan phrase seed", + "balance": "Keseimbangan", + "begin-set-up": "Mulai pengaturan", + "biometric-auth-android-sensor-desc": "Sensor sentuh", + "biometric-auth-android-sensor-error-desc": "Gagal", + "biometric-auth-android-title": "Diperlukan Otentikasi", + "biometric-auth-confirm-logout": "Masuk kembali", + "biometric-auth-confirm-message": "Otentikasi biometrik diperlukan untuk melanjutkan, jika tidak memungkinkan silakan buka kunci Anda dengan kata sandi atau kode sandi Anda", + "biometric-auth-confirm-title": "Anda harus mengautentikasi!", + "biometric-auth-confirm-try-again": "Coba lagi", + "biometric-auth-error": "Tidak dapat melakukan otentikasi biometrik ( {{code}} )", + "biometric-auth-login-error-title": "Kesalahan otentikasi biometrik", + "biometric-auth-login-ios-fallback-label": "Masukkan kata kunci", + "biometric-auth-reason-login": "Masuk dalam Status", + "biometric-auth-reason-verify": "Verifikasi otentikasi", + "biometric-disable-bioauth": "nonaktifkan {{bio-type-label}}", + "biometric-disable-password-description": "Jika Anda menonaktifkan ini, Anda juga akan", + "biometric-disable-password-title": "Nonaktifkan penyimpanan kata sandi", + "biometric-enable": "Jika Anda tidak ingin memasukkan kata sandi setiap kali mengakses aplikasi, aktifkan {{bio-type-label}} masuk", + "biometric-enable-button": "Aktifkan {{bio-type-label}}", + "biometric-enable-keycard": "Jika Anda tidak ingin menggunakan Kartu Kunci setiap kali mengakses aplikasi, aktifkan {{bio-type-label}} masuk", + "biometric-faceid": "ID Wajah", + "biometric-fingerprint": "Sidik jari", + "biometric-secure-with": "Amankan dengan {{bio-type-label}}", + "biometric-touchid": "ID Sentuhan", + "bip39-password-placeholder": "Kata sandi BIP39", + "blank-keycard-text": "Anda dapat melanjutkan dengan kartu kunci setelah membuat kunci dan nama", + "blank-keycard-title": "Sepertinya Anda sudah mengetuk \nkartu kunci kosong", + "block": "Blok", + "block-contact": "Blokir pengguna ini", + "block-contact-details": "Pemblokiran akan menghapus pesan pengguna sebelumnya dan menghentikan pesan baru untuk menghubungi Anda", + "blocked-users": "Pengguna diblokir", + "bootnode-address": "Alamat bootnode", + "bootnode-details": "Detail bootnode", + "bootnode-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes diaktifkan", + "bootnodes-settings": "Pengaturan bootnodes", + "browsed-websites": "Riwayat browser akan muncul di sini", + "browser": "Browser", + "browser-not-secure": "Koneksi tidak aman! Jangan menandatangani transaksi atau mengirim data pribadi di situs ini.", + "browser-secure": "Koneksi aman. Pastikan Anda benar-benar mempercayai situs ini sebelum menandatangani transaksi atau memasukkan data pribadi.", + "browsers": "Browser", + "browsing-cancel": "Membatalkan", + "browsing-open-in-android-web-browser": "Buka di Android", + "browsing-open-in-ios-web-browser": "Buka di iOS", + "browsing-open-in-status": "Buka di Status", + "browsing-site-blocked-description1": "Kami mendeteksi kemungkinan aktivitas jahat dari alamat ini. Untuk melindungi Anda dan dompet Anda, kami mencegah navigasi lebih lanjut. \n\nJika menurut Anda ini adalah kesalahan, beri tau kami di", + "browsing-site-blocked-description2": "obrolan publik.", + "browsing-site-blocked-go-back": "Kembali", + "browsing-site-blocked-title": "Situs ini diblokir", + "browsing-title": "Telusuri", + "bug-report": "Laporkan bug", + "buy-crypto": "Beli crypto", + "buy-crypto-choose-a-service": "Pilih layanan yang ingin Anda gunakan untuk membeli crypto", + "buy-crypto-leaving": "Anda meninggalkan Status dan memasuki situs web pihak ketiga untuk menyelesaikan pembelian Anda", + "camera-access-error": "Untuk memberikan izin kamera yang diperlukan, buka pengaturan sistem Anda dan pastikan Status > Kamera dipilih.", + "can-not-add-yourself": "Itu Anda, untuk memulai obrolan pilih orang lain", + "can-send-messages": "Anda dapat mengirim dan menerima pesan baru", + "cancel": "Membatalkan", + "cancel-keycard-setup": "Batalkan pengaturan kartu kunci", + "cancelling": "Membatalkan", + "cannot-read-card": "Tidak dapat membaca kartu. \nHarap pegang di bagian belakang ponsel Anda", + "cannot-use-default-pin": "Kode akses 000000 tidak diizinkan. \n Silakan gunakan nomor lain", + "cant-open-public-chat": "Tidak dapat membuka obrolan publik", + "cant-report-bug": "Tidak dapat melaporkan bug", + "card-is-blank": "Kartu ini kosong", + "card-reseted": "Kartu telah diatur ulang", + "card-unpaired": "Kartu tidak berpasangan dari perangkat saat ini", + "change-fleet": "Ubah armada ke {{fleet}}", + "change-logging-enabled": "Anda yakin ingin {{enable}} masuk?", + "change-pairing": "Ubah kode pasangan", + "change-pairing-description": "Mengubah kode pemasangan tidak memengaruhi pemasangan saat ini. Namun, setiap pasangan baru akan membutuhkan kode baru.", + "change-pairing-title": "Buat kode pasangan baru", + "change-passcode": "Ubah Kode Sandi", + "change-password": "Ganti kata sandi", + "change-pin": "Ubah kode sandi 6 digit", + "change-puk": "Ubah PUK 12 digit", + "changed-amount-warning": "Jumlah diubah dari {{old}} menjadi {{new}}", + "changed-asset-warning": "Aset diubah dari {{old}} menjadi {{new}}", + "chaos-mode": "Mode kekacauan", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Obrolan", + "chat-and-transact": "Mengobrol dan bertransaksi secara pribadi dengan teman", + "chat-is-a-contact": "Kontak", + "chat-is-not-a-contact": "Bukan kontak", + "chat-key": "Kunci obrolan", + "chat-key-content": "Pesan pada protokol obrolan Status dikirim dan diterima menggunakan kunci enkripsi. Kunci obrolan publik adalah serangkaian karakter yang Anda bagikan dengan orang lain sehingga mereka dapat mengirimi Anda pesan dalam Status.", + "chat-key-title": "Kunci Obrolan", + "chat-link-previews": "Pratinjau tautan obrolan", + "chat-name": "Nama obrolan", + "chat-name-content": "Tiga kata acak, diturunkan secara algoritmik dari kunci obrolan Anda dan digunakan sebagai alias default Anda dalam obrolan. Nama obrolan sepenuhnya unik; tidak ada pengguna lain yang memiliki tiga kata yang sama.", + "chat-name-title": "Nama Obrolan", + "chat-settings": "Pengaturan Chat", + "chats": "Obrolan", + "check-on-opensea": "Periksa opensea", + "check-your-recovery-phrase": "Periksa frasa benih Anda", + "choose-authentication-method": "Pilih metode otentikasi", + "clear": "Bersihkan", + "clear-all": "Bersihkan semua", + "clear-history": "Bersihkan riwayat", + "clear-history-action": "Bersihkan", + "clear-history-confirmation": "Hapus riwayat?", + "clear-history-confirmation-content": "Apakah Anda yakin ingin menghapus riwayat obrolan ini?", + "clear-history-title": "Hapus riwayat?", + "close": "Menutup", + "close-app-button": "Konfirmasi", + "close-app-content": "Aplikasi akan berhenti dan ditutup. Ketika Anda membukanya kembali, jaringan yang dipilih akan digunakan", + "close-app-title": "Peringatan!", + "command-button-send": "Kirim", + "communities-enabled": "Komunitas diaktifkan", + "community-image-remove": "Menghapus", + "community-info": "Info komunitas", + "community-invite-title": "Undang", + "community-link": "Tautan komunitas", + "community-members-title": "Anggota", + "community-share-title": "Bagikan", + "complete-hardwallet-setup": "Kartu ini sekarang ditautkan. Anda membutuhkannya untuk menandatangani transaksi dan membuka kunci kunci Anda", + "completed": "Lengkap", + "confirm": "Konfirmasi", + "confirm-new-password": "Konfirmasi kata sandi baru", + "confirm-pairing-code-placeholder": "Konfirmasikan kode pemasanganmu...", + "confirm-password-placeholder": "Konfirmasi password Anda...", + "confirmation-request": "Permintaan konfirmasi", + "confirmations": "Konfirmasi", + "confirmations-helper-text": "Ketika transaksi memiliki 12 konfirmasi, Anda dapat menganggapnya telah selesai.", + "connect": "Menghubung", + "connect-mailserver-content": "Hubungkan ke {{name}} ?", + "connected": "Terhubung", + "connected-to": "Terhubung dengan", + "connecting": "Menghubungkan ...", + "connecting-requires-login": "Menghubungkan ke jaringan lain membutuhkan login", + "connection-status": "Koneksi Status", + "connection-with-the-card-lost": "Koneksi dengan kartu \ntelah hilang", + "connection-with-the-card-lost-setup-text": "Untuk melanjutkan pengaturan, tahan kartu \n bagian belakang ponsel Anda dan rawat \n kartu ke kontak telepon", + "connection-with-the-card-lost-text": "Untuk melanjutkan memegang kartu ke bagian belakang ponsel Anda", + "contact-code": "Kunci obrolan", + "contact-s": { + "other": "kontak" + }, + "contacts": "Kontak", + "contacts-descr": "Kontak Anda akan muncul di sini. Anda akan menerima pembaruan status dari siapa pun yang Anda tambahkan sebagai kontak", + "contacts-empty": "Kontak dengan nama ENS akan muncul di sini", + "continue": "Lanjutkan", + "continue-anyway": "Tetap lanjutkan", + "contract-address": "Alamat kontrak", + "contract-interaction": "Interaksi kontrak", + "copy-info": "Salin info", + "copy-qr": "Salin kode", + "copy-to-clipboard": "Salinan", + "copy-transaction-hash": "Salin ID transaksi", + "cost-fee": "Biaya\/Biaya", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Membuat", + "create-a-pin": "Buat kode sandi 6 digit", + "create-a-puk": "Membuat PUK 12 digit", + "create-group-chat": "Buat obrolan grup", + "create-multiaccount": "Hasilkan kunci", + "create-new-key": "Dapatkan kunci baru", + "create-pin": "Buat kode sandi 6 digit", + "create-pin-description": "Anda akan memerlukan kartu Anda + kode sandi 6 digit ini untuk membuka Status dan mengonfirmasi transaksi", + "created-group-chat-description": "Anda membuat grup {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Mata uang", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghanistan Afghan", + "currency-display-name-ars": "Peso Argentina", + "currency-display-name-aud": "Dollar Australia", + "currency-display-name-bbd": "Dolar Barbados", + "currency-display-name-bdt": "Taka Bangladesh", + "currency-display-name-bgn": "Lev Bulgaria", + "currency-display-name-bhd": "Dinar Bahrain", + "currency-display-name-bnd": "Dollar Brunei Darussalam", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Brazil Real", + "currency-display-name-btn": "Ngultrum Bhutan", + "currency-display-name-cad": "Dollar Canada", + "currency-display-name-chf": "Franc Swiss", + "currency-display-name-clp": "Peso Chili", + "currency-display-name-cny": "Renminbi China Yuan", + "currency-display-name-cop": "Peso Kolombia", + "currency-display-name-crc": "Colon Kosta Rika", + "currency-display-name-czk": "Koruna Ceko", + "currency-display-name-dkk": "Denmark Krone", + "currency-display-name-dop": "Peso Republik Dominika", + "currency-display-name-egp": "Pound Mesir", + "currency-display-name-etb": "Birr Etiopia", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Pound Inggris", + "currency-display-name-gel": "Lari Georgia", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Dollar Hongkong", + "currency-display-name-hrk": "Kroasia Kuna", + "currency-display-name-huf": "Forint Hongaria", + "currency-display-name-idr": "Rupiah Indonesia", + "currency-display-name-ils": "Israel Shekel", + "currency-display-name-inr": "Rupee India", + "currency-display-name-isk": "Krona Islandia", + "currency-display-name-jmd": "Dollar Jamaika", + "currency-display-name-jpy": "Yen jepang", + "currency-display-name-kes": "Shilling Kenya", + "currency-display-name-krw": "Korea (Selatan) Won", + "currency-display-name-kwd": "Kuwait Dinar", + "currency-display-name-kzt": "Tenge Kazakhstan", + "currency-display-name-lkr": "Rupee Sri Lanka", + "currency-display-name-mad": "Dirham Maroko", + "currency-display-name-mdl": "Moldovan Leu", + "currency-display-name-mur": "Mauritius Rupee", + "currency-display-name-mwk": "Kwacha Malawi", + "currency-display-name-mxn": "Peso Meksiko", + "currency-display-name-myr": "Ringgit Malaysia", + "currency-display-name-mzn": "Mozambik Metis", + "currency-display-name-nad": "Dolar Namibia", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Krone Norwegia", + "currency-display-name-npr": "Rupee Nepal", + "currency-display-name-nzd": "Dolar Selandia Baru", + "currency-display-name-omr": "Rial Oman", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinea Kina", + "currency-display-name-php": "Peso Filipina", + "currency-display-name-pkr": "Rupee Pakistan", + "currency-display-name-pln": "Polandia Zloty", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Dinar Serbia", + "currency-display-name-rub": "Ruble Rusia", + "currency-display-name-sar": "Riyal Arab Saudi", + "currency-display-name-sek": "Krona Swedia", + "currency-display-name-sgd": "Dollar Singapur", + "currency-display-name-thb": "Baht Thailand", + "currency-display-name-try": "Lira Turki", + "currency-display-name-ttd": "Trinidad dan Dollar Tobago", + "currency-display-name-twd": "Dolar Baru Taiwan", + "currency-display-name-tzs": "Shilling Tanzania", + "currency-display-name-uah": "Ukraina Hryvnia", + "currency-display-name-ugx": "Shilling Uganda", + "currency-display-name-usd": "Dolar Amerika Serikat", + "currency-display-name-uyu": "Peso Uruguay", + "currency-display-name-vef": "Venezuela Bolivar", + "currency-display-name-vnd": "Viet Nam Dong", + "currency-display-name-zar": "Rand Afrika Selatan", + "current-network": "Jaringan saat ini", + "current-password": "Kata sandi saat ini", + "current-pin": "Masukkan kode sandi 6 digit", + "current-pin-description": "Masukkan kode sandi 6 digit Anda untuk melanjutkan", + "custom": "Kustom", + "custom-networks": "Jaringan khusus", + "custom-node": "Anda menggunakan titik akhir RPC kustom. Riwayat transfer lokal Anda mungkin tidak lengkap.", + "custom-seed-phrase": "Seed phrase tidak valid", + "custom-seed-phrase-text-1": "Frasa seed ini tidak cocok dengan kamus kami yang didukung. Periksa kata-kata yang salah eja.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Terima dan Buka", + "dapp-starter-pack-description": "Inilah beberapa crypto untuk Anda mulai! Gunakan untuk mendapatkan stiker, nama ENS, dan coba dapps", + "dapp-starter-pack-title": "Paket awal", + "dapp-would-like-to-connect-wallet": "ingin terhubung ke", + "dapps": "ÐApps", + "dapps-permissions": "Izin DApp", + "dark": "Gelap", + "data": "Data", + "data-collected": "Data yang dikumpulkan", + "data-collected-subtitle": "Tabel di bawah ini menunjukkan data persis yang disimpan dan akan dikirim. Data divalidasi terhadap aturan publik untuk memastikan tidak ada data sensitif yang dikirim. Jangan percaya, verifikasi.", + "data-syncing": "Sinkronisasi data", + "datetime-ago": "lalu", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "other": "hari" + }, + "datetime-day-short": { + "other": "D" + }, + "datetime-hour": { + "other": "jam" + }, + "datetime-hour-short": { + "other": "H" + }, + "datetime-minute": { + "other": "menit" + }, + "datetime-minute-short": { + "other": "M" + }, + "datetime-second": { + "other": "detik" + }, + "datetime-second-short": { + "other": "S" + }, + "datetime-today": "hari ini", + "datetime-yesterday": "kemarin", + "decimals": "Desimal", + "decline": "Menurun", + "decryption-failed-content": "Terjadi kesalahan saat mendekripsi data Anda. Anda mungkin perlu menghapus data lama Anda dan membuat akun baru. Ketuk \"Terapkan\" untuk menghapus atau \"Batal\" untuk mencoba lagi", + "default": "Default", + "default-assets": "ERC20 dan ERC721 default", + "default-sync-period": "Sinkronkan riwayat untuk", + "delete": "Menghapus?", + "delete-account": "Hapus akun", + "delete-and-leave-group": "Hapus dan tinggalkan grup", + "delete-bootnode": "Hapus bootnode", + "delete-bootnode-are-you-sure": "Anda yakin ingin menghapus bootnode ini?", + "delete-bootnode-title": "Hapus bootnode", + "close-chat": "Hapus obrolan", + "close-chat-confirmation": "Anda yakin ingin menghapus obrolan ini?", + "delete-confirmation": "Menghapus?", + "delete-mailserver": "Hapus node riwayat", + "delete-mailserver-are-you-sure": "Anda yakin ingin menghapus node riwayat ini?", + "delete-mailserver-title": "Hapus node riwayat", + "delete-message": "Hapus pesan", + "delete-my-account": "Hapus akun Saya", + "delete-my-profile": "Hapus profil saya", + "delete-network-confirmation": "Anda yakin ingin menghapus jaringan ini?", + "delete-network-error": "Harap sambungkan ke jaringan lain sebelum menghapus yang ini", + "delete-network-title": "Hapus jaringan?", + "delete-profile": "Hapus profil", + "delete-profile-warning": "Peringatan: Jika Anda tidak menuliskan frase awal Anda, Anda akan kehilangan akses ke dana Anda setelah Anda menghapus profil Anda", + "deny": "Menyangkal", + "derivation-path": "Jalur derivasi", + "describe-channel": "Menjelaskan salurannya", + "description": "Deskripsi", + "dev-mode": "Mode pengembangan", + "dev-mode-settings": "Pengaturan mode pengembangan", + "device-syncing": "Sinkronisasi perangkat", + "devices": "Perangkat", + "disable": "nonaktifkan", + "disabled": "Dengan disabilitas", + "disconnected": "Obrolan offline", + "discover": "Menemukan", + "dismiss": "Memberhentikan", + "done": "Selesai", + "dont-ask": "Jangan tanya saya lagi", + "edit": "Edit", + "edit-channel-title": "Edit saluran", + "edit-group": "Edit grup", + "edit-profile": "Sunting profil", + "empty-chat-description": "Tidak ada pesan \ndalam obrolan ini", + "empty-chat-description-one-to-one": "Pesan apa pun yang Anda kirim di sini dienkripsi dan hanya dapat dibaca oleh Anda dan", + "empty-chat-description-public": "Sudah sepi di sini selama {{quiet-hours}} . Mulai percakapan atau", + "empty-chat-description-public-share-this": "bagikan obrolan ini.", + "empty-pending-invitations-descr": "Orang yang ingin bergabung dengan grup\n melalui link undangan akan muncul di sini", + "enable": "Memungkinkan", + "enable-all": "Aktifkan semua", + "enable-link-previews": "Aktifkan pratinjau tautan dalam obrolan?", + "encrypt-with-password": "Enkripsi dengan kata sandi", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Tambahkan nama pengguna", + "ens-agree-to": "Setuju untuk", + "ens-chat-settings": "Pengaturan Chat", + "ens-custom-domain": "Domain khusus", + "ens-custom-username-hints": "Ketik seluruh nama pengguna termasuk domain khusus seperti namapengguna.domain.eth", + "ens-custom-username-taken": "Nama pengguna bukan milik Anda :(", + "ens-deposit": "Menyetorkan", + "ens-dismiss-message": "Klik di sini untuk menolak", + "ens-displayed-with": "Pesan Anda ditampilkan kepada orang lain dengan", + "ens-get-name": "Dapatkan nama pengguna universal", + "ens-got-it": "OK mengerti", + "ens-locked": "Nama pengguna terkunci. Anda tidak akan bisa merilisnya sampai {{date}}", + "ens-name-content": "Alias khusus untuk kunci obrolan yang dapat Anda daftarkan menggunakan Layanan Nama Ethereum. Nama ENS adalah nama pengguna yang didesentralisasi.", + "ens-name-not-found": "Tidak dapat menentukan nama ENS", + "ens-name-title": "Nama ENS", + "ens-network-restriction": "Hanya tersedia di Mainnet", + "ens-no-usernames": "Anda tidak memiliki nama pengguna yang terhubung", + "ens-powered-by": "Didukung oleh Ethereum Layanan Nama ", + "ens-primary-username": "Nama pengguna utama", + "ens-register": "Daftar", + "ens-registration-failed": "Untuk mendaftarkan nama pengguna, silakan coba lagi.", + "ens-registration-failed-title": "transaksi gagal", + "ens-registration-failure": "Registrasi gagal", + "ens-registration-in-progress": "Pendaftaran sedang berlangsung ...", + "ens-release-username": "Lepaskan nama pengguna", + "ens-remove-hints": "Menghapus akan melepaskan nama pengguna dari kunci Anda.", + "ens-remove-username": "Hapus nama pengguna", + "ens-saved": "sekarang terhubung dengan kunci obrolan Anda dan dapat digunakan dalam Status.", + "ens-saved-title": "Nama pengguna ditambahkan", + "ens-show-username": "Tampilkan nama pengguna ENS saya dalam obrolan", + "ens-terms-header": "Ketentuan registrasi nama", + "ens-terms-point-1": "Dana disetor selama 1 tahun. SNT Anda akan dikunci, tetapi tidak digunakan.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Daftar ENS).", + "ens-terms-point-2": "Setelah 1 tahun, Anda dapat merilis nama dan mendapatkan kembali setoran Anda, atau tidak mengambil tindakan apa pun untuk mempertahankan nama tersebut.", + "ens-terms-point-3": "Jika ketentuan kontrak berubah - misalnya Status membuat peningkatan kontrak - pengguna memiliki hak untuk melepaskan nama pengguna terlepas dari waktu yang dipegang.", + "ens-terms-point-4": "Pengontrol kontrak tidak dapat mengakses dana yang Anda setorkan. Mereka hanya dapat dipindahkan kembali ke alamat yang mengirim mereka.", + "ens-terms-point-5": "Alamat Anda akan dikaitkan secara publik dengan nama ENS Anda.", + "ens-terms-point-6": "Nama pengguna dibuat sebagai simpul subdomain stateofus.eth dan tunduk pada persyaratan kontrak pintar ENS.", + "ens-terms-point-7": "Anda mengesahkan kontrak untuk mentransfer SNT atas nama Anda. Ini hanya dapat terjadi ketika Anda menyetujui transaksi untuk mengotorisasi transfer.", + "ens-terms-point-8": "Ketentuan-ketentuan ini dijamin oleh logika kontrak pintar di alamat:", + "ens-terms-point-9": "{{address}}(DaftarkanNamapengguna Status)", + "ens-terms-registration": "Ketentuan pendaftaran nama.", + "ens-test-message": "Hai", + "ens-transaction-pending": "Menunggu transaksi...", + "ens-understand": "Saya mengerti bahwa alamat dompet saya akan terhubung secara publik ke nama pengguna saya.", + "ens-username": "Nama pengguna ENS", + "ens-username-already-added": "Nama pengguna sudah terhubung dengan kunci obrolan Anda dan dapat digunakan di dalam Status.", + "ens-username-available": "✓ Nama pengguna tersedia!", + "ens-username-connected": "Nama pengguna ini milik Anda dan terhubung dengan kunci obrolan Anda.", + "ens-username-connected-continue": "Lanjutkan untuk mengatur `Tampilkan nama pengguna ENS saya di obrolan`.", + "ens-username-connected-with-different-key": "Melanjutkan akan membutuhkan transaksi untuk menghubungkan nama pengguna dengan kunci obrolan Anda saat ini.", + "ens-username-connection-confirmation": "{{username}} akan terhubung setelah transaksi selesai.", + "ens-username-hints": "Setidaknya 4 karakter. Hanya huruf latin, angka, dan huruf kecil.", + "ens-username-invalid": "Huruf dan angka saja.", + "ens-username-owned": "✓ Nama pengguna dimiliki oleh Anda.", + "ens-username-owned-continue": "Melanjutkan akan menghubungkan nama pengguna ini dengan kunci obrolan Anda.", + "ens-username-registration-confirmation": "Bagus! Anda memiliki {{username}} setelah transaksi selesai.", + "ens-username-taken": "Nama pengguna sudah diambil :(", + "ens-username-you-can-follow-progress": "Anda dapat mengikuti kemajuan di bagian Riwayat Transaksi dompet Anda.", + "ens-usernames": "ENS nama pengguna", + "ens-usernames-details": "Daftarkan nama pengguna universal agar mudah dikenali oleh pengguna lain", + "ens-want-custom-domain": "Saya memiliki nama di domain lain", + "ens-want-domain": "Saya ingin domain stateofus.eth", + "ens-welcome-hints": "Nama ENS mengubah alamat panjang gila itu menjadi nama pengguna unik.", + "ens-welcome-point-customize": "Nama ENS dapat menggantikan nama 3-kata acak Anda dalam obrolan. Jadilah @jurnas alih-alih {{name}} .", + "ens-welcome-point-customize-title": "Kustomisasi nama obrolan Anda", + "ens-welcome-point-receive": "Orang lain dapat mengirimi Anda dana melalui obrolan dalam satu langkah sederhana.", + "ens-welcome-point-receive-title": "Terima transaksi dalam obrolan", + "ens-welcome-point-register": "Daftarkan sekali untuk menjaga nama selamanya. Setelah 1 tahun Anda dapat merilis nama dan mendapatkan SNT Anda kembali.", + "ens-welcome-point-register-title": "10 SNT untuk mendaftar", + "ens-welcome-point-simplify": "Anda dapat menerima dana dengan nama ENS yang mudah dibagikan daripada hash heksadesimal Anda (0x ...).", + "ens-welcome-point-simplify-title": "Sederhanakan alamat ETH anda", + "ens-welcome-point-verify": "Anda dapat memverifikasi dan menambahkan nama pengguna apa pun yang Anda miliki di langkah selanjutnya.", + "ens-welcome-point-verify-title": "Sudah memiliki nama pengguna?", + "ens-your-username": "Nama pengguna Anda", + "ens-your-usernames": "Nama pengguna Anda", + "ens-your-your-name": "Nama ENS Anda", + "enter-12-words": "Masukkan 12 kata dari frase seed Anda, dipisahkan dengan spasi tunggal", + "enter-a-private-key": "Masukkan kunci pribadi", + "enter-a-seed-phrase": "Masukkan seed phrase", + "enter-address": "Masukkan alamat", + "enter-contact-code": "Masukkan nama pengguna ENS atau kunci obrolan", + "enter-pair-code": "Masukkan kode pemasangan Anda", + "enter-pair-code-description": "Kode pemasangan ditampilkan kepada Anda selama pengaturan Kartu Kunci", + "enter-password": "Masukkan kata kunci", + "enter-pin": "Masukkan kode sandi 6 digit", + "enter-puk-code": "Masukkan kode PUK", + "enter-puk-code-description": "Kode akses 6 digit telah diblokir. \n Silakan masukkan kode PUK untuk membuka blokir kode sandi.", + "enter-recipient-address-or-username": "Masukkan alamat dompet atau nama pengguna penerima", + "enter-seed-phrase": "Masukkan frase seed", + "enter-url": "Masukkan URL", + "enter-watch-account-address": "Memindai kode QR \natau \nmasukkan alamat untuk menonton", + "enter-word": "Masukkan kata", + "enter-your-code": "Masukkan kode sandi 6 digit Anda", + "enter-your-password": "Masukkan kata sandi Anda", + "error": "Kesalahan", + "error-unable-to-get-balance": "Tidak bisa mendapatkan keseimbangan", + "error-unable-to-get-prices": "Kesalahan konversi mata uang. Refresh layar Anda untuk mencoba lagi.", + "error-unable-to-get-token-balance": "Tidak dapat memperoleh saldo token", + "errors": "Kesalahan", + "eth": "ETH", + "ethereum-account": "Akun Ethereum", + "ethereum-address": "Alamat Ethereum", + "ethereum-node-started-incorrectly-description": "Node Ethereum dimulai dengan konfigurasi yang salah, aplikasi akan dihentikan untuk memulihkan dari kondisi itu. Id jaringan yang dikonfigurasikan = {{network-id}} , aktual = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Node Ethereum mulai salah", + "etherscan-lookup": "Lihatlah Etherscan", + "expand-all": "Perluas semua", + "export-account": "Akun ekspor", + "external-storage-denied": "Akses ke penyimpanan eksternal ditolak", + "failed": "Gagal", + "faq": "Pertanyaan yang sering diajukan", + "favourites": "Favorit", + "favourites-empty": "Alamat yang ditambahkan ke favorit akan muncul di sini", + "fetch-messages": "↓ Mengambil pesan", + "find": "Temukan", + "finish": "Selesai", + "finishing-card-setup": "Penyiapan kartu selesai", + "fleet": "Armada kapal", + "fleet-settings": "Pengaturan armada", + "follow-your-interests": "Langsung ke obrolan publik dan bertemu orang baru", + "free": "↓ Gratis", + "from": "Dari", + "gas-limit": "Batas gas", + "gas-price": "Harga Gas", + "gas-used": "Gas yang digunakan", + "generate-a-key": "Buat kunci", + "generate-a-new-account": "Buat akun", + "generate-a-new-key": "Hasilkan kunci baru", + "generate-account": "Buat kunci", + "generate-an-account": "Buat akun", + "generate-new-key": "Buat kunci", + "generating-codes-for-pairing": "> Mengunduh perangkat lunak produk ke kartu \n > Menghasilkan kode unlocking & pairing", + "generating-keys": "Membuat kunci...", + "generating-mnemonic": "Menghasilkan frase seed", + "get-a-keycard": "Dapatkan Kartu Kunci", + "get-started": "Memulai", + "get-status-at": "Dapatkan Status di http:\/\/status.im", + "get-stickers": "Dapatkan Stiker", + "give-permissions-camera": "Berikan izin\nuntuk mengakses kamera", + "glossary": "Glosarium", + "go-to-settings": "Pergi ke pengaturan...", + "got-it": "Mengerti", + "grant-face-id-permissions": "Untuk memberikan izin ID Wajah yang diperlukan, buka pengaturan sistem Anda dan pastikan Status > ID Wajah dipilih", + "group-chat": "Obrolan grup", + "group-chat-admin": "Admin", + "group-chat-admin-added": "** {{member}} ** telah menjadi admin", + "group-chat-all-contacts-invited": "Semua kontak Anda sudah ada di grup", + "group-chat-created": "** {{member}} ** membuat grup ** {{name}} **", + "group-chat-decline-invitation": "Tolak undangan", + "group-chat-member-added": "** {{member}} ** telah diundang", + "group-chat-member-joined": "** {{member}} ** telah bergabung dengan grup", + "group-chat-member-removed": "** {{member}} ** meninggalkan grup", + "group-chat-members-count": "{{selected}} \/ {{max}} anggota", + "group-chat-name-changed": "** {{member}} ** mengubah nama grup menjadi ** {{name}} **", + "group-chat-no-contacts": "Anda belum memiliki kontak. \n Undang teman Anda untuk mulai mengobrol", + "group-info": "Info grup", + "group-invite": "Undangan grup", + "group-invite-link": "Tautan undangan grup", + "group-membership-request": "Permintaan keanggotaan grup", + "gwei": "Gwei", + "hash": "Hash", + "help": "Tolong", + "help-capitalized": "Tolong", + "help-center": "Pusat Bantuan", + "help-improve-status": "Membantu meningkatkan Status", + "hide-content-when-switching-apps": "Blokir tangkapan layar", + "hide-content-when-switching-apps-ios": "Sembunyikan pratinjau", + "history": "Sejarah", + "history-nodes": "Node riwayat", + "hold-card": "Pegang kartu di bagian belakang \n telepon Anda", + "home": "Rumah", + "hooks": "Kait", + "how-it-works": "Bagaimana itu bekerja", + "http-gateway-error": "Ups, permintaan gagal!", + "identifier": "Identifier", + "image": "Gambar", + "image-remove-current": "Hapus foto saat ini", + "image-source-gallery": "Pilih dari galeri", + "image-source-make-photo": "Menangkap", + "image-source-title": "Edit gambar", + "in-contacts": "Dalam kontak", + "incoming": "Masuk", + "incoming-transaction": "Transaksi masuk", + "incorrect-code": [ + "str", + "Maaf kodenya salah, silakan masukkan lagi" + ], + "increase-gas": "Tingkatkan Gas", + "initialization": "Inisialisasi", + "install": "↓ Instal", + "intro-message1": "Selamat datang di Status! \nKetuk pesan ini untuk mengatur kata sandi Anda dan memulai.", + "intro-privacy-policy-note1": "Status tidak mengumpulkan atau mengambil keuntungan dari data pribadi Anda. Dengan melanjutkan, Anda setuju dengan", + "intro-privacy-policy-note2": "Kebijakan pribadi", + "intro-text": "Status adalah gerbang Anda ke web yang didesentralisasi", + "intro-text1": "Mengobrol melalui jaringan terenkripsi peer-to-peer, tempat pesan tidak dapat disensor atau diretas", + "intro-text2": "Kirim dan terima aset digital di mana saja di dunia — tidak perlu rekening bank", + "intro-text3": "Jelajahi game, pertukaran, dan jejaring sosial tempat Anda memiliki data sendiriData", + "intro-title1": "Komunikasi yang benar-benar pribadi", + "intro-title2": "Amankan dompet crypto", + "intro-title3": "Aplikasi terdesentralisasi", + "intro-wizard-text1": "Satu set kunci mengontrol akun Anda. Kunci Anda hidup di ponsel Anda, jadi hanya Anda yang dapat menggunakannya", + "intro-wizard-text2": "Salah satu kuncinya adalah untuk chatting. Itu datang dengan nama yang dapat dibaca yang tidak dapat diubah.", + "intro-wizard-text3": "Jika Anda memiliki Kartu Kunci, simpan kunci Anda di sana untuk meningkatkan keamanan.", + "intro-wizard-text4": "Amankan dan enkripsi kunci Anda", + "intro-wizard-text6": "Status akan memberi tahu Anda tentang pesan baru. Anda dapat mengedit preferensi pemberitahuan nanti di pengaturan", + "intro-wizard-title-alt4": "Membuat kata sandi", + "intro-wizard-title-alt5": "Konfirmasi password Anda", + "intro-wizard-title1": "Dapatkan kunci Anda", + "intro-wizard-title2": "Pilih nama obrolan", + "intro-wizard-title3": "Pilih penyimpanan kunci", + "intro-wizard-title4": "Buat kode sandi 6 digit", + "intro-wizard-title5": "Konfirmasikan kode sandi", + "intro-wizard-title6": "Aktifkan notifikasi", + "introduce-yourself": "Perkenalkan diri Anda dengan pesan singkat", + "invalid-address-qr-code": "Kode QR yang dipindai tidak mengandung alamat yang valid", + "invalid-format": "Format yang tidak valid \n Harus {{format}}", + "invalid-key-confirm": "Menerapkan", + "invalid-key-content": "Database Multiaccount tidak dapat dienkripsi karena file rusak. Tidak ada cara untuk mengembalikannya. Jika Anda menekan tombol \"Batal\", tidak ada yang terjadi. Jika Anda menekan tombol \" {{erase-multiaccounts-data-button-text}} \", db multiaccount akan dihapus dan Anda akan bisa membuka kunci multiaccount. Semua data multi akun akan hilang.", + "invalid-number": "Nomor tidak valid", + "invalid-pairing-password": "Kata sandi penyandingan tidak valid", + "invalid-public-chat-topic": "Topik obrolan publik tidak valid", + "invalid-range": "Format tidak valid, harus antara {{min}} dan {{max}}", + "invalid-username-or-key": "Nama pengguna atau kunci obrolan tidak valid", + "invite": "Undang", + "invite-button": "Undang", + "invite-chat-accept": "Menerima", + "invite-chat-intro": "Anda dirujuk oleh seorang teman untuk bergabung dengan Status. Inilah beberapa crypto untuk Anda mulai! Gunakan untuk mendaftarkan nama ENS atau membeli paket stiker", + "invite-chat-name": "Referensi teman", + "invite-chat-pending": "Tertunda", + "invite-chat-rule": "Menerima juga akan memberi teman Anda bonus rujukan crypto", + "invite-chat-starter-pack": "Paket awal", + "invite-friends": "Mengundang teman-teman", + "invite-instruction-fifth": "Anda dapat memilih untuk menebus bonus referensi Anda kapan saja.", + "invite-instruction-first": "Anda mengirim tautan undangan unik ke teman Anda untuk mengunduh dan bergabung dengan Status", + "invite-instruction-fourth": "Anda menerima bonus referensi dan teman Anda Paket Pemula", + "invite-instruction-second": "Teman Anda mengunduh Status dan membuat akun (di Android)", + "invite-instruction-third": "Obrolan dengan teman Anda dimulai, di mana mereka mengkonfirmasi rujukan Anda", + "invite-privacy-policy1": "Dengan menerima Anda setuju dengan program rujukan", + "invite-privacy-policy2": "Syarat dan ketentuan.", + "invite-receive-account": "Anda dapat memilih untuk menebus bonus referensi Anda kapan saja.", + "invite-reward": "Hasilkan crypto untuk setiap teman yang Anda undang!", + "invite-reward-friend": "Teman:", + "invite-reward-friend-description": "Teman Anda akan menerima Paket Pemula yang terdiri dari beberapa {{reward}} untuk memulai", + "invite-reward-friend-name": "Paket awal", + "invite-reward-you": "Kamu:", + "invite-reward-you-description": "Undang teman dan terima {{reward}} sebagai bonus rujukan. Gunakan untuk mendapatkan stiker, nama ENS, dan coba dapps", + "invite-reward-you-name": "Bonus referensi", + "invite-select-account": "Pilih akun untuk menerima bonus referensi Anda", + "invite-warning": "Promosi ini hanya berlaku untuk pengguna perangkat Android, yang bukan penduduk AS. Teman perlu mengkonfirmasi rujukan dalam 7 hari", + "invited": "diundang", + "join": "Bergabung", + "join-group-chat": "Bergabung dengan grup", + "join-group-chat-description": "{{username}} mengundang Anda untuk bergabung dengan grup {{group-name}}", + "join-me": "Hai bergabunglah dengan saya di Status: {{url}}", + "join-new-private-chat": "Mulai obrolan pribadi baru", + "join-new-public-chat": "Bergabunglah dengan obrolan publik", + "joined-group-chat-description": "Anda telah bergabung dengan {{group-name}} dari undangan oleh {{username}}", + "key": "Kunci", + "keycard": "Kartu kunci", + "keycard-access-reset": "Akses kartu kunci diatur ulang", + "keycard-applet-install-instructions": "Untuk menginstal applet silakan ikuti instruksi di https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Coba gerakkan kartu untuk menemukan pembaca NFC di perangkat Anda", + "keycard-awaiting-title": "Masih mencari...", + "keycard-backup": "Buat Kartu Kunci cadangan", + "keycard-backup-success-body": "Kartu cadangan berhasil dibuat. Anda sekarang dapat menggunakannya dengan akun Anda seperti kartu utama.", + "keycard-backup-success-title": "Pencadangan berhasil", + "keycard-blocked": "Kartu kunci telah diblokir. \n Anda perlu mengatur ulang kartu untuk terus menggunakannya.", + "keycard-can-use-with-new-passcode": "Anda dapat menggunakan kartu ini dengan kode sandi baru Anda", + "keycard-cancel-setup-text": "Ini akan membatalkan pengaturan kartu kunci. Sangat disarankan untuk menyelesaikan pengaturan untuk menggunakan kartu kunci. Apakah Anda benar-benar ingin membatalkan?", + "keycard-cancel-setup-title": "Operasi berbahaya", + "keycard-connected-description": "Cobalah menjaga kartu tetap", + "keycard-connected-title": "Terhubung", + "keycard-desc": "Memiliki Kartu kunci? Simpan kunci Anda di atasnya; Anda akan membutuhkannya untuk transaksi", + "keycard-dont-ask-card": "Jangan minta kartu untuk masuk", + "keycard-enter-new-passcode": "Masukkan kode sandi baru{{step}}\/2", + "keycard-error-description": "Hubungkan kartu lagi untuk melanjutkan", + "keycard-error-title": "Koneksi terputus", + "keycard-factory-reset": "Kembalikan kartu ke pengaturan pabrik", + "keycard-factory-reset-text": "Melakukan ini akan menghapus semua frase mnemonic yang tersimpan di kartu. Pastikan Anda memiliki cadangan frasa mnemonic yang telah Anda gunakan dengan Kartu Kunci ini.", + "keycard-factory-reset-title": "Apakah Anda yakin ingin melakukan reset pabrik?", + "keycard-free-pairing-slots": "Keycard memiliki {{n}} slot pasangan gratis", + "keycard-has-multiaccount-on-it": "Kartu ini sudah penuh. Setiap kartu dapat menampung satu pasangan kunci utama", + "keycard-init-description": "Letakkan kartu di bagian belakang ponsel Anda untuk melanjutkan", + "keycard-init-title": "Mencari kartu ...", + "keycard-is-blocked-details": "Anda tidak dapat lagi menggunakan kartu ini untuk mengakses atau menandatangani akun ini. Terlalu banyak kode sandi dan upaya PUK yang gagal.", + "keycard-is-blocked-instructions": "Untuk mengakses akun Anda, instal ulang Status dan gunakan Kartu Kunci baru, gunakan dompet lain atau setel ulang Kartu Kunci secara manual.", + "keycard-is-blocked-title": "Kartu kunci diblokir", + "keycard-is-frozen-details": "Untuk melindungi aset Anda, kartu Anda dibekukan. Atur ulang akses kartu untuk membuka kunci dan mengirim transaksi. Buat kode sandi baru dan masukkan PUK Anda untuk mengakses akun Anda di kartu ini", + "keycard-is-frozen-factory-reset": "Setel ulang dengan mnemonik", + "keycard-is-frozen-reset": "Setel ulang akses kartu", + "keycard-is-frozen-title": "Kartu kunci dibekukan", + "keycard-onboarding-finishing-header": "Menyelesaikan", + "keycard-onboarding-intro-header": "Simpan kunci Anda di Kartu Kunci", + "keycard-onboarding-intro-text": "Bersiaplah, ini mungkin memerlukan beberapa menit, tetapi penting untuk mengamankan akun Anda", + "keycard-onboarding-mnemonic-text": "Anda juga akan membutuhkan selembar kertas dan pensil untuk menuliskan frase awal Anda.", + "keycard-onboarding-pairing-header": "Memasangkan kartu...", + "keycard-onboarding-pin-text": "Anda harus membuat kode sandi 6 digit yang akan digunakan untuk melindungi akses ke Kartu Kunci Anda.", + "keycard-onboarding-preparing-header": "Mempersiapkan kartu...", + "keycard-onboarding-puk-code-header": "Tulis kode \ndan simpan dengan aman", + "keycard-onboarding-recovery-phrase-description": "Anda perlu frase awal ini untuk mendapatkan kembali kunci Anda. Tuliskan. Tetap aman, offline, dan terpisah dari perangkat ini.", + "keycard-onboarding-recovery-phrase-header": "Cadangkan phrase seed", + "keycard-onboarding-recovery-phrase-text": "Hanya untuk mata kamu. Ini adalah benih ajaib yang digunakan untuk menghasilkan kunci Anda.", + "keycard-onboarding-start-header": "Pegang kartu di bagian belakang \ntelepon Anda untuk memulai", + "keycard-onboarding-start-step1": "Buat kode sandi", + "keycard-onboarding-start-step1-text": "Sekitar 1 menit. Buat kode sandi 6 digit untuk mengenkripsi kunci Anda", + "keycard-onboarding-start-step2": "Tuliskan PUK dan kode pasangan", + "keycard-onboarding-start-step2-text": "Sekitar 1 menit. Anda akan membutuhkan selembar kertas dan pensil untuk itu", + "keycard-onboarding-start-step3": "Cadangkan frase seed", + "keycard-onboarding-start-step3-text": "Sekitar 1 menit. Juga selembar kertas dan pensil diperlukan", + "keycard-onboarding-start-text": "Dan pertahankan kontak kartu ke telepon \nselama pengaturan. Pengaturan akan memakan waktu sekitar 4 menit", + "keycard-processing-description": "Cobalah menjaga kartu tetap", + "keycard-processing-title": "Pengolahan...", + "keycard-recover": "kartu hilang atau beku?", + "keycard-recover-text": "Jika Anda memiliki frase mnemonik, Anda dapat membuat Kartu Kunci baru yang terkait dengan akun ini. Anda dapat menggunakan Kartu Kunci baru atau melakukan reset pabrik pada Kartu Kunci yang dibekukan.", + "keycard-recover-title": "Buat kartu baru untuk akun ini?", + "keycard-recovery-intro-button-text": "Mulai pemulihan", + "keycard-recovery-intro-header": "Pulihkan kunci yang disimpan pada kartu kunci", + "keycard-recovery-intro-text": "Jika Anda membuat kunci menggunakan kartu kunci sebelumnya dan sekarang ingin menggunakan kunci ini pada perangkat ini", + "keycard-recovery-no-key-header": "Tidak ada yang bisa dilakukan \npulihkan di sini", + "keycard-recovery-no-key-text": "Kartu Kunci Anda tidak memiliki kunci yang tersimpan di dalamnya. Untuk menggunakannya, buat kunci baru dan pilih Kartu Kunci Anda untuk menyimpan kunci", + "keycard-recovery-phrase-confirm-header": "Konfirmasikan frase seed", + "keycard-recovery-phrase-confirmation-text": "Anda tidak akan memiliki kesempatan kedua! Jika Anda kehilangan akses, misalnya dengan kehilangan kartu kunci Anda, Anda hanya dapat mengakses kunci Anda dengan frase benih Anda. Tidak seorang pun, tetapi Anda memiliki frase benih Anda. Tuliskan. Amankan.", + "keycard-recovery-phrase-confirmation-title": "Dituliskan frase seed turun?", + "keycard-recovery-success-header": "Kunci Anda telah \nberhasil dipulihkan", + "keycard-redeem-title": "Tukarkan ke", + "keycard-redeem-tx": "Tebus aset", + "keycard-redeem-tx-desc": "Ketuk kartu untuk menandatangani dan menerima aset", + "keycard-reset-passcode": "Setel ulang kode sandi", + "keycard-success-description": "Anda dapat mengeluarkan kartu sekarang", + "keycard-success-title": "Sukses", + "keycard-unauthorized-operation": "Anda tidak sah untuk melakukan operasi ini. \n Silakan ketuk kartu yang valid dan coba lagi.", + "language": "Bahasa", + "learn-more": "Belajarlah lagi", + "learn-more-about-keycard": "Pelajari lebih lanjut tentang Kartu Kunci", + "leave": "Meninggalkan", + "leave-chat": "Tinggalkan obrolan", + "leave-chat-confirmation": "Anda yakin ingin keluar dari obrolan?", + "leave-confirmation": "Tinggalkan obrolan", + "leave-group": "Meninggalkan grup", + "left": "kiri", + "les-ulc": "LES \/ ULC", + "lets-go": "Ayo pergi", + "light": "Cahaya", + "linked-on": "Tertaut pada {{date}}", + "load-messages-before": "sebelum {{date}}", + "load-more-messages": "↓ Ambil lebih banyak pesan", + "loading": "Memuat...", + "local-notifications": "Pemberitahuan lokal", + "lock-app-with": "Kunci aplikasi dengan", + "log-level": "Tingkat log", + "log-level-settings": "Pengaturan level log", + "logging": "Penebangan", + "logging-enabled": "Logging diaktifkan?", + "login-pin-description": "Masukkan kode sandi 6 digit Anda untuk membuka kunci Anda", + "logout": "Keluar", + "logout-app-content": "Akun akan keluar. Ketika Anda membuka kunci lagi, jaringan yang dipilih akan digunakan", + "logout-are-you-sure": "Apakah kamu yakin kamu mau \nuntuk keluar?", + "logout-title": "Keluar?", + "looking-for-cards": "Mencari kartu ...", + "lost-connection": "Kehilangan koneksi", + "mail-should-be-configured": "Klien e-mail harus dikonfigurasi", + "mailserver-address": "Alamat node sejarah", + "mailserver-automatic": "Seleksi otomatis", + "mailserver-automatic-switch-explanation": "Pilih node riwayat tercepat yang tersedia", + "mailserver-connection-error": "Tidak dapat terhubung ke simpul riwayat", + "mailserver-content": "Node di jaringan Status yang merutekan dan menyimpan pesan, hingga 30 hari.", + "mailserver-details": "Rincian node sejarah", + "mailserver-error-content": "Node riwayat yang Anda pilih tidak dapat dijangkau.", + "mailserver-error-title": "Terjadi kesalahan saat menyambungkan ke simpul riwayat", + "mailserver-format": "enode: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "Pilih simpul riwayat lain", + "mailserver-reconnect": "Tidak dapat terhubung ke simpul riwayat. Ketuk untuk menyambungkan kembali", + "mailserver-request-error-content": "Kesalahan berikut dikembalikan oleh simpul riwayat: {{error}}", + "mailserver-request-error-status": "Terjadi kesalahan saat mengambil riwayat, periksa detail log", + "mailserver-request-error-title": "Kesalahan permintaan node riwayat", + "mailserver-request-retry": "Coba lagi permintaan", + "mailserver-retry": "Mencoba kembali", + "mailserver-title": "Node sejarah", + "main-currency": "Mata uang utama", + "main-networks": "Jaringan utama", + "main-wallet": "Dompet Utama", + "mainnet-network": "Jaringan utama", + "make-admin": "Membuat admin", + "mark-all-read": "Tandai semua sudah dibaca", + "maybe-later": "Mungkin nanti", + "member-ban": "Larangan anggota", + "members": { + "other": " {{count}} anggota" + }, + "members-active": { + "other": "anggota" + }, + "members-active-none": "tidak ada anggota", + "members-count": "{{count}} anggota", + "members-label": "Anggota", + "members-limit-reached": "Batas anggota tercapai", + "members-title": "Anggota", + "membership-declined": "Permintaan keanggotaan ditolak", + "membership-description": "Keanggotaan grup mengharuskan Anda untuk diterima oleh admin grup", + "membership-none": "Tidak ada", + "message": "Pesan", + "message-not-sent": "Pesan tidak terkirim", + "message-options-cancel": "Membatalkan", + "message-reply": "Balasan", + "messages": "Pesan", + "messages-from-contacts-only-subtitle": "Hanya orang yang Anda tambahkan sebagai kontak yang bisa memulai obrolan baru dengan Anda atau mengundang Anda ke grup", + "might-break": "Mungkin merusak beberapa ÐApps", + "migrations-failed-content": "{{message}}\n versi skema: awal {{initial-version}} , saat ini {{current-version}} , terakhir {{last-version}}\n\nTerjadi kesalahan basis data. Dana dan kunci obrolan Anda aman. Data lain, seperti obrolan dan kontak Anda, tidak dapat dipulihkan. \"{{erase-multiaccounts-data-button-text}}\", akan menghapus semua data lainnya dan memungkinkan Anda mengakses dana dan mengirim pesan.", + "mobile-network-ask-me": "Tanya saya kapan di jaringan seluler", + "mobile-network-continue-syncing": "Lanjutkan sinkronisasi", + "mobile-network-continue-syncing-details": "Anda dapat mengubahnya nanti dalam pengaturan", + "mobile-network-go-to-settings": "Pergi ke pengaturan", + "mobile-network-settings": "Data seluler", + "mobile-network-sheet-configure": "Anda dapat mengonfigurasi sinkronisasi lebih lanjut \n detail dalam", + "mobile-network-sheet-offline": "Tidak ada Wi-Fi, sinkronisasi pesan dinonaktifkan.", + "mobile-network-sheet-offline-details": "Sinkronisasi menggunakan jaringan seluler tidak aktif", + "mobile-network-sheet-remember-choice": "Ingat pilihan saya", + "mobile-network-sheet-settings": "pengaturan", + "mobile-network-start-syncing": "Mulai sinkronisasi", + "mobile-network-stop-syncing": "Hentikan sinkronisasi", + "mobile-network-stop-syncing-details": "Sampai terhubung ke Wi-Fi?", + "mobile-network-use-mobile": "Gunakan data seluler", + "mobile-network-use-mobile-data": "Status menggunakan banyak data saat menyinkronkan obrolan dan dompet.", + "mobile-network-use-wifi": "Hanya wifi", + "mobile-syncing-sheet-details": "Status menggunakan banyak data saat menyinkronkan obrolan dan dompet.", + "mobile-syncing-sheet-title": "Sinkronkan menggunakan data seluler?", + "more": "lagi", + "multiaccount-exists-content": "Kunci untuk akun ini sudah ada dan tidak dapat ditambahkan lagi. Jika Anda kehilangan kata sandi, kode sandi, atau Kartu Kunci, hapus instalan aplikasi, instal ulang, dan akses kunci Anda dengan memasukkan frase benih Anda", + "multiaccount-exists-title": "Kunci untuk akun ini sudah ada", + "multiaccounts-recover-enter-phrase-text": "Masukkan 12, 15, 18, 21 atau 24 kata. \n Pisahkan kata dengan satu spasi.", + "multiaccounts-recover-enter-phrase-title": "Masukkan frasa seed Anda", + "mute": "Bisu", + "my-accounts": "Akun saya", + "my-accounts-empty": "Akun Anda yang tersedia akan muncul di sini", + "my-profile": "Profil saya", + "my-status": "Status saya", + "name": "Nama", + "name-of-token": "Nama token Anda", + "name-optional": "Nama (opsional)", + "need-help": "Butuh bantuan?", + "network": "Jaringan", + "network-chain": "Rantai jaringan", + "network-details": "Rincian jaringan", + "network-fee": "Biaya jaringan", + "network-id": "ID jaringan", + "network-info": "Info jaringan", + "network-invalid-network-id": "Id jaringan yang ditentukan tidak sesuai dengan id jaringan oleh url RPC", + "network-invalid-status-code": "Kode status tidak valid: {{code}}", + "network-invalid-url": "Jaringan URL tidak valid", + "network-settings": "Pengaturan jaringan", + "new": "Baru", + "new-chat": "Obrolan baru", + "new-contact": "Kontak baru", + "new-contract": "Kontrak baru", + "new-favourite": "Favorit baru", + "new-group": "Grup baru", + "new-group-chat": "Obrolan grup baru", + "new-network": "Jaringan baru", + "new-password": "Kata sandi baru", + "new-pin-description": "Masukkan kode sandi 6 digit yang baru", + "new-public-group-chat": "Bergabunglah dengan obrolan publik", + "new-puk-description": "Masukkan PUK 12 digit baru", + "new-status": "Status baru", + "next": "Lanjut", + "nickname": "Nama panggilan", + "nickname-description": "Nama panggilan membantu Anda mengidentifikasi orang lain di Status.\nHanya Anda yang dapat melihat nama panggilan yang Anda tambahkan", + "no": "Tidak", + "no-collectibles": "Tidak ada koleksi yang tersedia", + "no-contacts": "Belum ada kontak", + "no-keycard-applet-on-card": "Tidak ada applet kartu kunci pada kartu", + "no-messages": "Tidak ada pesan", + "no-pairing-slots-available": "Kartu ini sudah dipasangkan ke 5 perangkat dan tidak dapat dipasangkan dengan yang ini. Silakan gunakan salah satu perangkat yang dipasangkan, masuk dengan kartu ini dan membebaskan slot pasangan pada kartu", + "no-result": "Tidak ada hasil", + "no-thanks": "Tidak terima kasih", + "no-tokens-found": "Token tidak ditemukan", + "node-info": "Info simpul", + "node-version": "Versi simpul", + "nodes-disabled": "Node status dinonaktifkan", + "non-archival-node": "Titik akhir RPC tidak mendukung permintaan pengarsipan. Riwayat transfer lokal Anda mungkin tidak lengkap.", + "nonce": "Nonce", + "none": "Tidak ada", + "not-applicable": "Tidak berlaku untuk transaksi yang tidak ditandatangani", + "not-connected-nodes": "Tidak terhubung ke simpul status", + "not-connected-to-peers": "Tidak terhubung kepada sesama", + "not-enough-snt": "SNT tidak cukup", + "not-keycard-text": "Kartu yang Anda gunakan bukan Kartu Kunci. Anda perlu membeli Kartu Kunci untuk menggunakannya", + "not-keycard-title": "Bukan kartu kunci", + "not-registered": "tidak terdaftar", + "notification-settings": "Notifikasi", + "notifications": "Notifikasi", + "notifications-non-contacts": "Pemberitahuan dari non-kontak", + "notifications-preferences": "Preferensi pemberitahuan", + "notifications-servers": "Server pemberitahuan", + "notifications-switch": "Tampilkan pemberitahuan", + "notifications-transactions": "Transaksi dompet", + "notify": "Memberitahu", + "now": "Sekarang", + "off": "Off", + "off-status-tree": "Tidak Aktif Pohon Status", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Aktifkan node riwayat untuk mengambil pesan yang dikirim saat aplikasi ditutup. Saat diaktifkan, simpul riwayat mendapatkan alamat IP Anda. Saat dinonaktifkan, Anda tidak akan menerima pesan saat aplikasi ditutup dan tidak akan melihatnya saat Anda membuka aplikasi nanti.", + "offline-messaging-use-history-nodes": "Gunakan node riwayat", + "ok": "baik", + "ok-continue": "Oke, lanjutkan", + "ok-got-it": "OK saya mengerti", + "ok-save-pass": "OKE, simpan kata sandi", + "okay": "baik", + "on": "On", + "on-status-tree": "Di pohon Status", + "once-enabled-share-metadata": "Setelah diaktifkan, tautan yang diposting dalam obrolan dapat membagikan metadata Anda dengan situs", + "one-day": "Satu hari", + "one-month": "Satu bulan", + "one-week": "Satu minggu", + "open": "Buka", + "open-dapp": "Buka ÐApp", + "open-dapp-store": "Temukan ÐApps", + "open-home": "Buka...", + "open-nfc-settings": "Buka pengaturan NFC", + "opening-buy-crypto": "Pembukaan", + "optional": "pilihan", + "or": "ATAU", + "outgoing": "Keluar", + "outgoing-transaction": "Transaksi keluar", + "page-camera-request-blocked": "permintaan kamera diblokir. Untuk mengaktifkan permintaan kamera, buka Pengaturan", + "page-would-like-to-use-camera": "ingin menggunakan kamera Anda", + "pair": "Pasangkan perangkat", + "pair-card": "Pasangkan ke perangkat ini", + "pair-code": "Kode pasangan", + "pair-code-explanation": "Pasangkan kartu ke perangkat yang berbeda (hingga 5) untuk membuka kunci kunci dan menandatangani transaksi dengan Kartu Kunci yang sama", + "pair-code-placeholder": "Kode pasangan...", + "pair-this-card": "Pasangkan kartu ini", + "pair-this-device": "Iklankan perangkat", + "pair-this-device-description": "Pasangkan perangkat Anda untuk menyinkronkan kontak dan mengobrol di antara mereka", + "paired-devices": "Perangkat yang dipasangkan", + "pairing": "Pemasangan", + "pairing-card": "Kartu pemasangan", + "pairing-changed": "Kode pemasangan telah diubah", + "pairing-code-placeholder": "Kode pemasangan...", + "pairing-code_error1": "Kode pemasangan tidak cocok.", + "pairing-go-to-installation": "Pergi ke pengaturan pemasangan", + "pairing-maximum-number-reached-content": "Harap nonaktifkan salah satu perangkat Anda sebelum mengaktifkan yang baru.", + "pairing-maximum-number-reached-title": "Jumlah perangkat maksimum tercapai", + "pairing-new-installation-detected-content": "Perangkat baru telah terdeteksi. \nUntuk menggunakan perangkat Anda dengan benar, penting untuk memasangkan dan mengaktifkannya sebelum menggunakannya. \nSilakan buka bagian perangkat di bawah pengaturan untuk memasangkan perangkat Anda.", + "pairing-new-installation-detected-title": "Perangkat baru terdeteksi", + "pairing-no-info": "Tidak ada informasi", + "pairing-please-set-a-name": "Silakan tentukan nama untuk perangkat Anda.", + "passphrase": "Frasa sandi", + "password": "Kata sandi", + "password-description": "Setidaknya 6 karakter. Kata sandi Anda melindungi kunci Anda. Anda memerlukannya untuk membuka Status dan bertransaksi.", + "password-mismatch": "Kata sandi dan konfirmasi baru tidak cocok", + "password-placeholder": "Kata sandi...", + "password-placeholder2": "Konfirmasi password Anda", + "password-reset-success": "Reset kata sandi", + "password_error1": "Kata sandi tidak cocok.", + "paste": "Tempel", + "paste-json": "Tempel JSON", + "pay-to-chat": "Bayar untuk mengobrol", + "peer-content": "Perangkat yang terhubung ke jaringan obrolan Status. Setiap pengguna dapat mewakili satu atau beberapa rekan, tergantung pada jumlah perangkat mereka.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Rekan", + "pending": "Tertunda", + "pending-confirmation": "Konfirmasi tertunda ...", + "pending-invitations": "Permintaan keanggotaan menunggu keputusan", + "permissions": "Izin", + "phone-e164": "Internasional 1", + "photos": "Foto", + "photos-access-error": "Untuk memberikan izin kepada foto yang diperlukan, buka pengaturan sistem Anda dan pastikan Status > Foto dipilih.", + "pin-changed": "Kode sandi 6 digit telah diubah", + "pin-code": "Kode sandi 6 digit", + "pin-mismatch": "Kode sandi salah", + "pin-one-attempt": "satu upaya", + "pin-one-attempt-blocked-after": "sebelum Kartu Kunci Anda diblokir", + "pin-one-attempt-blocked-before": "Hati-hati, Anda hanya punya", + "pin-one-attempt-frozen-after": "sebelum Kartu Kunci Anda dibekukan", + "pin-one-attempt-frozen-before": "Hati-hati, Anda hanya punya", + "pin-retries-left": "{{number}} percobaan tersisa", + "preference": "Pilihan", + "preview-privacy": "Pratinjau mode privasi", + "previewing-may-share-metadata": "Pratinjau tautan dari situs web ini dapat membagikan metadata Anda dengan pemiliknya", + "privacy": "Pribadi", + "privacy-and-security": "Privasi dan keamanan", + "privacy-policy": "Kebijakan pribadi", + "private-key": "Kunci pribadi", + "private-notifications": "Pemberitahuan pribadi", + "private-notifications-descr": "Status akan memberi tahu Anda tentang pesan baru. Anda dapat mengedit preferensi pemberitahuan Anda nanti di pengaturan.", + "processing": "Tungu sebentar", + "product-information": "informasi produk", + "profile": "Profil", + "profile-deleted-content": "Profil Anda berhasil dihapus", + "profile-deleted-title": "Profil dihapus", + "profile-details": "Profil lengkap", + "profile-pic-pick": "Pilih dari galeri", + "public-channel": "Saluran publik", + "public-chat": "Obrolan publik", + "public-chat-description": "Bergabunglah dengan obrolan publik untuk minat Anda! Siapa pun dapat memulai yang baru.", + "public-chats": "Obrolan publik", + "public-group-status": "Publik", + "public-group-topic": "Topik", + "public-key": "Kunci publik", + "puk-and-pairing-codes-displayed": "PUK dan kode pasangan ditampilkan", + "puk-changed": "PUK 12 digit telah diubah", + "puk-code": "Kode PUK", + "puk-code-explanation": "Jika Anda lupa kode sandi 6 digit atau salah memasukkan kode 3 kali, Anda perlu kode ini untuk membuka kunci kartu Anda.", + "puk-mismatch": "Kode PUK salah", + "push-failed-transaction": "Transaksi Anda gagal", + "push-failed-transaction-body": "Transaksi gagal", + "push-inbound-transaction": "Anda menerima {{value}} {{currency}}", + "push-inbound-transaction-body": "Dari {{from}} sampai {{to}}", + "push-notifications-server-enabled": "Server diaktifkan", + "push-notifications-servers": "Server pemberitahuan push", + "push-outbound-transaction": "Anda mengirim {{value}} {{currency}}", + "push-outbound-transaction-body": "Dari {{from}} sampai {{to}}", + "quiet-days": "{{quiet-days}} hari", + "quiet-hours": "{{quiet-hours}} jam", + "re-encrypt-key": "Enkripsi ulang kunci Anda", + "receive": "Menerima", + "receive-transaction": "Terima transaksi", + "recent": "Baru", + "recent-empty": "Alamat yang baru-baru ini digunakan akan muncul di sini", + "recent-recipients": "Kontak", + "recently-used-stickers": "Stiker yang baru saja digunakan akan muncul di sini", + "recipient": "Penerima", + "recipient-code": "Masukkan alamat penerima", + "recipient-code-placeholder": "0x ... atau username.domain.eth", + "recover": "Memulihkan", + "recover-key": "Akses kunci yang ada", + "recover-keycard-multiaccount-not-supported": "Kunci untuk akun ini sudah ada dan tidak dapat ditambahkan lagi. Jika Anda kehilangan kata sandi, kode sandi, atau Kartu Kunci, hapus instalan aplikasi, instal ulang, dan akses kunci Anda dengan memasukkan frase benih Anda", + "recover-with-keycard": "Pulihkan dengan Keycard", + "recovering-key": "Mengakses kunci...", + "recovery-confirm-phrase": "Konfirmasikan frase seed", + "recovery-phrase": "Frase benih", + "recovery-success-text": "Anda harus membuat kode atau kata sandi baru untuk mengenkripsi ulang kunci Anda", + "recovery-typo-dialog-description": "Harap dicatat, frase awal Anda harus menggunakan kata-kata dan urutan yang sama persis seperti saat Anda menerimanya", + "recovery-typo-dialog-title": "Apakah frase seed benar?", + "redeem-amount": "{{quantity}} bonus tersedia", + "redeem-now": "Tukarkan sekarang", + "redeem-success": "Penukaran bonus sukses!", + "refresh": "Menyegarkan", + "registered": "terdaftar", + "remember-me": "Ingat saya", + "remind-me-later": "Tunjukkan ini lagi", + "remove": "Menghapus", + "remove-from-chat": "Hapus dari obrolan", + "remove-from-contacts": "Hapus dari kontak", + "remove-from-contacts-text": "Dengan menghapus pengguna dari daftar kontak Anda, Anda tidak menyembunyikan alamat dompet Anda dari mereka", + "remove-group": "Hapus grup", + "remove-network": "Hapus jaringan", + "remove-token": "Hapus token", + "removed": "dihapus", + "repeat-pin": "Ulangi kode sandi 6 digit yang baru", + "repeat-puk": "Masukkan kode sandi 6 digit yang baru", + "report-bug-email-template": "1. Deskripsi Masalah \n (Jelaskan fitur yang Anda inginkan, atau singkatkan bug dan apa yang Anda lakukan, apa yang Anda harapkan terjadi, dan apa yang sebenarnya terjadi. Bagian di bawah) \n\n\n 2. Langkah-langkah mereproduksi \n (Jelaskan bagaimana kita dapat mereplikasi bug langkah demi langkah.) \n Status -Buka \n -... \n -Langkah 3, dll. \n\n\n 3. Perilaku yang diharapkan \n (Jelaskan apa yang Anda harapkan terjadi.) \n\n\n 4. Perilaku aktual \n (Jelaskan apa yang sebenarnya terjadi.) \n\n\n 5. Tolong pasang screenshot yang bisa menunjukkan masalah \n", + "request-feature": "Minta fitur", + "request-membership": "Minta keanggotaan", + "request-pending": "Permintaan tertunda…", + "request-transaction": "Minta transaksi", + "required-field": "kolom yang harus diisi", + "resend-message": "Kirim ulang", + "reset-card": "Setel ulang kartu", + "reset-card-description": "Operasi ini akan mengatur ulang kartu ke keadaan awal. Ini akan menghapus semua data kartu termasuk kunci pribadi. Pengoperasian tidak dapat dibalik.", + "reset-password": "Setel ulang kata sandi", + "restore-defaults": "Pulihkan Default", + "retry": "Mencoba kembali", + "revoke-access": "Mencabut akses", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Salinan", + "rpc-usage-get-stats": "Menyegarkan", + "save": "Menyimpan", + "save-password": "Simpan kata sandi", + "save-password-unavailable": "Setel kode sandi perangkat untuk menyimpan kata sandi", + "save-password-unavailable-android": "Simpan kata sandi tidak tersedia: perangkat Anda mungkin di-rooting atau tidak memiliki fitur keamanan yang diperlukan.", + "scan-qr": "Pindai kode QR", + "scan-qr-code": "Memindai kode QR dengan alamat dompet", + "scan-tokens": "Pindai token", + "search": "Cari", + "search-no-chat-found": "Tidak ada hasil pencarian. Maksud kamu", + "secret-keys-confirmation-text": "Anda akan membutuhkan mereka untuk terus menggunakan Kartu Kunci Anda jika Anda kehilangan telepon Anda.", + "secret-keys-confirmation-title": "Menulis kode ke bawah?", + "security": "Keamanan", + "see-details": "Lihat detail", + "see-it-again": "MELIHATNYA LAGI", + "seed-phrase-content": "Seperangkat kata yang mudah dibaca, dipilih secara acak dari daftar standar BIP39 dan digunakan untuk memulihkan atau mengakses akun Ethereum Anda di dompet dan perangkat lain. Juga disebut sebagai \"frasa mnemonik,\" \"frasa pemulihan\" atau \"dompet cadangan\" di seluruh ekosistem crypto. Sebagian besar aplikasi crypto menggunakan standar yang sama ini untuk menghasilkan akun.", + "seed-phrase-placeholder": "Frase benih...", + "seed-phrase-title": "Seed Phrase", + "select": "Pilih", + "select-account": "Pilih akun", + "select-account-dapp": "Pilih akun yang ingin Anda gunakan dengan Dapps", + "select-account-first": "Pilih akun terlebih dahulu", + "select-chat": "Pilih obrolan untuk memulai olahpesan", + "selected": "Terpilih", + "send-logs": "Laporkan bug", + "send-logs-to": "Laporkan bug ke {{email}}", + "send-message": "Mengirim pesan", + "send-push-notifications-description": "Jika dinonaktifkan, orang yang menerima pesan Anda tidak akan diberi tahu tentang kedatangannya", + "send-request": "Kirim permintaan", + "send-request-amount": "Jumlah", + "send-request-amount-max-decimals": "Jumlah desimal maksimum adalah {{asset-decimals}}", + "send-request-unknown-token": "Token tidak dikenal - {{asset}}", + "send-sending-to": "ke {{recipient-name}}", + "send-transaction": "Kirim transaksi", + "sending": "Mengirim", + "sent-at": "Dikirim pada", + "server": "Server", + "set-a-topic": "Buat topik", + "set-currency": "Tetapkan mata uang", + "set-custom-fee": "Tetapkan biaya khusus", + "set-dapp-access-permissions": "Tetapkan izin akses DApp", + "set-max": "Tetapkan maks", + "settings": "Pengaturan", + "share": "Bagikan", + "share-address": "Bagikan alamat", + "share-chat": "Bagikan obrolan", + "share-contact-code": "Bagikan kunci obrolan saya", + "share-dapp-text": "Lihat DApp ini yang saya gunakan di Status: {{link}}", + "share-link": "Membagikan tautan", + "share-my-profile": "Bagikan profil saya", + "share-profile": "Bagikan profil", + "share-profile-link": "Bagikan tautan profil", + "share-public-chat-text": "Lihat obrolan publik ini di aplikasi Status: {{link}}", + "shared": "Bersama", + "sharing-copied-to-clipboard": "Disalin", + "sharing-copy-to-clipboard": "Salinan", + "sharing-data-desc-1": "Data divalidasi berdasarkan aturan publik untuk memastikan tidak ada data sensitif yang dikirim. Jangan percaya, verifikasi.", + "sharing-data-desc-2": "Data penggunaan dikirim dari ujung ke ujung yang dienkripsi melalui jaringan peer-to-peer Status", + "sharing-data-desc-3": "Alih-alih kunci obrolan reguler Anda, kunci sekali pakai digunakan", + "sharing-data-desc-4": "Data pengguna tidak dapat di kaitkan dengan alamat IP anda", + "sharing-data-desc-5": "Data kumulatif semua pengguna tersedia untuk umum", + "sharing-data-desc-6": "Data dihapus dari ponsel Anda setelah dikirim", + "sharing-share": "Bagikan", + "show-less": "Tampilkan lebih sedikit", + "show-more": "Menampilkan lebih banyak", + "show-notifications": "Tampilkan pemberitahuan", + "show-profile-pictures": "Tunjukkan foto profil", + "show-qr": "Tampilkan kode QR", + "show-transaction-data": "Tampilkan data transaksi", + "sign-and-send": "Tanda tangani dan kirim", + "sign-anyway": "Tandatangani saja", + "sign-in": "Membuka kunci", + "sign-message": "Tanda Pesan", + "sign-out": "Keluar", + "sign-request-failed": "Tidak dapat menandatangani pesan", + "sign-with": "Masuk dengan", + "sign-with-password": "Masuk dengan kata sandi", + "sign-you-in": "Masuk Anda ...", + "signing": "Menandatangani", + "signing-a-message": "Menandatangani pesan", + "signing-phrase": "Menandatangani frasa", + "something-went-wrong": "Ada yang salah", + "soon": "Segera", + "specify-address": "Tentukan alamat", + "specify-name": "Tentukan nama", + "specify-network-id": "Tentukan id jaringan", + "specify-rpc-url": "Tentukan URL RPC", + "specify-server-public-key": "Masukkan kunci publik server", + "start-chat": "Memulai obrolan", + "start-conversation": "Mulai percakapan", + "start-group-chat": "Mulai obrolan grup", + "start-new-chat": "Mulai obrolan baru", + "starter-pack-received": "Paket Perdana diterima", + "starter-pack-received-description": "Inilah beberapa crypto untuk Anda mulai! Gunakan untuk mendapatkan stiker, nama ENS, dan coba dapps", + "status": "Status", + "status-confirmed": "Dikonfirmasi", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Kartu Kunci Status", + "status-mobile-descr": "Status cenderung menggunakan banyak data saat menyinkronkan obrolan. Anda dapat memilih untuk tidak menyinkronkan saat menggunakan jaringan seluler", + "status-not-sent-click": "Tidak dikonfirmasi Klik untuk opsi", + "status-not-sent-tap": "Tidak dikonfirmasi Ketuk untuk opsi", + "status-pending": "Tertunda", + "status-sent": "Terkirim", + "status-tx-not-found": "TX tidak ditemukan", + "status-updates-descr": "Pembaruan status akan muncul di sini. Tambahkan profil sebagai kontak untuk menerima pembaruan tentang timeline Anda.", + "statuses-descr": "Bagikan apa yang ada di pikiran Anda dan dapatkan info terbaru dengan kontak Anda", + "statuses-my-status-descr": "Bagikan apa yang Anda pikirkan. Siapa pun yang mengunjungi profil Anda akan dapat melihat status Anda. Orang yang menambahkan Anda sebagai kontaknya akan menerima pembaruan Anda di timeline mereka", + "step-i-of-n": "Langkah {{step}} dari {{number}}", + "sticker-market": "Pasar stiker", + "storage": "Penyimpanan", + "submit": "Kirimkan", + "submit-bug": "Kirimkan bug", + "success": "Sukses", + "symbol": "Simbol", + "sync-all-devices": "Sinkronkan semua perangkat", + "sync-in-progress": "Menyinkronkan...", + "sync-settings": "Pengaturan sinkronisasi", + "sync-synced": "Dalam sinkronisasi", + "syncing-devices": "Menyinkronkan...", + "system": "Sistem", + "tag-was-lost": "Tag hilang", + "tap-card-again": "Ketuk kartu ke bagian belakang ponsel Anda lagi", + "test-networks": "Uji jaringan", + "text-input-disabled": "Silakan tunggu beberapa saat...", + "thank-you": "Terima kasih", + "this-device": "Alat ini", + "this-device-desc": "Kunci Anda akan dienkripsi dan disimpan dengan aman di perangkat Anda", + "this-is-you-signing": "Ini adalah frasa penandatanganan Anda", + "this-will-take-few-seconds": "Ini akan memakan waktu beberapa detik", + "three-days": "Tiga hari", + "three-words-description": "Anda harus melihat 3 kata ini sebelum menandatangani setiap transaksi", + "three-words-description-2": "Jika Anda melihat kombinasi yang berbeda, batalkan transaksi dan keluar", + "timeline": "Linimasa", + "to": "Untuk", + "to-block": "Blok", + "to-enable-biometric": "Untuk mengaktifkan {{bio-type-label}} , Anda harus menyimpan kata sandi di layar buka kunci", + "to-encrypt-enter-password": "Untuk mengenkripsi akun, harap masukkan kata sandi Anda", + "to-see-this-message": "Untuk melihat pesan ini,", + "token-auto-validate-decimals-error": "Desimal salah untuk token {{symbol}} di alamat {{address}} - setel ke {{expected}} tetapi terdeteksi sebagai {{actual}}", + "token-auto-validate-name-error": "Nama salah untuk token {{symbol}} di alamat {{address}} - atur ke {{expected}} tetapi dideteksi sebagai {{actual}}", + "token-auto-validate-symbol-error": "Simbol salah untuk token {{symbol}} di alamat {{address}} - setel ke {{expected}} tetapi terdeteksi sebagai {{actual}}", + "token-details": "Detail token", + "topic-name-error": "Gunakan hanya huruf kecil (a hingga z), angka & tanda hubung (-). Jangan gunakan tombol obrolan", + "transaction": "Transaksi", + "transaction-data": "Data transaksi", + "transaction-declined": "Transaksi ditolak", + "transaction-description": "Anggap itu selesai setelah 12 konfirmasi pada jaringan.", + "transaction-details": "Detil transaksi", + "transaction-failed": "transaksi gagal", + "transaction-history": "Sejarah transaksi", + "transaction-request": "Permintaan Transaksi", + "transaction-sent": "Transaksi terkirim", + "transaction-signed": "Transaksi telah berhasil ditandatangani", + "transactions": "Transaksi", + "transactions-filter-select-all": "Pilih Semua", + "transactions-filter-title": "Filter riwayat", + "transactions-history": "Sejarah transaksi", + "transactions-history-empty": "Belum ada transaksi dalam riwayat Anda", + "transactions-history-loading": "Memuat riwayat transaksi. Ini mungkin perlu waktu.", + "transactions-load-more": "Muat lebih banyak", + "transactions-sign": "Tanda", + "tribute-required-by-multiaccount": "{{multiaccount-name}} membutuhkan SNT untuk memulai obrolan.", + "tribute-state-paid": "Upeti dibayar", + "tribute-state-pending": "Upeti tertunda", + "tribute-state-required": "Membutuhkan {{snt-amount}} upeti SNT", + "tribute-to-talk": "Upeti untuk berbicara", + "tribute-to-talk-add-friends": "Tambahkan teman sebagai kontak untuk memungkinkan obrolan tanpa pembayaran upeti.", + "tribute-to-talk-are-you-friends": "Apakah kalian berteman?", + "tribute-to-talk-ask-to-be-added": "Minta ditambahkan sebagai kontak", + "tribute-to-talk-contact-received-your-tribute": "menerima upeti Anda. Sekarang Anda dapat saling mengobrol dengan aman.", + "tribute-to-talk-desc": "Dapatkan uang dari perhatian Anda dengan meminta SNT agar orang baru memulai obrolan", + "tribute-to-talk-disabled": "Tribute to Talk dinonaktifkan", + "tribute-to-talk-disabled-note": "Mulai sekarang, orang baru dapat memulai obrolan dengan Anda tanpa mengirim SNT.", + "tribute-to-talk-enabled": "Anda mengaktifkan Tribute to Talk.", + "tribute-to-talk-finish-desc": "Mulai sekarang, Anda hanya akan menerima obrolan dari kontak, dan orang-orang yang membayar", + "tribute-to-talk-learn-more-1": "Waktu dan perhatian Anda adalah aset Anda yang paling berharga. Tribute to Talk memungkinkan Anda mengatur jumlah SNT yang diperlukan bagi orang baru untuk memulai obrolan dengan Anda.", + "tribute-to-talk-learn-more-2": "Siapa pun yang tidak ada dalam daftar kontak Anda akan diminta untuk membayar, dan Anda dapat merespons begitu mereka memilikinya.", + "tribute-to-talk-learn-more-3": "Anda selalu dapat mengirim uang kembali, tetapi untuk memastikan bahwa teman-teman dapat menghubungi Anda dengan bebas, tambahkan mereka sebagai kontak terlebih dahulu.", + "tribute-to-talk-paywall-learn-more-1": "Waktu dan perhatian kita adalah aset kita yang paling berharga. Tribute to Talk memungkinkan Anda menghubungi orang baru dengan imbalan pembayaran SNT.", + "tribute-to-talk-paywall-learn-more-2": "Untuk memulai obrolan dengan seseorang yang memiliki set upeti, cukup bayar SNT yang diperlukan dan Anda akan ditambahkan sebagai kontak.", + "tribute-to-talk-paywall-learn-more-3": "Jika Anda mengenal mereka, Anda dapat membagikan profil Anda di luar Status untuk ditambahkan secara gratis.", + "tribute-to-talk-pending": "Upeti konfirmasi tertunda", + "tribute-to-talk-pending-note": "Transaksi penghormatan sedang menunggu konfirmasi di jaringan. Anda dapat memeriksa statusnya dalam riwayat transaksi", + "tribute-to-talk-removing-note": "Menghapus Tribute to Talk akan memungkinkan orang baru memulai obrolan tanpa mengirim SNT. Membutuhkan transaksi yang harus dilakukan.", + "tribute-to-talk-set-snt-amount": "Tetapkan jumlah SNT yang diperlukan untuk orang baru untuk memulai obrolan", + "tribute-to-talk-signing": "Menunggu untuk tanda transaksi", + "tribute-to-talk-transaction-failed-note": "Transaksi gagal dan pengaturan Tribute to Talk Anda belum diubah", + "tribute-to-talk-tribute-received1": "Penghargaan diterima. Anda dan", + "tribute-to-talk-tribute-received2": "sekarang menjadi kontak dan dapat saling mengobrol dengan aman.", + "tribute-to-talk-you-require-snt": "Anda memerlukan SNT untuk orang baru untuk memulai obrolan.", + "try-again": "Coba lagi", + "try-keeping-the-card-still": "Cobalah menjaga kartu tetap", + "turn-nfc-description": "NFC dinonaktifkan pada perangkat Anda. Anda dapat mengaktifkannya di pengaturan", + "turn-nfc-on": "Aktifkan NFC untuk melanjutkan", + "tx-fail-description1": "Transaksi ini kemungkinan besar gagal. Tandatangani dengan risiko Anda sendiri menggunakan biaya jaringan khusus.", + "tx-fail-description2": "Transaksi ini kemungkinan besar gagal. Tetapkan biaya jaringan khusus untuk menandatangani dengan risiko Anda sendiri.", + "type": "Tipe", + "type-a-message": "Pesan", + "ulc-enabled": "ULC diaktifkan", + "unable-to-fetch": "Tidak dapat mengambil riwayat obrolan", + "unable-to-read-this-code": "Tidak dapat membaca kode ini", + "unable-to-send-messages": "Tidak dapat mengirim dan menerima pesan", + "unblock": "Bebaskan", + "unblock-contact": "Buka blokir pengguna ini", + "unknown-status-go-error": "Status-go error tidak dikenal", + "unlock": "Membuka kunci", + "unmute": "Suarakan", + "unpair-card": "Putuskan pasangan kartu", + "unpair-card-confirmation": "Operasi ini akan memutuskan pemasangan kartu dari perangkat saat ini. Membutuhkan otorisasi kode sandi 6 digit. Apakah Anda ingin melanjutkan?", + "unpaired-keycard-text": "Kartu kunci yang Anda ketuk tidak terkait dengan ponsel ini", + "unpaired-keycard-title": "Sepertinya kartu Anda tidak berpasangan", + "update": "Memperbarui", + "update-to-listen-audio": "Perbarui ke versi terbaru untuk mendengarkan pesan audio di sini!", + "update-to-see-image": "Perbarui ke versi terbaru untuk melihat gambar yang bagus di sini!", + "update-to-see-sticker": "Perbarui ke versi terbaru untuk melihat stiker yang bagus di sini!", + "url": "URL", + "usd-currency": "USD", + "use-valid-contact-code": "Silakan masukkan atau pindai kunci obrolan atau nama pengguna yang valid", + "validation-amount-invalid-number": "Jumlahnya bukan angka yang valid", + "validation-amount-is-too-precise": "Jumlahnya terlalu tepat. Jumlah desimal maksimum adalah {{decimals}} .", + "version": "Versi aplikasi", + "view-cryptokitties": "Lihat di CryptoKitties", + "view-cryptostrikers": "Lihat di CryptoStrikers", + "view-data": "Menampilkan data", + "view-details": "Melihat rincian", + "view-etheremon": "Lihat di Etheremon", + "view-gitcoin": "Lihat di Gitcoin", + "view-profile": "Tampilkan profil", + "view-public-dashboard": "Menampilkan dasbor publik", + "view-rules": "Lihat aturan", + "view-signing": "Lihat frasa penandatanganan", + "view-superrare": "Lihat di SuperRare", + "waiting-for-wifi": "Tidak ada Wi-Fi, sinkronisasi pesan dinonaktifkan.", + "waiting-for-wifi-change": "Pengaturan", + "waiting-to-sign": "Menunggu untuk tanda transaksi ...", + "waiting-wi-fi": "Menunggu Wi-Fi…", + "waku-bloom-filter-mode": "Mode filter mekar Waku", + "wallet": "Dompet", + "wallet-address": "Alamat Dompet", + "wallet-asset": "Aset", + "wallet-assets": "Aset", + "wallet-backup-recovery-title": "Cadangkan frase seed Anda", + "wallet-choose-recipient": "Pilih Penerima", + "wallet-collectibles": "Koleksi", + "wallet-insufficient-funds": "Dana tidak mencukupi", + "wallet-insufficient-gas": "ETH untuk gas tidak cukup", + "wallet-invalid-address": "Alamat tidak valid: \n {{data}}", + "wallet-invalid-address-checksum": "Kesalahan dalam alamat: \n {{data}}", + "wallet-invalid-chain-id": "Jaringan tidak cocok: \n {{data}} tetapi rantai saat ini adalah {{chain}}", + "wallet-key-content": "Alamat hex 64 karakter berdasarkan standar Ethereum dan dimulai dengan 0x. Menghadap publik, alamat akun Anda dibagikan kepada orang lain saat Anda ingin menerima dana. Juga disebut sebagai \"alamat Ethereum\" atau \"alamat dompet.\"", + "wallet-key-title": "Alamat akun", + "wallet-manage-assets": "Kelola aset", + "wallet-request": "Permintaan", + "wallet-send": "Kirim", + "wallet-send-min-units": "Min 21000 unit", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Pengaturan dompet", + "wallet-total-value": "Nilai total", + "wallet-transaction-total-fee": "Total Biaya", + "wants-to-access-profile": "ingin mengakses profil Anda", + "warning": "Peringatan", + "warning-message": "Maaf, kami membatasi pengiriman beberapa pesan secara berurutan untuk mencegah spam. Silakan coba lagi sebentar lagi", + "warning-sending-to-contract-descr": "Alamat yang Anda masukkan adalah kontrak pintar, mengirim dana ke alamat ini dapat mengakibatkan hilangnya dana. Untuk berinteraksi dengan DApp, buka DApp di Status DApp Browser.", + "watch-only": "Hanya menonton", + "web-view-error": "Tidak dapat memuat halaman", + "websites": "Situs web", + "webview-camera-permission-requests": "Permintaan izin kamera webview", + "webview-camera-permission-requests-subtitle": "Saat diaktifkan, situs web dan aplikasi dapat meminta untuk menggunakan kamera Anda", + "welcome-blank-message": "Obrolan Anda akan muncul di sini. Untuk memulai obrolan baru tekan tombol ⊕", + "welcome-screen-text": "Siapkan dompet Anda, undang teman untuk mengobrol \ndan jelajahi dapps populer!", + "welcome-to-status": "Selamat datang di Status!", + "welcome-to-status-description": "Siapkan dompet crypto Anda, undang teman untuk mengobrol dan jelajahi aplikasi yang didesentralisasi", + "what-is-shared": "Apa yang dibagikan?", + "whats-on-your-mind": "Apa yang sedang kamu pikirkan…", + "word-count": "Jumlah kata", + "word-n": "Word # {{number}}", + "word-n-description": "Untuk memeriksa apakah Anda telah membuat cadangan frase seed Anda dengan benar, masukkan kata # {{number}} atas.", + "words-n": { + "other": "kata-kata" + }, + "write-down-and-store-securely": "Tulis kode \n & simpan dengan aman", + "wrong-address": "Salah alamat", + "wrong-card": "Kartu yang salah", + "wrong-card-text": "Kartu yang disadap tidak sesuai dengan kunci yang Anda pilih", + "wrong-contract": "Kontrak salah", + "wrong-keycard-text": "Kartu kunci yang Anda ketuk tidak terkait dengan ponsel ini", + "wrong-keycard-title": "Sepertinya Anda sudah mengetuk \n kartu kunci yang salah", + "wrong-password": "Kata sandi salah", + "wrong-word": "Kata yang salah", + "yes": "Iya", + "you": "kamu", + "you-already-have-an-asset": "Anda sudah memiliki aset {{value}}", + "you-are-all-set": "Anda sudah siap!", + "you-are-all-set-description": "Jika Anda kehilangan telepon, Anda sekarang dapat mengakses dana dan kunci obrolan menggunakan frase benih Anda", + "you-can-change-account": "Anda dapat mengubah nama akun dan warna sesuai keinginan Anda", + "you-can-choose-preview-websites": "Anda dapat memilih dari situs web berikut ini yang dapat melihat pratinjau tautan deskripsi dan gambar dalam obrolan", + "you-can-fetch": "Anda dapat mengambil riwayat obrolan", + "you-dont-have-contacts": "Anda belum memiliki kontak apa pun.", + "you-dont-have-contacts-invite-friends": "Anda belum memiliki kontak.\nUndang teman Anda untuk mulai mengobrol.", + "you-dont-have-stickers": "Anda belum memiliki stiker", + "you-will-need-this-code": "Anda memerlukan kode ini untuk membuka Status dan menandatangani transaksi", + "you-will-start-from-scratch": "Anda akan mulai dari awal dengan satu set kunci baru", + "your-card-is-frozen": "Kartu Kunci Anda dibekukan. Setel ulang akses kartu", + "your-contact-code": "Memberi akses memberi otorisasi DApp ini untuk mengambil kunci obrolan Anda", + "your-data-belongs-to-you": "Jika Anda kehilangan frase seed Anda, Anda kehilangan data dan dana Anda", + "your-data-belongs-to-you-description": "Jika Anda kehilangan akses, misalnya dengan kehilangan telepon Anda, Anda hanya dapat mengakses kunci Anda dengan frase seed Anda. Tidak seorang pun, tetapi Anda memiliki frase benih Anda. Tuliskan. Amankan", + "your-keys": "Kunci Anda", + "your-recovery-phrase": "Frase seed Anda", + "your-recovery-phrase-description": "Ini adalah frase awal Anda. Anda menggunakannya untuk membuktikan bahwa ini adalah dompet Anda. Anda hanya bisa melihatnya sekali! Tulis di atas kertas dan simpan di tempat yang aman. Anda akan membutuhkannya jika Anda kehilangan atau menginstal ulang dompet Anda.", + "youre-on-mobile-network": "Anda berada di jaringan seluler" +} diff --git a/translations/it.json b/translations/it.json new file mode 100644 index 00000000000..5e4dc0e4672 --- /dev/null +++ b/translations/it.json @@ -0,0 +1,1713 @@ +{ + "You": "Tu", + "about-app": "A proposito di", + "about-key-storage-content": "Status non accederà mai alla tua chiave privata. Assicurati di eseguire il backup della tua frase di recupero. Se si perde il telefono è l'unico modo per accedere alle tue chiavi .", + "about-key-storage-title": "Informazioni sulla memorizzazione delle chiavi", + "about-names-content": "Nessuno può fingere di essere te! Sei anonimo di default e non dovrai mai rivelare il tuo vero nome. È possibile registrare un nome personalizzato per una piccola quota.", + "about-names-title": "I nomi non possono essere cambiati", + "about-sharing-data": "Informazioni sulla condivisione dei dati", + "accept": "Accetta", + "accept-and-add": "Accetta e aggiungi", + "accept-and-continue": "Accetta e continua", + "accept-and-share-address": "Accetta e condividi indirizzo", + "accept-new-chats-from": "Accetta nuove chat da", + "accept-status-tos-prefix": "Accetto Status", + "access-existing-keys": "Accedi a chiavi esistenti", + "access-key": "Accedi a chiavi esistenti", + "account-added": "Account aggiunto", + "account-color": "Colore dell'account", + "account-content": "Puoi considerare tuoi account in Status come dei conti in banca. Come tali hanno un numero di conto (indirizzo ethereum) e un saldo; puoi usare questi account per effettuare transazioni su Ethereum. Puoi avere più di un account nel tuo portafoglio, tutti accessibili appena fai login in Status.", + "account-exists-title": "Questo account esiste già!", + "account-is-used": "L'account è stato usato con Dapps nel browser.", + "account-name": "Nome utente", + "account-settings": "Impostazioni account", + "account-title": "Account", + "accounts": "Accounts", + "actions": "Azioni", + "active-online": "In linea", + "active-unknown": "Sconosciuto", + "activity": "Attività", + "add": "Aggiungi", + "add-a-watch-account": "Aggiungi un indirizzo di sola lettura", + "add-account": "Aggiungi un account", + "add-account-description": "Puoi importare qualsiasi tipo di account Ethereum per aggiungerlo al tuo portafoglio Status.", + "add-account-incorrect-password": "La password sembra essere errata. Inserisci la password che usi per sbloccare l'app.", + "add-an-account": "Aggiungi un account", + "add-bootnode": "Aggiungi bootnode", + "add-contact": "Aggiungi ai contatti", + "add-custom-token": "Aggiungi token personalizzato", + "add-favourite": "Aggiungi preferito", + "add-mailserver": "Aggiungi nodo Status", + "add-members": "Aggiungi partecipanti", + "add-network": "Aggiungi rete", + "add-new-contact": "Aggiungi nuovo contatto", + "add-nickname": "Aggiungi un soprannome (facoltativo)", + "add-node": "Aggiungi Nodo", + "add-private-key-account": "Aggiungi un account usando la tua chiave privata", + "add-seed-account": "Aggiungi account usando la tua frase mnemonica", + "add-to-contacts": "Aggiungi ai contatti", + "add-to-contacts-text": "Aggiungendo un utente all'elenco dei contatti, condividi l'indirizzo del tuo portafoglio", + "add-to-favourites": "Aggiungi ai preferiti", + "add-watch-account": "Aggiungi un account di sola lettura", + "address": "Indirizzo", + "address-or-ens-name": "Indirizzo o nome ENS", + "address-received": "Indirizzo ricevuto", + "address-request-accepted": "Richiesta di indirizzo accettata", + "address-requested": "Indirizzo richiesto", + "advanced": "Avanzate", + "advanced-settings": "Impostazioni avanzate", + "advertiser-description": "Hai scoperto Status grazie a un tuo contatto. Permetti a Status di controllare il tuo indirizzo IP solo questa volta in modo che il tuo referente venga premiato? Queste informazioni verranno utilizzate solo a questo scopo e verranno rimosse completamente dopo 7 giorni.", + "advertiser-starter-pack-accept": "Accetta", + "advertiser-starter-pack-decline": "Rifiuta", + "advertiser-starter-pack-description": "Ecco alcuni token per iniziare! Usali per ottenere adesivi, un nome ENS e per provare dapps", + "advertiser-starter-pack-title": "Starter Pack", + "advertiser-title": "Privacy attiva come impostazione predefinita", + "agree-by-continuing": "Continuando accetti \n i nostri", + "all": "Tutti", + "allow": "Consenti", + "allow-and-send": "Consenti e invia", + "allow-mention-notifications": "Mostra @ menzioni", + "allowing-authorizes-this-dapp": "Autorizzare questo DApp a recuperare l'indirizzo del tuo portafoglio e abilitare Web3", + "already-have-asset": "Hai già questo cryptoasset", + "amount": "Importo", + "anyone": "Chiunque", + "appearance": "Aspetto", + "apply": "Applica", + "approve": "Approva", + "approve-limit": "Approva il limite", + "approve-token": "Approva token", + "approve-token-contract-desc": "L'approvazione di un token con un contratto gli consente di spendere il saldo dei token. Se ritieni che un progetto non sia affidabile, non approvare il token con loro o approvare solo l'importo che utilizzerai con loro.", + "are-you-sure": "Sei sicuro?", + "are-you-sure-description": "Non sarai più in grado di vedere l'intera frase di recupero", + "are-you-sure-to-cancel": "Sei sicuro di voler cancellare ?", + "are-you-sure?": "Sei sicuro?", + "ask-in-status": "Fai una domanda o segnala un bug", + "at": "a", + "attribution-received": "{{attrib}} dei {{max}} bonus ricevuti", + "audio": "Audio", + "audio-recorder": "Registratore", + "audio-recorder-error": "Errore di registrazione", + "audio-recorder-max-ms-reached": "Tempo massimo di registrazione raggiunto", + "audio-recorder-permissions-error": "Devi dare l'autorizzazione per inviare messaggi audio", + "authorize": "Autorizza", + "available": "Disponibile", + "available-participants": { + "one": "Puoi selezione solo un'altro partecipante", + "other": "Puoi selezionare ancora {{count}} participanti" + }, + "back": "Indietro", + "back-up": "Backup", + "back-up-seed-phrase": "Backup frase di recupero", + "back-up-your-seed-phrase": "Backup frase di recupero", + "backing-up": "Backup in corso...", + "backup-disabled": "Disabilitato", + "backup-enabled": "Abilitato", + "backup-recovery-phrase": "Backup della frase di recupero", + "backup-settings": "Impostazioni di backup", + "backup-through-waku": "Backup tramite waku", + "bad-fees-description": "La tua tariffa prioritaria è inferiore ai nostri parametri suggeriti.", + "balance": "Saldo", + "begin-set-up": "Inizia la configurazione", + "below-base-fee": "tariffa massima inferiore alla tariffa base", + "biometric-auth-android-sensor-desc": "Sensore tattile", + "biometric-auth-android-sensor-error-desc": "Fallita", + "biometric-auth-android-title": "Autenticazione richiesta", + "biometric-auth-confirm-logout": "Ripetere il login", + "biometric-auth-confirm-message": "L'autenticazione biometrica è necessaria per continuare, se non è possibile si prega di sbloccare le chiavi usando la password o la codice di accesso.", + "biometric-auth-confirm-title": "Devi autenticarti!", + "biometric-auth-confirm-try-again": "Riprova", + "biometric-auth-error": "Impossibile eseguire l'autenticazione biometrica ({{code}})", + "biometric-auth-login-error-title": "Errore di autenticazione biometrica", + "biometric-auth-login-ios-fallback-label": "Inserisci la password", + "biometric-auth-reason-login": "Accedi in Status", + "biometric-auth-reason-verify": "Verifica autenticazione", + "biometric-disable-bioauth": "disabilita {{bio-type-label}}", + "biometric-disable-password-description": "Disabilitando questa opzione, si ", + "biometric-disable-password-title": "Disabilita il salvataggio della password", + "biometric-enable": "Se non vuoi digitare ogni volta la password per accedere all'app, abilita l'accesso via {{bio-type-label}}", + "biometric-enable-button": "Abilita {{bio-type-label}}", + "biometric-enable-keycard": "Se non vuoi utilizzare ogni volta la Keycard per accedere all'app, abilita l'accesso via {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "impronta digitale", + "biometric-secure-with": "Proteggi con {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "Password BIP39", + "blank-keycard-text": "È possibile procedere con la tua keycard una volta che hai generato le tue chiavi ed il tuo nome", + "blank-keycard-title": "Sembra che tu abbia usato \nuna keycard vuota", + "block": "Blocco", + "block-contact": "Blocca questo utente", + "block-contact-details": "Il blocco eliminerà i messaggi già ricevuti da questo utente e impedirà di riceverne altri", + "blocked-users": "Utenti bloccati", + "bootnode-address": "Indirizzo bootnode", + "bootnode-details": "Dettagli bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes abilitati", + "bootnodes-settings": "Impostazioni dei bootnode", + "browsed-websites": "La cronologia del browser verrà visualizzata qui", + "browser": "Browser", + "browser-not-secure": "La connessione non è sicura! Non firmare transazioni o inviare dati personali su questo sito.", + "browser-secure": "La connessione è sicura. Assicurati di fidarti davvero a questo sito prima di firmare transazioni o di inserire dati personali.", + "browsers": "Browsers", + "browsing-cancel": "Annulla", + "browsing-open-in-android-web-browser": "Apri in Android", + "browsing-open-in-ios-web-browser": "Apri in iOS", + "browsing-open-in-status": "Apri in Status", + "browsing-site-blocked-description1": "Abbiamo rilevato potenziali attività malevole da questo indirizzo. Per proteggere te e il tuo portafoglio, stiamobloccando la navigazione. \n\n Se ritieni che si tratti di un errore, faccelo sapere in", + "browsing-site-blocked-description2": "chat pubblica.", + "browsing-site-blocked-go-back": "Torna indietro", + "browsing-site-blocked-title": "Questo sito è bloccato", + "browsing-title": "Sfoglia", + "bug-report": "Segnala un bug", + "bug-report-description": "* Descrizione", + "bug-report-description-placeholder": "Obbligatorio, non può essere vuoto", + "bug-report-steps": "Passi per riprodurre", + "bug-report-steps-placeholder": "- apri l'app\n - fai qualcosa\n - e poi qualcos'altro...", + "bug-report-submit-email": "Invia via e-mail con l'archivio dei log", + "bug-report-submit-gh-issue": "Invia un problema GitHub senza log", + "bug-report-too-short-description": "La descrizione è troppo breve", + "build-yourself": "Per utilizzare l'applicazione senza queste Condizioni di servizio, è possibile creare la propria versione", + "buy-crypto": "Acquista criptovaluta", + "buy-crypto-choose-a-service": "Scegli un servizio che desideri utilizzare per acquistare criptovalute", + "buy-crypto-description": "Trova una dapp per acquistare cripto", + "buy-crypto-leaving": "Stai lasciando Status ed entrando in un sito web di terzi per completare il tuo acquisto", + "buy-crypto-title": "Sembra che il tuo portafoglio sia vuoto", + "camera-access-error": "Per concedere l'autorizzazione richiesta per la videocamera, andare alle impostazioni del sistema e assicurarsi che Status > Videocamera sia selezionato.", + "can-not-add-yourself": "Questo sei tu, per iniziare una chat scegli qualcun altro", + "can-send-messages": "Puoi inviare e ricevere nuovi messaggi", + "cancel": "Annulla", + "cancel-keycard-setup": "Annullare la configurazione della Keycard", + "cancelling": "Cancellazione in corso", + "cannot-read-card": "Non riesco a leggere la carta.\nPer favore, tienilo sul retro del telefono.", + "cannot-use-default-pin": "Il codice di accesso 000000 non è consentito.\nSi prega di utilizzare un altro numero", + "cant-open-public-chat": "Impossibile aprire la chat pubblica", + "cant-report-bug": "Impossibile segnalare un bug", + "card-is-blank": "Questa carta è vuota", + "card-reseted": "La carta è stata resettata", + "card-unpaired": "La carta è stata disaccoppiata dal dispositivo corrente", + "category": "Categoria", + "category-title": "Titolo della categoria", + "change-fleet": "Cambia fleet in {{fleet}}", + "change-logging-enabled": "Sei sicuro di voler {{enable}} il logging?", + "change-pairing": "Modifica il codice di accoppiamento", + "change-pairing-description": "La modifica del codice di abbinamento non influisce sugli abbinamenti correnti. Tuttavia, qualsiasi nuovo abbinamento richiederà il nuovo codice.", + "change-pairing-title": "Creare un nuovo codice di accoppiamento", + "change-passcode": "Cambia codice di accesso", + "change-password": "Cambia la password", + "change-pin": "Cambia codice di accesso a 6 cifre", + "change-puk": "Modifica il PUK a 12 cifre", + "change-tip": "Modifica mancia", + "changed-amount-warning": "L'importo è stato modificato da {{old}} a {{new}}", + "changed-asset-warning": "La risorsa è stata modificata da {{old}} a {{new}}", + "chaos-mode": "Modalità caos", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Chatta ed effettua transazioni in privato con gli amici", + "chat-is-a-contact": "È nella lista contatti", + "chat-is-not-a-contact": "Non è nella lista contatti", + "chat-key": "Chiave chat", + "chat-key-content": "I messaggi sul protocollo Status vengono inviati e ricevuti tramite chiavi di cifratura. La chiave di chat pubblica è una stringa di caratteri che condividete con gli altri in modo che possano inviarvi messaggi.", + "chat-key-title": "Chiave di chat", + "chat-link-previews": "Anteprime dei link della chat", + "chat-name": "Nome chat", + "chat-name-content": "Tre parole casuali, derivate algoritmicamente dalla chiave della chat e utilizzate come alias predefinito nella chat. I nomi delle chat sono unici; nessun altro utente può avere le stesse tre parole.", + "chat-name-title": "Nome della chat", + "chat-notification-preferences": "Impostazioni sulle notifiche", + "chat-settings": "Impostazioni chat", + "chats": "Chat", + "check-on-opensea": "Controlla su opensea", + "check-your-recovery-phrase": "Controlla la tua frase di recupero", + "choose-actions": "Scegli azioni", + "choose-authentication-method": "Scegli un metodo di autenticazione.", + "choose-new-location-for-keystore": "Scegli una nuova posizione per salvare il file del keystore", + "choose-storage": "Scegli l'archiviazione", + "clear": "Cancella tutto", + "clear-all": "Cancella tutto", + "clear-history": "Cancellare la cronologia", + "clear-history-action": "Cancella tutto", + "clear-history-confirmation": "Cancellare la cronologia?", + "clear-history-confirmation-content": "Sei sicuro di voler cancellare la cronologia di questa chat?", + "clear-history-title": "Cancellare la cronologia?", + "close": "Chiudi", + "close-all": "Chiudi tutto", + "close-app-button": "Conferma", + "close-app-content": "L'app si fermerà e si chiuderà. Quando la riapri, verrà utilizzata la rete selezionata", + "close-app-title": "Attenzione!", + "collectibles-leak-metadata": "Puoi visualizzare i tuoi NFT qui. Se lo fai, condividerai il tuo portafoglio e l'indirizzo IP", + "command-button-send": "Invia", + "communities": "Comunità", + "communities-alpha": "Comunità (alfa)", + "communities-enabled": "Comunità abilitate", + "communities-verified": "✓ Comunità di Status verificata", + "community": "Comunità", + "community-color": "Colore della comunità", + "community-color-placeholder": "Scegli un colore", + "community-edit-title": "Modifica comunità", + "community-emoji-thumbnail-title": "Miniatura", + "community-image-pick": "Scegli un'immagine", + "community-image-remove": "Rimuovi", + "community-image-take": "Scatta una foto", + "community-info": "Informazioni sulla comunità", + "community-info-not-found": "Informazioni sulla comunità non trovate", + "community-invite-title": "Invita", + "community-key": "Chiave privata della comunità", + "community-key-placeholder": "Digita la chiave privata della community", + "community-link": "Link alla comunità", + "community-members": { + "one": "membro", + "other": "membri" + }, + "community-members-title": "Partecipanti", + "community-message-preview": "Invito a unirsi a {{nome della comunità}}", + "community-private-key": "Chiave privata della comunità", + "community-requests-to-join-title": "Richieste di adesione", + "community-roles": "Ruoli", + "community-share-title": "Condividi", + "community-thumbnail-image": "Immagine di anteprima", + "community-thumbnail-upload": "Carica", + "complete-hardwallet-setup": "La carta è ora collegata. Sarà richiesta per firmare le tue transazioni e sbloccare le tue chiavi.", + "completed": "Completato", + "confirm": "Conferma", + "confirm-new-password": "Conferma la nuova password", + "confirm-pairing-code-placeholder": "Conferma il codice di accoppiamento", + "confirm-password-placeholder": "Conferma la tua password...", + "confirmation-request": "Richiesta di conferma", + "confirmations": "Conferme", + "confirmations-helper-text": "Quando la transazione ha 12 conferme si può considerare conclusa.", + "connect": "Collega", + "connect-mailserver-content": "Connettersi a {{name}} ?", + "connect-wallet": "Collega portafoglio", + "connected": "Connesso", + "connected-to": "Connesso a", + "connecting": "Connessione in corso...", + "connecting-requires-login": "La connessione ad un'altra rete richiede il login", + "connection-status": "Stato della connessione", + "connection-with-the-card-lost": "La connessione con la carta \n è stata persa", + "connection-with-the-card-lost-setup-text": "Per riprendere l'installazione, tenere\nla carta appoggiata alla parte posteriore\ndel telefono e mantenere contatto.", + "connection-with-the-card-lost-text": "Per procedere, tieni la carta sul retro del telefono", + "contact-code": "Chiave chat", + "contact-s": { + "one": "contatto", + "other": "contatti" + }, + "contacts": "Contatti", + "contacts-descr": "I tuoi contatti appariranno qui. Riceverai aggiornamenti di stato da chiunque aggiungerai come contatto", + "contacts-empty": "I contatti con nomi ENS verranno visualizzati qui", + "continue": "Continua", + "continue-anyway": "Continua comunque", + "contract-address": "Indirizzo del Contract", + "contract-interaction": "Interazione con Smart Contract", + "contract-isnt-supported": "Il contratto non è supportato", + "copy-info": "Copia info", + "copy-qr": "Copia codice", + "copy-to-clipboard": "Copia", + "copy-transaction-hash": "Copia ID transazione", + "cost-fee": "Costo\/Tassa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Crea", + "create-a-pin": "Crea un codice di accesso a 6 cifre", + "create-a-puk": "Crea il nuovo PUK di 12 caratteri", + "create-category": "Crea Categoria", + "create-channel": "Crea un canale", + "create-channel-title": "Nuovo canale", + "create-community": "Crea una comunità", + "create-group-chat": "Crea chat di gruppo", + "create-multiaccount": "Genera le chiavi", + "create-new-key": "Ottieni nuove chiavi", + "create-pin": "Crea un codice di accesso a 6 cifre", + "create-pin-description": "Per sbloccare Status e confermare le transazioni avrai bisogno della tua carta + questo codice di accesso a 6 cifre", + "created-group-chat-description": "Hai creato il gruppo {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Valuta", + "currency-display-name-aed": "Dirham degli Emirati", + "currency-display-name-afn": "Afghani", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dollaro Australiano", + "currency-display-name-bbd": "Dollaro delle Barbados", + "currency-display-name-bdt": "Taka bengalese", + "currency-display-name-bgn": "Lev bulgaro", + "currency-display-name-bhd": "Dinaro del Bahrein", + "currency-display-name-bnd": "Dollaro del Brunei", + "currency-display-name-bob": "Boliviano", + "currency-display-name-brl": "Real brasiliano\n", + "currency-display-name-btn": "Ngultrum del Bhutan", + "currency-display-name-cad": "Dollaro canadese", + "currency-display-name-chf": "Franco Svizzero", + "currency-display-name-clp": "Peso Cileno", + "currency-display-name-cny": "Renminbi cinese", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Colón Costaricano", + "currency-display-name-czk": "Corona Ceca", + "currency-display-name-dkk": "Corona Danese", + "currency-display-name-dop": "Peso della Repubblica Dominicana", + "currency-display-name-egp": "Sterlina egiziana", + "currency-display-name-etb": "Birr etiope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Sterlina Inglese", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Cedi ghanese", + "currency-display-name-hkd": "Dollaro di Hong Kong", + "currency-display-name-hrk": "Kuna croata", + "currency-display-name-huf": "Fiorino Ungherese", + "currency-display-name-idr": "Rupia indonesiana", + "currency-display-name-ils": "Shekel Israeliano", + "currency-display-name-inr": "Rupia Indiana", + "currency-display-name-isk": "Corona Islandese", + "currency-display-name-jmd": "Dollaro giamaicano", + "currency-display-name-jpy": "Yen Giapponese", + "currency-display-name-kes": "Scellino keniota", + "currency-display-name-krw": "Won sudcoreano", + "currency-display-name-kwd": "Dinaro kuwaitiano", + "currency-display-name-kzt": "Kazakistan Tenge", + "currency-display-name-lkr": "Rupia dello Sri Lanka", + "currency-display-name-mad": "Dirham Marocchino", + "currency-display-name-mdl": "Leu moldavo", + "currency-display-name-mur": "Rupia delle Mauritius", + "currency-display-name-mwk": "Kwacha malawiano", + "currency-display-name-mxn": "Peso messicano", + "currency-display-name-myr": "Ringgit Malesiano", + "currency-display-name-mzn": "Metical del Mozambico", + "currency-display-name-nad": "Dollaro della Namibia", + "currency-display-name-ngn": "Naira nigeriano", + "currency-display-name-nok": "Corona norvegese", + "currency-display-name-npr": "Rupia del Nepal", + "currency-display-name-nzd": "Dollaro Neozelandese", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Nuevo sol peruviano", + "currency-display-name-pgk": "Kina papuana", + "currency-display-name-php": "Peso delle Filippine", + "currency-display-name-pkr": "Rupia del Pakistan", + "currency-display-name-pln": "Zloty Polacco", + "currency-display-name-pyg": "Guarani paraguaiano", + "currency-display-name-qar": "Riyal del Qatar", + "currency-display-name-ron": "Leu rumeno", + "currency-display-name-rsd": "Dinaro serbo", + "currency-display-name-rub": "Rublo russo", + "currency-display-name-sar": "Arabia Saudita Riyal", + "currency-display-name-sek": "Corona Svedese", + "currency-display-name-sgd": "Dollaro di Singapore", + "currency-display-name-thb": "Baht thailandese", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dollaro di Trinidad e Tobago", + "currency-display-name-twd": "Dollaro taiwanese", + "currency-display-name-tzs": "Scellino tanzaniano", + "currency-display-name-uah": "Grivnia Ucraina", + "currency-display-name-ugx": "Scellino ugandese", + "currency-display-name-usd": "Dollaro Americano", + "currency-display-name-uyu": "Peso dell'Uruguay", + "currency-display-name-vef": "Bolívar venezuelano", + "currency-display-name-vnd": "Dong Vietnamita", + "currency-display-name-zar": "Rand sudafricano", + "current": "Attuale", + "current-average": "Fee media attuale", + "current-average-tip": "Attuale mancia media", + "current-base": "Fee Base attuale", + "current-base-fee": "Tariffa base attuale", + "current-minimum-tip": "Attuale mancia minima", + "current-network": "Rete corrente", + "current-password": "Password attuale", + "current-pin": "Inserisci il codice di accesso a 6 cifre", + "current-pin-description": "Inserisci il tuo codice di accesso a 6 cifre per procedere", + "custom": "Personalizzato", + "custom-networks": "Reti personalizzate", + "custom-node": "Stai utilizzando un endpoint RPC personalizzato. La cronologia dei trasferimenti locali potrebbe essere incompleta.", + "custom-seed-phrase": "Frase di recupero errata", + "custom-seed-phrase-text-1": "Questa frase di recupero contiene parole non presenti nel nostro dizionario. Controlla se ci sono errori.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Accetta e apri", + "dapp-starter-pack-description": "Ecco alcuni token per iniziare! Usali per ottenere adesivi, un nome ENS e per provare dapps", + "dapp-starter-pack-title": "Pacchetto di benvenuto", + "dapp-would-like-to-connect-wallet": "vorrebbe connettersi a", + "dapps": "ÐApps", + "dapps-permissions": "Autorizzazioni DApp", + "dark": "Scuro", + "data": "Dati", + "data-collected": "Dati raccolti", + "data-collected-subtitle": "La tabella seguente mostra i dati esatti che vengono memorizzati e verranno inviati. I dati vengono convalidati rispetto alle regole pubbliche per garantire che non vengano inviati dati sensibili. Non fidarti, verifica.", + "data-syncing": "Sincronizzazione in corso", + "database-reset-content": "Le chat, i contatti e le impostazioni sono stati cancellati. Puoi usare il tuo account con la tua Keycard", + "database-reset-title": "Resetta il database", + "database-reset-warning": "Il database verrà ripristinato. Chat, contatti e impostazioni verranno eliminati", + "datetime-ago": "fa", + "datetime-ago-format": "{{number}}{{time-intervals}}{{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "one": "giorno", + "other": "giorni" + }, + "datetime-day-short": { + "one": "G", + "other": "GG" + }, + "datetime-hour": { + "one": "ora", + "other": "ore" + }, + "datetime-hour-short": { + "one": "O", + "other": "O" + }, + "datetime-minute": { + "one": "minuto", + "other": "minuti" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "secondo", + "other": "secondi" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "oggi", + "datetime-yesterday": "Ieri", + "decimals": "Decimali", + "decline": "Rifiuta", + "decryption-failed-content": "Non siamo stati in grado di decrittografare i tuoi dati. Potresti dover cancellare i tuoi vecchi dati e creare un nuovo account. Tocca su “Applica” per cancellare e ricreare, \"Annulla\" per riprovare.", + "default": "Predefinito", + "default-assets": "ERC20 e ERC721 predefiniti", + "default-sync-period": "Sincronizza cronologia per", + "delete": "Elimina", + "delete-account": "Elimina account", + "delete-and-leave-group": "Elimina e lascia il gruppo", + "delete-bootnode": "Elimina bootnode", + "delete-bootnode-are-you-sure": "Sei sicuro di voler eliminare questo bootnode?", + "delete-bootnode-title": "Elimina bootnode", + "delete-category-confirmation": "Sei sicuro di voler eliminare questa categoria?", + "close-chat": "Elimina chat", + "close-chat-confirmation": "Sei sicuro di voler eliminare questa chat?", + "delete-confirmation": "Eliminare?", + "delete-keys-keycard": "Elimina chiavi da Keycard", + "delete-mailserver": "Elimina nodo Status", + "delete-mailserver-are-you-sure": "Sei sicuro di voler eliminare questo nodo Status?", + "delete-mailserver-title": "Elimina il nodo Status", + "delete-message": "Cancella il messaggio", + "delete-my-account": "Cancella il mio account", + "delete-my-profile": "Elimina il mio profilo", + "delete-network-confirmation": "Sei sicuro di voler eliminare questa rete?", + "delete-network-error": "Si prega di connettersi ad un'altra rete prima di cancellare questa", + "delete-network-title": "Cancellare la rete?", + "delete-node": "Nodo cancellato", + "delete-node-are-you-sure": "Sei sicuro di voler cancellare questo Nodo?", + "delete-node-title": "Cancella Nodo", + "delete-profile": "Elimina profilo", + "delete-profile-warning": "Attenzione: se non hai scritto la tua frase di sicurezza, perderai l'accesso ai tuoi fondi dopo aver eliminato il tuo profilo", + "deny": "Nega", + "derivation-path": "Percorso di derivazione", + "describe-channel": "Descrivi il canale", + "description": "Descrizione", + "dev-mode": "Modalità di sviluppo", + "dev-mode-settings": "Impostazioni modalità di sviluppo", + "device-syncing": "Sincronizzazione del dispositivo", + "devices": "Dispositivi", + "disable": "disabilitare", + "disable-all": "Disabilita tutto", + "disable-later-in-settings": "Puoi disabilitarlo in seguito in Impostazioni", + "disabled": "Disabilitato", + "disconnected": "Chat offline", + "discover": "Scopri", + "dismiss": "Chiudi", + "display-collectibles": "Mostra oggetti da collezione", + "done": "Fatto", + "dont-ask": "Non chiedermelo più", + "edit": "Modifica", + "edit-channel-title": "Modifica canale", + "edit-chats": "Modifica le chat", + "edit-community": "Modifica comunità", + "edit-favourite": "Modifica preferito", + "edit-group": "Modifica gruppo", + "edit-profile": "Modifica Profilo", + "edited": "Modificato", + "editing-message": "Modifica del messaggio", + "empty-activity-center": "Le tue notifiche della chat\nappariranno qui", + "empty-chat-description": "Non ci sono ancora\n messaggi in questa chat", + "empty-chat-description-community": "È stato tranquillo qui nelle ultime {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Tutti i messaggi che invii qui sono crittografati e possono essere letti solo da te e ", + "empty-chat-description-public": "Nelle ultime {{quiet-hours}} non si è chattato. Inizia la conversazione o ", + "empty-chat-description-public-share-this": "condividi questa chat.", + "empty-keycard-required": "Richiede una Keycard vuota", + "empty-pending-invitations-descr": "Le persone che desiderano unirsi al gruppo\ntramite un link di invito appariranno qui", + "empty-tab": "Scheda Vuota", + "enable": "Abilitare", + "enable-all": "Abilita tutto", + "enable-link-previews": "Abilitare le anteprime dei collegamenti nella chat?", + "encrypt-with-password": "Codifica con la tua password", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Aggiungi nome utente", + "ens-agree-to": "Accetto", + "ens-chat-settings": "Impostazioni chat", + "ens-custom-domain": "Dominio personalizzato", + "ens-custom-username-hints": "Digita l'intero nome utente incluso il dominio personalizzato come nomeutente.dominio.eth", + "ens-custom-username-taken": "Il nome utente non ti appartiene :(", + "ens-deposit": "Deposita", + "ens-dismiss-message": "Clicca qui per chiudere", + "ens-displayed-with": "I tuoi messaggi vengono visualizzati agli altri con", + "ens-get-name": "Ottieni un nome utente universale", + "ens-got-it": "Ok capito", + "ens-locked": "Nome utente bloccato. Non sarà possibile rilasciarlo fino al {{date}}", + "ens-name-content": "Alias personalizzato per la tua chiave di chat che puoi registrare usando Ethereum Name Service. I nomi ENS sono nomi utente decentralizzati.", + "ens-name-not-found": "Impossibile risolvere il nome ENS", + "ens-name-title": "Nome ENS", + "ens-network-restriction": "Disponibile solo su Mainnet", + "ens-no-usernames": "Non hai nessun nome utente collegato", + "ens-powered-by": "Offerto da Ethereum Name Services", + "ens-primary-username": "Nome utente principale", + "ens-register": "Registrati", + "ens-registration-failed": "Per registrare il nome utente, per favore prova di nuovo.", + "ens-registration-failed-title": "Transazione fallita", + "ens-registration-failure": "Registrazione fallita", + "ens-registration-in-progress": "Registrazione in corso...", + "ens-release-username": "Rilascia nome utente", + "ens-remove-hints": "La rimozione scollegherà il nome utente dalla chiave.", + "ens-remove-username": "Rimuovi nome utente", + "ens-saved": "è ora collegato con la chiave di chat e può essere utilizzato in Status.", + "ens-saved-title": "Nome utente aggiunto", + "ens-show-username": "Mostra il mio nome utente ENS nelle chat", + "ens-terms-header": "Termini di registrazione del nome", + "ens-terms-point-1": "I fondi vengono depositati per 1 anno. Il tuo SNT sarà bloccato, ma non speso.", + "ens-terms-point-10": "0x314159265dd8dbb310642f98f50c066173c1259b (Registro ENS).", + "ens-terms-point-2": "Dopo 1 anno, puoi rilasciare il nome e riavere il tuo deposito oppure non agire per mantenerlo.", + "ens-terms-point-3": "Se i termini del contratto cambiano - ad es. Status effettua aggiornamenti del contratto - l'utente ha il diritto di rilasciare il nome utente indipendentemente dal tempo trascorso.", + "ens-terms-point-4": "Il controllore del contract non può accedere ai fondi depositati. Possono solo essere spostati indietro all'indirizzo che li ha inviati.", + "ens-terms-point-5": "I tuoi indirizzi saranno associati pubblicamente al tuo nome ENS.", + "ens-terms-point-6": "I nomi utente vengono creati come nodi sottodominio di stateofus.eth e sono soggetti ai termini dello Smart Contract ENS.", + "ens-terms-point-7": "Autorizzi il contract a trasferire SNT per tuo conto. Ciò può verificarsi solo quando si approva una transazione per autorizzare il trasferimento.", + "ens-terms-point-8": "Questi termini sono garantiti dalla logica dello Smart Contract agli indirizzi:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Condizioni di registrazione del nome.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Transazione in attesa...", + "ens-understand": "Comprendo che il mio indirizzo di portafoglio sarà collegato pubblicamente al mio nome utente.", + "ens-username": "Nome ENS", + "ens-username-already-added": "Il nome utente è già collegato alla tua chiave di chat e può essere utilizzato all'interno di Status.", + "ens-username-available": "✓ Nome utente disponibile!", + "ens-username-connected": "Questo nome utente è di tua proprietà ed è associato alla tua chiave di chat.", + "ens-username-connected-continue": "Continua a impostare `Mostra il mio nome utente ENS nelle chat`.", + "ens-username-connected-with-different-key": "Per continuare sarà necessaria una transazione per collegare il nome utente con la tua chiave di chat.", + "ens-username-connection-confirmation": "{{username}} verrà collegato una volta completata la transazione.", + "ens-username-hints": "Almeno 4 caratteri. Solo lettere latine, numeri e lettere minuscole.", + "ens-username-invalid": "Solo lettere e numeri.", + "ens-username-owned": "✓ Il nome utente è di tua proprietà.", + "ens-username-owned-continue": "Continuando assocerai questo nome utente alla tua chiave di chat.", + "ens-username-registration-confirmation": "Bello! Una volta completata la transazione possiederai {{username}}.", + "ens-username-taken": "Nome utente già preso :(", + "ens-username-you-can-follow-progress": "Puoi seguire i progressi nella sezione Cronologia transazioni del tuo portafoglio.", + "ens-usernames": "Nomi utente ENS", + "ens-usernames-details": "Registrare un nome utente universale per essere facilmente riconoscibile dagli altri utenti", + "ens-want-custom-domain": "Possiedo un nome su un altro dominio", + "ens-want-domain": "Voglio un dominio stateofus.eth", + "ens-welcome-hints": "I nomi ENS trasformano quei lunghi e folli indirizzi in nomi utente unici.", + "ens-welcome-point-customize": "Un nome ENS può sostituire il tuo nome casuale di 3 parole nella chat. Diventa @nomeutente anziché {{name}} .", + "ens-welcome-point-customize-title": "Personalizza il tuo nome in chat", + "ens-welcome-point-receive": "In un semplice passaggio, altri utenti possono inviarti dei fondi via chat.", + "ens-welcome-point-receive-title": "Ricevi transazioni in chat", + "ens-welcome-point-register": "Registra il nome una sola volta per tenerlo per sempre. Dopo un anno puoi rilasciarlo e riavere indietro i tuoi SNT.", + "ens-welcome-point-register-title": "10 SNT per la registrazione", + "ens-welcome-point-simplify": "Puoi ricevere fondi tramite il tuo nome ENS invece di dover condividere il tuo indirizzo esadecimale (0x...).", + "ens-welcome-point-simplify-title": "Semplifica il tuo indirizzo ETH", + "ens-welcome-point-verify": "Puoi verificare e aggiungere qualsiasi nome utente che già possiedi.", + "ens-welcome-point-verify-title": "Possiedi già un nome utente?", + "ens-your-username": "Il tuo nome utente", + "ens-your-usernames": "I tuoi nomi utente", + "ens-your-your-name": "Il tuo nome ENS", + "enter-12-words": "Inserisci le 12 parole della frase di recupero, separate da spazi singoli", + "enter-a-private-key": "Inserisci una chiave privata", + "enter-a-seed-phrase": "Inserisci la tua frase di recupero", + "enter-address": "Inserisci indirizzo", + "enter-contact-code": "Chiave ENS (vitalik94) o chat (0x04…)", + "enter-pair-code": "Inserisci il tuo codice di accoppiamento", + "enter-pair-code-description": "Il codice di accoppiamento può essere impostato da un client di Status già associato", + "enter-password": "Inserire la password", + "enter-password-migration-prompt": "Inserisci la tua password per spostare contatti, chat e impostazioni insieme alle tue chiavi", + "enter-pin": "Inserisci il codice di accesso a 6 cifre", + "enter-puk-code": "Inserisci il codice PUK", + "enter-puk-code-description": "Il codice di accesso a 6 cifre è stato bloccato.\n Inserisci il codice PUK per sbloccare il codice di accesso.", + "enter-recipient-address-or-username": "Immettere l'indirizzo o il nome utente del destinatario", + "enter-seed-phrase": "Inserisci la tua frase di recupero", + "enter-url": "Inserisci l'URL", + "enter-user-pk": "Inserisci la chiave pubblica dell'utente", + "enter-watch-account-address": "Scansiona un QR code \no \ninserisci l'indirizzo da tenere d'occhio", + "enter-word": "Inserisci parola", + "enter-your-code": "Inserisci il tuo codice di accesso a 6 cifre", + "enter-your-password": "Inserisci la tua password...", + "error": "Errore", + "error-unable-to-get-balance": "Impossibile ottenere il saldo", + "error-unable-to-get-prices": "Errore di conversione valuta. Aggiorna lo schermo per riprovare.", + "error-unable-to-get-token-balance": "Impossibile ottenere il saldo token", + "errors": "Errori", + "eth": "ETH", + "ethereum-account": "Profilo Ethereum", + "ethereum-address": "Indirizzo di Ethereum", + "ethereum-node-started-incorrectly-description": "Il nodo Ethereum è stato avviato con una configurazione errata, l'applicazione verrà arrestata per ripristinare tale condizione. ID di rete configurato = {{network-id}} , effettivo = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Il nodo Ethereum è stato avviato in modo errato", + "etherscan-lookup": "Guarda su Etherscan", + "everyone": "Tutti", + "expand-all": "Espandi", + "export-account": "Esporta account", + "export-key": "Esporta chiave privata", + "external-storage-denied": "L'accesso alla memoria esterna è negato", + "failed": "Fallita", + "faq": "Domande frequenti", + "fast": "Veloce", + "favourite": "Preferiti", + "favourite-description": "I tuoi siti web preferiti verranno visualizzati qui", + "favourites": "Preferiti", + "favourites-empty": "Gli indirizzi aggiunti ai preferiti verranno visualizzati qui", + "fee-cap": "Limite tariffa", + "fee-explanation": "Prezzo complessivo massimo per la transazione. Se la tariffa di base del blocco supera questa cifra, verrà inclusa in un blocco successivo con una tariffa di base inferiore.", + "fee-options": "Opzioni suggerite per la tariffa", + "fetch-community": "Recupera la comunità", + "fetch-messages": "↓ Recupera messaggi", + "fetch-timeline": "Carica", + "fetching-community": "Recupero della comunità in corso...", + "find": "Trova", + "finish": "Finito", + "finishing-card-setup": "Completamento della configurazione della carta", + "fleet": "Fleet", + "fleet-settings": "Impostazioni Fleet", + "follow": "Segui", + "follow-your-interests": "Entra in una chat pubblica e incontra nuove persone", + "free": "Gratis", + "from": "Da", + "gas-amount-limit": "Limite valore Gas", + "gas-limit": "Limite di gas", + "gas-price": "Prezzo del gas", + "gas-used": "Gas utilizzato", + "generate-a-key": "Genera le chiavi", + "generate-a-new-account": "Genera un nuovo account", + "generate-a-new-key": "Genera nuove chiavi", + "generate-account": "Genera le chiavi", + "generate-an-account": "Genera un account", + "generate-new-key": "Genera le chiavi", + "generating-codes-for-pairing": "> Download del software di prodotto sulla scheda \n > Generazione di codici di sblocco e associazione", + "generating-keys": "Generazione delle chiavi in corso...", + "generating-mnemonic": "Generazione della frase di recupero", + "get-a-keycard": "Acquista una Keycard", + "get-started": "Iniziare", + "get-status-at": "Scarica Status su http:\/\/status.im", + "get-stickers": "Scarica adesivi", + "give-a-short-description": "Fornisci una breve descrizione", + "give-a-short-description-community": "Fornisci una breve descrizione", + "give-permissions-camera": "Dare il permesso \n per accedere alla telecamera", + "glossary": "Glossario", + "go-to-settings": "Vai alle impostazioni...", + "got-it": "Ho capito", + "grant-face-id-permissions": "Per concedere l'autorizzazione Face ID richiesta, andare alle impostazioni del sistema e assicurarsi che Status > Face ID sia selezionato", + "group-chat": "Chat di gruppo", + "group-chat-admin": "Amministratore", + "group-chat-admin-added": "** {{member}} ** è stato reso amministratore", + "group-chat-all-contacts-invited": "Tutti i tuoi contatti sono già nel gruppo", + "group-chat-created": "** {{member}} ** ha creato il gruppo ** {{name}} **", + "group-chat-decline-invitation": "Rifiuta l'invito", + "group-chat-member-added": "** {{member}} ** è stato invitato", + "group-chat-member-joined": "** {{member}} ** si è unito al gruppo", + "group-chat-member-removed": "** {{member}} ** ha lasciato il gruppo", + "group-chat-members-count": "{{selected}}\/{{max}} partecipanti", + "group-chat-name-changed": "** {{member}} ** ha cambiato il nome del gruppo in ** {{name}} **", + "group-chat-no-contacts": "Non hai ancora alcun contatto. \n Invita i tuoi amici a iniziare a chattare", + "group-info": "Informazioni sul gruppo", + "group-invite": "Invito di gruppo", + "group-invite-link": "Link di invito al gruppo", + "group-membership-request": "Richiesta di adesione al gruppo", + "gwei": "Gwei", + "has-permissions": "ha il permesso di accedere", + "hash": "Hash", + "help": "aiuto", + "help-capitalized": "Aiuto", + "help-center": "Centro Assistenza", + "help-improve-status": "Aiutaci a migliorare Status", + "hide": "Nascondi", + "hide-content-when-switching-apps": "Blocco degli screenshot", + "hide-content-when-switching-apps-ios": "Nascondi anteprima", + "history": "Cronologia", + "history-nodes": "Nodi Status", + "hold-card": "Tieni la carta sul retro \n del tuo telefono", + "home": "Home", + "hooks": "Hooks", + "how-it-works": "Come funziona", + "http-gateway-error": "Attenzione, richiesta non riuscita!", + "identifier": "Identificativo", + "image": "Immagine", + "image-remove-current": "Rimuovi la foto corrente", + "image-source-gallery": "Seleziona dalla galleria", + "image-source-make-photo": "Scatta foto", + "image-source-title": "Modifica foto", + "import": "Importa", + "import-community": "Importa una comunità", + "import-community-title": "Importa una comunità", + "in-contacts": "Nei contatti", + "include": "Include", + "incoming": "In arrivo", + "incoming-transaction": "Transazione in entrata", + "incorrect-code": [ + "str", + "Spiacenti, il codice non è corretto, ti preghiamo di inserirlo di nuovo" + ], + "increase-gas": "Aumenta il Gas", + "initialization": "Inizializzazione", + "install": "Installa", + "intro-message1": "Benvenuto in Status! \n Tocca questo messaggio per impostare la password e iniziare.", + "intro-privacy-policy-note1": "Status non raccoglie, non condivide e non vende dati personali. Continuando siete d'accordo con l'", + "intro-privacy-policy-note2": "Informativa sulla privacy", + "intro-text": "Status è la tua porta di accesso al web decentralizzato", + "intro-text1": "Chat su una rete peer-to-peer, criptata, dove i messaggi non possono essere censurati o hackerati", + "intro-text2": "Invia e ricevi cryptoasset in qualsiasi parte del mondo, non è necessario un conto bancario", + "intro-text3": "Esplora giochi, exchange e social network dove solo tu possiedi i tuoi dati", + "intro-title1": "Comunicazione veramente privata", + "intro-title2": "Proteggi il tuo portafoglio crypto", + "intro-title3": "App decentralizzate", + "intro-wizard-text1": "Una serie di chiavi controlla il tuo account. Le tue chiavi vivono sul tuo telefono, quindi solo tu puoi usarle", + "intro-wizard-text2": "Una chiave è per la chat. Ha un nome leggibile che non può essere modificato.", + "intro-wizard-text3": "Se possiedi una Keycard, memorizzaci tue chiavi per una maggiore sicurezza", + "intro-wizard-text4": "Proteggi e cripta le tue chiavi", + "intro-wizard-text6": "Status ti avviserà di nuovi messaggi. Puoi modificare le tue preferenze di notifica in un secondo momento nelle impostazioni", + "intro-wizard-title-alt4": "Crea una password", + "intro-wizard-title-alt5": "Conferma la tua password", + "intro-wizard-title1": "Ottieni le tue chiavi", + "intro-wizard-title2": "Scegli un nome per la chat", + "intro-wizard-title3": "Selezionare l'archivio delle chiavi", + "intro-wizard-title4": "Crea un codice di accesso a 6 cifre", + "intro-wizard-title5": "Conferma il codice di accesso", + "intro-wizard-title6": "Abilita le notifiche", + "introduce-yourself": "Presentati con un breve messaggio", + "invalid-address-qr-code": "Il QR code scansionato non contiene un indirizzo valido", + "invalid-format": "Formato non valido \n Deve essere {{format}}", + "invalid-key-confirm": "Applica", + "invalid-key-content": "Il database non può essere crittografato perché il file è danneggiato. I tuoi fondi e le chiavi sono al sicuro. Altri dati, come le tue chat la tua lista di contatti, non possono essere recuperati. Premendo \"{{erase-multiaccounts-data-button-text}}\" tutti i tuoi dati saranno cancellati ma potrai nuovamente accedere ai tuoi fondi e ricominciare a chattare.", + "invalid-number": "Numero non valido", + "invalid-pairing-password": "Password di associazione non valida", + "invalid-public-chat-topic": "Argomento della chat pubblica non valido", + "invalid-range": "Formato non valido, deve essere compreso tra {{min}} e {{max}}", + "invalid-username-or-key": "Nome utente o chiave chat non validi", + "invite": "Invita", + "invite-button": "Invita", + "invite-chat-accept": "Accetta", + "invite-chat-accept-join": "Accetta e unisciti", + "invite-chat-intro": "Sei stato invitato da un amico a usare Status. Ecco alcuni token per iniziare! Usalo per registrare un nome ENS o acquistare un pacchetto di adesivi", + "invite-chat-name": "Segnala amici", + "invite-chat-pending": "In attesa", + "invite-chat-rule": "L'accettazione ricompenserà anche il tuo amico con un bonus in token", + "invite-chat-starter-pack": "Starter Pack", + "invite-friends": "Invita amici", + "invite-instruction-fifth": "Puoi scegliere di riscattare il tuo bonus per la segnalazione in qualsiasi momento.", + "invite-instruction-first": "Invia un link univoco di invito al tuo amico per scaricare e iscriverti a Status", + "invite-instruction-fourth": "Ricevi il tuo bonus di segnalazione e il tuo amico lo Starter Pack", + "invite-instruction-second": "Il tuo amico scarica Status e crea un account (su Android)", + "invite-instruction-third": "E' stata avviata una chat con il tuo amico, dove confermare la tua segnalazione", + "invite-people": "Invita", + "invite-privacy-policy-public": "Hai installato Status tramite un link di riferimento. Unendoti a questa chat attribuisci il tuo referrer e accetti il", + "invite-privacy-policy1": "Accettando confermi di le condizioni del programma di affiliazione", + "invite-privacy-policy2": "Termini e condizioni.", + "invite-public-chat-home": "Invito referral", + "invite-public-chat-intro": "Ecco alcuni token per iniziare! Usali per ottenere adesivi, un nome ENS e per provare dapps", + "invite-receive-account": "Conto per ricevere il vostro bonus di affiliazione", + "invite-reward": "Guadagna token per ogni amico che inviti!", + "invite-reward-friend": "Amico: ", + "invite-reward-friend-description": "Il tuo amico riceverà uno Starter Pack composto da una {{{ricompensa}} per iniziare", + "invite-reward-friend-name": "Starter Pack", + "invite-reward-you": "Tu:", + "invite-reward-you-description": "Invita un amico e ricevi una {{{{reward}}}} in segno di gratitudine. Usala per comprare adesivi, un nome ENS e per provare le Dapps.", + "invite-reward-you-name": "Bonus per segnalazione", + "invite-select-account": "Seleziona il Conto per ricevere il vostro bonus di affiliazione", + "invite-warning": "Questa promozione è valida solo per gli utenti di un dispositivo Android, che non sono residenti negli Stati Uniti. L'amico\/a deve confermare il codice promozionale entro 7 giorni", + "invited": "invitato", + "join": "Iscriviti", + "join-a-community": "o unisciti ad una comunità", + "join-group-chat": "Unisciti al gruppo", + "join-group-chat-description": "{{username}} ti ha invitato a far parte del gruppo {{group-name}}", + "join-me": "Ciao, unisciti a me su Status: {{url}}", + "join-new-private-chat": "Avvia una nuova chat privata", + "join-new-public-chat": "Partecipa a una chat pubblica", + "joined": "Unito", + "joined-group-chat-description": "Ti sei iscritto a {{group-name}} dall'invito da {{username}}", + "key": "Chiave", + "key-managment": "Gestione delle chiavi", + "key-on-device": "La chiave privata è salvata su questo dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "L'accesso alla keycard è stato reimpostato", + "keycard-applet-install-instructions": "Per installare l'applet si prega di seguire le istruzioni su https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Provate a spostare la carta per trovare il lettore NFC sul vostro dispositivo", + "keycard-awaiting-title": "Sto ancora cercando...", + "keycard-backup": "Crea una Keycard di backup", + "keycard-backup-success-body": "Carta di backup creata correttamente. Ora puoi usarla con il tuo account proprio come la carta principale.", + "keycard-backup-success-title": "Backup riuscito", + "keycard-blocked": "Keycard è stata bloccata. \n È necessario ripristinare la carta per continuare a utilizzarla.", + "keycard-can-use-with-new-passcode": "Puoi usare questa carta con il tuo nuovo codice di accesso", + "keycard-cancel-setup-text": "Questa operazione annullerà la configurazione della keycard. Si consiglia vivamente di completare la configurazione per utilizzare la chiave. Vuoi davvero annullare?", + "keycard-cancel-setup-title": "Operazione pericolosa", + "keycard-connected-description": "Prova a tenere ferma la carta", + "keycard-connected-title": "Connesso", + "keycard-desc": "Possiedi una Keycard? Memorizzaci tue chiavi; ne avrai bisogno per le transazioni", + "keycard-dont-ask-card": "Non chiedere la Keycard per accedere", + "keycard-enter-new-passcode": "Inserisci il nuovo codice di accesso {{step}} \/ 2", + "keycard-error-description": "Collegare nuovamente la carta per continuare", + "keycard-error-title": "Connessione persa", + "keycard-factory-reset": "Ripristina la carta alle impostazioni di fabbrica", + "keycard-factory-reset-text": "L'esecuzione di questa operazione cancellerà qualsiasi frase mnemonica memorizzata sulla carta. Assicurati di avere un backup della frase mnemonica che hai utilizzato con questa Keycard.", + "keycard-factory-reset-title": "Sei sicuro di voler eseguire un ripristino dei dati di fabbrica?", + "keycard-free-pairing-slots": "La carta Keycard ha {{n}} slot di accoppiamento liberi", + "keycard-has-multiaccount-on-it": "Questa carta è piena. Ogni carta può contenere una sola coppia di chiavi principali.", + "keycard-init-description": "Posiziona la carta sul retro del telefono per continuare", + "keycard-init-title": "Cerco le carte...", + "keycard-is-blocked-details": "Non è più possibile utilizzare questa carta per accedere o firmare per questo account. Ci sono stati troppi tentativi falliti di codice di accesso e PUK.", + "keycard-is-blocked-instructions": "Per accedere al tuo account dovrai ripristinare le impostazioni di fabbrica della tua carta. Tocca il pulsante in basso per avviare la procedura, ti servirà il tuo mnemonico.", + "keycard-is-blocked-title": "La keycard è bloccata", + "keycard-is-frozen-details": "Per proteggere i tuoi beni, la tua carta è congelata. Ripristina la tua carta per sbloccarla ed essere in grado di inviare transazioni. Puoi farlo con il tuo PUK o il tuo mnemonico.", + "keycard-is-frozen-factory-reset": "Ripristina con mnemonico", + "keycard-is-frozen-reset": "Ripristina con PUK", + "keycard-is-frozen-title": "La keycard è congelata", + "keycard-onboarding-finishing-header": "Finendo", + "keycard-onboarding-intro-header": "Conservare le tue chiavi su Keycard", + "keycard-onboarding-intro-text": "Preparati, potrebbero essere necessari alcuni minuti, ma è importante proteggere il tuo account", + "keycard-onboarding-mnemonic-text": "Avrai anche bisogno di un pezzo di carta e una penna per scrivere la tua frase seed.", + "keycard-onboarding-pairing-header": "Accoppiamento della carta in corso...", + "keycard-onboarding-pin-text": "Dovrai creare un passcode di 6 cifre che verrà utilizzato per proteggere l'accesso alla tua Keycard.", + "keycard-onboarding-preparing-header": "Preparazione della carta in corso...", + "keycard-onboarding-puk-code-header": "Scrivi i codici \n e conservarli in modo sicuro", + "keycard-onboarding-recovery-phrase-description": "Per riaccedere alle tue chiavi serve questa frase di recupero. Scrivila. Tienila al sicuro, offline e separata da questo dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Backup della frase di recupero", + "keycard-onboarding-recovery-phrase-text": "Solo per i tuoi occhi. Questa è la magica frase di recupero usata per generare le tue chiavi.", + "keycard-onboarding-start-header": "Tieni la carta sul retro \n del tuo telefono per iniziare", + "keycard-onboarding-start-step1": "Crea un codice di accesso", + "keycard-onboarding-start-step1-text": "Circa 1 minuto. Creare un codice di accesso a 6 cifre per cifrare le tue chiavi", + "keycard-onboarding-start-step2": "Scrivi PUK e il codice di accoppiamento", + "keycard-onboarding-start-step2-text": "Circa 1 minuto. Avrai bisogno di un pezzo di carta e una matita per questo", + "keycard-onboarding-start-step3": "Eseguire il backup della frase di recupero", + "keycard-onboarding-start-step3-text": "Circa 1 minuto. Sono necessari anche un pezzo di carta e una matita.", + "keycard-onboarding-start-text": "E mantieni il contatto da carta a telefono \n durante l'installazione. L'installazione richiederà circa 4 minuti", + "keycard-processing-description": "Prova a tenere ferma la carta", + "keycard-processing-title": "Elaborazione...", + "keycard-recover": "carta smarrita o bloccata?", + "keycard-recover-text": "Se hai la tua frase mnemonica puoi creare una nuova Keycard associata a questo account. Puoi utilizzare una nuova Keycard o eseguire il ripristino delle impostazioni di fabbrica su una congelata.", + "keycard-recover-title": "Creare una nuova carta per questo account?", + "keycard-recovery-intro-button-text": "Inizia il recupero", + "keycard-recovery-intro-header": "Recupera le chiavi memorizzata sulla keycard", + "keycard-recovery-intro-text": "Se in precedenza hai generato le chiavi utilizzando una Keycard e ora desideri utilizzare le stesse chiave su questo dispositivo", + "keycard-recovery-no-key-header": "Non c'è niente da \nrecuperare qui", + "keycard-recovery-no-key-text": "La tua Keycard non contiene alcuna chiave. Per utilizzarla, genera una nuova chiave e scegli la tua Keycard come supporto di memorizzazione", + "keycard-recovery-phrase-confirm-header": "Conferma la frase di recupero", + "keycard-recovery-phrase-confirmation-text": "Non avrai una seconda possibilità! Se perdi o cambi telefono, o se perdi la tua keycard, potrai accedere alle tue chiavi soltanto usando la tua frase di recupero. Soltanto tu la possiedi. Scrivila e tienila in un posto sicuro.", + "keycard-recovery-phrase-confirmation-title": "Hai scritto la frase di recupero ?", + "keycard-recovery-success-header": "Le tue chiavi sono state\n recuperate con successo", + "keycard-redeem-title": "Riscatta su", + "keycard-redeem-tx": "Riscatta cryptoasset", + "keycard-redeem-tx-desc": "Tocca con la carta per firmare e ricevere cryptoasset", + "keycard-reset-passcode": "Reimposta il codice di accesso", + "keycard-success-description": "Ora è possibile rimuovere la carta", + "keycard-success-title": "Successo", + "keycard-unauthorized-operation": "Non sei autorizzato ad eseguire questa operazione.\n Usa una carta valida e riprovare.", + "keycard-upsell-subtitle": "Maggiore sicurezza e facilità d'uso", + "language": "Lingua", + "last-backup-performed": "Ultimo backup eseguito:", + "last-transaction": "Ultima transazione", + "learn-more": "Per saperne di più", + "learn-more-about-keycard": "Per saperne di più sulla Keycard", + "leave": "Lascia", + "leave-chat": "Lascia la chat", + "leave-chat-confirmation": "La cronologia chat verrà rimossa dal tuo dispositivo. Dopo essere rientrato, non sarai in grado di recuperare nulla della tua cronologia.", + "leave-community": "Abbandona la comunità", + "leave-confirmation": "Abbandona {{chat-name}}", + "leave-group": "Abbandona gruppo", + "left": "ha lasciato", + "les-ulc": "LES\/ULC", + "lets-go": "Andiamo", + "light": "Chiaro", + "limit": "Limite", + "linked-on": "Collegato il {{date}}", + "load-messages-before": "prima di {{date}}", + "load-more-messages": "↓ Recuperare altri messaggi", + "load-more-timeline": "Carica altro", + "loading": "Caricamento in corso...", + "local-notifications": "Notifiche locali", + "lock-app-with": "Blocca l'app con", + "log-level": "Livello log", + "log-level-settings": "Impostazioni livello log", + "logging": "Logging", + "logging-enabled": "Registrazione abilitata?", + "login-pin-description": "Inserisci il tuo codice di accesso a 6 cifre per sbloccare le tue chiavi.", + "logout": "Esci", + "logout-app-content": "L'account verrà disconnesso. Quando lo sblocchi di nuovo, verrà utilizzata la rete selezionata", + "logout-are-you-sure": "Sei sicuro di voler uscire?", + "logout-key-management": "È necessario disconnettersi per accedere alla gestione delle chiavi.", + "logout-title": "Uscire?", + "looking-for-cards": "Cerco le carte...", + "lost-connection": "Connessione persa", + "low-tip": "la mancia è troppo bassa", + "lower-than-average-tip": "mancia inferiore alla media", + "mail-should-be-configured": "Il client di posta deve essere configurato", + "mailserver-address": "Indirizzo del nodo Status", + "mailserver-automatic": "Selezione automatica", + "mailserver-automatic-switch-explanation": "Scegli il nodo Status più veloce che è disponibile", + "mailserver-connection-error": "Impossibile connettersi al nodo Status", + "mailserver-content": "Un nodo nella rete Status che instrada e archivia i messaggi, per un massimo di 30 giorni.", + "mailserver-details": "Dettagli del nodo Status", + "mailserver-error-content": "Impossibile raggiungere il nodo Status selezionato.", + "mailserver-error-title": "Errore durante la connessione al nodo Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Scegli un altro nodo Status", + "mailserver-reconnect": "Impossibile connettersi al nodo Status. Tocca per riconnetterti", + "mailserver-request-error-content": "Il seguente errore è stato restituito dal nodo Status: {{error}}", + "mailserver-request-error-status": "Si è verificato un errore durante il recupero della cronologia, controllare i log per i dettagli", + "mailserver-request-error-title": "Errore di richiesta al nodo Status", + "mailserver-request-retry": "Riprova richiesta", + "mailserver-retry": "Riprova", + "mailserver-title": "Nodo Status", + "main-currency": "Valuta principale", + "main-networks": "Reti principali", + "main-wallet": "Portafoglio principale", + "mainnet-network": "Rete principale", + "make-admin": "Rendi amministratore", + "manage-keys-and-storage": "Gestisci chiavi e spazio di archiviazione", + "mark-all-read": "Segna tutti come letti", + "master-account": "Conto principale", + "max-fee": "Tariffa massima", + "max-priority-fee": "Tariffa prioritaria massima", + "maximum-fee": "Tariffa massima", + "maximum-fee-desc": "Prezzo complessivo massimo per la transazione. Se l'attuale commissione di base del blocco supera questa cifra, la tua transazione verrà inclusa in un blocco successivo con una commissione di base inferiore.", + "maybe-later": "Ricordamelo più tardi", + "member-ban": "Espelli membro", + "member-kick": "Espelli utente", + "members": { + "one": "1 partecipante", + "other": "{{count}} partecipanti" + }, + "members-active": { + "one": "1 partecipante", + "other": "{{count}} partecipanti" + }, + "members-active-none": "nessun partecipante", + "members-count": "{{count}} membri", + "members-label": "Partecipanti", + "members-limit-reached": "Raggiunto limite di membri", + "members-title": "Partecipanti", + "membership-approval": "Richiedi approvazione", + "membership-approval-description": "La tua comunità è libera , ma i nuovi membri devono prima essere approvati dal creatore della comunità", + "membership-button": "Requisito di iscrizione", + "membership-declined": "La tua richiesta di adesione è stata rifiutata", + "membership-description": "L'adesione al gruppo richiede l'accettazione della tua richiesta da parte dell'amministratore", + "membership-ens": "Richiedi un nome utente ENS", + "membership-ens-description": "La tua comunità richiede un nome utente ENS per poter partecipare", + "membership-free": "Nessun requisito", + "membership-free-description": "La tua community permette a chiunque di unirsi", + "membership-invite": "Richiedi invito da un altro membro", + "membership-invite-description": "Ci si può unire alla tua comunità solo su invito di membri già iscritti", + "membership-none": "Nessuno", + "membership-none-placeholder": "È possibile richiedere ai nuovi membri di soddisfare determinati criteri prima che possano aderire. Questo può essere cambiato in qualsiasi momento", + "membership-request-pending": "Richiesta di iscrizione in sospeso", + "membership-requests": "Richieste di adesione", + "membership-title": "Requisito di iscrizione", + "message": "Messaggio", + "message-not-sent": "Messaggio non inviato", + "message-options-cancel": "Annulla", + "message-reply": "Rispondi", + "messages": "Messaggi", + "messages-from-contacts-only-subtitle": "Solo le persone che hai aggiunto come contatti possono avviare una nuova chat con te o invitarti a un gruppo", + "might-break": "Potrebbe rompere alcune ÐApps", + "migration-successful": "Migrazione riuscita", + "migration-successful-text": "Conto migrato con successo a Keycard", + "migrations-failed-content": "{{message}} \n versione dello schema: iniziale {{initial-version}} , attuale {{current-version}} , ultima {{last-version}} \n\nC'è stato un errore sul database. I tuoi fondi e le chiavi sono al sicuro. Altri dati, come le tue chat la tua lista di contatti, non possono essere recuperati. Premendo \"{{erase-multiaccounts-data-button-text}} \" tutti i tuoi dati saranno cancellati ma potrai nuovamente accedere ai tuoi fondi e ricominciare a chattare.", + "miners-higher-fee": "È più facile che i miners includano la tua transazione prima se paghi una commissione più alta.", + "minimum-received": "Minimo ricevuto", + "mobile-network-ask-me": "Chiedimi quando sono su rete mobile", + "mobile-network-continue-syncing": "Continua la sincronizzazione", + "mobile-network-continue-syncing-details": "Puoi modificarlo in seguito nelle impostazioni", + "mobile-network-go-to-settings": "Vai alle impostazioni", + "mobile-network-settings": "Dati mobili", + "mobile-network-sheet-configure": "Puoi configurare la sincronizzazione in dettagliatamente in", + "mobile-network-sheet-offline": "Niente Wi-Fi, sincronizzazione messaggi disabilitata.", + "mobile-network-sheet-offline-details": "La sincronizzazione tramite rete mobile è disattivata", + "mobile-network-sheet-remember-choice": "Ricorda la mia scelta", + "mobile-network-sheet-settings": "Impostazioni", + "mobile-network-start-syncing": "Inizia la sincronizzazione", + "mobile-network-stop-syncing": "Interrompere la sincronizzazione", + "mobile-network-stop-syncing-details": "Fino a quando non si è connessi al Wi-Fi?", + "mobile-network-use-mobile": "Usa i dati mobili", + "mobile-network-use-mobile-data": "Status utilizza molti dati durante la sincronizzazione delle chat e del portafoglio.", + "mobile-network-use-wifi": "Solo Wi-Fi", + "mobile-syncing-sheet-details": "Status utilizza molti dati durante la sincronizzazione delle chat e del portafoglio.", + "mobile-syncing-sheet-title": "Sincronizza utilizzando i dati della rete mobile?", + "more": "di più", + "move-and-reset": "Sposta e resetta", + "move-keystore-file": "Sposta il file keystore", + "move-keystore-file-to-keycard": "Spostare il file del keystore nella keycard?", + "multiaccount-exists-content": "Le chiavi per questo account esistono già e non possono essere aggiunte di nuovo. Se hai perso la password, il codice di accesso o la Keycard, disinstalla l'app, reinstalla e accedi alle tue chiavi inserendo la tua frase di recupero", + "multiaccount-exists-title": "Le chiavi di questo account esistono già", + "multiaccounts-recover-enter-phrase-text": "Inserisci 12, 15, 18, 21 o 24 parole.\nSeparale con un singolo spazio.", + "multiaccounts-recover-enter-phrase-title": "Inserisci la tua frase di recupero", + "mute": "Silenzia notifiche", + "my-accounts": "I miei account", + "my-accounts-empty": "I tuoi account disponibili verranno visualizzati qui", + "my-profile": "Il mio profilo", + "my-status": "Il mio stato", + "name": "Nome", + "name-of-token": "Il nome del tuo token", + "name-optional": "Nome (facoltativo)", + "name-your-channel": "Dai un nome al tuo canale", + "name-your-channel-placeholder": "Nome canale", + "name-your-community": "Dai un nome alla tua comunità", + "name-your-community-placeholder": "Un nome accattivante", + "need-help": "Hai bisogno di aiuto?", + "network": "Rete", + "network-chain": "Reti", + "network-details": "Dettagli della rete", + "network-fee": "Commissione di rete", + "network-id": "ID di rete", + "network-info": "Informazioni sulla rete", + "network-invalid-network-id": "L'ID di rete specificato non corrisponde all'ID della rete accessibile all'url RCP", + "network-invalid-status-code": "Codice Status non valido: {{code}}", + "network-invalid-url": "L'URL di rete non è valido", + "network-settings": "Impostazioni di rete", + "never": "Mai", + "new": "Nuovo", + "new-category": "Nuova Categoria", + "new-chat": "Nuova chat", + "new-community-title": "Nuova comunità", + "new-contact": "Nuovo contatto", + "new-contract": "Nuovo Contract", + "new-favourite": "Nuovo preferito", + "new-group": "Nuovo gruppo", + "new-group-chat": "Nuova chat di gruppo", + "new-network": "Nuova rete", + "new-password": "Nuova password", + "new-pin-description": "Inserisci un nuovo codice di accesso a 6 cifre", + "new-public-group-chat": "Entra in una chat pubblica", + "new-puk-description": "Inserisci il nuovo PUK di 12 caratteri", + "new-status": "Nuovo stato", + "new-tab": "Nuova scheda", + "next": "Prossimo", + "nickname": "Soprannome", + "nickname-description": "I soprannomi ti aiutano a identificare gli altri in Status.\nSolo tu puoi vedere i soprannomi che hai usato", + "no": "No", + "no-collectibles": "Nessun collezionabile disponibile", + "no-contacts": "Nessun contatto ancora", + "no-keycard-applet-on-card": "Nessuna applet Keycard sulla carta", + "no-messages": "Nessun messaggio", + "no-pairing-slots-available": "Questa carta è già accoppiata a 5 dispositivi e non può essere accoppiata a questo. Si prega di utilizzare uno dei dispositivi accoppiati, effettuare il login con questa carta e liberare gli slot di accoppiamento sulla carta.", + "no-pinned-messages": "Nessun messaggio appuntato", + "no-result": "Nessun risultato", + "no-thanks": "No grazie", + "no-tokens-found": "Nessun token trovato", + "node-address": "Indirizzo Nodo", + "node-details": "Dettagli del nodo", + "node-info": "Informazioni sul nodo", + "node-version": "Versione del nodo", + "nodes-disabled": "Nodi di Status disabilitati", + "non-archival-node": "L'endpoint RPC non supporta le richieste di archiviazione. La cronologia dei trasferimenti locali potrebbe essere incompleta.", + "non-contacts": "Non nei contatti", + "nonce": "Nonce", + "none": "Nessuno", + "normal": "Normale", + "not-applicable": "Non applicabile per transazioni non firmate", + "not-connected-nodes": "Non connesso ad un nodo di Status", + "not-connected-to-peers": "Non connesso ad alcun contatto", + "not-enough-snt": "Non hai abbastanza Token SNT", + "not-found": "Non trovato", + "not-keycard-text": "La carta che hai usato non è una Keycard. È necessario acquistare una Keycard per usarla", + "not-keycard-title": "Non una Keycard", + "not-registered": "non registrato", + "notification-settings": "Impostazioni sulle notifiche", + "notifications": "Notifiche", + "notifications-non-contacts": "Notifiche da parte di persone sconosciute", + "notifications-preferences": "Preferenze sulle notifiche", + "notifications-servers": "Server di notifica", + "notifications-switch": "Mostra notifiche", + "notifications-transactions": "Transazioni del portafoglio", + "notify": "Notifica", + "now": "Ora", + "off": "Spento", + "off-status-tree": "Fuori Status", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Abilita i nodi della cronologia per recuperare i messaggi inviati mentre l'app era chiusa. Quando abilitato, un nodo della cronologia ottiene il tuo indirizzo IP. Quando disabilitato non riceverai messaggi quando l'app è chiusa e non li vedrai quando apri l'app in seguito.", + "offline-messaging-use-history-nodes": "Usa i nodi di Status", + "ok": "OK", + "ok-continue": "Ok, continua", + "ok-got-it": "Ok, capito", + "ok-save-pass": "OK, salva la password", + "okay": "Va bene", + "on": "Su", + "on-status-tree": "In Status", + "once-enabled-share-metadata": "Una volta abilitati, i link pubblicati nella chat possono condividere i tuoi metadati con il sito", + "one-day": "Un giorno", + "one-month": "Un mese", + "one-week": "Una settimana", + "open": "Apri", + "open-chat": "Apri chat", + "open-dapp": "Apri ÐApp", + "open-dapp-store": "Scopri ÐApps", + "open-home": "Apri...", + "open-in-new-tab": "Apri in una nuova scheda", + "open-membership": "Iscrizione aperta", + "open-nfc-settings": "Apri le impostazioni NFC", + "opening-buy-crypto": "Apertura in corso di {{site}} ...", + "optimal": "Ottimale", + "optional": "opzionale", + "or": "O", + "outgoing": "In uscita", + "outgoing-transaction": "Transazione in uscita", + "page-camera-request-blocked": "Le richieste di accesso alla telecamera sono bloccate. Per abilitare l'accesso alla telecamera vai su Impostazioni", + "page-would-like-to-use-camera": "desidera utilizzare la vostra fotocamera", + "pair": "Associare dispositivi", + "pair-card": "Associa a questo dispositivo", + "pair-code": "Codice di accoppiamento", + "pair-code-explanation": "Associa la carta a un dispositivo diverso (fino a 5) per sbloccare chiavi e firmare transazioni con la stessa Keycard.", + "pair-code-placeholder": "Codice di associazione...", + "pair-this-card": "Abbina questa carta", + "pair-this-device": "Associa questo dispositivo", + "pair-this-device-description": "Associa i tuoi dispositivi per sincronizzare contatti e chat tra di loro", + "paired-devices": "Dispositivi associati", + "pairing": "Accoppiamento", + "pairing-card": "Accoppiamento carta", + "pairing-changed": "Il codice di accoppiamento è stato modificato", + "pairing-code-placeholder": "Codice di accoppiamento...", + "pairing-code_error1": "I codici di accoppiamento non corrispondono", + "pairing-go-to-installation": "Vai alle impostazioni di accoppiamento", + "pairing-maximum-number-reached-content": "Disabilita uno dei tuoi dispositivi prima di abilitarne uno nuovo.", + "pairing-maximum-number-reached-title": "Numero massimo di dispositivi raggiunto", + "pairing-new-installation-detected-content": "È stato rilevato un nuovo dispositivo. \n Per utilizzare correttamente i tuoi dispositivi, è importante associarli e abilitarli prima di utilizzarli. \n Vai in Profilo->Impostazioni di sincronizzazione->Dispositivi per associare i tuoi dispositivi.", + "pairing-new-installation-detected-title": "Nuovo dispositivo rilevato", + "pairing-no-info": "Nessuna informazione", + "pairing-please-set-a-name": "Si prega di impostare un nome per il dispositivo.", + "passphrase": "Frase d'accesso", + "password": "Password", + "password-description": "Almeno 6 caratteri. La tua password protegge le tue chiavi. Ne hai bisogno per sbloccare Status e per effettuare transazioni.", + "password-mismatch": "Le password non corrispondono.", + "password-placeholder": "Password...", + "password-placeholder2": "Conferma la tua password", + "password-reset-in-progress": "Modifica password in corso...", + "password-reset-success": "Reimposta la password", + "password-reset-success-message": "Dovrai accedere di nuovo", + "password_error1": "Le password non corrispondono.", + "paste": "Incolla", + "paste-json": "Incolla JSON", + "pay-to-chat": "Paga per chattare", + "peer-content": "Un dispositivo collegato alla rete di chat di Status. Ogni utente può rappresentare uno o più peer, a seconda del numero di dispositivi.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Peers", + "pending": "In attesa", + "pending-confirmation": "In attesa di conferma...", + "pending-invitations": "Richieste di adesione in sospeso", + "per-gas-price-limit": "Limite di prezzo per gas", + "per-gas-tip-limit": "Limite mancia per gas", + "perform-backup": "Procedi al backup", + "permissions": "Autorizzazioni", + "phone-e164": "Internazionale 1", + "photos": "Fotografie", + "photos-access-error": "Per concedere le autorizzazioni necessarie per le foto, vai alle impostazioni del tuo sistema e assicurati che Status > Foto sia selezionato.", + "pin": "Appunta", + "pin-changed": "Il codice di accesso a 6 cifre è stato modificato", + "pin-code": "Codice di accesso a 6 cifre", + "pin-limit-reached": "Limite pin raggiunto. Deseleziona un messaggio precedente.", + "pin-mismatch": "Codice di accesso errato", + "pin-one-attempt": " un tentativo ", + "pin-one-attempt-blocked-after": "prima che la tua Keycard venga bloccata", + "pin-one-attempt-blocked-before": "Fai attenzione, hai solo", + "pin-one-attempt-frozen-after": "prima che la tua Keycard venga congelata", + "pin-one-attempt-frozen-before": "Fai attenzione, hai solo", + "pin-retries-left": "{{number}} tentativi rimasti", + "pinned-by": "Appuntato da", + "pinned-messages": "Messaggi appuntati", + "pinned-messages-count": { + "one": "1 messaggio appuntato", + "other": " {{count}} messaggi appuntati" + }, + "pinned-messages-empty": "I messaggi appuntati verranno visualizzati qui. Per appuntare un messaggio, tieni premuto e tocca `Appunta`", + "powered-by-paraswap": "Fornito da Paraswap", + "preference": "Impostazione", + "preview-privacy": "Anteprima modalità privacy", + "previewing-may-share-metadata": "La visualizzazione in anteprima dei collegamenti da questi siti Web potrebbe condividere i metadati con i loro proprietari", + "price-impact": "Impatto sul prezzo", + "price-impact-desc": "Impatto sul prezzo stimato per questa transazione. Se l'attuale commissione di base del blocco supera questa cifra, la tua transazione verrà inclusa in un blocco successivo con una commissione di base inferiore.", + "principles": "Principi", + "priority": "Priorità", + "privacy": "Privacy", + "privacy-and-security": "Privacy e sicurezza", + "privacy-photos": "Privacy dell'immagine del profilo", + "privacy-policy": "Informativa sulla privacy", + "privacy-show-to-warning": "Le persone che hanno già visto la tua immagine del profilo continueranno a farlo", + "private-key": "Chiave privata", + "private-notifications": "Notifiche private", + "private-notifications-descr": "Status ti notificherà nuovi messaggi. Puoi modificare le tue preferenze anche in un secondo tempo in Impostazioni.", + "processing": "Solo un momento", + "product-information": "Informazioni sul prodotto", + "profile": "Profilo", + "profile-deleted-content": "Il tuo profilo è stato cancellato con successo", + "profile-deleted-keycard": "Ora puoi ripristinare un'altra coppia di chiavi sulla tua Keycard", + "profile-deleted-title": "Profilo cancellato", + "profile-details": "Dettagli del profilo", + "profile-not-found": "Profilo non trovato", + "profile-pic-pick": "Seleziona dalla galleria", + "profile-pic-remove": "Rimuovi foto", + "profile-pic-take": "Scatta foto", + "profile-picture-updated": "Foto profilo aggiornata", + "public-channel": "Canale pubblico", + "public-chat": "Chat pubblica", + "public-chat-description": "Partecipa a chat pubbliche sui tuoi interessi! Chiunque può iniziare una nuova.", + "public-chats": "Chat pubbliche", + "public-group-status": "Pubblico", + "public-group-topic": "Argomento", + "public-key": "Chiave pubblica", + "puk-and-pairing-codes-displayed": "PUK e codici di associazione visualizzati", + "puk-changed": "Il nuovo PUK di 12 caratteri è cambiato", + "puk-code": "Codice PUK", + "puk-code-explanation": "Se dimentichi il tuo codice di accesso a 6 cifre o lo inserisci in modo errato per 3 volte, avrai bisogno di questo codice per sbloccare la tua carta.", + "puk-mismatch": "Codice PUK errato", + "push-failed-transaction": "La tua transazione non è andata a buon fine", + "push-failed-transaction-body": "{{value}} {{currency}} a {{to}}", + "push-inbound-transaction": "Hai ricevuto {{value}} {{currency}}", + "push-inbound-transaction-body": "Da {{from}} a {{to}}", + "push-notifications-server-enabled": "Server abilitato", + "push-notifications-servers": "Invia notifiche push", + "push-outbound-transaction": "Hai inviato {{value}} {{currency}}", + "push-outbound-transaction-body": "Da {{from}} a {{to}}", + "quiet-days": "{{quiet-days}} giorni", + "quiet-hours": "{{quiet-hours}} ore", + "re-encrypt-key": "Cripta nuovamente la tue chiavi", + "rearrange-categories": "Riorganizza le categorie", + "receive": "Ricevi", + "receive-transaction": "Ricevi transazione", + "recent": "Recente", + "recent-empty": "Gli indirizzi utilizzati di recente verranno visualizzati qui", + "recent-recipients": "Contatti", + "recently-used-stickers": "Gli adesivi utilizzati di recente appariranno qui", + "recipient": "Destinatario", + "recipient-code": "Inserisci l'indirizzo del destinatario", + "recipient-code-placeholder": "0x ... o username.domain.eth", + "recover": "Recupera", + "recover-key": "Accedi a chiavi esistenti", + "recover-keycard-multiaccount-not-supported": "Le chiavi di questo account esistono già e non possono essere riaggiunte. Se hai perso la password, il codice di accesso o la Keycard, disinstalla l'app, reinstallala e accedi alle tue chiavi inserendo la frase di recupero", + "recover-with-keycard": "Ripristina con Keycard", + "recover-with-seed-phrase": "Recupera con la frase seme", + "recovering-key": "Recupero delle chiavi in corso...", + "recovery-confirm-phrase": "Conferma frase di recupero", + "recovery-phrase": "Frase di recupero", + "recovery-success-text": "Dovrai creare un nuovo codice o password per criptare nuovamente le tue chiavi", + "recovery-typo-dialog-description": "Nota bene: le parole della tua frase di recupero devono essere inserite identiche e nello stesso ordine in cui le hai ricevute", + "recovery-typo-dialog-title": "La frase di recupero è corretta?", + "redeem-amount": "{{quantity}} bonus disponibili", + "redeem-now": "Riscatta ora", + "redeem-success": "Il riscatto del tuo bonus è andato a buon fine!", + "reduced-tip": "la mancia prioritaria sarà ridotta", + "refresh": "Aggiorna", + "registered": "registrato", + "reject-and-delete": "Rifiuta ed elimina", + "remember-me": "Ricordati di me", + "remind-me-later": "Ricordamelo più tardi", + "remove": "Rimuovi", + "remove-favourite": "Rimuovi preferito", + "remove-from-chat": "Rimuovi dalla chat", + "remove-from-contacts": "Rimuovi dai contatti", + "remove-from-contacts-text": "Rimuovendo un utente dalla tua lista dei contatti non nascondi il tuo indirizzo portafoglio da loro", + "remove-group": "Rimuovi il gruppo", + "remove-network": "Rimuovi rete", + "remove-token": "Rimuovi token", + "removed": "rimosso", + "repeat-pin": "Ripeti il codice a 6 cifre", + "repeat-puk": "Ripeti il nuovo PUK di 12 caratteri", + "replying-to": "Rispondendo a {{author}}", + "report-bug-email-template": "1. Descrizione del problema\n {{description}}\n \n\n 2. Passi per riprodurre\n {{steps}}\n \n\n 3. Allega cortesemente gli screenshot che possono dimostrare il problema\n", + "request-access": "Richiedi accesso", + "request-feature": "Richiedi una funzionalità", + "request-membership": "Richiedi adesione", + "request-pending": "Richiesta in attesa di approvazione ...", + "request-transaction": "Richiedi transazione", + "required-field": "Campo obbligatorio", + "resend-message": "Invia di nuovo", + "reset-card": "Reimposta carta", + "reset-card-description": "Questa operazione reimposterà lo stato iniziale della carta. Cancellerà tutti i dati della carta, incluse le chiavi private. L'operazione non è reversibile.", + "reset-database": "Reimposta database", + "reset-database-warning": "Elimina chat, contatti e impostazioni. Obbligatorio quando hai perso la password", + "reset-database-warning-keycard": "Elimina chat, contatti e impostazioni.", + "reset-password": "Reimposta password", + "restore-defaults": "Ripristina i valori predefiniti", + "retry": "Riprova", + "revoke-access": "Revoca l'accesso", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Copia", + "rpc-usage-filter": "Metodi di filtro", + "rpc-usage-get-stats": "Aggiorna", + "rpc-usage-info": "Statistiche di utilizzo RPC", + "rpc-usage-reset": "Resetta", + "safe-estimate": "Stima sicura", + "save": "Salva", + "save-password": "Salva la password", + "save-password-unavailable": "Impostare il codice di accesso del dispositivo per salvare la password", + "save-password-unavailable-android": "Salva password non è disponibile: il dispositivo potrebbe essere rootato o privo delle funzionalità di sicurezza necessarie.", + "scan-qr": "Scansiona il codice QR", + "scan-qr-code": "Scansione di un codice QR con indirizzo del portafoglio", + "scan-tokens": "Scansiona Tokens", + "search": "Ricerca", + "search-no-chat-found": "Nessun risultato trovato. Volevi dire", + "secret-keys-confirmation-text": "Ti serviranno per continuare a utilizzare la tua Keycard nel caso in cui perdessi il telefono.", + "secret-keys-confirmation-title": "Hai scritto i codici?", + "security": "Sicurezza", + "see-details": "Vedi dettagli", + "see-it-again": "VEDI DI NUOVO", + "see-suggestions": "Vedi suggerimenti", + "seed-key-uid-mismatch": "Il seme non combacia", + "seed-key-uid-mismatch-desc-1": "La frase seme inserita non corrisponde a {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Per gestire le chiavi per questo account, verifica la tua frase seme e riprova.", + "seed-phrase-content": "Un insieme di parole facili da leggere, selezionate casualmente dall'elenco standard BIP39 e utilizzate per recuperare o accedere al tuo account Ethereum su altri portafogli e dispositivi. Definita anche \"frase mnemonica\", \"frase di recupero\" o \"backup del portafoglio\" in tutto l'ecosistema crittografico. La maggior parte delle app di crittografia utilizza questo stesso standard per generare account.", + "seed-phrase-placeholder": "Frase di recupero...", + "seed-phrase-title": "Frase di recupero", + "select": "Seleziona", + "select-account": "Seleziona un account", + "select-account-dapp": "Seleziona l'account che desideri utilizzare con le Dapps", + "select-account-first": "Seleziona prima un account", + "select-chat": "Seleziona chat per avviare la messaggistica", + "select-new-location-for-keys": "Seleziona una nuova posizione per salvare le tue chiavi private", + "select-token-to-receive": "Seleziona il token da ricevere", + "select-token-to-swap": "Seleziona il token da scambiare", + "selected": "Selezionato", + "send-logs": "Segnala un bug", + "send-logs-to": "Segnala un bug a {{email}}", + "send-message": "Invia messaggio", + "send-push-notifications-description": "Quando è disabilitato, la persona che riceve i tuoi messaggi non verrà informata del loro arrivo", + "send-request": "Invia richiesta", + "send-request-amount": "Importo", + "send-request-amount-max-decimals": "Il numero massimo di decimali è {{asset-decimals}}", + "send-request-unknown-token": "Token sconosciuto - {{asset}}", + "send-sending-to": "a {{recipient-name}}", + "send-transaction": "Invia transazione", + "sending": "Inviando", + "sent-at": "Inviato alle", + "server": "Server", + "set-a-topic": "Crea un argomento", + "set-currency": "Imposta la valuta predefinita", + "set-custom-fee": "Imposta una commissione personalizzata", + "set-dapp-access-permissions": "Impostare le autorizzazioni di accesso alle DApp", + "set-max": "Imposta valore massimo", + "settings": "Impostazioni", + "share": "Condividi", + "share-address": "Condividi l'indirizzo", + "share-chat": "Condividi chat", + "share-contact-code": "Condividi la mia chiave di chat", + "share-dapp-text": "Dai un'occhiata a questa DApp che sto usando su Status: {{link}}", + "share-link": "Condividi link", + "share-logs": "Condividi i log", + "share-my-profile": "Condividi il mio profilo", + "share-profile": "Condividi profilo", + "share-profile-link": "Condividi il link del profilo", + "share-public-chat-text": "Dai un'occhiata a questa chat pubblica sull'app Status: {{link}}", + "shared": "Condiviso", + "sharing-copied-to-clipboard": "Copiato", + "sharing-copy-to-clipboard": "Copia", + "sharing-data-desc-1": "I dati vengono convalidati rispetto alle regole pubbliche per garantire che non vengano inviati dati sensibili. Non fidarti, verifica.", + "sharing-data-desc-2": "I dati di utilizzo vengono inviati crittografati end-to-end sulla rete peer-to-peer di Status", + "sharing-data-desc-3": "Invece della normale chiave di chat, viene usata una chiave di uso singolo", + "sharing-data-desc-4": "I dati di utilizzo non possono essere associati al tuo indirizzo IP", + "sharing-data-desc-5": "I dati cumulativi di tutti gli utenti sono disponibili pubblicamente", + "sharing-data-desc-6": "I dati vengono rimossi dal telefono dopo l'invio", + "sharing-share": "Condividi", + "show-less": "Mostra meno", + "show-more": "Mostra di più", + "show-notifications": "Mostra notifiche", + "show-profile-pictures": "Mostra le foto del profilo da", + "show-profile-pictures-to": "Mostra la tua immagine del profilo a", + "show-qr": "Mostra codice QR", + "show-transaction-data": "Mostra i dettagli della transazione", + "sign-and-send": "Firma e invia", + "sign-anyway": "Accedi comunque", + "sign-in": "Accedi", + "sign-message": "Firma il messaggio", + "sign-out": "Esci", + "sign-request-failed": "Impossibile firmare il messaggio", + "sign-with": "Iscriviti con", + "sign-with-password": "Firma con password", + "sign-you-in": "Accesso in corso ...", + "signing": "Firmando", + "signing-a-message": "Firma un messaggio", + "signing-phrase": "Frase di firma", + "skip": "Salta", + "slippage": "Slittamento", + "slow": "Lenta", + "something-went-wrong": "Qualcosa è andato storto", + "soon": "Presto", + "specify-address": "Specifica l'indirizzo", + "specify-name": "Specifica un nome", + "specify-network-id": "Specificare l'id di rete", + "specify-rpc-url": "Specificare un URL RPC", + "specify-server-public-key": "Inserisci la chiave pubblica del server", + "specify-symbol": "Specifica un simbolo", + "start-chat": "inizia chat", + "start-conversation": "Avvia conversazione", + "start-group-chat": "Inizia chat di gruppo", + "start-new-chat": "Inizia una nuova chat", + "starter-pack-coming": "Starter Pack in arrivo", + "starter-pack-coming-description": "Può richiedere da pochi minuti a ore", + "starter-pack-received": "Starter Pack ricevuto", + "starter-pack-received-description": "Ecco alcuni token per iniziare! Usali per ottenere adesivi, un nome ENS e per provare dapps", + "status": "Status", + "status-always-online": "Sempre online", + "status-automatic": "Automatico", + "status-automatic-subtitle": "Imposta automaticamente lo stato", + "status-confirmed": "Confermata", + "status-dnd": "Non disturbare", + "status-dnd-subtitle": "Silenzia tutte le notifiche", + "status-hardwallet": "Status hardwallet", + "status-inactive": "Non attivo", + "status-inactive-subtitle": "Nascondi il tuo stato online", + "status-is-open-source": "Status è open-source", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status tende a utilizzare molti dati durante la sincronizzazione delle chat. Puoi scegliere di non sincronizzare quando sei su rete mobile", + "status-not-sent-click": "Non confermata. Clicca per le opzioni", + "status-not-sent-tap": "Non confermata. Tocca per le opzioni", + "status-pending": "In attesa", + "status-sent": "Inviato", + "status-tx-not-found": "TX non trovata", + "status-updates-descr": "Gli aggiornamenti di Status verranno visualizzati qui. Aggiungi il profilo come contatto per ricevere aggiornamenti sulla tua cronologia.", + "statuses-descr": "Condividi quello che stai pensando e rimani aggiornato con i tuoi contatti", + "statuses-my-status-descr": "Condividi quello che stai pensando. Chiunque visiti il tuo profilo potrà vedere il tuo stato. Le persone che ti aggiungono come loro contatto riceveranno i tuoi aggiornamenti sulla loro timeline", + "step-i-of-n": "Passo {{step}} di {{number}}.", + "sticker": "Adesivo", + "sticker-market": "Mercato degli sticker", + "storage": "Archivio", + "submit": "Invia", + "submit-bug": "Segnala un bug", + "success": "Successo", + "suggested-min-tip": "Mancia minima suggerita", + "suggested-price-limit": "Limite di prezzo suggerito", + "swap": "Converti", + "swap-details": "Dettagli dello scambio", + "switch-to-simple-interface": "Passa all'interfaccia semplificata", + "symbol": "Simbolo", + "sync-all-devices": "Sincronizza tutti i dispositivi", + "sync-in-progress": "Sincronizzazione...", + "sync-settings": "Impostazioni di sincronizzazione", + "sync-synced": "In sincronizzazione", + "syncing-devices": "Sincronizzazione...", + "system": "Sistema", + "tabs": "Schede", + "tag-was-lost": "Il tag è andato perso", + "tap-card-again": "Posiziona nuovamente la carta sul retro del telefono", + "terms-of-service": "Termini di utilizzo", + "test-networks": "Reti di test", + "text-input-disabled": "Per favore aspetta un momento...", + "thank-you": "Grazie", + "this-device": "Questo dispositivo", + "this-device-desc": "Le tue chiavi saranno criptate e conservate in modo sicuro nel tuo dispositivo", + "this-is-you-signing": "Questa è la tua frase di firma", + "this-will-take-few-seconds": "Richiederà alcuni secondi", + "three-days": "Tre giorni", + "three-words-description": "Dovresti vedere queste 3 parole prima di firmare ogni transazione", + "three-words-description-2": "Se vedi una combinazione diversa, annulla la transazione ed esci", + "timeline": "Timeline", + "tip-cap": "Limite mancia", + "to": "A", + "to-block": "Blocco", + "to-enable-biometric": "Per abilitare {{bio-type-label}}, devi salvare la password nella schermata di sblocco", + "to-encrypt-enter-password": "Per crittografare l'account, inserisci la tua password", + "to-see-this-message": "Per vedere questo messaggio,", + "token": "Token", + "token-auto-validate-decimals-error": "Decimali errati per il token {{symbol}} all'indirizzo {{address}} - impostato su {{expected}} ma rilevato come {{actual}}", + "token-auto-validate-name-error": "Nome errato per il token {{symbol}} all'indirizzo {{address}} - impostato su {{expected}} ma rilevato come {{actual}}", + "token-auto-validate-symbol-error": "Simbolo errato per il token {{symbol}} all'indirizzo {{address}} - impostato su {{expected}} ma rilevato come {{actual}}", + "token-details": "Dettagli token", + "topic-name-error": "Usa solo lettere minuscole (dalla a alla z), numeri e trattini (-). Non utilizzare le chiavi chat", + "total-gas": "Fee di transazione totale", + "transaction": "Transazione", + "transaction-data": "Dettagli della transazione", + "transaction-declined": "Transazione rifiutata", + "transaction-description": "Consideralo completo dopo 12 conferme sulla rete.", + "transaction-details": "Dettagli della transazione", + "transaction-failed": "Transazione fallita", + "transaction-fee": "Costo transazione", + "transaction-history": "Cronologia delle transazioni", + "transaction-request": "Richiesta Transazione", + "transaction-sent": "Transazione inviata", + "transaction-signed": "La transazione è stata firmata correttamente", + "transactions": "Transazioni", + "transactions-filter-select-all": "Seleziona tutto", + "transactions-filter-title": "Filtra cronologia", + "transactions-history": "Cronologia delle transazioni", + "transactions-history-empty": "Nessuna transazione nella tua cronologia", + "transactions-history-loading": "Caricamento dello storico delle transazioni. Potrebbe volerci un po' di tempo.", + "transactions-load-more": "Caricane ancora", + "transactions-management-enabled": "Gestione delle transazioni (alfa)", + "transactions-sign": "Firma", + "transfer-ma-unknown-error-desc-1": "Sembra che il tuo multiaccount non sia stato cancellato. Il database potrebbe essere stato resettato", + "transfer-ma-unknown-error-desc-2": "Ti invitiamo a controllare l'elenco dei tuoi account e riprovare. Se l'account non è elencato, vai su Accedi alle chiavi esistenti per ripristinarlo con frase seme", + "transfers-fetching-failure": "Impossibile aggiornare la cronologia dei trasferimenti. Controlla la connessione e scorri verso il basso per riprovare", + "tribute-required-by-multiaccount": "{{multiaccount-name}} richiede degli SNT per avviare una chat.", + "tribute-state-paid": "Omaggio pagato", + "tribute-state-pending": "Omaggio in sospeso", + "tribute-state-required": "Richiede {{snt-amount}} SNT omaggio", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "Aggiungi amici come contatto per consentire le chat senza pagamento omaggio.", + "tribute-to-talk-are-you-friends": "Siete amici?", + "tribute-to-talk-ask-to-be-added": "Chiedi di essere aggiunto come contatto", + "tribute-to-talk-contact-received-your-tribute": " ha ricevuto il tuo tributo. Ora potete chattare tra di voi in tutta sicurezza.", + "tribute-to-talk-desc": "Monetizza la tua attenzione richiedendo SNT alle nuove persone che avviano una chat", + "tribute-to-talk-disabled": "Tribute to Talk disabilitato", + "tribute-to-talk-disabled-note": "Da ora in poi, nuove persone potranno iniziare una chat con te senza inviare SNT.", + "tribute-to-talk-enabled": "Tribute to Talk è abilitato.", + "tribute-to-talk-finish-desc": "Da ora in poi, riceverai solo chat da contatti e persone che hanno pagato. ", + "tribute-to-talk-learn-more-1": "Il tuo tempo e la tua attenzione sono i tuoi beni più preziosi. Tribute to Talk ti consente di impostare una quantità di SNT richiesta per le nuove persone per iniziare una chat con te.", + "tribute-to-talk-learn-more-2": "Chiunque non sia nella tua lista di contatti sarà invitato a pagare, e potrai rispondere una volta che l'avranno fatto.", + "tribute-to-talk-learn-more-3": "Puoi sempre restituire i soldi, ma per assicurarti che gli amici possano contattarti liberamente, aggiungili prima come contatto.", + "tribute-to-talk-paywall-learn-more-1": "Il nostro tempo e la nostra attenzione sono i nostri beni più preziosi. Tribute to Talk ti permette di contattare nuove persone in cambio di un pagamento SNT.", + "tribute-to-talk-paywall-learn-more-2": "Per iniziare una chat con qualcuno che ha un tributo impostato, paga semplicemente il SNT richiesto e verrai aggiunto come contatto.", + "tribute-to-talk-paywall-learn-more-3": "Se li conosci, puoi condividere il tuo profilo al di fuori di Status per essere aggiunto gratuitamente.", + "tribute-to-talk-pending": "Omaggio in attesa di conferma", + "tribute-to-talk-pending-note": "La transazione Tribute è in attesa di conferma sulla rete. Puoi verificarne lo stato nella cronologia delle transazioni", + "tribute-to-talk-removing-note": "La rimozione di Tribute to Talk consentirà a nuove persone di avviare una chat senza inviare SNT. Richiede una transazione da effettuare.", + "tribute-to-talk-set-snt-amount": "Imposta la quantità di SNT necessaria alle nuove persone per iniziare una chat.", + "tribute-to-talk-signing": "In attesa di firmare la transazione", + "tribute-to-talk-transaction-failed-note": "Transazione non riuscita e le impostazioni di Tribute to Talk non sono state modificate", + "tribute-to-talk-tribute-received1": "Tributo ricevuto. Tu e", + "tribute-to-talk-tribute-received2": " sono ora contatti e possono chattare in sicurezza tra loro.", + "tribute-to-talk-you-require-snt": "È necessario SNT per le nuove persone per avviare una chat.", + "try-again": "Riprova", + "try-keeping-the-card-still": "Prova a tenere ferma la carta", + "turn-nfc-description": "NFC è disabilitato sul tuo dispositivo. Puoi abilitarlo nelle impostazioni", + "turn-nfc-on": "Attiva NFC per continuare", + "two-minutes": "due minuti", + "tx-fail-description1": "Questa transazione rischia di fallire. Accedi a tuo rischio usando una commissione personalizzata di rete.", + "tx-fail-description2": "Questa transazione rischia di fallire. Imposta una commissione di rete per accedere a tuo rischio.", + "type": "Tipo", + "type-a-message": "Scrivi un messaggio...", + "ulc-enabled": "ULC abilitato", + "unable-to-fetch": "Impossibile recuperare la cronologia chat", + "unable-to-read-this-code": "Impossibile leggere questo codice", + "unable-to-send-messages": "Impossibile inviare e ricevere messaggi", + "unblock": "Sblocca", + "unblock-contact": "Sblocca questo utente", + "unknown-status-go-error": "Errore di status-go sconosciuto", + "unlimited": "Illimitato", + "unlock": "Sblocca", + "unmute": "Riattiva", + "unpair-card": "Dissocia carta", + "unpair-card-confirmation": "Questa operazione disaccoppierà la carta dal dispositivo corrente. Richiede l'autorizzazione tramite il codice di accesso a 6 cifre. Vuoi procedere?", + "unpair-keycard": "Disaccoppia la Keycard da questo telefono", + "unpair-keycard-warning": "Il codice di associazione\/PUK & PIN rimane invariato", + "unpaired-keycard-text": "La Keycard che hai usato non è associata a questo telefono", + "unpaired-keycard-title": "Sembra che la tua carta sia stata disaccoppiata", + "unpin": "Deseleziona", + "update": "Aggiorna", + "update-to-listen-audio": "Aggiorna all'ultima versione per ascoltare un messaggio audio qui!", + "update-to-see-image": "Aggiorna all'ultima versione per vedere una bella immagine qui!", + "update-to-see-sticker": "Aggiorna all'ultima versione per vedere un bel adesivo qui!", + "updates-to-tos": "Aggiornamenti ai Termini di servizio", + "updates-to-tos-desc": "Prima di continuare, consulta i Termini di servizio e conferma di assumerti la piena responsabilità di come utilizzi l'applicazione.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Usa come immagine del profilo", + "use-valid-contact-code": "Inserisci o scansiona una chiave chat o un nome utente valido", + "validation-amount-invalid-number": "L'importo non è valido", + "validation-amount-is-too-precise": "L'importo è troppo preciso. Il numero massimo di decimali è {{decimals}} .", + "verified-community": "✓ Comunità verificata", + "version": "Versione App", + "view": "Visualizza", + "view-cryptokitties": "Visualizza in CryptoKitties", + "view-cryptostrikers": "Visualizza in CryptoStrikers", + "view-data": "Vedi dati", + "view-details": "Dettagli", + "view-etheremon": "Visualizza in Etheremon", + "view-gitcoin": "Visualizza in Gitcoin", + "view-on-opensea": "Visualizza su OpenSea", + "view-profile": "Visualizza profilo", + "view-public-dashboard": "Visualizza la dashboard pubblica", + "view-rules": "Visualizza regole", + "view-signing": "Visualizza la frase di firma", + "view-superrare": "Visualizza in SuperRare", + "waiting-for-wifi": "Niente Wi-Fi, sincronizzazione messaggi disabilitata.", + "waiting-for-wifi-change": "Impostazioni", + "waiting-to-sign": "In attesa di firmare la transazione...", + "waiting-wi-fi": "In attesa di rete Wi-Fi ...", + "waku-bloom-filter-mode": "Modalità Waku bloom filter", + "wakuv2-change-nodes": "Sei sicuro di voler cambiare i nodi Wakuv2 ?", + "wakuv2-node-format": "\/ip4\/ {node-ip} \/tcp\/ {port} \/p2p\/ {id}", + "wakuv2-settings": "Impostazioni Waku v2", + "wallet": "Portafoglio", + "wallet-address": "Indirizzo del portafoglio", + "wallet-asset": "Asset", + "wallet-assets": "Monete", + "wallet-backup-recovery-title": "Esegui il backup della frase di recupero", + "wallet-choose-recipient": "Scegli il destinatario", + "wallet-collectibles": "Collezionabili", + "wallet-insufficient-funds": "Fondi non sufficienti", + "wallet-insufficient-gas": "ETH non sufficiente per il gas", + "wallet-invalid-address": "Indirizzo non valido: \n {{data}}", + "wallet-invalid-address-checksum": "Errore nell'indirizzo: \n {{data}}", + "wallet-invalid-chain-id": "La rete non corrisponde: \n {{data}} ma la rete attuale è {{chain}}", + "wallet-key-content": "Un indirizzo esadecimale di 64 caratteri basato sullo standard Ethereum e che inizia con 0x. Viene condiviso con gli altri quando si desidera ricevere dei fondi. Chiamato anche \"indirizzo di Ethereum\" o \"indirizzo del portafoglio\".", + "wallet-key-title": "Indirizzo dell'account", + "wallet-manage-accounts": "Gestisci account", + "wallet-manage-assets": "Gestisci cryptoasset", + "wallet-request": "Richiedi", + "wallet-send": "Invia", + "wallet-send-min-units": "Minimo 21000 unità", + "wallet-send-min-wei": "Minimo 1 wei", + "wallet-settings": "Impostazioni portafoglio", + "wallet-total-value": "Valore complessivo", + "wallet-transaction-total-fee": "Commissione totale", + "wants-to-access-profile": "vuole accedere al tuo profilo", + "warning": "Attenzione", + "warning-message": "Spiacenti, limitiamo l'invio di più messaggi in rapida successione per prevenire lo spam. Riprova tra un momento", + "warning-sending-to-contract-descr": "L'indirizzo che hai inserito è quello di un contratto intelligente, l'invio di fondi a questo indirizzo potrebbe comportare la perdita di fondi. Per interagire con una DApp, apri la DApp nella DApp Browser di Status.", + "watch-only": "sola lettura", + "wc-brand-guide": "Guida all'uso di marchi come marchi e loghi", + "wc-disclaimer": "Dichiarazioni di non responsabilità (inclusi fornitori di terze parti), garanzie e rilasci legali", + "wc-dispute": "Disposizioni per la risoluzione delle controversie", + "wc-how-to-use-status-app": "Come usare l'app Status, compresa la privacy e la sicurezza", + "wc-new-tos-based-on-principles-prefix": "Nuovi Termini di servizio progettati in base ai nostri", + "web-view-error": "Impossibile caricare la pagina", + "websites": "Siti web", + "webview-camera-permission-requests": "Richieste di autorizzazione della fotocamera in WebView", + "webview-camera-permission-requests-subtitle": "Quando è abilitata, i siti web e le dapps possono chiedere di utilizzare la tua fotocamera", + "welcome-blank-community-message": "Le tue comunità appariranno qui.", + "welcome-blank-message": "Le tue chat appariranno qui. Per iniziare nuove chat, premi il tasto ⊕", + "welcome-community-blank-message": "I tuoi canali verranno visualizzati qui. Per creare un nuovo canale, fai clic sul pulsante ⊕ e seleziona \"Crea un canale\"", + "welcome-community-blank-message-edit-chats": "I tuoi canali verranno visualizzati qui. Per creare un nuovo canale, torna alla schermata della community, fai clic sul pulsante ⊕ e seleziona \"Crea un canale\"", + "welcome-screen-text": "Configura il tuo portafoglio, invita gli amici a chattare\n ed a sfogliare app popolari!", + "welcome-to-status": "Benvenuto in Status!", + "welcome-to-status-description": "Configura il tuo portafoglio, invita gli amici a chattare\n ed a sfogliare app decentralizzate!", + "what-changed": "Cosa è cambiato", + "what-is-shared": "Cosa è condiviso", + "whats-on-your-mind": "Cos'hai in mente…", + "word-count": "Conteggio parole", + "word-n": "Parola # {{number}}", + "word-n-description": "Per verificare se è stato eseguito correttamente il backup della frase di recupero, immettere la parola # {{number}} sopra.", + "words-n": { + "one": "una parola", + "other": "{{count}} parole" + }, + "write-down-and-store-securely": "Scrivi i codici \n e conservali in modo sicuro", + "wrong-address": "Indirizzo errato", + "wrong-card": "Carta sbagliata", + "wrong-card-text": "Hai usato una carta che non corrisponde alle chiavi che hai selezionato.", + "wrong-contract": "Contract errato", + "wrong-keycard-text": "La Keycard che hai usato non è associata a questo telefono", + "wrong-keycard-title": "Sembra che tu abbia usato \nuna chiave sbagliata", + "wrong-password": "Password errata", + "wrong-word": "Parola sbagliata", + "yes": "Si", + "you": "tu", + "you-already-have-an-asset": "Hai già un cryptoasset {{value}}", + "you-are-all-set": "È tutto pronto!", + "you-are-all-set-description": "Se perdi il telefono, usando la frase di recupero puoi ripristinare le chiavi e riavere accesso ai tuoi fondi e alle tue chat", + "you-can-change-account": "È possibile modificare il nome e il colore dell'account in base alle proprie esigenze", + "you-can-choose-preview-websites": "Puoi scegliere quale dei seguenti siti web può visualizzare in anteprima i link delle descrizioni e delle immagini nelle chat", + "you-can-fetch": "Puoi recuperare la cronologia chat", + "you-dont-have-contacts": "Non hai ancora alcun contatto.", + "you-dont-have-contacts-invite-friends": "Non hai ancora nessun contatto.\n Invita i tuoi amici a iniziare a chattare.", + "you-dont-have-stickers": "Non hai ancora nessun adesivo.", + "you-will-need-this-code": "Avrai bisogno di questo codice per aprire Status e firmare le transazioni", + "you-will-start-from-scratch": "Inizierai da zero con un nuovo set di chiavi", + "your-card-is-frozen": "La tua Keycard è bloccata. Ripristina l'accesso alla carta", + "your-contact-code": "Concedendo l'accesso autorizzi questa DApp a recuperare la tua chiave chat", + "your-data-belongs-to-you": "Se perdi la frase di recupero perderai dati e fondi", + "your-data-belongs-to-you-description": "Status non può aiutarti a recuperare le tue chiavi se perdi la frase di recupero. Soltanto tu la possiedi. Scrivila e tienila in un posto sicuro.", + "your-keys": "Le tue chiavi", + "your-price-limit": "Il tuo limite di prezzo", + "your-recovery-phrase": "La tua frase di recupero", + "your-recovery-phrase-description": "Questa è la tua frase di recupero. La usi per dimostrare che questo è il tuo portafoglio. Puoi vederlo solo una volta! Scrivilo su carta e conservalo in un luogo sicuro. Ne avrai bisogno se perdi o reinstalli il tuo portafoglio.", + "your-tip-limit": "Il tuo limite di mancia", + "youre-on-mobile-network": "Stai usando una rete mobile" +} diff --git a/translations/it_ch.json b/translations/it_ch.json new file mode 100644 index 00000000000..44cb8c8883b --- /dev/null +++ b/translations/it_ch.json @@ -0,0 +1,127 @@ +{ + "confirm": "Conferma", + "amount": "Saldo", + "members-active": { + "one": "1 membro, 1 attivo", + "other": "{{count}} membri, {{count}} attivi", + "zero": "nessun membro" + }, + "chat-name": "Nome chat", + "phew-here-is-your-passphrase": "*Wow* È stato difficile, ecco qui la tua passphrase, *prendi nota e conservala in un luogo sicuro!* Ti servirà per ripristinare il tuo conto.", + "public-group-topic": "Argomento", + "chat-settings": "Impostazioni conversazioni", + "offline": "Offline", + "invited": "È stato invitato", + "address": "Indirizzo", + "new-public-group-chat": "Entra in chat pubblica", + "datetime-hour": { + "one": "ora", + "other": "ore" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Rimuovi", + "add-members": "Aggiungi membri", + "done": "OK", + "close-chat": "Elimina chat", + "new-group-chat": "Nuova conversazione di gruppo", + "sign-in": "Accedi", + "datetime-yesterday": "ieri", + "create-new-account": "Crea nuovo conto", + "datetime-ago": "fa", + "contacts": "Contatti", + "got-it": "OK", + "active-online": "Online", + "password": "Password", + "browsing-title": "Sfoglia", + "discover": "Scoperta", + "browsing-cancel": "Annulla", + "intro-status": "Avvia una conversazione con me per impostare il tuo conto e modificare le tue impostazioni!", + "name": "Nome", + "show-qr": "Mostra QR", + "connect": "Effettua connessione", + "edit": "Modifica", + "account-generation-message": "Dammi un secondo, devo eseguire dei calcoli matematici complessi per generare il tuo conto!", + "no-messages": "Nessun messaggio", + "passphrase": "Passphrase", + "recipient": "Beneficiario", + "members-title": "Membri", + "new-group": "Nuovo gruppo", + "phone-e164": "Internazionale 1", + "settings": "Impostazioni", + "chats": "Conversazioni", + "transaction": "Transazione", + "public-group-status": "Pubblico", + "image-source-make-photo": "Scatta", + "start-conversation": "Inizia conversazione", + "save": "Salva", + "sharing-copy-to-clipboard": "Copia negli appunti", + "sync-in-progress": "Sincronizzazione in corso...", + "send-transaction": "Invia transazione", + "incorrect-code": [ + "str", + "Il codice inserito è errato, riprova" + ], + "image-source-gallery": "Seleziona dalla galleria immagini", + "sync-synced": "Sincronizzato", + "status-pending": "In attesa di", + "datetime-day": { + "one": "giorno", + "other": "giorni" + }, + "scan-qr": "Scansiona QR", + "contact-s": { + "one": "contatto", + "other": "contatti" + }, + "next": "Avanti", + "recent": "Recente", + "status": "Stato", + "from": "Da", + "wrong-password": "Password errata", + "in-contacts": "Nei contatti", + "sharing-share": "Condividi…", + "type-a-message": "Digita un messaggio…", + "clear-history": "Cancella cronologia", + "no-contacts": "Nessun contatto registrato", + "datetime-today": "oggi", + "web-view-error": "Ops, si è verificato un errore", + "error": "Errore", + "more": "altro", + "cancel": "Annulla", + "can-not-add-yourself": "Non puoi aggiungere te stesso", + "add-to-contacts": "Aggiungi ai contatti", + "available": "Disponibile", + "You": "Tu", + "main-wallet": "Wallet principale", + "members": { + "one": "1 membro", + "other": "{{count}} membri", + "zero": "nessun membro" + }, + "intro-message1": "Benvenuto su Status\nTocca questo messaggio per impostare la tua password e iniziare!", + "new-contact": "Nuovo contatto", + "datetime-second": { + "one": "secondo", + "other": "secondi" + }, + "recover": "Ripristina", + "datetime-minute": { + "one": "minuto", + "other": "minuti" + }, + "browsing-open-in-android-web-browser": "Apri nel browser", + "browsing-open-in-ios-web-browser": "Apri nel browser", + "edit-profile": "Modifica profilo", + "active-unknown": "Sconosciuto", + "public-key": "Chiave pubblica", + "profile": "Profilo", + "none": "Nessuna", + "removed": "È stato rimosso", + "message": "Messaggio", + "here-is-your-passphrase": "Ecco qui la tua passphrase, *prendi nota e conservala in un luogo sicuro!* Ti servirà per ripristinare il tuo conto.", + "image-source-title": "Immagine profilo", + "left": "È uscito", + "to": "A", + "status-sent": "Inviato", + "data": "Dati" +} diff --git a/translations/ja.json b/translations/ja.json new file mode 100644 index 00000000000..494dbfe181e --- /dev/null +++ b/translations/ja.json @@ -0,0 +1,2239 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "Pinned-a-message": "メッセージを固定", + "You": "あなた", + "about": "About", + "about-app": "このアプリについて", + "about-key-storage-content": "Statusがあなたの秘密鍵にアクセスすることはありません。シードフレーズのバックアップを忘れないようにしてください。デバイスを紛失した際に復元する唯一の手段となります。", + "about-key-storage-title": "鍵の保管について", + "about-names-content": "誰もあなたになりすますことはできません。あなたは初期設定時から匿名の状態であり、本名を明らかにする必要はありません。わずかな料金でカスタム名を登録することができます。", + "about-names-title": "名前について", + "about-sharing-data": "データの共有について", + "accent-colour": "アクセントカラー", + "accept": "許可", + "accept-and-add": "許可して追加する", + "accept-and-continue": "許可して続行", + "accept-and-share-address": "受け取りアドレスを送る", + "accept-community-rules": "コミュニティルールに同意します", + "accept-new-chats-from": "新規チャットを許可 ", + "accept-status-tos-prefix": "Statusを受け入れる", + "accepted": "追加されました", + "access-existing-keys": "既存の鍵で復元する", + "access-key": "アクセスキー", + "account-added": "アカウントを追加しました", + "account-color": "アカウントの色", + "account-content": "Statusのアカウントを銀行口座と比べてみましょう。銀行口座では通常、1つのアカウントに1つの口座番号と口座残高が紐づいています。Statusでは1つのウォレットで複数のアカウントを持つことができます。", + "account-exists-title": "アカウントはすでに存在しています", + "account-is-used": "アカウントはブラウザのDappsで使用されています。", + "account-name": "アカウント名", + "account-settings": "アカウント設定", + "account-title": "アカウント", + "accounts": "アカウント", + "actions": "アクション", + "active-members": "アクティブメンバー", + "active-online": "オンライン", + "active-unknown": "不明", + "activity": "アクティビティ", + "add": "追加", + "add-a-contact": "連絡先を追加", + "add-a-watch-account": "読み取り専用アカウントを追加", + "add-account": "アカウントを追加", + "add-account-description": "あらゆるタイプのイーサリアムアカウントをStatusウォレットにインポートすることができます", + "add-account-incorrect-password": "パスワードが間違っています。アプリのロックを解除するために使用するパスワードを入力してください。", + "add-address": "アドレスを追加してウォッチする", + "add-address-description": "アドレスまたはENSをウォッチする", + "add-an-account": "アカウントを追加", + "add-bootnode": "Bootnodeを追加", + "add-contact": "連絡先を追加", + "add-custom-token": "カスタムトークンを追加", + "add-favourite": "お気に入りに追加する", + "add-mailserver": "Statusノードを追加", + "add-me-to-your-contacts": "連絡先に追加してください", + "add-members": "メンバーを追加", + "add-network": "ネットワークを追加", + "add-new-contact": "新しい連絡先を追加", + "add-nickname": "ニックネームを追加する(オプション)", + "add-nickname-title": "ニックネームを追加", + "add-node": "ノードを追加する", + "add-private-key-account": "秘密鍵からアカウントを追加する", + "add-seed-account": "シードフレーズでアカウントを追加する", + "add-text": "テキストを追加", + "add-to-contacts": "連絡先に追加", + "add-to-contacts-text": "連絡先リストにユーザを追加することで、ウォレットアドレスを共有します。", + "add-to-favourites": "お気に入りに追加", + "add-watch-account": "読み取り専用アカウントを追加", + "added": "追加した", + "added-to-group-chat": "グループチャットに追加", + "added-you-to": "あなたを追加しました", + "address": "アドレス", + "address-or-ens-name": "アドレスまたは ENS 名", + "address-received": "送金できます", + "address-request-accepted": "受け取り準備ができました", + "address-requested": "受け取り承認待ち", + "admin": "管理者", + "advanced": "高度な設定", + "advanced-settings": "高度な設定", + "advertiser-description": "Statusは一度だけあなたのIPアドレスをチェックします。取得された情報は他のいかなる目的にも利用されることはなく、7日後に完全に消去されます。", + "advertiser-starter-pack-accept": "承認", + "advertiser-starter-pack-decline": "拒否", + "advertiser-starter-pack-description": "初回特典のトークンを受け取れます。トークンを使ってステッカーやENS名を購入してみよう。", + "advertiser-starter-pack-title": "スターターパック", + "advertiser-title": "プライバシーポリシー", + "agree-by-continuing": "以下に同意して続行する。", + "all": "すべて", + "all-connections": "すべての接続", + "all-messages": "すべてのメッセージ", + "all-time": "全期間", + "allow": "許可", + "allow-and-send": "許可して送信", + "allow-mention-notifications": "@メンションを表示する", + "allowing-authorizes-this-dapp": "アクセスを許可すると、このDAppはあなたのウォレットアドレスを取得し、Web3を有効にします。", + "alphabetically": "アルファベット順", + "already-have-asset": "このアセットはすでに持っています", + "already-logged-in-on-the-other-device": "他のデバイスですでにログインしています", + "amount": "金額", + "and": "と", + "and-go-to": "次へ進む", + "anyone": "全員", + "app-commit": "コミットハッシュ", + "app-connections": "アプリ接続", + "appearance": "画面表示", + "apply": "適用する", + "approve": "承認する", + "approve-limit": "限度額の承認", + "approve-token": "トークンを承認", + "approve-token-contract-desc": "トークンを承認することにより、そのコントラクトはあなたのトークン残高を使用できるようになります。疑わしい場合には、トークンを承認しないか、使う分だけを承認するようにしましょう。", + "apr": "4月", + "are-not-allowed": "{{check}}は使用できません", + "are-you-sure": "間違いないですか?", + "are-you-sure-description": "シードフレーズは再度表示することはできません", + "are-you-sure-to-cancel": "キャンセルしてもよいですか?", + "are-you-sure?": "間違いないですか?", + "ask-in-status": "質問するまたはバグを報告する", + "assets": "アセット", + "at": "at", + "attribution-received": "{{attrib}} \/ {{max}} ボーナスを受け取り済み", + "audio": "音声", + "audio-message": "音声メッセージ", + "audio-recorder": "レコーダー", + "audio-recorder-error": "レコーダーエラー", + "audio-recorder-max-ms-reached": "最大録音時間に達しました", + "audio-recorder-permissions-error": "音声メッセージを送信するにはマイクを許可する必要があります", + "aug": "8月", + "authorize": "承認する", + "available": "利用可能", + "available-participants": { + "other": "あと {{count}}人の参加者を選択できます" + }, + "back": "戻る", + "back-up": "バックアップ", + "back-up-seed-phrase": "シードフレーズをバックアップする", + "back-up-your-seed-phrase": "シードフレーズをバックアップする", + "backing-up": "バックアップしています...", + "backup-disabled": "無効", + "backup-enabled": "有効", + "backup-recovery-phrase": "リカバリーフレーズのバックアップ", + "backup-settings": "バックアップ設定", + "backup-through-waku": "wakuにバックアップ", + "bad-fees-description": "優先料金が推奨値を下回っています。", + "balance": "残高", + "begin-set-up": "セットアップを開始", + "below-base-fee": "最大料金が基本料金を下回っています", + "biometric-auth-android-sensor-desc": "タッチセンサー", + "biometric-auth-android-sensor-error-desc": "失敗しました", + "biometric-auth-android-title": "認証が必要です", + "biometric-auth-confirm-logout": "再ログイン", + "biometric-auth-confirm-message": "続行するには生体認証が必要です。不可能な場合はパスワードまたはパスコードを使用してサインインしてください。", + "biometric-auth-confirm-title": "認証する必要があります", + "biometric-auth-confirm-try-again": "再試行する", + "biometric-auth-error": "生体認証を実行できません ( {{code}} )", + "biometric-auth-login-error-title": "生体認証エラー", + "biometric-auth-login-ios-fallback-label": "パスワードを入力", + "biometric-auth-reason-login": "Statusにログイン", + "biometric-auth-reason-verify": "認証を確認", + "biometric-disable-bioauth": "{{bio-type-label}} を無効にする", + "biometric-disable-password-description": "これを無効にすると、", + "biometric-disable-password-title": "パスワード保存を無効にする", + "biometric-enable": "アプリを開くたびにパスワードを入力したくない場合は、{{bio-type-label}} サインインを有効にしてください", + "biometric-enable-button": "{{bio-type-label}} を有効にする", + "biometric-enable-keycard": "毎回キーカードを使用してアプリにアクセスしたくない場合は、 {{bio-type-label}}サインインを有効にしてください", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "指紋", + "biometric-secure-with": "{{bio-type-label}}でセキュアに", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39パスワード", + "biu": "BIU", + "blank-contacts-text": "連絡先がここに表示されます", + "blank-keycard-text": "鍵と名前を生成したらKeycardで先に進むことができます", + "blank-keycard-title": "空のKeycardをタップしたようです", + "blank-messages-text": "あなたのメッセージはここにあります", + "block": "ブロック", + "block-contact": "このユーザをブロックする", + "block-contact-details": "ブロックするとこのユーザのメッセージは削除され、新たなメッセージもあなたに届かなくなります", + "block-user": "ユーザをブロック", + "block-user?": "ユーザをブロックしますか?", + "blocked-users": "ブロックしたユーザ", + "bold": "太字", + "bootnode-address": "Bootnodeアドレス", + "bootnode-details": "Bootnodeの詳細", + "bootnode-format": "enode:\/\/{enode-id}@{ipアドレス}:{ポート}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodeが有効になっています", + "bootnodes-settings": "Bootnodeの設定", + "bridge": "ブリッジ", + "browsed-websites": "Webサイトの閲覧履歴がここに表示されます。", + "browser": "ブラウザ", + "browser-not-secure": "接続は安全ではありません。このサイトでは個人情報を入力したりトランザクションに署名したりしないでください。", + "browser-secure": "接続は安全です。個人情報の入力やトランザクションへの署名を行う際は、このサイトが信頼できるサイトか確認してください。", + "browsers": "ブラウザ", + "browsing-cancel": "キャンセル", + "browsing-open-in-android-web-browser": "Androidで開く", + "browsing-open-in-ios-web-browser": "iOSで開く", + "browsing-open-in-status": "Statusで開く", + "browsing-site-blocked-description1": "このアドレスから潜在的な悪意のあるアクティビティを検出しました。ウォレットを保護するために、操作を制限しています。 \n\nエラーと思われる場合は、こちらにご連絡ください。", + "browsing-site-blocked-description2": "公開チャット", + "browsing-site-blocked-go-back": "戻る", + "browsing-site-blocked-title": "このサイトはブロックされています", + "browsing-title": "ブラウズ", + "bug-report": "バグを報告", + "bug-report-description": "* 説明", + "bug-report-description-placeholder": "入力必須", + "bug-report-steps": "再現手順", + "bug-report-steps-placeholder": "- アプリを開く\n- 何かをする\n- そしてまた別のことをする...", + "bug-report-submit-email": "ログアーカイブをメールで提出する", + "bug-report-submit-gh-issue": "ログなしでGitHubイシューを提出する", + "bug-report-too-short-description": "説明文が短すぎます。", + "build-yourself": "利用規約への同意なしにアプリを利用するには、独自のバージョンを構築してお使いください", + "buy": "購入", + "buy-crypto": "暗号資産を購入する", + "buy-crypto-choose-a-service": "暗号資産の購入方法を選択します", + "buy-crypto-description": "DAppで暗号資産を購入する", + "buy-crypto-leaving": "Statusから購入先のWebサイトにアクセスします", + "buy-crypto-title": "ウォレットが空のようです", + "by-continuing-you-accept": "以下を承諾して続行する ", + "camera-access-error": "カメラにアクセスするには、システム設定から「Status → カメラ」で有効になっているか確認してください。", + "camera-permission-denied": "アクセスが拒否されました", + "can-not-add-yourself": "自分自身を追加することはできません", + "can-send-messages": "新しいメッセージを送受信できます", + "cancel": "キャンセル", + "cancel-keycard-setup": "Keycardのセットアップをキャンセル", + "cancel-request-to-join": "参加リクエストをキャンセル", + "cancel-request?": "リクエストをキャンセルしますか?", + "cancelling": "キャンセル", + "cannot-pin-desc": "ピン留めできるメッセージは最大3つです。\n新しいメッセージをピン留めするには、少なくとも1つのピン留めを解除してください。", + "cannot-pin-title": "このメッセージはピン留めできません", + "cannot-read-card": "カードが読み取れません。 \nスマートフォンの裏側に当てたままにしてください", + "cannot-use-default-pin": "パスコード 000000 は許可されていません。 \n別の番号を使ってください", + "cant-open-public-chat": "公開チャットを開くことができません", + "cant-report-bug": "バグを報告できません", + "card-is-blank": "カードが空です", + "card-reseted": "カードがリセットされました", + "card-unpaired": "カードのペアリングが現在のデバイスから解除されました", + "category": "カテゴリー", + "category-title": "カテゴリー名", + "change-fleet": "Fleetを {{fleet}} に変更する", + "change-group-privacy": "グループのプライバシーを変更する", + "change-logging-enabled": "本当にログを{{enable}}にしますか?", + "change-pairing": "ペアリングコードを変更する", + "change-pairing-description": "ペアリングコードを変更しても、現在のペアリングに影響はありません。ただし新たにペアリングする場合は新しいコードが必要になります。", + "change-pairing-title": "新たにペアリングコードを作成する", + "change-passcode": "パスコードの変更", + "change-password": "パスワードの変更", + "change-pin": "6桁のパスコードを変更する", + "change-puk": "12桁のPUKを変更する", + "change-tip": "チップを変更", + "changed-amount-warning": "金額が {{old}} から {{new}} に変更されました", + "changed-asset-warning": "アセットが {{old}} から {{new}} に変更されました", + "chaos-mode": "カオスモード", + "chaos-unicorn-day": "カオスユニコーンデー", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "チャット", + "chat-and-transact": "友達とプライベートチャットする", + "chat-is-a-contact": "連絡先に登録済み", + "chat-is-not-a-contact": "連絡先に登録されていません", + "chat-key": "チャットキー", + "chat-key-content": "Statusチャットプロトコルではメッセージは暗号化キーを使用して送受信されます。暗号化には公開チャットキーが使われています。あなたは公開チャットキーを友達に伝え、友達はそれを用いてメッセージを送信しています。", + "chat-key-description": "Statusにおけるあなたの公開IDです。他の人があなたに友だちリクエストをするために使用できます。", + "chat-key-title": "チャットキー", + "chat-link-previews": "リンクプレビュー", + "chat-name": "チャット名", + "chat-name-content": "チャットユーザ名は、3つのランダムな英単語として生成されます。すべてのユーザが異なるチャットユーザ名で生成され、他のユーザが同じ3つの英単語を持つことはありません。", + "chat-name-title": "チャットユーザ名", + "chat-notification-preferences": "通知設定", + "chat-settings": "チャット設定", + "chat-with": "{{selected-user}}とチャット", + "chat-with-friends": "友だちとプライベートチャットする", + "chats": "チャット", + "check-on-block-explorer": "ブロックエクスプローラを確認する", + "check-on-opensea": "OpenSeaでチェック", + "check-your-recovery-phrase": "シードフレーズを確認してください", + "choose-actions": "アクションを選択する", + "choose-authentication-method": "認証方法を選択します", + "choose-new-location-for-keystore": "キーストアファイルの格納先を選択します", + "choose-storage": "ストレージを選択する", + "clear": "消去", + "clear-all": "すべてクリア", + "clear-history": "履歴を消去", + "clear-history-action": "消去", + "clear-history-confirmation": "履歴を消去しますか?", + "clear-history-confirmation-content": "本当にチャット履歴を消去しますか?", + "clear-history-title": "履歴を消去しますか?", + "clear-history?": "履歴をクリアしますか?", + "cleared-chat-description-public": "ここは静かですね。会話を始めるか ", + "close": "閉じる", + "close-all": "すべて閉じる", + "close-app-button": "確認", + "close-app-content": "アプリを停止して閉じます。再度開くと選択していたネットワークが使用されます", + "close-app-title": "警告!", + "close-contact-search": "連絡先検索を閉じる", + "collectibles": "コレクティブル", + "collectibles-leak-metadata": "ここにNFTを表示できます。その場合、あなたのウォレットとIPアドレスを共有することになります。", + "colour": "カラー", + "command-button-send": "送信", + "common-names": "一般的な名称", + "communities": "コミュニティ", + "communities-alpha": "コミュニティ(アルファ)", + "communities-enabled": "コミュニティを有効にする", + "communities-verified": "✓Status認証済みコミュニティ", + "community": "コミュニティ", + "community-admins-will-review-your-request": "コミュニティ管理者がリクエストを確認します", + "community-channel": "コミュニティチャンネル", + "community-channel-read-requirements-met": "条件に合うもののみを表示", + "community-channel-read-requirements-not-met": "条件に合わないもののみを表示", + "community-channel-write-requirements-met": "条件に合うものを表示および投稿", + "community-channel-write-requirements-not-met": "条件に合わないものを表示および投稿", + "community-color": "コミュニティカラー", + "community-color-placeholder": "色を選ぶ", + "community-edit-title": "コミュニティの編集", + "community-emoji-thumbnail-title": "サムネイル", + "community-enter-channel-info": "チャンネルに入ると、あなたの公開アドレスはノード所有者に公開されます", + "community-image-delete": "Empty", + "community-image-pick": "画像を選ぶ", + "community-image-remove": "削除", + "community-image-take": "写真を撮る", + "community-info": "コミュニティ情報", + "community-info-not-found": "コミュニティ情報が見つかりません", + "community-invite-title": "招待する", + "community-join-requirements-changed": "トークン条件が変更されました", + "community-join-requirements-met": "参加条件を満たしています", + "community-join-requirements-not-met": "参加条件を満たしていません", + "community-join-requirements-tokens-lost": "必要なトークンがありません", + "community-key": "コミュニティの秘密鍵", + "community-key-placeholder": "コミュニティの秘密鍵を入力してください", + "community-kicked-body": "あなたは追い出されました", + "community-kicked-heading": "コミュニティから追放", + "community-link": "コミュニティリンク", + "community-members": { + "other": "{{count}} 名" + }, + "community-members-title": "メンバー", + "community-message-preview": "{{community-name}}への招待状", + "community-private-key": "コミュニティの秘密鍵", + "community-request-accepted": "リクエストが承認されました", + "community-request-accepted-body-text": "今、あなたはこちらのメンバーです", + "community-request-not-accepted": "リクエストが受け入れられませんでした", + "community-request-not-accepted-body-text-prefix": "参加リクエスト", + "community-request-not-accepted-body-text-suffix": "受け入れられませんでした", + "community-request-pending": "リクエスト保留中", + "community-request-pending-body-text": "参加をリクエストしました", + "community-requests-to-join-title": "参加リクエスト", + "community-roles": "役割", + "community-rules": "コミュニティルール", + "community-share-title": "共有", + "community-thumbnail-image": "アイコン画像", + "community-thumbnail-upload": "アップロード", + "complete-hardwallet-setup": "このカードは現在リンクされています。トランザクションの署名やロック解除の際に必要になります。", + "completed": "完了", + "confirm": "確認", + "confirm-new-password": "新しいパスワードを再入力", + "confirm-pairing-code-placeholder": "ペアリングコードを再入力...", + "confirm-password-placeholder": "パスワードを再入力...", + "confirm-selection": "選択内容を確認する", + "confirmation-request": "承認リクエスト", + "confirmations": "承認", + "confirmations-helper-text": "12の承認を得た場合に完了と見なすことができます。", + "connect": "接続", + "connect-mailserver-content": "{{name}} に接続しますか?", + "connect-wallet": "ウォレットを接続する", + "connect-with-users": "ユーザとつながる", + "connected": "接続済み", + "connected-to": "接続先", + "connecting": "接続しています...", + "connecting-requires-login": "別のネットワークに接続するにはログインが必要です", + "connection-request": "接続要求", + "connection-status": "接続状況", + "connection-with-the-card-lost": "カードとの接続が失われました", + "connection-with-the-card-lost-setup-text": "セットアップを再開するにはカードをスマートフォンの背面に当てたままにしてください", + "connection-with-the-card-lost-text": "セットアップを再開するにはカードをスマートフォンの背面に当てたままにしてください", + "contact-code": "チャットキー", + "contact-request": "友だちリクエスト", + "contact-request-accepted": "追加されました ✓", + "contact-request-accepted-toast": "{{name}} があなたの友だちリクエストを許可しました", + "contact-request-chat-add": "{{name}}を追加してメッセージを送信", + "contact-request-chat-pending": "友だちリクエストは保留中です", + "contact-request-declined": "却下されました ⓧ", + "contact-request-header": "👋 友だちリクエスト", + "contact-request-is-now-a-contact": "が連絡先に追加されました", + "contact-request-outgoing": "接続中... ", + "contact-request-pending": "依頼中...", + "contact-request-removed-as-contact": "連絡先として削除されました", + "contact-request-removed-you-as-contact": "連絡先として削除されました", + "contact-request-sent": "友だちリクエストを送る", + "contact-request-sent-to": "友だちリクエストを送信:", + "contact-request-sent-toast": "{{name}} から友だちリクエストが届きました", + "contact-request-was-accepted": "友だちリクエストを受け付けました", + "contact-requests": "友だちリクエスト", + "contact-s": { + "other": "の連絡先" + }, + "contacts": "連絡先", + "contacts-descr": "連絡先がここに表示されます。連絡先に追加した人のステータスを受け取ります。", + "contacts-empty": "連絡先のENS名がここに表示されます", + "continue": "続行する", + "continue-anyway": "気にせず続ける", + "contract-address": "コントラクトアドレス", + "contract-interaction": "コントラクトの実行", + "contract-isnt-supported": "コントラクトはサポートされていません", + "copy-info": "情報をコピー", + "copy-qr": "コードをコピー", + "copy-text": "テキストをコピー", + "copy-to-clipboard": "コピー", + "copy-transaction-hash": "トランザクションIDをコピー", + "cost-fee": "コスト\/手数料", + "counter-9-plus": "9+", + "counter-99-plus": "99以上", + "create": "作成", + "create-a-pin": "6桁のパスコードを作成する", + "create-a-puk": "12桁のPUKを作成する", + "create-category": "カテゴリーを作成", + "create-channel": "チャネルを作成する", + "create-channel-title": "新規チャネル", + "create-community": "コミュニティを作成する", + "create-group-chat": "グループチャットを作成", + "create-multiaccount": "新規に鍵を作る", + "create-new-key": "新しい鍵を生成", + "create-new-profile": "新しいプロフィールを作成", + "create-pin": "6桁のパスコードを作成", + "create-pin-description": "ログインとトランザクションの承認にカードと6桁のパスコードが必要になります。", + "create-profile": "プロフィールを作成", + "create-profile-password-info-box-description": "Statusキーは、Web3での自己管理型アイデンティティの基盤です。これらのキーはあなたが完全に制御でき、トランザクション署名、データへのアクセス、Web3サービスとのやり取りに使用できます。\n\nキーは常にデバイスに安全に保存され、Statusプロフィールパスワードで保護されます。Statusはパスワードを知らず、パスワードをリセットすることはできません。パスワードを忘れると、Statusプロフィールとウォレットの資金にアクセスできなくなる可能性があります。\n\nStatusパスワードは忘れずに、誰にも共有しないでください。", + "create-profile-password-info-box-title": "プロフィールパスワードについて", + "created-group-chat-description": "グループ {{group-name}} を作成しました", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "通貨", + "currency-display-name-aed": "エミラティディルハム", + "currency-display-name-afn": "アフガニスタンアフガニ", + "currency-display-name-ars": "アルゼンチンペソ", + "currency-display-name-aud": "オーストラリアドル", + "currency-display-name-bbd": "バルバドスドル", + "currency-display-name-bdt": "バングラデシュタカ", + "currency-display-name-bgn": "ブルガリアレフ", + "currency-display-name-bhd": "バーレーンディナール", + "currency-display-name-bnd": "ブルネイダルサラームドル", + "currency-display-name-bob": "ボリビアボリビアノ", + "currency-display-name-brl": "ブラジルレアル", + "currency-display-name-btn": "ブータンニュルガム", + "currency-display-name-cad": "カナダドル", + "currency-display-name-chf": "スイスフラン", + "currency-display-name-clp": "チリペソ", + "currency-display-name-cny": "中国人民元", + "currency-display-name-cop": "コロンビアペソ", + "currency-display-name-crc": "コスタリカコロン", + "currency-display-name-czk": "チェココルナ", + "currency-display-name-dkk": "デンマーククローネ", + "currency-display-name-dop": "ドミニカ共和国ペソ", + "currency-display-name-egp": "エジプトポンド", + "currency-display-name-etb": "エチオピアブル", + "currency-display-name-eur": "ユーロ", + "currency-display-name-gbp": "英国ポンド", + "currency-display-name-gel": "ジョージアラリ", + "currency-display-name-ghs": "ガーナセディ", + "currency-display-name-hkd": "香港ドル", + "currency-display-name-hrk": "クロアチアクーナ", + "currency-display-name-huf": "ハンガリーフォリント", + "currency-display-name-idr": "インドネシアルピア", + "currency-display-name-ils": "イスラエルシェケル", + "currency-display-name-inr": "インドルピー", + "currency-display-name-isk": "アイスランドクローナ", + "currency-display-name-jmd": "ジャマイカドル", + "currency-display-name-jpy": "日本円", + "currency-display-name-kes": "ケニアシリング", + "currency-display-name-krw": "韓国ウォン", + "currency-display-name-kwd": "クウェートディナール", + "currency-display-name-kzt": "カザフスタンテンゲ", + "currency-display-name-lkr": "スリランカルピー", + "currency-display-name-mad": "モロッコディルハム", + "currency-display-name-mdl": "モルドバレイ", + "currency-display-name-mur": "モーリシャスルピー", + "currency-display-name-mwk": "マラウィアンクワチャ", + "currency-display-name-mxn": "メキシコペソ", + "currency-display-name-myr": "マレーシアリンギット", + "currency-display-name-mzn": "モザンビークメチカル", + "currency-display-name-nad": "ナミビアドル", + "currency-display-name-ngn": "ナイジェリアナイラ", + "currency-display-name-nok": "ノルウェークローネ", + "currency-display-name-npr": "ネパールルピー", + "currency-display-name-nzd": "ニュージーランドドル", + "currency-display-name-omr": "オマーンリアル", + "currency-display-name-pen": "ペルーソル", + "currency-display-name-pgk": "パプアニューギニアキナ", + "currency-display-name-php": "フィリピンペソ", + "currency-display-name-pkr": "パキスタンルピー", + "currency-display-name-pln": "ポーランドズウォティ", + "currency-display-name-pyg": "パラグアイグアラニ", + "currency-display-name-qar": "カタールリヤル", + "currency-display-name-ron": "ルーマニアレイ", + "currency-display-name-rsd": "セルビアディナール", + "currency-display-name-rub": "ロシアルーブル", + "currency-display-name-sar": "サウジアラビアリヤル", + "currency-display-name-sek": "スウェーデンクローナ", + "currency-display-name-sgd": "シンガポールドル", + "currency-display-name-thb": "タイバーツ", + "currency-display-name-try": "トルコリラ", + "currency-display-name-ttd": "トリニダードトバゴドル", + "currency-display-name-twd": "台湾ドル", + "currency-display-name-tzs": "タンザニアシリング", + "currency-display-name-uah": "ウクライナグリブナ", + "currency-display-name-ugx": "ウガンダシリング", + "currency-display-name-usd": "米ドル", + "currency-display-name-uyu": "ウルグアイペソ", + "currency-display-name-vef": "ベネズエラボリバル", + "currency-display-name-vnd": "ベトナムドン", + "currency-display-name-zar": "南アフリカランド", + "current": "現在", + "current-average": "現在の平均", + "current-average-tip": "現在の平均チップ", + "current-base": "現在の基本料金", + "current-base-fee": "現在の基本手数料", + "current-minimum-tip": "現在の最小チップ", + "current-network": "現在のネットワーク", + "current-password": "現在のパスワード", + "current-pin": "6桁のパスコードを入力", + "current-pin-description": "続行するには6桁のパスコードを入力します", + "custom": "カスタム", + "custom-networks": "カスタムネットワーク", + "custom-node": "カスタムRPCエンドポイントを使用しています。ローカルの転送履歴が不完全となる場合があります。", + "custom-seed-phrase": "無効なシードフレーズ", + "custom-seed-phrase-text-1": "シードフレーズが一致しません。入力した単語にスペルミスがないか確認してください。", + "cut": "カット", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "許可して開く", + "dapp-starter-pack-description": "初回特典のトークンを受け取れます。トークンを使ってステッカーやENS名を購入してみよう。", + "dapp-starter-pack-title": "スターターパック", + "dapp-would-like-to-connect-wallet": "があなたのウォレットにアクセスしようとしています", + "dapps": "ÐApps", + "dapps-permissions": "DAppのアクセス許可", + "dark": "ダーク", + "data": "データ", + "data-collected": "収集されたデータ", + "data-collected-subtitle": "下の表は、保存されているデータと送信されるデータの正確な内容を示しています。データは公的なルールに照らし合わせて検証され、機密データが送信されないようになっています。 \"Don't trust, verify.\"", + "data-syncing": "データ同期", + "database-reset-content": "チャット、連絡先、設定が削除されました。Keycardでアカウントを利用できます。", + "database-reset-title": "データベースのリセット", + "database-reset-warning": "データベースがリセットされます。チャット、連絡先、設定が削除されます。", + "datetime-ago": "前", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "other": "日" + }, + "datetime-day-short": { + "other": "日" + }, + "datetime-hour": { + "other": "時間" + }, + "datetime-hour-short": { + "other": "時間" + }, + "datetime-minute": { + "other": "分" + }, + "datetime-minute-short": { + "other": "分" + }, + "datetime-second": { + "other": "秒" + }, + "datetime-second-short": { + "other": "秒" + }, + "datetime-today": "今日", + "datetime-yesterday": "昨日", + "days": "日", + "dec": "12月", + "decimals": "小数点桁数", + "decline": "取り消す", + "declined": "却下されました", + "decryption-failed-content": "データを復号化できませんでした。「適用」をタップして古いデータを削除し新しいアカウントを作成し直すか、「キャンセル」を押してもう一度やり直してください。", + "default": "デフォルト", + "default-assets": "ERC20・ERC721トークン", + "default-sync-period": "同期履歴 ", + "delete": "削除", + "delete-account": "アカウントを削除する", + "delete-and-leave-group": "グループを削除して退出する", + "delete-bootnode": "Bootnodeを削除", + "delete-bootnode-are-you-sure": "本当にこのbootnodeを削除しますか?", + "delete-bootnode-title": "Bootnodeを削除", + "delete-category-confirmation": "このカテゴリを削除しますか?", + "close-chat": "チャットを削除する", + "close-chat-confirmation": "本当にこのチャットを削除しますか?", + "delete-confirmation": "削除しますか?", + "delete-for-everyone": "全員に削除", + "delete-for-me": "削除", + "delete-keys-keycard": "Keycardから鍵を削除する", + "delete-mailserver": "Statusノードを削除する", + "delete-mailserver-are-you-sure": "本当にこのStatusノードを削除しますか?", + "delete-mailserver-title": "Statusノードを削除する", + "delete-message": "メッセージを削除", + "delete-my-account": "アカウントを削除する", + "delete-my-profile": "プロフィールを削除する", + "delete-network-confirmation": "本当にこのネットワークを削除しますか?", + "delete-network-error": "このネットワークを削除する前に別のネットワークに接続してください", + "delete-network-title": "ネットワークを削除しますか?", + "delete-node": "ノードを削除する", + "delete-node-are-you-sure": "このノードを削除しますか?", + "delete-node-title": "ノードを削除", + "delete-profile": "プロフィールを削除する", + "delete-profile-warning": "警告:シードフレーズを保管していない場合、プロファイルを削除後は一切の資金にアクセスできなくなります。", + "deleted-this-message": "メッセージを削除しました", + "delivered": "配信済み", + "deny": "拒否", + "derivation-path": "Derivation path", + "describe-channel": "チャネルの説明", + "description": "説明", + "desktop": "デスクトップ", + "destroy": "破壊する", + "dev-mode": "デベロッパーモード", + "dev-mode-settings": "開発モードの設定", + "device-syncing": "デバイスの同期", + "devices": "デバイス", + "disable": "無効", + "disable-all": "すべて無効にする", + "disable-later-in-settings": "これは後で設定画面で無効にできます", + "disabled": "無効", + "disconnect": "接続解除", + "disconnected": "チャットがオフライン", + "discover": "見つける", + "discover-communities": "コミュニティを探す", + "dismiss": "無視する", + "display-collectibles": "コレクションを表示", + "done": "完了", + "dont-ask": "このサイトでは許可しない", + "duration-estimate": "推定期間", + "edit": "編集", + "edit-categories": "カテゴリを編集する", + "edit-channel-title": "チャネルを編集", + "edit-chats": "チャットを編集", + "edit-community": "コミュニティを編集する", + "edit-favourite": "お気に入りを編集する", + "edit-group": "グループを編集", + "edit-message": "メッセージの編集", + "edit-name-and-image": "名前と画像を編集する", + "edit-name-image": "名前と画像を編集する", + "edit-nickname": "ニックネームを編集", + "edit-profile": "プロフィールを編集", + "edited": "編集済み", + "editing-message": "メッセージの編集", + "emoji-activity": "アクティビティ", + "emoji-flags": "フラグ", + "emoji-food": "フード", + "emoji-hash": "エモジハッシュ", + "emoji-hash-copied": "エモジハッシュがクリップボードにコピーされました", + "emoji-nature": "自然", + "emoji-no-results-description": "「虹」などを試してみましょう", + "emoji-no-results-title": "検索に一致する絵文字はありません", + "emoji-objects": "オブジェクト", + "emoji-people": "人々", + "emoji-recent": "最近", + "emoji-search-placeholder": "絵文字を検索", + "emoji-symbols": "シンボル", + "emoji-travel": "旅行", + "emojihash": "エモジハッシュ", + "emojihash-description": "あなたのチャットキーを視覚的に表現したものです。他のユーザがあなたのプロフィールを認識するのに役立ちます。", + "emojis": "絵文字", + "empty-activity-center": "チャットの通知が\nここに表示されます", + "empty-chat-description": "このチャットにはまだメッセージがありません", + "empty-chat-description-community": "ここでは{{quiet-hours}}時間会話がありません。", + "empty-chat-description-one-to-one": "ここで送信されるあらゆるメッセージは暗号化され、他の人が読むことはできません", + "empty-chat-description-public": "ここでは{{quiet-hours}}時間会話がありません。会話を始めましょう", + "empty-chat-description-public-share-this": "このチャットを共有", + "empty-keycard": "空のKeycard", + "empty-keycard-required": "空のキーカードが必要です", + "empty-notifications-admin-tab": "未読の管理者通知はありません", + "empty-notifications-all-tab": "未読の通知はありません", + "empty-notifications-contact-requests-tab": "友だちリクエストはありません", + "empty-notifications-identity-verification-tab": "本人確認の要求はありません", + "empty-notifications-membership-tab": "入会通知はありません", + "empty-notifications-mentions-tab": "未読のメンション通知はありません", + "empty-notifications-replies-tab": "未読の返信通知はありません", + "empty-notifications-subtitle-read": "通知はここに表示されます", + "empty-notifications-subtitle-unread": "未読の通知はこちら", + "empty-notifications-system-tab": "システム通知はありません", + "empty-notifications-title-read": "通知なし", + "empty-notifications-title-unread": "最新の状態です", + "empty-notifications-transactions-tab": "取引通知はありません", + "empty-pending-invitations-descr": "招待リンクを見てグループ参加をリクエストした人がここに表示されます", + "empty-tab": "空のタブ", + "empty-tab-description": "C'mon do something...", + "enable": "有効", + "enable-access-to-camera": "カメラへのアクセスを有効にする", + "enable-all": "有効にする", + "enable-biometrics": "生体認証を有効にする", + "enable-camera": "カメラを有効にする", + "enable-link-previews": "プレビューを有効にしますか?", + "enable-notifications-sub-title": "誰かがあなたにメッセージや暗号資産を送ったときに通知を受け取ります", + "encrypt-with-password": "パスワードで暗号化", + "ending-not-allowed": "{{ending}}で終わるものは使用できません", + "ens-10-SNT": "10 SNT", + "ens-add-username": "ユーザ名を追加", + "ens-agree-to": "に同意する", + "ens-chat-settings": "チャット設定", + "ens-custom-domain": "カスタムドメイン", + "ens-custom-username-hints": "username.domain.eth のようにカスタムドメインを含むユーザ名全体を入力してください", + "ens-custom-username-taken": "このユーザ名はあなたのものではありません :(", + "ens-deposit": "デポジット", + "ens-dismiss-message": "クリックして閉じる", + "ens-displayed-with": "チャットでこの名前を表示します", + "ens-get-name": "ユニバーサルユーザ名を取得", + "ens-got-it": "わかりました", + "ens-locked": "ユーザ名はロックされています。 {{date}}まで返却できません", + "ens-name-content": "ENS名とは、複雑なチャットキーを読みやすい名前に代替するイーサリアムネームサービスのサービスです。ENS名は分散型ユーザ名とも呼ばれます。", + "ens-name-not-found": "ENS名を見つけられません", + "ens-name-title": "ENS名", + "ens-network-restriction": "メインネットでのみ利用可能", + "ens-no-usernames": "接続しているユーザ名がありません", + "ens-or-chat-key": "ENSまたはチャットキー", + "ens-powered-by": "Powered by Ethereum Name Services", + "ens-primary-username": "表示するユーザ名", + "ens-register": "登録", + "ens-registration-failed": "ユーザ名を登録するには、もう1度やり直してください。", + "ens-registration-failed-title": "トランザクション処理が失敗しました", + "ens-registration-failure": "登録に失敗しました", + "ens-registration-in-progress": "登録中...", + "ens-release-username": "ユーザ名を返却する", + "ens-remove-hints": "削除すると、あなたの鍵からユーザ名が切り離されます。", + "ens-remove-username": "ユーザ名を削除", + "ens-saved": " とあなたのチャットキーとの紐付けが完了しました。", + "ens-saved-title": "ユーザ名が追加されました", + "ens-show-username": "チャットで自分のENS名を表示する", + "ens-terms-header": "ENS名 登録規約", + "ens-terms-point-1": "資産は1年間デポジットされます。あなたのSNTはロックされますが消費はされません。", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e(ENSレジストリ)。", + "ens-terms-point-2": "1年後にENS名を返却し、デポジットを取り戻すことができます。何もしなければ名前は維持されます。", + "ens-terms-point-3": "もしStatusがコントラクトをアップグレードする等によりコントラクトの規約が変更された場合は、ユーザはデポジット期間に関係なくENS名を返却する権利を持ちます。", + "ens-terms-point-4": "コントラクトの管理者はあなたがデポジットした資産にアクセスすることはできません。コントラクトは資産を送信元のアドレスに送り返す機能のみを有しています。", + "ens-terms-point-5": "あなたのアドレスはパブリックにENS名と紐づけられます", + "ens-terms-point-6": "ユーザ名はstateofus.ethのサブドメインとして作成されます。ENSのスマートコントラクトの規約に従います。", + "ens-terms-point-7": "コントラクトがあなたに代わってSNTを送信することを承認します。これはあなたが送信のトランザクションを承認した時のみ発生します。", + "ens-terms-point-8": "これらの規約は以下のアドレスにおけるスマートコントラクトのロジックによって保証されます:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "ENS名 登録規約", + "ens-test-message": "こんにちは", + "ens-transaction-pending": "トランザクション処理中", + "ens-understand": "私のウォレットアドレスとユーザ名がパブリックに紐づけられることを理解しました。", + "ens-username": "ENS名", + "ens-username-already-added": "ユーザ名はすでにチャットキーに紐付けられました。Statusでご利用いただけます。", + "ens-username-available": "✓このユーザ名は利用可能です!", + "ens-username-connected": "このユーザ名はあなたが所有しており、あなたのチャットキーと接続されています。", + "ens-username-connected-continue": "続行して「チャットでENS名を表示する」設定を行います。", + "ens-username-connected-with-different-key": "ユーザ名を現在のあなたのチャットキーに紐付けるため処理が必要です。", + "ens-username-connection-confirmation": "処理が完了すると {{username}} が紐付けられます。", + "ens-username-hints": "4文字以上、英数字、小文字のみ", + "ens-username-invalid": "英数字のみ", + "ens-username-invalid-name-warning": "ENS登録手続きが無効な状態で終了したものがあります。その名前を取引に使用しないでください。support@ status.im までご連絡ください。", + "ens-username-owned": "✓このユーザ名はあなたが所有しています。 ", + "ens-username-owned-continue": "続行してこのユーザ名とあなたのチャットキーを紐付ける。", + "ens-username-registration-confirmation": "素晴らしい!処理が終わったら{{username}}は登録完了です。", + "ens-username-registration-invalid": "警告: 登録手続きが無効な状態で終了しました。この名前を取引に使用しないでください。support@status.im にご連絡ください。", + "ens-username-taken": "このユーザ名はすでに使われています :(", + "ens-username-you-can-follow-progress": "ウォレットの取引履歴で処理状況を確認できます。", + "ens-usernames": "ENS名", + "ens-usernames-details": "シンプルなあなただけのユーザ名を登録する", + "ens-want-custom-domain": "他のドメイン名を所有しています", + "ens-want-domain": "stateofus.eth のドメインを取得する", + "ens-welcome-hints": "ENS名は、複雑なアドレスをシンプルなあなただけのユーザ名に変換します。", + "ens-welcome-point-customize": "ENS名を登録することで、あなたのユーザ名(3つの単語)をシンプルなものに変更できます。「{{name}}」の代わりに「@ユーザ名」で表示できます。", + "ens-welcome-point-customize-title": "チャット名をカスタマイズする", + "ens-welcome-point-receive": "友達はチャット画面の中で簡単にあなたに資産を送ることができます。", + "ens-welcome-point-receive-title": "チャット画面で資産を受け取る", + "ens-welcome-point-register": "登録時にデポジットしたSNTは、1年後にENS名を返却して返金として受け取ることもできます。ユーザ名をそのまま維持する場合は、特に何もする必要はありません。", + "ens-welcome-point-register-title": "登録には 10 SNT が必要です", + "ens-welcome-point-simplify": "資産を送ってもらうときも、複雑なアドレス(0x ...から始まる文字列)ではなくシンプルなENS名で受け取ることができます。", + "ens-welcome-point-simplify-title": "ETHアドレスをシンプルにする", + "ens-welcome-point-verify": "すでにお使いのユーザ名がある場合も、次のステップで追加できます。", + "ens-welcome-point-verify-title": "すでにユーザ名をお持ちですか?", + "ens-your-username": "あなたのユーザ名", + "ens-your-usernames": "あなたのユーザ名", + "ens-your-your-name": "あなたのENS名", + "ensure-qr-code-in-focus-to-scan": "QRコードに焦点を合わせてください", + "ensure-qr-code-is-in-focus-to-scan": "QRコードに焦点を合わせてください", + "enter-12-words": "シードフレーズの12の英単語を半角スペースで区切って入力してください", + "enter-a-private-key": "秘密鍵を入力", + "enter-a-seed-phrase": "シードフレーズを入力", + "enter-address": "アドレスを入力", + "enter-channel": "チャンネルに入る", + "enter-contact-code": "ENS名またはチャットキーを入力", + "enter-pair-code": "ペアリングコードを入力", + "enter-pair-code-description": "ペアリングコードは、Keycardのセットアップ時に表示されたコードです。", + "enter-password": "パスワードを入力", + "enter-password-migration-prompt": "パスワードを入力して、連絡先、チャット、設定を鍵と一緒に移行します", + "enter-pin": "6桁のパスコードを入力", + "enter-puk-code": "PUKコードを入力", + "enter-puk-code-description": "6桁のパスコードがブロックされました。 \nパスコードをブロック解除するには、PUKコードを入力してください。", + "enter-recipient-address-or-username": "受取人のアドレスまたはユーザ名を入力します。", + "enter-seed-phrase": "シードフレーズを入力", + "enter-sync-code": "同期コードを入力", + "enter-url": "URLを入力", + "enter-user-pk": "ユーザ公開鍵を入力してください", + "enter-watch-account-address": "QRコードをスキャンする\nまたは\nアドレスを入力する", + "enter-word": "単語を入力", + "enter-your-code": "6桁のパスコードを入力", + "enter-your-password": "パスワードを入力", + "error": "エラー", + "error-loading-audio": "オーディオの読み込み中にエラーが発生しました", + "error-syncing-connection-failed": "おっと!接続に失敗しました。もう一度やり直してください", + "error-this-is-not-a-sync-qr-code": "おっと!これは同期QRコードではありません", + "error-unable-to-get-balance": "残高を取得できません", + "error-unable-to-get-prices": "通貨変換エラー。画面を更新してもう一度やり直してください。", + "error-unable-to-get-token-balance": "トークン残高を取得できません", + "errors": "エラー", + "eth": "ETH", + "ethereum-address": "イーサリアムアドレス", + "ethereum-node-started-incorrectly-description": "イーサリアムノードが誤った設定で起動されたため、アプリケーションを停止しています。ネットワークIDは{{network-id}}に設定されていますが、正しくは{{fetched-network-id}}です。", + "ethereum-node-started-incorrectly-title": "イーサリアムノードが正しく起動できませんでした", + "etherscan-lookup": "Etherscanで調べる", + "everyone": "全員", + "everyone-mention": "全員", + "expand-all": "すべて展開", + "experienced-web3": "Web3の経験はありますか?", + "export-account": "アカウントをエクスポート", + "export-key": "秘密鍵をエクスポートする", + "external-link": "外部リンク", + "external-storage-denied": "外部ストレージへのアクセスが拒否されました", + "failed": "失敗しました", + "faq": "よくある質問", + "fast": "Fast", + "favorite-communities": "お気に入りのコミュニティ", + "favourite": "お気に入り", + "favourite-description": "お気に入りに追加したウェブサイトがここに表示されます", + "favourites": "お気に入り", + "favourites-empty": "お気に入りに追加したアドレスがここに表示されます", + "featured": "Featured", + "feb": "2月", + "fee-cap": "手数料上限", + "fee-explanation": "トランザクションの最大の全体価格。ブロックの基本料金がこれを超える場合は、基本料金の低い次のブロックに含まれます。", + "fee-options": "推奨手数料オプション", + "fetch-community": "コミュニティを更新", + "fetch-messages": "↓メッセージを取得する", + "fetch-timeline": "読み込む", + "fetching-community": "コミュニティを更新...", + "find": "見つける", + "find-sync-code": "同期コードを見つける", + "find-your-friends": "ENSまたはチャットキーで友だちを見つける", + "finish": "完了", + "finishing-card-setup": "カードのセットアップを完了しています", + "fleet": "Fleet", + "fleet-settings": "Fleet設定", + "follow": "フォローする", + "follow-your-interests": "公開チャットに参加して新しい人たちと会話する", + "forgot-password": "パスワードを忘れた方はこちら", + "forgot-your-password-info-create-new-password": "新しいパスワードを作成する", + "forgot-your-password-info-create-new-password-description": "新しいパスワードを入力したらすべて完了です。新しいパスワードを使用できるようになります。", + "forgot-your-password-info-description": "パスワードを復旧するには、以下の手順に従います:", + "forgot-your-password-info-reinstall-app": "Statusアプリを再インストールする", + "forgot-your-password-info-reinstall-app-description": "ストアからアプリを再ダウンロードしてください。", + "forgot-your-password-info-remove-app": "Statusアプリを削除する", + "forgot-your-password-info-remove-app-description": "これにより、パスワードを含むすべてのデータがデバイスから消去されます。", + "forgot-your-password-info-signup-with-key": "既存のキーを使用して", + "forgot-your-password-info-signup-with-key-description": "シードフレーズまたはKeycardでアクセスします。", + "forgot-your-password-info-title": "パスワードをお忘れですか?", + "fr": "金", + "free": "↓ FREE", + "fri": "金", + "from": "From", + "from-capitalized": "From", + "gas-amount-limit": "ガス合計金額", + "gas-limit": "Gas limit", + "gas-price": "Gas price", + "gas-used": "ガス消費", + "gated": "Gated", + "generate-a-key": "鍵を生成", + "generate-a-new-account": "新規アカウントを作る", + "generate-a-new-key": "新規に鍵を作る", + "generate-account": "新規に鍵を作る", + "generate-an-account": "アカウントを追加", + "generate-keys": "鍵を生成", + "generate-keys-subtitle": "Statusの新しい自己主権型アイデンティティ", + "generate-new-key": "新規に鍵を作る", + "generate-scan-sync-code": "スキャン同期コードを生成", + "generating-codes-for-pairing": "プロダクトソフトウェアをダウンロードしています\nアンロックコードとペアリングコードを生成しています", + "generating-keys": "鍵を生成しています...", + "generating-mnemonic": "シードフレーズを生成しています", + "get-a-keycard": "Keycardを購入", + "get-started": "始める", + "get-status-at": "https:\/\/status.im でStatusを入手", + "get-stickers": "ステッカーを入手", + "getting-started-description": "Statusは、分散型テクノロジー、プライバシー重視のデザイン、Web3機能を組み合わせた、ユニークで安全なコミュニケーション体験を提供するメッセージングアプリです。\n\nStatusキーは、Web3での自己管理型アイデンティティの基盤です。これらは、安全に個人情報とIDにアクセスする手段として機能します。Statusを使用すると、一元管理された組織に依存することなく、データとデジタルIDを所有、制御、管理できます。\n\n次のいずれかのオプションを選択して、Statusプロフィールを作成します。", + "getting-started-generate-keys-description": "Statusでのアイデンティティを表す暗号鍵のペアを作成します。中央集権的なアプリとは異なり、Statusではあなたのプロフィール作成にユーザ名やメールアドレスを必要としません。代わりに、秘密鍵と公開鍵が使用されます。このオプションでは、新しいイーサリアムアドレスを作成します。", + "getting-started-generate-keys-from-recovery-phrase": "リカバリフレーズからキーを生成", + "getting-started-generate-keys-from-recovery-phrase-description": "既存のイーサリアムアドレスを使用して、Statusプロフィールを作成することができます。すでに非保管型のイーサリアムウォレット(メタマスクやトラストウォレットなど)を使用している場合、イーサリアムアドレスとリカバリフレーズをすでに持っています。\n\nキーは常にデバイスに安全に保存され、Statusパスワードによって保護されています。", + "getting-started-generate-keys-on-keycard": "Keycardにキーを生成する", + "getting-started-generate-keys-on-keycard-description": "Keycardは、Statusキーを安全に保管する物理的なカード(クレジットカードに似ています)です。Keycardを使用すると、デジタル資産とIDのセキュリティがさらに強化されます。このオプションでは、新しいイーサリアムアドレスを作成します。", + "getting-started-with-status": "Statusを始める", + "gif": "GIF", + "give-a-short-description": "簡単な説明を加えてください。", + "give-a-short-description-community": "簡単な説明を加えてください。", + "give-permissions-camera": "カメラを許可する", + "glossary": "用語集", + "go-to-settings": "設定に移動...", + "got-it": "わかりました", + "grant-face-id-permissions": "Face IDを利用する場合は、システム環境設定に移動し「Status → Face ID」が有効になっていることを確認してください", + "group-chat": "グループチャット", + "group-chat-admin": "管理者", + "group-chat-admin-added": "{{member}} が管理者になりました", + "group-chat-all-contacts-invited": "すべての連絡先がグループに参加しています。", + "group-chat-created": "{{member}} がグループ {{name}} を作成しました", + "group-chat-decline-invitation": "招待を辞退する", + "group-chat-member-added": "{{member}} が招待されました", + "group-chat-member-joined": "{{member}} がグループに参加しました", + "group-chat-member-removed": "{{member}} がグループを退出しました", + "group-chat-members-count": "{{selected}}\/{{max}} メンバー", + "group-chat-name-changed": "{{member}} がグループ名を {{name}} に変更しました", + "group-chat-no-contacts": "まだ連絡先がありません。 \n友達を招待してチャットを始めましょう", + "group-chat-not-member": "あなたはこのグループのメンバーではありません", + "group-details": "グループの詳細", + "group-info": "グループ情報", + "group-invite": "グループへの招待", + "group-invite-link": "グループ招待リンク", + "group-membership-request": "グループへの参加を要求しています", + "groups": "グループ", + "gwei": "Gwei", + "has-permissions": "アクセスする権限があります", + "hash": "ハッシュ", + "have-a-sync-code?": "同期コードをお持ちですか?", + "help": "ヘルプ", + "help-capitalized": "ヘルプ", + "help-center": "ヘルプセンター", + "help-improve-status": "Statusの改善にご協力ください", + "here-is-a-cat-in-a-box-instead": "代わりに箱の中の猫を紹介します", + "hide": "閉じる", + "hide-content-when-switching-apps": "スクリーンショットをブロックする", + "hide-content-when-switching-apps-ios": "プレビューを非表示", + "history": "履歴", + "history-nodes": "Statusノード", + "hold-card": "カードをスマートフォンの背面にあててください", + "home": "ホーム", + "hooks": "フック", + "how-it-works": "友達招待の手順", + "how-to-pair": "ペアリング方法", + "how-to-scan": "スキャンする方法", + "http-gateway-error": "リクエストが失敗しました", + "i-dont-have-status-on-another-device": "他の端末でStatusを使用していません", + "identicon-ring": "IDリング", + "identicon-ring-explanation": "プロフィール写真を囲むこのカラフルなリングは、あなたのチャットキーを表しています。", + "identifier": "識別子", + "identity-verification": "本人確認", + "identity-verification-request": "本人確認", + "identity-verification-request-sent": "要求", + "if-you-cancel": "キャンセルした場合も、いつでもこのコミュニティへの参加を再リクエストできます。", + "im-new": "初めてです", + "image": "画像", + "image-remove-current": "現在の写真を削除", + "image-source-gallery": "ギャラリーから選択", + "image-source-make-photo": "キャプチャ", + "image-source-title": "画像の編集", + "images": "画像", + "import": "インポートする", + "import-community": "コミュニティをインポートする", + "import-community-title": "コミュニティをインポートする", + "in": "Empty", + "in-contacts": "連絡先", + "include": "含む", + "incoming": "受信", + "incoming-transaction": "送信トランザクション", + "incorrect-code": [ + "str", + "コードが正しくありません。もう一度入力してください" + ], + "increase-gas": "手数料を追加", + "initialization": "初期化", + "input-data": "入力データ", + "install": "↓ インストール", + "instruction-after-qr-generated": "他のデバイスで [同期] 画面に移動し、[同期スキャン] を選択します。", + "insufficient-balance-to-cover-fee": "トランザクション手数料を補う残高がありません", + "intro-message1": "Statusへようこそ!このメッセージをタップしてパスワードを設定して始めよう!", + "intro-privacy-policy-note1": "Statusはいかなる個人情報も収集・共有・販売しません。以下に同意して続行する。", + "intro-privacy-policy-note2": "プライバシーポリシー", + "intro-text": "Statusは分散型ウェブへのゲートウェイです", + "intro-text1": "1対1で暗号化されたネットワークでは、メッセージを誰かに盗み見られる心配はありません", + "intro-text2": "世界中のどこでもデジタル資産を送受信できます。銀行口座は必要ありません。", + "intro-text3": "お気に入りのゲーム、SNS、取引所アプリを探して、自分のデータを自分だけのものにしよう。", + "intro-title1": "完全にプライベートなコミュニケーション", + "intro-title2": "セキュアな暗号資産ウォレット", + "intro-title3": "分散型アプリ", + "intro-wizard-text1": "いくつかの鍵を使ってあなたのアカウントを管理します。鍵はお使いのデバイスに保存され、あなただけが使用することができます。", + "intro-wizard-text2": "こちらはチャット用のあなたの名前と鍵になります。好きなものを1つを選んでください。これは後で変更できません。", + "intro-wizard-text3": "Keycardをお持ちの場合は、セキュリティを強化するためにKeycardに鍵を保管してください。", + "intro-wizard-text4": "鍵を暗号化し保護する", + "intro-wizard-text6": "Statusは新着メッセージを通知します。これは後から通知設定で変更できます。", + "intro-wizard-title-alt4": "パスワードを作成", + "intro-wizard-title-alt5": "パスワードを確認", + "intro-wizard-title1": "はじめに鍵を取得する", + "intro-wizard-title2": "チャット名を選ぶ", + "intro-wizard-title3": "鍵の保管場所を選択", + "intro-wizard-title4": "6桁のパスコードを作成する", + "intro-wizard-title5": "パスコードを確認", + "intro-wizard-title6": "通知を有効にする", + "introduce-yourself": "簡単なメッセージで自己紹介", + "invalid-address-qr-code": "スキャンしたQRコードに有効なアドレスが含まれていません", + "invalid-ens-or-key": "無効な ENS またはチャット キー", + "invalid-format": "無効な形式\n {{format}}の形式である必要があります", + "invalid-key-confirm": "適用する", + "invalid-key-content": "ファイルが破損しているため、複数アカウントのデータベースが暗号化できません。回復する方法はありません。キャンセルボタンを押しても何も起こりません。{{erase-multiaccounts-data-button-text}}ボタンを押すと複数アカウントのデータベースは削除され、複数アカウントのロックが解除されます。その場合、複数アカウントのデータは消失します。", + "invalid-number": "無効な数字", + "invalid-pairing-password": "無効なペアリングパスワード", + "invalid-public-chat-topic": "無効な公開チャットトピック", + "invalid-range": "フォーマットが無効です。 {{min}}と{{max}}の間にする必要があります", + "invalid-username-or-key": "無効なユーザ名またはチャットキー", + "invite": "招待する", + "invite-button": "招待する", + "invite-chat-accept": "受け入れる", + "invite-chat-accept-join": "承諾して参加する", + "invite-chat-intro": "友達からStatusへの招待がありました。初めての方は初回特典のトークンを受け取れます。トークンを使ってステッカーやENS名を購入してみましょう。", + "invite-chat-name": "友達紹介", + "invite-chat-pending": "ペンディング", + "invite-chat-rule": "受け入れると友達にも紹介ボーナスがもらえます", + "invite-chat-starter-pack": "スターターパック", + "invite-contacts": "連絡先リストから招待する", + "invite-friends": "友達を招待", + "invite-friends-and-family": "友人や家族をStatusに招待する", + "invite-friends-to-status": "友だちをStatusに招待する", + "invite-instruction-fifth": "紹介ボーナスはいつでも受け取ることができます。", + "invite-instruction-first": "友達に招待リンクを送って、友達がStatusをダウンロードして参加します。", + "invite-instruction-fourth": "あなたは紹介ボーナスを受け取り、友達はスターターパックを受け取ります", + "invite-instruction-second": "友達がStatusをダウンロードしてアカウントを作成します。", + "invite-instruction-third": "友達とのチャットが開始されたときに紹介ボーナスが反映されます。", + "invite-people": "招待する", + "invite-people-from-contacts": "連絡先リストから招待する", + "invite-privacy-policy-public": "招待リンクを通じてStatusをインストールしました。このチャットに参加することで招待者を紐付け、以下の内容に同意します。", + "invite-privacy-policy1": "お客様が紹介プログラムを利用するにあたり、以下の規約を承諾するものとします。", + "invite-privacy-policy2": "利用規約", + "invite-public-chat-home": "招待", + "invite-public-chat-intro": "初回特典のトークンを受け取れます。トークンを使ってステッカーやENS名を購入してみよう。", + "invite-receive-account": "紹介ボーナスを受け取るアカウント", + "invite-reward": "友達を紹介するごとにボーナスがもらえます!", + "invite-reward-friend": "友達:", + "invite-reward-friend-description": "友達は{{reward}}を含むスターターパックを受け取ります", + "invite-reward-friend-name": "スターターパック", + "invite-reward-you": "あなた:", + "invite-reward-you-description": "友達を招待すると、紹介ボーナスとして{{reward}}を受け取れます。受け取ったボーナスは、ステッカーやENS名の購入に利用できます。", + "invite-reward-you-name": "紹介ボーナス", + "invite-select-account": "紹介ボーナスを受け取るアカウントを選択してください", + "invite-warning": "このプロモーションは、米国の居住者ではないAndroidデバイスのユーザのみが対象です。友達は7日以内に招待を確認する必要があります。", + "invited": "招待済", + "italic": "イタリック", + "jan": "1月", + "join": "参加", + "join-a-community": "またはコミュニティに参加する", + "join-group-chat": "グループに参加", + "join-group-chat-description": "{{username}} があなたをグループ {{group-name}} に招待しました", + "join-me": "Statusに参加しよう!: {{url}}", + "join-more-users": "{{user1}}、 {{user2}}、他{{left-count}}名を参加させる", + "join-new-private-chat": "新しいプライベート チャットを開始する", + "join-new-public-chat": "公開チャットに参加", + "join-one-user": "{{user}}を参加させる", + "join-open-community": "コミュニティに参加", + "join-request": "参加リクエスト", + "join-two-users": "{{user1}}と{{user2}}を参加させる", + "joined": "参加中", + "joined-community": "{{community}} に参加しました", + "joined-group-chat-description": "あなたは {{username}} の招待で {{group-name}} に参加しました", + "jul": "7月", + "jun": "6月", + "key": "鍵", + "key-managment": "鍵の管理", + "key-on-device": "秘密鍵はこのデバイスに保存されています。", + "keycard": "Keycard", + "keycard-access-reset": "Keycardがリセットされました", + "keycard-applet-install-instructions": "アプレットをインストールするには https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation の手順に従ってください。", + "keycard-awaiting-description": "お使いのスマートフォン(またはNFCリーダー)でカードを読み取ります。", + "keycard-awaiting-title": "探しています...", + "keycard-backup": "バックアップカードの作成", + "keycard-backup-success-body": "バックアップカードの作成に成功しました。メインカードと同じアカウントで使用することができます。", + "keycard-backup-success-title": "バックアップ成功", + "keycard-blocked": "Keycardがブロックされました。\n引き続き使用するにはカードをリセットする必要があります。", + "keycard-can-use-with-new-passcode": "新たにパスコードを設定してカードを使用できます", + "keycard-cancel-setup-text": "この操作はKeycardのセットアップをキャンセルします。Keycardを使用するにはセットアップを完了させることを強くお勧めします。本当にキャンセルしますか?", + "keycard-cancel-setup-title": "キャンセルしますか?", + "keycard-connected-description": "カードを動かさないでください", + "keycard-connected-title": "接続済み", + "keycard-desc": "キーカードをお持ちですか?そこにあなたの鍵を保管してください。トランザクション時に必要になります", + "keycard-dont-ask-card": "サインインにカードを要求しない", + "keycard-enter-new-passcode": "新しいパスコードを入力してください {{step}} \/ 2", + "keycard-error-description": "カードをもう一度接続して続行します", + "keycard-error-title": "接続が失敗しました", + "keycard-factory-reset": "カードを初期状態に戻す", + "keycard-factory-reset-text": "これを実行すると、カードに保存されているシードフレーズが削除されます。このKeycardで使用するシードフレーズのバックアップを保存したことを確認してください。", + "keycard-factory-reset-title": "本当に初期化しますか?", + "keycard-free-pairing-slots": "キーカードには{{n}}個の空きペアリングスロットがあります", + "keycard-has-multiaccount-on-it": "このカードは登録済みです。1つのカードには1つの鍵のみを保持できます。", + "keycard-init-description": "お使いのスマートフォン(またはNFCリーダー)をカードにかざしてください。", + "keycard-init-title": "カードを探しています...", + "keycard-is-blocked-details": "パスコード入力に複数回失敗したため、アカウントにアクセスできなくなりました。", + "keycard-is-blocked-instructions": "アカウントにアクセスするには、カードを初期化する必要があります。下のボタンをタップして手続きを開始してください。その際、シードフレーズが必要になります。", + "keycard-is-blocked-title": "キーカードがロックされました", + "keycard-is-frozen-details": "あなたの資産を保護するためカードがロックされました。カードをリセットすることで再度利用が可能になります。PUKまたはシードフレーズを用いて初期化してください。", + "keycard-is-frozen-factory-reset": "シードフレーズで初期化する", + "keycard-is-frozen-reset": "PUKでリセットする", + "keycard-is-frozen-title": "Keycardがロックされました", + "keycard-onboarding-finishing-header": "完了しています", + "keycard-onboarding-intro-header": "Keycardに鍵を保存する", + "keycard-onboarding-intro-text": "準備ができました。アカウントの安全性を確保するため以下のステップを進みます。", + "keycard-onboarding-mnemonic-text": "シードフレーズを書き留めるため紙とペンを用意してください。", + "keycard-onboarding-pairing-header": "カードをペアリング中", + "keycard-onboarding-pin-text": "Keycardへのアクセスを保護するため、6桁のパスコードを作成します。", + "keycard-onboarding-preparing-header": "カードを準備中", + "keycard-onboarding-puk-code-header": "コードを書き留めて、安全な場所で保管してください", + "keycard-onboarding-recovery-phrase-description": "シードフレーズを使ってこのアカウントを復元することができます。シードフレーズを書き留め、安全な場所で保管してください。", + "keycard-onboarding-recovery-phrase-header": "シードフレーズをバックアップ", + "keycard-onboarding-recovery-phrase-text": "これはあなたの鍵を生成するのに使われる魔法の種です。他の誰にも見られないようにしてください。", + "keycard-onboarding-start-header": "開始するにはカードをスマートフォンの背面に当てたままにしてください", + "keycard-onboarding-start-step1": "パスコードを作成", + "keycard-onboarding-start-step1-text": "鍵を暗号化する6桁のパスコードを作成します。このプロセスには約1分かかります。", + "keycard-onboarding-start-step2": "PUKコードとペアリングコードを書き留めてください", + "keycard-onboarding-start-step2-text": "紙とペンを用意してください。このプロセスには約1分かかります。", + "keycard-onboarding-start-step3": "シードフレーズのバックアップ", + "keycard-onboarding-start-step3-text": "紙とペンを用意してください。このプロセスには約1分かかります。", + "keycard-onboarding-start-text": "セットアップ中はカードとスマートフォンを接触させたままにしてください。このプロセスには4分前後かかります。", + "keycard-processing-description": "カードを動かさないでください", + "keycard-processing-title": "処理中...", + "keycard-recover": "カードを紛失、凍結していませんか?", + "keycard-recover-text": "シードフレーズを用いることで、このアカウントに関連付けた新しいKeycardを作成することができます。新しいKeycardを使うのも、凍結中のKeycardを初期化して使うこともできます。", + "keycard-recover-title": "このアカウントで新しいカードを作成しますか?", + "keycard-recovery-intro-button-text": "復元を開始", + "keycard-recovery-intro-header": "Keycardに保存された鍵を復元します", + "keycard-recovery-intro-text": "以前にKeycardを使用して鍵を生成し、その鍵をこのデバイスで使用したい場合は、次のステップに進んでください。", + "keycard-recovery-no-key-header": "復元できるものがありません", + "keycard-recovery-no-key-text": "このKeycardには鍵が保存されていません。使用するためには新しい鍵を生成してKeycardを鍵の保存先に選んでください", + "keycard-recovery-phrase-confirm-header": "シードフレーズを確認", + "keycard-recovery-phrase-confirmation-text": "最終確認です。Keycardの紛失等でアクセスできなくなった場合には、このシードフレーズを用いてキーへのアクセスを行います。他の誰かに見られないようシードフレーズを書き留めた後は安全な場所で保管してください。", + "keycard-recovery-phrase-confirmation-title": "シードフレーズを書き留めましたか?", + "keycard-recovery-success-header": "鍵の復元に成功しました", + "keycard-redeem-title": "受け取るアカウント", + "keycard-redeem-tx": "資産を受け取る", + "keycard-redeem-tx-desc": "カードをタップして資産を受け取ります", + "keycard-reset-passcode": "パスコードをリセット", + "keycard-success-description": "今すぐカードを削除できます", + "keycard-success-title": "成功", + "keycard-unauthorized-operation": "この操作を実行する権限がありません。 \n有効なカードをタップしてもう一度やり直してください。", + "keycard-upsell-subtitle": "さらなるセキュリティと使いやすさ", + "keypair-title": "{{name}}のデフォルトキーペア", + "keys-saved": "キーが保存されました!", + "kicked": "Kicked", + "language": "言語", + "last-backup-performed": "最後に実行されたバックアップ:", + "last-transaction": "最後のトランザクション", + "learn-more": "もっと詳しく知る", + "learn-more-about-keycard": "Keycardについてもっと知る", + "leave": "退出", + "leave-chat": "チャットを退出する", + "leave-chat-confirmation": "チャットの履歴がデバイスから削除されます。チャット再開時に履歴を復元することはできません。", + "leave-community": "コミュニティを退会する", + "leave-community-message": "お別れするのは寂しいですが、いつでも戻ってきてください!", + "leave-community?": "コミュニティから退出しますか?", + "leave-confirmation": "{{chat-name}}から退出する", + "leave-group": "グループを退出", + "leave-group?": "退出しますか?", + "left": "退出しました", + "left-community": "{{community}} を退出しました", + "les-ulc": "LES \/ ULC", + "lets-go": "始める", + "lifestyle": "ライフスタイル", + "light": "ライト", + "limit": "限度額", + "link-preview-loading-message": "プレビューを生成", + "link-to-community": "コミュニティへのリンク", + "link-to-profile": "プロフィールへのリンク", + "link-to-profile-copied": "プロフィールへのリンクがクリップボードにコピーされました", + "linked-on": "{{date}} にリンクされました", + "load-messages-before": "{{date}}より前", + "load-more-messages": "↓もっとメッセージを取得する", + "load-more-timeline": "さらに読み込む", + "loading": "読み込み中...", + "local-notifications": "ローカル通知", + "local-notifications-subtitle": "バックグラウンドサービスを有効にする", + "local-pairing-experimental-mode": "ローカルペアリングモード (アルファ版)", + "lock-app-with": "アプリをロックする", + "log-in": "ログイン", + "log-level": "ログレベル", + "log-level-settings": "ログレベル設定", + "logged-in": "ログインしました", + "logging": "ログ", + "logging-enabled": "ログが有効ですか?", + "login-pin-description": "6桁のパスコードを入力してロック解除します", + "logout": "ログアウト", + "logout-app-content": "アカウントをログアウトします。再度ロック解除する際、選択したネットワークが使われます。", + "logout-are-you-sure": "本当にログアウトしますか?", + "logout-key-management": "キー管理にアクセスするには、ログアウトする必要があります。", + "logout-title": "ログアウトしますか?", + "looking-for-cards": "カードを探しています...", + "lost-connection": "接続が切れました", + "low-tip": "チップが少なすぎます", + "lower-than-average-tip": "平均チップを下回っています", + "mail-should-be-configured": "メールクライアントを構成する必要があります", + "mailserver-address": "Statusノードアドレス", + "mailserver-automatic": "自動選択", + "mailserver-automatic-switch-explanation": "利用可能な最速のStatusノードを選択します", + "mailserver-connection-error": "Statusノードに接続できませんでした", + "mailserver-content": "メッセージをルーティングおよび保存するStatusネットワーク内のノード。それらの情報はノード内に最大30日間保存されます。", + "mailserver-details": "Statusノードの詳細", + "mailserver-error-content": "選択したStatusノードにアクセスできませんでした。", + "mailserver-error-title": "Statusノードへの接続エラー", + "mailserver-format": "enode:\/\/{enode-id}:{パスワード}@{ipアドレス}:{ポート}", + "mailserver-pick-another": "別のStatusノードを選択する", + "mailserver-reconnect": "Statusノードに接続できませんでした。タップして再接続してください", + "mailserver-request-error-content": "Statusノードから以下のエラーが返されました:{{error}}", + "mailserver-request-error-status": "履歴の取得中にエラーが発生しました。詳細についてはログを確認してください。", + "mailserver-request-error-title": "Statusノードリクエストエラー", + "mailserver-request-retry": "リクエストを再試行する", + "mailserver-retry": "再試行", + "mailserver-title": "Statusノード", + "main-account": "メインアカウント", + "main-currency": "メイン通貨", + "main-networks": "メインネット", + "main-wallet": "メインウォレット", + "mainnet-network": "メインネット", + "make-admin": "管理者にする", + "make-moderator": "モデレーターにする", + "make-one-it-is-easy-we-promise": "簡単に作ってみましょう!", + "manage-connections": "アプリケーションの接続を管理する", + "manage-keys-and-storage": "鍵とストレージを管理する", + "manage-members": "メンバーの管理", + "mar": "3月", + "mark-all-notifications-as-read": "すべての通知を既読にする", + "mark-all-read": "すべて既読にする", + "mark-as-read": "既読にする", + "mark-untrustworthy": "信頼できないとしてマークする", + "mark-user-untrustworthy": "{{username}}を信頼できないとマークする", + "master-account": "マスターアカウント", + "max-fee": "最大料金", + "max-fees": "最大料金", + "max-priority-fee": "最大優先料金", + "maximum-fee": "最大料金", + "maximum-fee-desc": "トランザクション全体の最大料金です。現在のブロックの基本料金がこれを超えた場合、取引は低い基本料金で次のブロックに含まれます。", + "may": "5月", + "maybe-later": "後にする", + "member-ban": "BANされたメンバー", + "member-kick": "メンバーをキックする", + "members": { + "other": "メンバー" + }, + "members-active": { + "other": "メンバー" + }, + "members-active-none": "メンバーがいません", + "members-count": "{{count}}メンバー", + "members-label": "メンバー", + "members-limit-reached": "メンバー数の上限に達しました", + "members-title": "メンバー", + "membership": "メンバーシップ", + "membership-approval": "承認を必要とする", + "membership-approval-description": "コミュニティには無料で参加できますが、新規メンバーはコミュニティ作成者の承認が必要です", + "membership-button": "メンバー参加条件", + "membership-declined": "グループへの参加が拒否されました", + "membership-description": "グループへの参加にはグループ管理者の承認が必要です", + "membership-ens": "ENSユーザ名が必要", + "membership-ens-description": "コミュニティに参加するには ENS ユーザ名が必要です", + "membership-free": "要件はありません", + "membership-free-description": "コミュニティに誰でも無料で参加できます", + "membership-invite": "他のメンバーからの招待が必要", + "membership-invite-description": "コミュニティは既存メンバーからの招待によってのみ参加できます。", + "membership-none": "なし", + "membership-none-placeholder": "新規メンバーの参加に参加条件を設定することができます。これはいつでも変更することができます。", + "membership-request-denied": "参加リクエストが却下されました", + "membership-request-pending": "参加リクエスト保留中", + "membership-requests": "参加リクエスト", + "membership-title": "メンバー参加条件", + "mention": "メンション", + "mentions": "メンション", + "message": "メッセージ", + "message-deleted": "メッセージを削除しました", + "message-deleted-for-everyone": "全員のメッセージを削除しました", + "message-deleted-for-everyone-count": { + "other": "全員のメッセージを削除しました" + }, + "message-deleted-for-you": "メッセージを削除しました", + "message-deleted-for-you-count": { + "other": "メッセージを削除しました" + }, + "message-not-sent": "メッセージが送信されていません", + "message-options-cancel": "キャンセル", + "message-reply": "返信", + "messages": "メッセージ", + "messages-from-contacts-only-subtitle": "連絡先に追加した人だけが、あなたと新しいチャットを開始したり、あなたをグループに招待できます", + "messages-gap-warning": "一部のメッセージが表示されない場合があります", + "might-break": "いくつかのDAppsが機能しない可能性があります", + "migration-successful": "移行完了", + "migration-successful-text": "Keycardへのアカウント移行が完了しました。", + "migrations-failed-content": "{{message}}\nスキーマバージョン:初期 {{initial-version}}、現在 {{current-version}}、最終 {{last-version}}\n\nデータベースエラーが発生しました。あなたの資産とチャットキーは安全です。チャットや連絡先などその他のデータは復元できません。{{erase-multiaccounts-data-button-text}}ボタンを押すと、その他のデータがすべて削除され、あなたの資産にアクセスしたり、メッセージを送信することができます。", + "miners-higher-fee": "手数料を高く設定することで、より早く取引が処理されます。", + "minimum-received": "最低受取額", + "mint": "ミント", + "mo": "月", + "mobile": "モバイル", + "mobile-network-ask-me": "モバイルネットワークを使用するときは尋ねる", + "mobile-network-continue-syncing": "同期を続ける", + "mobile-network-continue-syncing-details": "この設定は後で変更できます", + "mobile-network-go-to-settings": "設定に移動", + "mobile-network-settings": "モバイルデータ", + "mobile-network-sheet-configure": "同期設定の詳細はこちらで確認できます。", + "mobile-network-sheet-offline": "メッセージが同期できません", + "mobile-network-sheet-offline-details": "モバイルネットワークでの同期がオフになっています。", + "mobile-network-sheet-remember-choice": "この設定を保存する", + "mobile-network-sheet-settings": "設定", + "mobile-network-start-syncing": "同期を開始", + "mobile-network-stop-syncing": "同期を停止する", + "mobile-network-stop-syncing-details": "Wi-Fiに接続するまで停止しますか?", + "mobile-network-use-mobile": "モバイルデータを使用", + "mobile-network-use-mobile-data": "Statusはチャットとウォレットの同期に大量のデータ通信を使用します。", + "mobile-network-use-wifi": "Wi-Fiのみ", + "mobile-syncing-sheet-details": "Statusはチャットとウォレットの同期に大量のデータ通信を使用します。", + "mobile-syncing-sheet-title": "モバイルデータを使用して同期する", + "mon": "月", + "more": "もっとみる", + "move-and-reset": "移動してリセットする", + "move-keystore-file": "キーストアファイルを移動する", + "move-keystore-file-to-keycard": "キーストアファイルをKeycardに移しますか?", + "multiaccount-exists-content": "このアカウントのキーはすでに存在します。再度キーを追加することはできません。もしパスワード、パスコード、キーカードを紛失した場合は、アプリをアンインストールし、シードフレーズを入力してキーを再インストールしてアクセスしてください。", + "multiaccount-exists-title": "このアカウントのキーはすでに存在します。", + "multiaccounts-recover-enter-phrase-text": "12、15、18、21、または24単語。各単語はシングルスペースで区切ってください。", + "multiaccounts-recover-enter-phrase-title": "シードフレーズを入力", + "music": "音楽", + "mutal-contacts": "友だち", + "mute": "ミュート", + "mute-channel": "チャンネルをミュート", + "mute-chat": "チャットをミュート", + "mute-chat-capitialized": "チャットをミュート", + "mute-community": "コミュニティをミュート", + "mute-for-1-hour": "1時間", + "mute-for-1-week": "7日間", + "mute-for-15-mins": "15分間", + "mute-for-8-hours": "8時間", + "mute-group": "グループをミュート", + "mute-till-unmute": "電源を入れ直すまで", + "mutual-contact-requests": "友だちリクエスト", + "my-accounts": "アカウント", + "my-accounts-empty": "利用可能なアカウントがここに表示されます", + "my-albums": "マイアルバム", + "my-profile": "マイプロフィール", + "my-status": "マイステータス", + "n-photos": "{{count}}枚の写真", + "name": "名前", + "name-ens-or-address": "名前、ENS、またはアドレス", + "name-of-token": "トークンの名前", + "name-optional": "名前(オプション)", + "name-your-channel": "チャネルに名前を付ける", + "name-your-channel-placeholder": "チャネル名", + "name-your-community": "コミュニティ名", + "name-your-community-placeholder": "キャッチーな名前", + "need-help": "ヘルプが必要ですか?", + "negative": "ネガティブ", + "network": "ネットワーク", + "network-chain": "ネットワークチェーン", + "network-details": "ネットワーク詳細", + "network-fee": "ネットワーク手数料", + "network-id": "ネットワークID", + "network-info": "ネットワーク情報", + "network-invalid-network-id": "指定されたネットワークIDはRPC URLによるネットワークIDと一致していません", + "network-invalid-status-code": "無効なステータスコード:{{code}}", + "network-invalid-url": "ネットワークURLが無効です", + "network-settings": "ネットワーク設定", + "never": "閉じる", + "new": "New", + "new-category": "新規カテゴリー", + "new-chat": "新しいチャットを開始", + "new-community-title": "新規コミュニティ", + "new-contact": "新しい連絡先", + "new-contract": "新しいコントラクト", + "new-favourite": "新しいお気に入り", + "new-group": "新しいグループ", + "new-group-chat": "新しいグループチャット", + "new-messages-header": "新着メッセージ", + "new-network": "新しいネットワーク", + "new-password": "新しいパスワード", + "new-pin-description": "新しい6桁のパスコードを入力", + "new-public-group-chat": "公開チャットに参加", + "new-puk-description": "新しい12桁のPUKを入力", + "new-status": "新しいステータス", + "new-tab": "新しいタブ", + "new-to-status": "Statusは初めてです", + "new-ui": "新しいUI", + "next": "次へ", + "nickname": "ニックネーム", + "nickname-description": "ニックネームは、あなたが相手を識別しやすくするために使うものです。相手にはニックネームは知らされません。", + "nickname-visible-to-you": "ニックネームはあなただけに表示されます", + "no": "いいえ", + "no-activity": "活動なし", + "no-collectibles": "利用可能なコレクションはありません", + "no-collectibles-description": "Don't be a bored ape", + "no-communities": "コミュニティがありません", + "no-communities-description-strikethrough": "閉じる", + "no-dapps": "接続されているdAppsがありません", + "no-keycard-applet-on-card": "カードにKeycardアプレットがありません。", + "no-messages": "メッセージがありません", + "no-other-accounts": "他のアカウントはありません", + "no-pairing-slots-available": "このカードはすでに5台のデバイスとペアリング済みのため、ペアリングできません。いずれかのペアリング済みデバイスでログインし、カードのペアリングを解除してください", + "no-permissions": "権限がありません", + "no-pinned-messages": "ピン留めされたメッセージはありません", + "no-pinned-messages-community-desc": "ピン留めされたメッセージはありません", + "no-pinned-messages-desc": "ピン留めされたメッセージはありません", + "no-recent-transactions": "最近の取引はありません", + "no-result": "結果がありません", + "no-saved-addresses": "保存されたアドレスはありません", + "no-thanks": "結構です", + "no-tokens-found": "トークンが見つかりません", + "node-address": "ノードアドレス", + "node-details": "ノードの詳細", + "node-info": "ノード情報", + "node-version": "ノードバージョン", + "nodes-disabled": "Statusノードが無効", + "non-archival-node": "RPC エンドポイントはアーカイブリクエストをサポートしていません。ローカルの履歴が不完全な場合があります。", + "non-contacts": "連絡先なし", + "nonce": "Nonce", + "none": "なし", + "normal": "通常", + "not-a-chatkey": "これはチャットキーではありません", + "not-applicable": "未署名のトランザクションには適用されません", + "not-connected-nodes": "Statusノードに接続されていません", + "not-connected-to-peers": "どのピアにも接続されていません", + "not-enough-snt": "SNTが足りません", + "not-found": "Not found", + "not-keycard-text": "使用されたカードはKeycardではありません。Keycardを購入してください。", + "not-keycard-title": "Keycardではありません", + "not-registered": "未登録", + "notification-settings": "通知設定", + "notifications": "通知", + "notifications-marked-as-read": "{{count}}件の既読通知", + "notifications-non-contacts": "連絡先以外からの通知", + "notifications-preferences": "通知設定", + "notifications-servers": "通知サーバ", + "notifications-switch": "通知を表示する", + "notifications-transactions": "ウォレットのトランザクション", + "notify": "通知する", + "nov": "11月", + "now": "今", + "oct": "10月", + "off": "Off", + "off-status-tree": "Off Status tree", + "offline": "オフライン", + "offline-messaging-use-history-explanation": "Statusノードを有効にすることで、アプリを閉じている間に受信できなかったメッセージを読み込みに行くことができます。有効にすると、StatusノードはあなたのIPアドレスを取得します。無効にすると、アプリを閉じている間はメッセージを受信せず、後でアプリを開いたときにメッセージが表示されません。", + "offline-messaging-use-history-nodes": "Statusノードを使用する", + "ok": "OK", + "ok-continue": "続行する", + "ok-got-it": "わかりました", + "ok-save-pass": "パスワードを保存する", + "okay": "オーケー", + "on": "On", + "on-device": "On device", + "on-keycard": "On Keycard", + "on-status-tree": "On Status tree", + "once-enabled-share-metadata": "プレビューを有効にした場合、ウェブサイト保有者にあなたのメタデータが共有されます。", + "one-day": "1日", + "one-month": "1ヶ月", + "one-month-int": "1ヶ月", + "one-week": "1週間", + "one-week-int": "1週間", + "one-year": "1年", + "online": "オンライン", + "online-now": "オンラインです", + "only-6-images": "メッセージに追加できる画像は6枚までです", + "only-mentions": "@メンションのみ", + "oops-wrong-password": "おっと、パスワードが間違っています!", + "open": "開く", + "open-chat": "チャットを開く", + "open-dapp": "ÐAppを開く", + "open-dapp-store": "ÐAppsを見つける", + "open-home": "開く", + "open-in-new-tab": "新しいタブで開く", + "open-membership": "オープンメンバーシップ", + "open-nfc-settings": "NFC設定を開く", + "open-on-block-explorer": "ブロックエクスプローラで開く", + "open-status-on-your-other-device": "他のデバイスでStatusを開く", + "opened": "Opened", + "opening-buy-crypto": "{{site}}を開いています", + "optimal": "最適", + "optional": "オプション", + "or": "または", + "or-tap": "またはタップ", + "origin": "Origin", + "outgoing": "送信", + "outgoing-transaction": "送金", + "owner": "オーナー", + "page-camera-request-blocked": "カメラが無効になっています。設定でカメラを許可してください。", + "page-would-like-to-use-camera": "カメラの使用を許可しますか", + "pair": "ペア", + "pair-card": "このデバイスにペアリングする", + "pair-code": "ペアコード", + "pair-code-explanation": "カードを別のデバイス(最大5台)とペアリングし、同じKeycardでロック解除やトランザクションの署名に使うことができます。", + "pair-code-placeholder": "ペアリングコード...", + "pair-devices": "デバイスのペアリング", + "pair-this-card": "このカードをペアリングする", + "pair-this-device": "デバイスの同期", + "pair-this-device-description": "デバイスをペアリングして、デバイス間で連絡先とチャットを同期します", + "paired-devices": "ペアリング済みデバイス", + "pairing": "ペアリング", + "pairing-card": "カードをペアリング", + "pairing-changed": "ペアリングコードが変更されました", + "pairing-code-placeholder": "ペアリングコード...", + "pairing-code_error1": "ペアリングコードが一致しません。", + "pairing-go-to-installation": "ペアリング設定に進む", + "pairing-maximum-number-reached-content": "新しいデバイスを有効化する前に、デバイスの1つを無効にしてください。", + "pairing-maximum-number-reached-title": "最大デバイス数に達しました", + "pairing-new-installation-detected-content": "新しいデバイスが検出されました。 \nデバイスを正しく使用するためには、使用する前にペアリングして有効にすることが重要です。 \nデバイスをペアリングするには、設定画面のデバイス設定に移動してください。", + "pairing-new-installation-detected-title": "新しいデバイスが検出されました", + "pairing-no-info": "情報なし", + "pairing-please-set-a-name": "デバイスの名前を設定してください。", + "passphrase": "パスフレーズ", + "password": "パスワード", + "password-creation-confirm": "パスワードを再入力", + "password-creation-disclaimer": "パスワードが復旧できないことを理解しました", + "password-creation-dont-match": "パスワードが一致しません", + "password-creation-hint": "最低10文字", + "password-creation-match": "パスワードが一致しました", + "password-creation-placeholder-1": "パスワードを入力", + "password-creation-placeholder-2": "パスワードを再入力", + "password-creation-subtitle": "Statusにログインしてトランザクションに署名するには", + "password-creation-tips-1": "小文字", + "password-creation-tips-2": "大文字", + "password-creation-tips-3": "数字", + "password-creation-tips-4": "シンボル", + "password-creation-tips-title": "パスワードを改善するためのヒント", + "password-creation-title": "プロフィールパスワードの作成", + "password-description": "最低6文字です。Statusを開く時とトランザクションを確認する時にこのパスワードが必要になります。", + "password-mismatch": "再入力したパスワードと一致しません", + "password-placeholder": "パスワード...", + "password-placeholder2": "パスワードを確認", + "password-reset-in-progress": "パスワードの変更...", + "password-reset-success": "パスワードリセット完了", + "password-reset-success-message": "再度サインインしてください", + "password_error1": "パスワードが一致しません。", + "paste": "貼り付け", + "paste-json": "JSONを貼り付け", + "pay-to-chat": "チャットに支払う", + "peer-content": "あなたがお使いのデバイスはすべて同じStatusチャットネットワークに接続されます。1つのユーザ名を複数のデバイスで使うことができます。", + "peer-title": "デバイス", + "peer-to-peer": "ピアツーピア", + "peers": "デバイス", + "peers-count": "ピア数", + "peers-stats": "ピア統計", + "pending": "ペンディング", + "pending-confirmation": "承認待ち...", + "pending-invitations": "保留中のリクエスト", + "pending-requests": "保留中のリクエスト", + "per-gas-price-limit": "ガスあたりの手数料", + "per-gas-tip-limit": "ガスあたりのチップ金額", + "perform-backup": "バックアップを実行", + "permissions": "許可", + "phone-e164": "インターナショナル1", + "photo-caps": "写真", + "photo-saved": "写真がデバイスに保存されました", + "photos": "写真", + "photos-access-error": "写真にアクセスするには、システム設定から「Status → 写真」が有効になっているか確認してください。", + "pin": "ピン留め", + "pin-changed": "6桁のパスコードが変更されました", + "pin-code": "6桁のパスコード", + "pin-limit-reached": "ピン数の上限に達しました。先に前のメッセージのピンを外してください。", + "pin-mismatch": "パスコードが一致しません", + "pin-one-attempt": " 1回 ", + "pin-one-attempt-blocked-after": "間違えるとKeycardがロックされます。", + "pin-one-attempt-blocked-before": "注意してください、あと", + "pin-one-attempt-frozen-after": "間違えるとKeycardがロックされます。", + "pin-one-attempt-frozen-before": "注意してください、あと", + "pin-retries-left": "あと{{number}}回試行できます", + "pin-to-channel": "チャンネルにピン留めする", + "pin-to-chat": "チャットにピン留めする", + "pinned-a-message": "メッセージを固定しました", + "pinned-by": "Pinned by", + "pinned-messages": "ピン留めされたメッセージ", + "pinned-messages-2": "ピン留めされたメッセージ", + "pinned-messages-count": { + "other": "ピン留めされたメッセージ" + }, + "pinned-messages-empty": "ピン留めされたメッセージがここに表示されます。メッセージを固定するには、メッセージを長押しし「ピン」をタップします。", + "podcasts": "ポッドキャスト", + "positive": "ポジティブ", + "powered-by-paraswap": "Powered by Paraswap", + "preference": "外観モード", + "press": "プレス", + "preview-privacy": "プライバシーモードのプレビュー", + "previewing-may-share-metadata": "プレビューを有効にする場合、ウェブサイト所有者にあなたのメタデータが共有されます。", + "price-impact": "価格への影響", + "price-impact-desc": "この取引による推定価格影響額。現在のブロックの基本料金がこれを上回る場合、取引はより低い基本料金の次のブロックに含まれます。", + "principles": "原則", + "priority": "プライオリティ", + "privacy": "プライバシー", + "privacy-and-security": "プライバシーとセキュリティ", + "privacy-photos": "プロフィール写真のプライバシー", + "privacy-policy": "プライバシーポリシー", + "privacy-show-to-warning": "一度あなたのプロフィール写真を表示したことがある人には引き続き表示されます。", + "private-key": "秘密鍵", + "private-notifications": "プライベート通知", + "private-notifications-descr": "Statusは新着メッセージを通知します。これは後から通知設定で変更できます。", + "processing": "処理中", + "product-information": "プロダクト情報", + "profile": "プロフィール", + "profile-deleted-content": "あなたのプロフィールは正常に削除されました", + "profile-deleted-keycard": "別のキーペアをKeycardに復元することができます。", + "profile-deleted-title": "プロファイルが削除されました", + "profile-details": "プロフィールの詳細", + "profile-not-found": "プロフィールが見つかりません", + "profile-password": "プロフィールのパスワード", + "profile-pic-pick": "ギャラリーから選択", + "profile-pic-remove": "写真を削除する", + "profile-pic-take": "写真を撮る", + "profile-picture-updated": "プロフィール画像が更新されました", + "profiles-on-device": "デバイス上のプロフィール", + "public": "パブリック", + "public-channel": "公開チャネル", + "public-chat": "パブリックチャット", + "public-chat-description": "興味がある公開チャットに参加してみましょう。誰でも新しい公開チャットを作ることができます。", + "public-chats": "公開チャット", + "public-group-status": "パブリック", + "public-group-topic": "トピック", + "public-key": "公開鍵", + "puk-and-pairing-codes-displayed": "PUKとペアリングコードが表示されています", + "puk-changed": "12桁のPUKが変更されました", + "puk-code": "PUKコード", + "puk-code-explanation": "6桁のPINコードを忘れたり3回間違って入力した場合は、カードのアンロックにこのコードが必要になります", + "puk-mismatch": "PUKコードが一致しません", + "push-failed-transaction": "トランザクションが失敗しました", + "push-failed-transaction-body": "{{value}} {{currency}} を {{to}} へ", + "push-inbound-transaction": "{{value}} {{currency}} を受け取りました", + "push-inbound-transaction-body": "{{from}} から {{to}} へ", + "push-notifications-server-enabled": "サーバを有効にする", + "push-notifications-servers": "プッシュ通知サーバ", + "push-outbound-transaction": "{{value}} {{currency}} を送りました", + "push-outbound-transaction-body": "{{from}} から {{to}} へ", + "quiet-days": "{{quiet-days}}日", + "quiet-hours": "{{quiet-hours}}時間", + "re-encrypt-key": "鍵を再暗号化", + "read": "見る", + "read-more": "もっと読む", + "rearrange-categories": "カテゴリを並べ替える", + "receive": "受信", + "receive-transaction": "トランザクションを受信", + "received": "受信済み", + "recent": "最近", + "recent-empty": "最近使用したアドレスがここに表示されます", + "recent-recipients": "連絡先", + "recently-used-stickers": "最近使用したステッカーがここに表示されます", + "recipient": "受信者", + "recipient-code": "受信者アドレスを入力", + "recipient-code-placeholder": "0x..から始まるアドレスまたはENS名(username.domain.eth)", + "recover": "回復する", + "recover-key": "既存の鍵を復元する", + "recover-keycard-multiaccount-not-supported": "このアカウントの鍵はすでに存在します。再び鍵を追加することはできません。もしパスワード、パスコード、Keycardを紛失した場合は、アプリをアンインストールし、シードフレーズを入力して鍵を再インストールしてアクセスし直してください。", + "recover-with-keycard": "Keycardで復元する", + "recover-with-seed-phrase": "シードフレーズで復元する", + "recovering-key": "鍵を復元しています", + "recovery-confirm-phrase": "シードフレーズを確認", + "recovery-phrase": "シードフレーズ", + "recovery-success-text": "鍵を再暗号化するため、新しくパスコードを設定します。", + "recovery-typo-dialog-description": "シードフレーズは、書き留めた時とまったく同じ言葉、順番で使用してください。", + "recovery-typo-dialog-title": "シードフレーズは正しいですか?", + "redeem-amount": "{{quantity}}ボーナスを受け取り可能です", + "redeem-now": "今すぐ受け取る", + "redeem-success": "ボーナスを受け取りました!", + "reduced-tip": "優先チップが削減されます", + "refresh": "更新", + "registered": "登録済み", + "reject": "拒否", + "reject-and-delete": "拒否して削除する", + "remember-me": "ログインを記憶", + "remind-me-later": "後で知らせる", + "remote-notifications": "リモート通知", + "remote-notifications-subtitle": "プッシュ通知を有効にする", + "remove": "削除", + "remove-favourite": "お気に入りから削除する", + "remove-from-chat": "チャットから削除", + "remove-from-contacts": "連絡先から削除", + "remove-from-contacts-text": "連絡先リストからユーザを削除する場合にも、あなたのウォレットアドレスを非表示にすることはありません。", + "remove-group": "グループを削除", + "remove-network": "ネットワークを削除", + "remove-nickname": "ニックネームを削除", + "remove-nickname-toast": "{{secondary-name}}のニックネームを削除しました", + "remove-profile-confirm-message": "すべてのプロフィールデータがデバイスから削除されます。", + "remove-profile-message": "このデバイスからプロフィールを削除", + "remove-profile?": "プロフィールを削除しますか?", + "remove-token": "トークンを削除", + "remove-user-from-group": "{{username}}をグループから削除", + "removed": "削除されました", + "removed-from-contacts": "友だちから削除されました", + "rename": "名前を変更", + "repeat-pin": "新しいパスコードを再入力", + "repeat-puk": "新しい12桁のPUKを繰り返します", + "replied": "返信済み", + "replies": "返信", + "replying-to": "{{author}}に返信する", + "report-bug-email-template": "1.問題の説明\n{{description}}\n\n\n2.再現する手順\n{{steps}}\n\n\n3.問題を確認できるスクリーンショットを添付してください\n", + "request-access": "アクセスを要求する", + "request-feature": "機能をリクエスト", + "request-membership": "参加をリクエストする", + "request-pending": "リクエスト中...", + "request-to-join": "参加リクエストする", + "request-to-join-community": "コミュニティへの参加リクエスト", + "request-transaction": "トランザクションのリクエスト", + "requested-to-join-community": "{{community}} への参加をリクエストしました", + "requesting": "リクエスト中", + "required-field": "必須のフィールド", + "resend-message": "再送信", + "reset-card": "カードをリセットする", + "reset-card-description": "この操作はカードを初期状態にリセットします。秘密鍵を含むすべてのカードデータが消去されます。操作は元に戻せません。", + "reset-database": "データベースをリセットする", + "reset-database-warning": "チャット、連絡先、設定を削除します。パスワードを紛失した時に必要な処理です。", + "reset-database-warning-keycard": "チャット、連絡先、設定を削除します。", + "reset-password": "パスワードをリセットする", + "restore-defaults": "デフォルトに戻す", + "retake": "もう一度撮る", + "retry": "再試行", + "reveal-sync-code": "同期コードを表示する", + "revoke-access": "アクセス権を取り消す", + "rpc-url": "RPCのURL", + "rpc-usage-copy": "コピー", + "rpc-usage-filter": "フィルター方法", + "rpc-usage-filter-methods": "フィルター方法", + "rpc-usage-filtered-total": "{{filtered-total}} of {{total}}", + "rpc-usage-get-stats": "更新", + "rpc-usage-info": "RPCの使用状況の統計", + "rpc-usage-reset": "リセット", + "rpc-usage-total": "合計", + "sa": "土", + "safe-estimate": "安全な見積", + "sat": "土", + "save": "保存", + "save-image-library": "画像をライブラリに保存する", + "save-password": "パスワードを保存", + "save-password-unavailable": "パスワードを保存するためにデバイスパスコードを設定", + "save-password-unavailable-android": "パスワードを保存できません:お使いのデバイスがルート化されているか、必要なセキュリティ機能がありません。", + "saved": "保存しました", + "saving-keys-to-device": "キーをデバイスに保存しています...", + "say-hi": "挨拶しよう", + "scan-or-enter-a-sync-code": "同期コードをスキャンまたは入力します", + "scan-or-enter-sync-code": "同期コードをスキャンまたは入力する", + "scan-or-enter-sync-code-seen-on-this-device": "このデバイスに表示される同期コードをスキャンまたは入力してください", + "scan-qr": "QRコードをスキャン", + "scan-qr-code": "ウォレットアドレスのQRコードをスキャン", + "scan-sync-code": "同期コードをスキャン", + "scan-sync-qr-code": "QRコードをスキャン", + "scan-the-qr-code-or-copy-the-sync-code": "QRコードを読み取るか、同期コードをコピーしてください", + "scan-tokens": "トークンをスキャンする", + "search": "検索", + "search-contacts": "連絡先を検索", + "search-discover-communities": "コミュニティまたはカテゴリを検索", + "search-no-chat-found": "検索結果なし。もしかして", + "secret-keys-confirmation-text": "スマートフォンを紛失した場合でもKeycardを使い続けるためにこれが必要になります。", + "secret-keys-confirmation-title": "コードを書き留めましたか?", + "security": "セキュリティ", + "see-details": "詳細を見る", + "see-it-again": "もう一度見る", + "see-sticker-set": "ステッカーセットをすべて見る", + "see-suggestions": "推奨を見る", + "seed-key-uid-mismatch": "シードが一致しません", + "seed-key-uid-mismatch-desc-1": "入力したシードフレーズが{{multiaccount-name}}と一致しません。", + "seed-key-uid-mismatch-desc-2": "このアカウントの鍵を管理するには、シードフレーズを確認してからもう一度お試しください。", + "seed-phrase-content": "「シードフレーズ」は、他のウォレットやデバイスでイーサリアムアカウントを復旧またはアクセスするために使用されます。ほとんどの暗号アプリがこれと同じ仕組みを使用してアカウントを生成しています。このフレーズは「ニーモニックフレーズ」、「リカバリフレーズ」または「ウォレットバックアップ」とも呼ばれます。\n※BIP39標準リストからランダムに選択される英単語の組み合わせとして生成されます。", + "seed-phrase-title": "シードフレーズ", + "select": "選択", + "select-account": "アカウントを選択", + "select-account-dapp": "Dappsで使用するアカウントを選択します", + "select-account-first": "最初にアカウントを選択する", + "select-chat": "チャットを選択してメッセージを開始する", + "select-new-location-for-keys": "秘密鍵の格納先を選択します。", + "select-token-to-receive": "受け取るトークンを選択", + "select-token-to-swap": "スワップするトークンを選択", + "selected": "選択済み", + "selected-count-from-max": "{{selected}}\/{{max}}", + "send": "送信", + "send-contact-request-message": "チャットを開始するには友だち追加する必要があります", + "send-logs": "バグを報告", + "send-logs-to": "{{email}}にバグを報告", + "send-message": "メッセージを送信", + "send-push-notifications": "プッシュ通知を送る", + "send-push-notifications-description": "無効にすると、送信相手に新着メッセージが通知されなくなります。", + "send-reply": "返信する", + "send-request": "リクエストを送信", + "send-request-amount": "金額", + "send-request-amount-max-decimals": "小数点桁数は最大 {{asset-decimals}} 桁です", + "send-request-unknown-token": "不明なトークン - {{asset}}", + "send-sending-to": "{{recipient-name}}へ", + "send-to": "送信先", + "send-transaction": "トランザクションを送信", + "sending": "送信中", + "sent": "送信済み", + "sent-a-gif": "GIFを送る", + "sent-a-photo": "写真を送る", + "sent-a-sticker": "ステッカーを送る", + "sent-at": "に送信済み", + "sent-audio-message": "音声メッセージを送りました", + "sent-n-photos": "{{number}}枚の写真を送りました", + "sep": "9月", + "server": "サーバ", + "set-a-topic": "トピックを作成", + "set-currency": "通貨を設定する", + "set-custom-fee": "カスタム手数料を設定", + "set-dapp-access-permissions": "DApp アクセス許可", + "set-max": "最大を設定", + "set-nickname-toast": "{{primary-name}}を{{nickname}}に変更しました", + "settings": "設定", + "setup-group-chat": "グループチャットを設定する", + "setup-syncing": "同期のセットアップ", + "share": "シェア", + "share-address": "アドレスを共有", + "share-chat": "チャットを共有", + "share-community": "コミュニティを共有する", + "share-contact-code": "チャットキーを共有", + "share-dapp-text": "このDAppをチェックしてください {{link}}", + "share-image": "画像を共有する", + "share-invite-link": "招待リンクを共有する", + "share-link": "共有リンク", + "share-logs": "ログを共有", + "share-my-profile": "プロフィールを共有する", + "share-profile": "プロフィールを共有", + "share-profile-link": "プロフィールのリンクを共有する", + "share-public-chat-text": "Statusアプリのこの公開チャットをチェックしてみてください {{link}}", + "shared": "共有", + "shared-a-community": "コミュニティを共有する", + "sharing-copied-to-clipboard": "コピーしました", + "sharing-copy-to-clipboard": "コピー", + "sharing-data-desc-1": "データは公的なルールに照らし合わせて検証され、機密データが送信されないようになっています。 \"Don't trust, verify.\"", + "sharing-data-desc-2": "使用状況データはエンドツーエンド暗号化され、Statusのピアツーピアネットワークを介して送信されます。", + "sharing-data-desc-3": "通常のチャット キーの代わりに、使い捨てキーが用いられます。", + "sharing-data-desc-4": "使用状況データがIPアドレスと関連付けられることはありません。", + "sharing-data-desc-5": "すべてのユーザの累積データが公開されます", + "sharing-data-desc-6": "データは送信後にこの電話から削除されます", + "sharing-share": "共有", + "shell-placeholder-subtitle": "コミュニティ、メッセージ、\nウォレット アカウントとブラウザを開く", + "shell-placeholder-title": "アプリはここで実行されます", + "show-existing-keys": "既存のキーを表示", + "show-less": "少なく表示", + "show-more": "もっとみる", + "show-notifications": "通知を表示する", + "show-profile-pictures": "プロフィール写真の公開範囲", + "show-profile-pictures-to": "プロフィール写真の公開範囲", + "show-qr": "QRコードを表示", + "show-transaction-data": "トランザクション情報を表示する", + "sign-and-send": "署名して送信", + "sign-anyway": "署名する", + "sign-in": "サインイン", + "sign-in-by-syncing": "同期してサインインする", + "sign-message": "メッセージに署名", + "sign-out": "サインアウト", + "sign-request-failed": "メッセージに署名できませんでした", + "sign-up": "登録する", + "sign-with": "署名 ", + "sign-with-password": "パスワードで署名する", + "sign-you-in": "サインインしています…", + "signing": "署名中", + "signing-a-message": "メッセージに署名しています", + "signing-in-from-another-device": "他のデバイスからサインインする", + "signing-phrase": "署名フレーズ", + "simple": "シンプル", + "skip": "スキップ", + "slide-create": "スライドしてアカウントを作成", + "slippage": "スリッページ", + "slow": "Slow", + "something-went-wrong": "うまくいきませんでした", + "soon": "もうすぐ", + "sort-communities": "コミュニティを並べ替え", + "special-characters": "特殊文字", + "specify-address": "アドレスを入力", + "specify-name": "名前を入力", + "specify-network-id": "ネットワークIDを入力", + "specify-rpc-url": "RPCのURLを入力", + "specify-server-public-key": "サーバの公開鍵を入力してください", + "specify-symbol": "シンボルを入力", + "start-chat": "チャットを開始", + "start-conversation": "会話を始める", + "start-group-chat": "グループチャットを開始", + "start-new-chat": "新しいチャットを開始", + "start-using-status": "Statusを始める", + "starter-pack-coming": "スターターパックをお届けします", + "starter-pack-coming-description": "数分から数時間かかる場合があります", + "starter-pack-received": "スターターパックを受け取りました", + "starter-pack-received-description": "初回特典のトークンを受け取れます。トークンを使ってステッカーやENS名を購入してみよう。", + "status": "Status", + "status-always-online": "常にオンライン", + "status-automatic": "自動", + "status-automatic-subtitle": "ステータスの自動設定", + "status-confirmed": "承認済み", + "status-dnd": "退席中", + "status-dnd-subtitle": "すべての通知をミュートする", + "status-hardwallet": "Statusハードウォレット", + "status-inactive": "非表示", + "status-inactive-subtitle": "オンラインのステータスを非表示にする", + "status-is-open-source": "Statusはオープンソースです", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Statusはチャットの同期に大量のデータを使用します。モバイルネットワークに接続しているときは同期しないこともできます", + "status-not-sent-click": "承認されていません。オプションを表示", + "status-not-sent-tap": "送信エラー。タップしてオプションを見る", + "status-pending": "ペンディング", + "status-sent": "送信済み", + "status-tx-not-found": "トランザクションが見つかりません", + "status-updates-descr": "ステータスの更新情報がここに表示されます。連絡先から友達のプロフィールを追加して、タイムラインで更新情報を受け取りましょう。", + "statuses-descr": "今のあなたの気分を友達に共有しましょう。", + "statuses-my-status-descr": "いまの気分を共有しましょう。あなたのプロフィールを訪れた人は誰でもあなたのステータスを見ることができます。あなたを連絡先に追加した人は、あなたの更新情報を自分のタイムラインで受け取ります。", + "step-i-of-n": "{{step}}{{number}} ステップ", + "sticker": "ステッカー", + "sticker-market": "ステッカーマーケット", + "storage": "ストレージ", + "strength-divider-okay-label": "オーケー", + "strength-divider-strong-label": "強い", + "strength-divider-very-strong-label": "非常に強い", + "strength-divider-very-weak-label": "非常に弱い", + "strength-divider-weak-label": "弱い", + "strikethrough": "取り消し線", + "su": "日", + "submit": "送信", + "submit-bug": "バグを報告する", + "success": "成功", + "successful-connection": "接続成功", + "suggested-min-tip": "推奨される最小チップ", + "suggested-price-limit": "推奨金額", + "sun": "日", + "swap": "スワップ", + "swap-details": "スワップ内容", + "switch-to-simple-interface": "シンプルなインターフェースに切替", + "symbol": "シンボル", + "sync-all-devices": "すべてのデバイスを同期", + "sync-code": "同期コード", + "sync-code-generated": "同期コードが生成されました", + "sync-devices-complete-sub-title": "お使いのデバイスが同期されました", + "sync-devices-complete-title": "デバイスの同期が完了しました!", + "sync-devices-error-title": "おっと、何かが間違っています", + "sync-devices-result-sub-title": "お使いのデバイスが同期されました", + "sync-devices-sub-title": "同期が完了するまで、両方のデバイスの電源を入れ、インターネットに接続したままにしてください。", + "sync-devices-title": "デバイスを同期中...", + "sync-in-progress": "同期しています...", + "sync-settings": "同期設定", + "sync-synced": "同期中", + "synced-devices": "同期済みデバイス", + "synced-with": "同期済み", + "synchronise-your-data-across-your-devices": "デバイス間でデータを同期する", + "syncing": "同期中", + "syncing-devices": "同期しています...", + "system": "自動", + "tabs": "タブ", + "tag-was-lost": "タグが失われました", + "tap": "タップ", + "tap-card-again": "もう一度カードをタップしてください", + "tap-on": "タップする", + "terms-of-service": "利用規約", + "test-networks": "テストネット", + "text-input-disabled": "しばらくお待ちください...", + "th": "木", + "thank-you": "Thank you", + "this-device": "このデバイス", + "this-device-desc": "あなたの鍵は暗号化され安全に保管されます", + "this-is-you-signing": "これはあなたの署名フレーズです", + "this-message-was-deleted": "このメッセージは削除されました", + "this-will-take-few-seconds": "このプロセスには数秒かかります", + "three-days": "3日", + "three-months-int": "3ヶ月", + "three-words-description": "トランザクションに署名を行う際、必ずこの3つの単語が表示されます。", + "three-words-description-2": "異なる組み合わせが表示された場合は、処理を中断してログアウトしてください。", + "thu": "木", + "timeline": "タイムライン", + "tip-cap": "チップ上限", + "to": "To", + "to-block": "ブロック", + "to-capitalized": "To", + "to-enable-biometric": "{{bio-type-label}}を有効にするには、ロック解除画面でパスワードを保存する必要があります", + "to-encrypt-enter-password": "アカウントを暗号化するには、パスワードを入力してください", + "to-scan-a-qr-enable-your-camera": "QRを読み取るにはカメラを有効にしてください", + "to-see-this-message": "このメッセージを見るには", + "token": "トークン", + "token-auto-validate-decimals-error": "{{address}} のトークン {{symbol}} の小数点桁数が間違っています。{{expected}} と設定されていますが {{actual}} と検出されました", + "token-auto-validate-name-error": "{{address}} のトークン {{symbol}} の名前が間違っています。{{expected}} と設定されていますが {{actual}} と検出されました", + "token-auto-validate-symbol-error": "{{address}} のトークン {{symbol}} のシンボルが間違っています。{{expected}} と設定されていますが {{actual}} と検出されました", + "token-details": "トークンの詳細", + "token-gated-communities": "トークンゲート型コミュニティ", + "token-gated-communities-info": "このトピックに関連するものを紹介します。これにより、ユーザはより多くのコンテキストを取得し、より深く理解できるようになります。", + "token-price": "トークン価格", + "topic-name-error": "小文字 (aからz)、数字とダッシュ (-) のみを使用できます。連絡先コードは使用しないでください。", + "total-gas": "ガス合計", + "total-members": "総メンバー数", + "transaction": "トランザクション", + "transaction-data": "トランザクション情報", + "transaction-declined": "トランザクションが失敗しました", + "transaction-description": "ネットワーク上で 12 承認を得た後に完了となります", + "transaction-details": "トランザクションの詳細", + "transaction-failed": "トランザクションが失敗しました", + "transaction-fee": "トランザクション手数料", + "transaction-history": "トランザクション履歴", + "transaction-request": "トランザクションリクエスト", + "transaction-sent": "送信されたトランザクション", + "transaction-signed": "トランザクションは正常に署名されました", + "transactions": "トランザクション", + "transactions-filter-select-all": "すべて選択", + "transactions-filter-title": "履歴をフィルタする", + "transactions-history": "トランザクション履歴", + "transactions-history-empty": "トランザクション履歴がまだありません", + "transactions-history-loading": "トランザクション履歴を読み込んでいます。しばらく時間がかかる場合があります。", + "transactions-load-more": "さらに読み込む", + "transactions-management-enabled": "トランザクション管理(アルファ版)", + "transactions-sign": "署名", + "transfer-ma-unknown-error-desc-1": "マルチアカウントが削除されていないようです。データベースがリセットされた可能性があります。", + "transfer-ma-unknown-error-desc-2": "アカウント一覧をご確認の上、再度お試しください。アカウントが表示されていない場合は、シードフレーズを使用して既存の鍵で復元してください。", + "transfers-fetching-failure": "送信履歴を更新できませんでした。通信状況を確認し、プルダウンして再試行してください", + "tribute-required-by-multiaccount": "{{multiaccount-name}} はチャットを開始するのにSNTを要求しています。", + "tribute-state-paid": "Tributeが支払われました", + "tribute-state-pending": "Tributeが待機中です", + "tribute-state-required": "{{snt-amount}} SNTのTributeが必要です", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "友達を連絡先として登録すればTributeを送ることなくチャットを開始できます。", + "tribute-to-talk-are-you-friends": "友達ですか?", + "tribute-to-talk-ask-to-be-added": "連絡先として追加するよう依頼する", + "tribute-to-talk-contact-received-your-tribute": "Tributeを受け取り、セキュアにチャットを行えるようになりました。", + "tribute-to-talk-desc": "新しくチャットを始める人にSNTを要求すれば人からの注目を収益に変えることができます", + "tribute-to-talk-disabled": "Tribute to Talkが無効になっています", + "tribute-to-talk-disabled-note": "これからは新しくチャットを始める人はSNTを送信しなくてもあなたとチャットを始めることができます。", + "tribute-to-talk-enabled": "Tribute to Talkを有効にしました。", + "tribute-to-talk-finish-desc": "今後は連絡先からのチャットと支払いを行ったユーザからのチャットのみを受信します", + "tribute-to-talk-learn-more-1": "あなたの時間とあなたに集まる注目は価値のある資産です。Tribute to Talkはあなたと新しくチャットを開始するときに指定した額のSNTを要求することができます。", + "tribute-to-talk-learn-more-2": "連絡先リストに登録されていない人は支払いを要求され、支払いを行った人にのみ返信することができます。", + "tribute-to-talk-learn-more-3": "いつでも返金することもできます。連絡先リストに登録されている友達はいつでも無料であなたに連絡できます。", + "tribute-to-talk-paywall-learn-more-1": "時間と自分に集まる注目は価値ある資産です。Trubute to Talkはあなたとのチャットの対価としてSNTの支払いを受け付けることができます。", + "tribute-to-talk-paywall-learn-more-2": "トリビュート設定した人とチャットを開始する、連絡先に追加してもらうには、決められたSNTを支払う必要があります。", + "tribute-to-talk-paywall-learn-more-3": "知っている人にはStatusの外部でプロフィールを共有して無料で追加してもらうことができます。", + "tribute-to-talk-pending": "Tributeの承認待ち", + "tribute-to-talk-pending-note": "Tributeトランザクションはネットワークによる承認待ちです。トランザクションヒストリーで状態を確認することができます。", + "tribute-to-talk-removing-note": "Tribute to Talkを削除するとSNTを送らずにあなたとチャットを開始できるようになります。これにはトランザクションが発生します。", + "tribute-to-talk-set-snt-amount": "新しくチャットを始める人に要求するSNTの額を設定してください", + "tribute-to-talk-signing": "トランザクションへの署名を待っています", + "tribute-to-talk-transaction-failed-note": "トランザクションが失敗し、Tribute to Talkの設定の変更は保存されませんでした", + "tribute-to-talk-tribute-received1": "Tributeを受け取りました。", + "tribute-to-talk-tribute-received2": " は連絡先に追加され、セキュアにチャットできます。", + "tribute-to-talk-you-require-snt": "新しくチャットを始める人にはSNTを要求します。", + "try-again": "再試行する", + "try-keeping-the-card-still": "カードを動かさないでください", + "try-your-luck-again": "もう一度運試しをしてください!", + "tu": "火", + "tue": "火", + "turn-nfc-description": "NFCが無効になっています。設定を確認してください。", + "turn-nfc-on": "続行するにはNFCをオンにしてください", + "two-minutes": "2分", + "tx-fail-description1": "この処理は失敗する可能性があります。カスタム手数料を確認してください。", + "tx-fail-description2": "この処理は失敗する可能性があります。カスタム手数料を確認してください。", + "type": "タイプ", + "type-a-message": "メッセージ...", + "type-nickname": "ニックネームを入力", + "type-something": "何かを入力", + "type-your-password": "パスワードを入力してください", + "ulc-enabled": "ULC が有効", + "unable-to-fetch": "チャット履歴を取得できません", + "unable-to-read-this-code": "このコードを読み込めません", + "unable-to-send-messages": "メッセージを送受信できません", + "unblock": "ブロック解除", + "unblock-contact": "ブロックを解除する", + "undo": "元に戻す", + "unique-identifiers": "一意のプロファイル識別子", + "unknown-status-go-error": "不明なstatus-goのエラー", + "unlimited": "無制限", + "unlock": "ロック解除", + "unmute": "ミュート解除", + "unmute-chat": "チャットをミュート解除", + "unmute-community": "コミュニティのミュート解除", + "unmute-group": "グループをミュート解除", + "unpair-card": "カードのペアリングを解除", + "unpair-card-confirmation": "この操作は現在のデバイスからカードのペアリングを解除します。 6桁のパスコードが必要です。続行しますか?", + "unpair-keycard": "このスマートフォンとKeycardのペアリングを解除する", + "unpair-keycard-warning": "ペアリングコード、PUK、PIN に変更はありません。", + "unpaired-keycard-text": "タップしたKeycardはこのスマートフォンと紐づいていません", + "unpaired-keycard-title": "カードのペアリングが解除されたようです", + "unpin": "ピン留めを解除", + "unpin-from-channel": "チャンネルからピン留め解除", + "unpin-from-chat": "チャットからピン留め解除", + "unread": "未読", + "untrustworthy": "信用できない", + "update": "更新", + "update-to-listen-audio": "最新バージョンに更新して、音声メッセージを受け取ろう", + "update-to-see-image": "最新バージョンに更新して、素敵な写真を受け取ろう", + "update-to-see-sticker": "最新バージョンに更新して、新しいステッカーを見つけよう", + "updates-to-tos": "利用規約の更新", + "updates-to-tos-desc": "続行する前に利用規約を確認し、アプリの使用方法について全責任を負うことを確認してください。", + "url": "URL", + "usd-currency": "米ドル", + "use-as-profile-picture": "プロフィール画像として使う", + "use-biometrics": "生体認証を使用してパスワードを入力する", + "use-keycard": "Keycardを使用する", + "use-keycard-subtitle": "鍵はKeycardに保存されます", + "use-photo": "写真を使用する", + "use-recovery-phrase": "リカバリーフレーズを使う", + "use-recovery-phrase-subtitle": "すでにイーサリアムアドレスをお持ちの場合", + "use-valid-contact-code": "有効なチャットキーまたはユーザ名を入力してください", + "user-deleted-a-message": "{{user}}はメッセージを削除しました", + "user-found": "ユーザが見つかりました", + "user-keycard": "{{name}}カード", + "user-keypair": "{{name}}のキーペア", + "user-pinned-a-message": "{{user}}がメッセージを固定しました", + "user-replied": "{{user}}が返信しました", + "user-sent-a-gif": "{{user}}がGIFを送りました", + "user-sent-a-photo": "{{user}}が写真を送りました", + "user-sent-a-sticker": "{{user}}がステッカーを送りました", + "user-sent-audio-message": "{{user}}が音声メッセージを送りました", + "user-sent-n-photos": "{{user}}が{{number}}枚の写真を送りました", + "user-shared-a-community": "{{user}}がコミュニティを共有しました", + "valid-for-time": "有効期限:{{valid-for}}", + "validation-amount-invalid-number": "金額が正しくありません", + "validation-amount-is-too-precise": "金額が細かすぎます。小数点以下を {{decimals}} 桁以下にしてください。", + "verified-community": "✓ 検証済みコミュニティ", + "version": "アプリバージョン", + "via": "経由", + "view": "表示する", + "view-community-rules": "コミュニティルールを表示", + "view-cryptokitties": "CryptoKittiesで表示", + "view-cryptostrikers": "CryptoStrikersで表示", + "view-data": "データを見る", + "view-details": "詳細を表示", + "view-etheremon": "Etheremonで表示", + "view-gitcoin": "Gitcoinで表示", + "view-members": "メンバーを表示", + "view-on-opensea": "OpenSeaで見る", + "view-pinned-messages": "ピン留めされたメッセージを表示する", + "view-profile": "プロフィールを見る", + "view-public-dashboard": "公開ダッシュボードを表示", + "view-rules": "ルールを見る", + "view-signing": "署名フレーズを表示", + "view-superrare": "SuperRareで表示", + "vote-to-feature": "このコミュニティの特集に投票する", + "waiting-for-wifi": "Wi-Fiがなくメッセージ同期が停止しています", + "waiting-for-wifi-change": "設定", + "waiting-to-sign": "トランザクションへの署名を待っています...", + "waiting-wi-fi": "Wi-Fiを探しています…", + "waku-bloom-filter-mode": "WAKUブルームフィルタモード", + "wakuv2-change-nodes": "本当にWaku v2ノードを変更しますか?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Waku v2設定", + "wallet": "ウォレット", + "wallet-address": "ウォレットアドレス", + "wallet-asset": "アセット", + "wallet-assets": "アセット", + "wallet-backup-recovery-title": "シードフレーズのバックアップ", + "wallet-choose-recipient": "受信者を選択", + "wallet-collectibles": "コレクション", + "wallet-connect": "Wallet Connect", + "wallet-connect-2.0": "Wallet Connect 2.0", + "wallet-connect-app-connected": "接続済み", + "wallet-connect-go-back": "ブラウザまたはdappに戻る", + "wallet-connect-proposal-description": "接続すると{{name}}があなたのアドレスを取得してWeb3を有効にすることを許可します", + "wallet-connect-proposal-title": "ウォレットを接続しますか", + "wallet-insufficient-funds": "残高が足りません", + "wallet-insufficient-gas": "Gasに必要なETHが足りません", + "wallet-invalid-address": "無効なアドレス: \n {{data}}", + "wallet-invalid-address-checksum": "アドレスにエラーがあります\n{{data}}", + "wallet-invalid-chain-id": "ネットワークが一致しません: \n 現在は{{chain}}、{{data}}に接続してください", + "wallet-key-content": "あなたが相手からアセットを受け取るとき、64桁の文字列からなる0xで始まるイーサリアム標準アドレスが相手に共有されます。このアドレスは「イーサリアムアドレス」または「ウォレットアドレス」とも呼ばれます。", + "wallet-key-title": "アカウントアドレス", + "wallet-manage-accounts": "アカウント管理", + "wallet-manage-app-connections": "接続を管理する", + "wallet-manage-assets": "アセットを管理する", + "wallet-request": "リクエスト", + "wallet-send": "送信", + "wallet-send-min-units": "21000以上", + "wallet-send-min-wei": "最低1wei", + "wallet-settings": "ウォレット設定", + "wallet-total-value": "総額", + "wallet-transaction-total-fee": "合計手数料", + "wants-to-access-profile": "あなたのプロフィールにアクセスしようとしています", + "wants-to-join": "参加したい", + "warning": "警告", + "warning-message": "スパム防止のため、複数のメッセージを連続して素早く送信することを制限しています。もう一度やり直してください。", + "warning-sending-to-contract-descr": "入力したアドレスはスマートコントラクトアドレスです。このアドレスに資産を送ると、資産が失われる可能性があります。DAppで操作するには、Status DAppブラウザでDAppを開きます。", + "watch-only": "読み取り専用", + "wc-brand-guide": "商標やロゴなどのブランドの使用に関するガイダンス", + "wc-disclaimer": "免責事項(サードパーティプロバイダを含む)、保証、法的リリース", + "wc-dispute": "紛争解決規定", + "wc-how-to-use-status-app": "プライバシーとセキュリティを含むStatusアプリの使い方", + "wc-new-tos-based-on-principles-prefix": "新しい利用規約は原則に基づいて設計されています", + "we": "水", + "web-view-error": "ページを読み込めません", + "websites": "ウェブサイト", + "webview-camera-permission-requests": "ウェブカメラの許可リクエスト", + "webview-camera-permission-requests-subtitle": "有効にすると、ウェブサイトやDappsがカメラの使用を要求できます。", + "wed": "水", + "welcome-back": "おかえりなさい!", + "welcome-blank-community-message": "あなたのコミュニティがここに表示されます。", + "welcome-blank-message": "進行中のチャットがここに表示されます。新しいチャットを開始するには、⊕ボタンを押してください。", + "welcome-community-blank-message": "チャンネルがここに表示されます。新しいチャンネルを作成するには、⊕ボタンをクリックして「チャンネルを作成」を選択します", + "welcome-community-blank-message-edit-chats": "参加中のチャンネルがここに表示されます。新しいチャンネルを作成するには、コミュニティ画面に戻って⊕ボタンをクリックし \"チャンネルを作成\" を選択します。", + "welcome-screen-text": "ウォレットをセットアップし、友達を招待して人気のDAppsをブラウズしましょう!", + "welcome-to-status": "Statusへようこそ", + "welcome-to-status-description": "ウォレットをセットアップして、友達とのチャットや分散型アプリを始めましょう", + "welcome-to-web3": "web3へようこそ!", + "welcome-to-web3-sub-title": "ためらうことはない。探検に行きましょう!", + "what-changed": "変更点", + "what-is-shared": "共有されるもの", + "whats-on-your-mind": "いまどうしてる?", + "who-are-you-looking-for": "誰をお探しですか?", + "word-count": "単語数", + "word-n": "{{number}}番目の単語", + "word-n-description": "リカバリーフレーズを正しくバックアップできたか確認するために、{{number}}番目の単語を入力してください。", + "words-n": { + "other": "単語" + }, + "write-down-and-store-securely": "コードを書き留めて安全に保管してください", + "wrong-address": "アドレスが間違っています", + "wrong-card": "カードが間違っています", + "wrong-card-text": "タップしたカードは、あなたが選択した鍵と一致しません。", + "wrong-contract": "コントラクトが間違っています", + "wrong-keycard-text": "タップしたKeycardはこのスマートフォンと紐づいていません", + "wrong-keycard-title": "間違ったKeycardをタップしたようです", + "wrong-password": "パスワードが間違っています", + "wrong-word": "単語が間違っています", + "x-counter": "x {{counter}}", + "yes": "はい", + "you": "あなた", + "you-already-have-an-asset": "すでに{{value}}を持っています", + "you-are-all-set": "設定完了です", + "you-are-all-set-description": "これでスマートフォンを紛失してもリカバリーフレーズを使ってアカウントを復元できます。", + "you-can-change-account": "アカウント名と色を変更することができます", + "you-can-choose-preview-websites": "サイトごとにリンクのプレビューを有効にするかどうかを選択できます。", + "you-can-fetch": "チャット履歴を取得できます", + "you-canceled-the-request": "参加リクエストをキャンセルしました", + "you-colon": "あなた:", + "you-deleted-a-message": "メッセージを削除しました", + "you-dont-have-contacts": "まだ連絡先がありません。", + "you-dont-have-contacts-invite-friends": "まだ連絡先が登録されていません。\n友達を招待してチャットを始めましょう。", + "you-dont-have-stickers": "まだステッカーを持っていません", + "you-eligible-to-join": "参加資格があります", + "you-have-no-contacts": "連絡先がありません", + "you-hold-number-of-hold-tokens-of-these": "次のうち{{number-of-hold-tokens}}を保有しています:", + "you-like-to-type-43-characters": "43文字を入力したいですか?", + "you-must-hold": "保有条件:", + "you-not-eligible-to-join": "参加資格がありません", + "you-pinned-a-message": "メッセージを固定しました", + "you-replied": "返信しました", + "you-sent-a-gif": "GIFを送りました", + "you-sent-a-photo": "写真を送りました", + "you-sent-a-sticker": "ステッカーを送りました", + "you-sent-audio-message": "音声メッセージを送りました", + "you-sent-n-photos": "{{number}}枚の写真を送りました", + "you-shared-a-community": "コミュニティを共有しました", + "you-will-need-this-code": "Statusアプリを開いたり、トランザクションに署名する際にこのコードが必要になります。", + "you-will-start-from-scratch": "新しい鍵のセットを使って最初から始める", + "your-answer": "あなたの答え", + "your-card-is-frozen": "Keycardがロックされました。カードをリセットして", + "your-contact-code": "アクセスを許可すると、このDAppはあなたのチャットキーを取得します。", + "your-data-belongs-to-you": "シードフレーズを紛失するとあなたの資産とデータが失われます", + "your-data-belongs-to-you-description": "スマートフォンの紛失等でアクセスできなくなった場合には、このシードフレーズを用いて鍵へのアクセスを行います。他の誰かに見られないようシードフレーズを書き留めた後は安全な場所で保管してください。", + "your-identifiers": "IDリング、チャットキー、エモジハッシュで、なりすましを見分けることができます", + "your-keys": "あなたの鍵", + "your-price-limit": "料金設定値", + "your-recovery-phrase": "シードフレーズ", + "your-recovery-phrase-description": "これはあなたのシードフレーズです。ウォレットがあなたのものであることを証明するために使用します。一度だけしか見ることができません。紙に書くか安全な場所で保管してください。紛失やアプリを再インストールする際に必要になります。", + "your-tip-limit": "チップ設定値", + "youre-on-mobile-network": "モバイルネットワークを利用しています" +} diff --git a/translations/ko.json b/translations/ko.json new file mode 100644 index 00000000000..b19428bbe49 --- /dev/null +++ b/translations/ko.json @@ -0,0 +1,1721 @@ +{ + "You": "사용자", + "about-app": "앱 정보", + "about-key-storage-content": "스테이터스는 절대로 사용자의 개인 키에 접근할 수 없습니다. 시드 구문을 안전하게 백업해주세요. 스마트폰을 잃어버려도 시드 구문을 통해 계정을 불러올 수 있습니다.", + "about-key-storage-title": "키 저장소 정보", + "about-names-content": "그 누구도 사용자를 사칭할 수 없습니다. 사용자 계정은 기본적으로 익명이며, 사용자는 실제 이름을 밝힐 필요가 없습니다. 약간의 비용을 지불하면 원하는 이름을 등록할 수 있습니다.", + "about-names-title": "이름은 변경할 수 없습니다", + "about-sharing-data": "데이터 공유 정보", + "accept": "수락", + "accept-and-add": "수락 및 추가", + "accept-and-continue": "동의하고 계속", + "accept-and-share-address": "주소 수락 및 공유", + "accept-new-chats-from": "다음의 새 채팅 수락", + "accept-status-tos-prefix": "스테이터스에 동의합니다", + "access-existing-keys": "기존 키 액세스", + "access-key": "키 불러오기", + "account-added": "계정 추가됨", + "account-color": "계정 색상", + "account-content": "스테이터스 계정을 은행 계좌처럼 생각하셔도 좋습니다. 스테이터스 계정은 은행 계좌처럼 주소와 잔액을 가지고 있습니다. 여러분은 이 계정으로 이더리움 상에서 트랜잭션(Transaction, 거래)를 수행할 수 있습니다. 또한 하나의 지갑에 다수의 계정을 둘 수 있는데, 하나의 스테이터스 계정에 접속해 연계된 지갑에 모두에 접근할 수 있습니다.", + "account-exists-title": "계정이 이미 존재합니다", + "account-is-used": "계정은 브라우저에서 디앱과 함께 사용됩니다.", + "account-name": "계정 이름", + "account-settings": "계정 설정", + "account-title": "계정", + "accounts": "계정", + "actions": "작업", + "active-online": "온라인", + "active-unknown": "알 수 없음", + "activity": "활동", + "add": "추가", + "add-a-watch-account": "열람 전용 계정 추가", + "add-account": "계정 추가", + "add-account-description": "모든 유형의 이더리움 계정을 스테이터스 지갑에 불러올 수 있습니다", + "add-account-incorrect-password": "비밀번호가 올바르지 않습니다. 앱 잠금을 해제하는데 사용하는 비밀번호를 입력해주세요.", + "add-an-account": "계정 추가", + "add-bootnode": "부트노드 추가", + "add-contact": "연락처 추가", + "add-custom-token": "커스텀 토큰 추가", + "add-favourite": "즐겨찾기 추가", + "add-mailserver": "스테이터스 노드 추가", + "add-members": "멤버 추가", + "add-network": "네트워크 추가", + "add-new-contact": "새 연락처 추가", + "add-nickname": "닉네임 추가 (선택)", + "add-node": "노드 추가", + "add-private-key-account": "개인 키로 계정 추가", + "add-seed-account": "시드 구문으로 계정 추가", + "add-to-contacts": "연락처에 추가", + "add-to-contacts-text": "특정 사용자를 연락처에 추가하면, 사용자의 지갑 주소를 공유하게 됩니다", + "add-to-favourites": "즐겨찾기에 추가", + "add-watch-account": "열람 전용 계정 추가", + "address": "주소", + "address-or-ens-name": "주소 또는 ENS 이름", + "address-received": "주소 받음", + "address-request-accepted": "주소 요청 수락됨", + "address-requested": "주소 요청됨", + "advanced": "고급 설정", + "advanced-settings": "고급 설정", + "advertiser-description": "친구의 초대로 스테이터스에 입문하셨습니다. 스테이터스가 귀하의 IP를 한 번만 확인하여 보상을 진행해도 괜찮을까요? 이 정보는 다른 용도로 절대 사용되지 않으며, 7일 후에 완전히 삭제됩니다.", + "advertiser-starter-pack-accept": "수락", + "advertiser-starter-pack-decline": "거절", + "advertiser-starter-pack-description": "스테이터스를 시작하는 데 도움이 될 암호화폐입니다! SNT를 활용하여 이모티콘을 구입하고, ENS 이름을 등록하거나 디앱을 사용해보세요", + "advertiser-starter-pack-title": "스타터 팩", + "advertiser-title": "개인 정보 보호", + "agree-by-continuing": "계속하면 아래 약관에 동의하는 것으로 간주됩니다.\n 스테이터스 ", + "all": "전체", + "allow": "허용", + "allow-and-send": "허용 및 보내기", + "allow-mention-notifications": "@ 멘션 표시", + "allowing-authorizes-this-dapp": "웹3를 활용하기 위해, 디앱이 사용자의 지갑 주소를 검색하는 것을 허용합니다", + "already-have-asset": "이미 해당 자산을 가지고 있습니다", + "amount": "수량", + "anyone": "누구든지", + "app-commit": "앱 커밋", + "appearance": "테마", + "apply": "적용", + "approve": "승인", + "approve-limit": "한도 승인", + "approve-token": "토큰 승인", + "approve-token-contract-desc": "컨트랙트로 토큰을 승인하면 토큰 잔액을 사용할 수 있게 됩니다. 프로젝트를 신뢰할 수 없다고 생각하면 토큰을 승인하지 않거나, 사용할 금액만 승인해주세요.", + "are-you-sure": "확실히 확인하셨습니까?", + "are-you-sure-description": "지금부터 전체 시드 구문을 다시 확인할 수 없습니다", + "are-you-sure-to-cancel": "취소하시겠습니까?", + "are-you-sure?": "정말 삭제하시겠어요?", + "ask-in-status": "질문 및 버그 신고", + "at": "로", + "attribution-received": "총 {{max}}개 중 {{attrib}}개 보너스 받음", + "audio": "오디오", + "audio-recorder": "리코더", + "audio-recorder-error": "리코더 오류", + "audio-recorder-max-ms-reached": "최대 녹음 제한 시간에 도달했습니다", + "audio-recorder-permissions-error": "오디오 메시지를 보내려면 권한을 허용해야 합니다", + "authorize": "거래 승인", + "available": "이용 가능", + "available-participants": { + "other": "{{count}}명 더 선택할 수 있습니다" + }, + "back": "뒤로", + "back-up": "백업", + "back-up-seed-phrase": "시드 구문 백업", + "back-up-your-seed-phrase": "시드 구문 백업", + "backing-up": "백업 중...", + "backup-disabled": "비활성화", + "backup-enabled": "활성화 됨", + "backup-recovery-phrase": "시드 구문 백업", + "backup-settings": "백업 설정", + "backup-through-waku": "와쿠를 통한 백업", + "bad-fees-description": "우선 수수료가 제안된 매개변수보다 낮습니다.", + "balance": "잔액", + "begin-set-up": "설정 시작", + "below-base-fee": "기본 수수료 이하의 최대 수수료", + "biometric-auth-android-sensor-desc": "터치 센서", + "biometric-auth-android-sensor-error-desc": "실패", + "biometric-auth-android-title": "인증 필요", + "biometric-auth-confirm-logout": "재 로그인", + "biometric-auth-confirm-message": "계속하려면 생체 인증이 필요합니다. 문제가 있을 경우 계정 비밀번호 또는 패스코드를 사용하여 해제해주세요", + "biometric-auth-confirm-title": "반드시 인증해주시기 바랍니다!", + "biometric-auth-confirm-try-again": "다시 시도", + "biometric-auth-error": "생체 인식 인증 진행 불가 ( {{code}} )", + "biometric-auth-login-error-title": "생체 인식 인증 오류", + "biometric-auth-login-ios-fallback-label": "비밀번호 입력", + "biometric-auth-reason-login": "스테이터스 로그인", + "biometric-auth-reason-verify": "인증 확인", + "biometric-disable-bioauth": "{{bio-type-label}} 사용 안 함", + "biometric-disable-password-description": "이 기능을 사용하지 않으면,", + "biometric-disable-password-title": "비밀번호 저장 안함", + "biometric-enable": "비밀번호를 매번 입력하지 않으려면, {{bio-type-label}} 로그인을 사용하세요", + "biometric-enable-button": "{{bio-type-label}} 사용", + "biometric-enable-keycard": "매번 키카드를 사용하지 않으려면, {{bio-type-label}} 로그인을 사용하세요", + "biometric-faceid": "페이스 ID", + "biometric-fingerprint": "지문", + "biometric-secure-with": "{{bio-type-label}}(으)로 보호", + "biometric-touchid": "터치 ID", + "bip39-password-placeholder": "BIP39 비밀번호", + "blank-keycard-text": "키와 이름을 생성하면 키카드로 계속 진행할 수 있습니다", + "blank-keycard-title": "비어있는 키카드를\n사용하셨습니다", + "block": "차단", + "block-contact": "사용자 차단", + "block-contact-details": "차단 기능을 사용하면 해당 사용자의 이전 메시지를 모두 삭제하고, 새 메시지가 귀하에게 전송되지 않습니다", + "blocked-users": "차단된 사용자", + "bootnode-address": "부트노드 주소", + "bootnode-details": "부트노드 상세정보", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "부트노드 (Bootnode)", + "bootnodes-enabled": "부트노드 사용", + "bootnodes-settings": "부트노드 설정", + "browsed-websites": "브라우저 기록이 여기에 표시됩니다", + "browser": "브라우저", + "browser-not-secure": "연결이 안전하지 않습니다! 이 사이트에서 트랜잭션에 서명하거나 개인정보를 보내지 마십시오.", + "browser-secure": "연결이 안전합니다. 사이트를 정말 신뢰하는지 확인한 후 트랜잭션에 서명하거나 개인 정보를 입력하세요.", + "browsers": "브라우저", + "browsing-cancel": "취소", + "browsing-open-in-android-web-browser": "웹 브라우저로 열기", + "browsing-open-in-ios-web-browser": "웹 브라우저로 열기", + "browsing-open-in-status": "스테이터스로 열기", + "browsing-site-blocked-description1": "이 주소에서 잠재적인 악성 활동을 발견했습니다.사용자의 지갑을 보호하기 위해 추가적인 탐색을 금지했습니다. \n\n문제가 없다고 생각하시면, 저희에게 알려주시기 바랍니다", + "browsing-site-blocked-description2": " 오픈채팅.", + "browsing-site-blocked-go-back": "돌아가기", + "browsing-site-blocked-title": "이 사이트는 차단되었습니다", + "browsing-title": "브라우저", + "bug-report": "버그 신고", + "bug-report-description": "* 설명", + "bug-report-description-placeholder": "필수, 비워둘 수 없음", + "bug-report-steps": "재현 단계", + "bug-report-steps-placeholder": "- 앱 열기\n- 무언가 하기\n- 그리고 나서 다른...", + "bug-report-submit-email": "로그 아카이브와 함께 이메일로 제출", + "bug-report-submit-gh-issue": "로그 없이 GitHub 이슈 제출", + "bug-report-too-short-description": "설명이 너무 짧습니다", + "build-yourself": "서비스 약관없이 앱을 사용하려면, 독자적인 버전을 빌드하면 됩니다", + "buy-crypto": "암호화폐 구매", + "buy-crypto-choose-a-service": "암호화폐 구매를 위해 사용할 서비스를 선택하세요", + "buy-crypto-description": "암호화폐를 구입하기 위한 디앱을 찾아보세요", + "buy-crypto-leaving": "구매를 완료하기 위해 스테이터스를 떠나 써드 파티 웹 사이트에 접속합니다", + "buy-crypto-title": "지갑이 비어 있습니다", + "camera-access-error": "카메라 권한을 승인하려면 시스템 설정에서 스테이터스 > 카메라가 선택되어 있는지 확인해 주세요.", + "can-not-add-yourself": "이건 본인입니다. 다른 사용자를 선택해주세요", + "can-send-messages": "새 메시지를 주고 받을 수 있습니다", + "cancel": "취소", + "cancel-keycard-setup": "키카드 설정 취소", + "cancelling": "취소", + "cannot-read-card": "카드를 읽을 수 없습니다. \n휴대 전화 뒷면에 위치해주세요", + "cannot-use-default-pin": "패스코드 000000은 허용되지 않습니다. \n다른 번호를 사용해주세요", + "cant-open-public-chat": "오픈채팅을 열 수 없습니다", + "cant-report-bug": "버그를 신고할 수 없습니다", + "card-is-blank": "카드가 비어 있습니다", + "card-reseted": "카드가 재설정되었습니다", + "card-unpaired": "이 기기에서 카드 페어링이 해제되었습니다", + "category": "카테고리", + "category-title": "카테고리 제목", + "change-fleet": "플릿을 {{fleet}}(으)로 변경", + "change-logging-enabled": "{{enable}} 로깅하시겠습니까?", + "change-pairing": "페어링 코드 변경", + "change-pairing-description": "페어링 코드를 변경해도 현재 페어링에는 영향을 주지 않습니다. 그러나 새 페어링에는 새 코드가 필요합니다.", + "change-pairing-title": "새 페어링 코드 만들기", + "change-passcode": "패스코드 변경", + "change-password": "비밀번호 변경", + "change-pin": "6자리 패스코드 변경", + "change-puk": "12자리 PUK 변경", + "change-tip": "팁 변경", + "changed-amount-warning": "수량이 {{old}}에서 {{new}}(으)로 변경되었습니다", + "changed-asset-warning": "자산이 {{old}}에서 {{new}}(으)로 변경되었습니다", + "chaos-mode": "카오스 모드", + "chaos-unicorn-day": "카오스 유니콘 데이", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "채팅", + "chat-and-transact": "검열과 감시 없는 안전한 채팅과 거래를 시작해보세요", + "chat-is-a-contact": "연락처에 등록되어 있음", + "chat-is-not-a-contact": "연락처에 없음", + "chat-key": "채팅 키", + "chat-key-content": "스테이터스 채팅 프로토콜의 메시지는 암호화 키를 활용하여 메시지를 주고 받습니다. 공개 채팅 키는 다른 사람들과 메시지를 주고 받기 위해 공유되는 문자열을 의미합니다.", + "chat-key-title": "채팅 키", + "chat-link-previews": "채팅 링크 미리보기", + "chat-name": "채팅 이름", + "chat-name-content": "무작위로 선택된 세 단어로, 채팅 키를 특수한 알고리즘에 대입하여 산출하며 채팅의 기본 닉네임으로 표시됩니다. 채팅 이름은 완전히 고유의 값으로, 다른 유저들과 채팅 이름이 중복될 수 없습니다.", + "chat-name-title": "채팅 이름", + "chat-notification-preferences": "알림 설정", + "chat-settings": "채팅 설정", + "chats": "채팅", + "check-on-block-explorer": "블록 익스플로러에서 확인", + "check-on-opensea": "Opensea에서 확인", + "check-your-recovery-phrase": "시드 구문 확인", + "choose-actions": "작업 선택", + "choose-authentication-method": "계정 인증 방법을 선택하세요", + "choose-new-location-for-keystore": "키스토어 파일을 저장할 새 위치를 선택하세요", + "choose-storage": "저장소 선택", + "clear": "지우기", + "clear-all": "모두 지우기", + "clear-history": "기록 삭제", + "clear-history-action": "지우기", + "clear-history-confirmation": "기록을 삭제하시겠습니까?", + "clear-history-confirmation-content": "채팅 기록을 지우시겠습니까?", + "clear-history-title": "기록을 삭제하시겠습니까?", + "cleared-chat-description-public": "최근 대화 내용이 없습니다. 대화를 시작하거나", + "close": "닫기", + "close-all": "모두 닫기", + "close-app-button": "확인", + "close-app-content": "앱이 종료됩니다. 앱을 다시 실행하면 설정한 네트워크가 사용됩니다", + "close-app-title": "주의!", + "collectibles-leak-metadata": "여기에 NFT를 표시할 수 있습니다. 이 경우 지갑과 IP 주소를 공유하게 됩니다", + "command-button-send": "보내기", + "communities": "커뮤니티", + "communities-alpha": "커뮤니티 (알파)", + "communities-enabled": "커뮤니티 사용", + "communities-verified": "✓ 검증된 스테이터스 커뮤니티", + "community": "커뮤니티", + "community-color": "커뮤니티 색상", + "community-color-placeholder": "색상 선택", + "community-edit-title": "커뮤니티 편집", + "community-emoji-thumbnail-title": "썸네일", + "community-image-pick": "이미지 선택", + "community-image-remove": "제거", + "community-image-take": "사진 촬영", + "community-info": "커뮤니티 정보", + "community-info-not-found": "커뮤니티 정보를 찾을 수 없습니다", + "community-invite-title": "초대", + "community-key": "커뮤니티 개인키", + "community-key-placeholder": "커뮤니티 개인키 입력", + "community-link": "커뮤니티 링크", + "community-members": { + "other": "멤버" + }, + "community-members-title": "멤버", + "community-message-preview": "{{community-name}} 가입 초대", + "community-private-key": "커뮤니티 개인키", + "community-requests-to-join-title": "멤버십 요청", + "community-roles": "역할", + "community-share-title": "공유", + "community-thumbnail-image": "미리보기 이미지", + "community-thumbnail-upload": "업로드", + "complete-hardwallet-setup": "카드가 연결되었습니다. 이 카드로 거래에 서명하거나 계정을 열람할 수 있습니다", + "completed": "완료", + "confirm": "비밀번호 확인", + "confirm-new-password": "새 비밀번호 확인", + "confirm-pairing-code-placeholder": "페어링 코드 확인...", + "confirm-password-placeholder": "비밀번호 확인...", + "confirmation-request": "확인 요청", + "confirmations": "확인", + "confirmations-helper-text": "12번 이상 확인된 트랜잭션은 확정된 것으로 간주됩니다.", + "connect": "접속", + "connect-mailserver-content": "{{name}}에 연결하시겠습니까?", + "connect-wallet": "지갑 연결", + "connected": "연결됨", + "connected-to": "다음으로 연결:", + "connecting": "연결 중...", + "connecting-requires-login": "다른 네트워크에 연결하려면 로그인하세요", + "connection-request": "연결 요청", + "connection-status": "연결 상태", + "connection-with-the-card-lost": "카드와 연결이\n 끊어졌습니다", + "connection-with-the-card-lost-setup-text": "설치를 다시 시작하려면 \n스마트폰 뒷면에 카드를 대고 \n접촉을 유지해주시기 바랍니다", + "connection-with-the-card-lost-text": "계속하려면, 카드를 스마트폰의 뒷면에 대주세요", + "contact-code": "채팅 키", + "contact-s": { + "other": "연락처" + }, + "contacts": "연락처", + "contacts-descr": "연락처는 여기에 표시됩니다. 연락처에 추가한 모든 이들의 상태 업데이트를 받게 됩니다.", + "contacts-empty": "ENS 이름을 보유한 연락처는 여기에 표시됩니다", + "continue": "계속", + "continue-anyway": "계속 진행", + "contract-address": "컨트랙트 주소", + "contract-interaction": "컨트랙트 상호 작용", + "contract-isnt-supported": "컨트랙트가 지원되지 않습니다", + "copy-info": "정보 복사", + "copy-qr": "코드 복사", + "copy-to-clipboard": "클립보드에 복사", + "copy-transaction-hash": "트랜잭션 ID 복사", + "cost-fee": "비용", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "만들기", + "create-a-pin": "6자리 패스코드 만들기", + "create-a-puk": "12자리 PUK 만들기", + "create-category": "카테고리 생성", + "create-channel": "채널 만들기", + "create-channel-title": "새 채널", + "create-community": "커뮤니티 만들기", + "create-group-chat": "그룹 채팅 생성", + "create-multiaccount": "키 생성", + "create-new-key": "새로운 키 획득", + "create-pin": "6자리 패스코드만들기", + "create-pin-description": "스테이터스를 해제하고 트랜잭션을 확인하려면 카드와 6자리 패스코드가 필요합니다", + "created-group-chat-description": "{{group-name}} 그룹을 생성했습니다", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "통화", + "currency-display-name-aed": "아랍에미레이트 디르함", + "currency-display-name-afn": "아프가니스탄 아프가니", + "currency-display-name-ars": "아르헨티나 페소", + "currency-display-name-aud": "호주 달러", + "currency-display-name-bbd": "바베이도스 달러", + "currency-display-name-bdt": "방글라데시 타카", + "currency-display-name-bgn": "불가리아 레프", + "currency-display-name-bhd": "바레인 디나르", + "currency-display-name-bnd": "브루나이 달러", + "currency-display-name-bob": "볼리비아 볼리비아노", + "currency-display-name-brl": "브라질 헤알", + "currency-display-name-btn": "부탄 눌트럼", + "currency-display-name-cad": "캐나다 달러", + "currency-display-name-chf": "스위스 프랑", + "currency-display-name-clp": "칠레 페소", + "currency-display-name-cny": "중국 위안화", + "currency-display-name-cop": "콜롬비아 페소", + "currency-display-name-crc": "코스타리카 콜론", + "currency-display-name-czk": "체코 코루나", + "currency-display-name-dkk": "덴마크 크로네", + "currency-display-name-dop": "도미니카 공화국 페소", + "currency-display-name-egp": "이집트 파운드", + "currency-display-name-etb": "에티오피아 비르", + "currency-display-name-eur": "유로", + "currency-display-name-gbp": "영국 파운드", + "currency-display-name-gel": "조지아 라리", + "currency-display-name-ghs": "가나 세디", + "currency-display-name-hkd": "홍콩 달러", + "currency-display-name-hrk": "크로아티아 쿠나", + "currency-display-name-huf": "헝가리 포린트", + "currency-display-name-idr": "인도네시아 루피아", + "currency-display-name-ils": "이스라엘 셰켈", + "currency-display-name-inr": "인도 루피", + "currency-display-name-isk": "아이슬란드 크로나", + "currency-display-name-jmd": "자메이카 달러", + "currency-display-name-jpy": "일본 엔", + "currency-display-name-kes": "케냐 실링", + "currency-display-name-krw": "대한민국 원", + "currency-display-name-kwd": "쿠웨이트 디나르", + "currency-display-name-kzt": "카자흐스탄 텡게", + "currency-display-name-lkr": "스리랑카 루피", + "currency-display-name-mad": "모로코 디람", + "currency-display-name-mdl": "몰도바 레우", + "currency-display-name-mur": "모리셔스 루피", + "currency-display-name-mwk": "말라위 콰차", + "currency-display-name-mxn": "멕시코 페소", + "currency-display-name-myr": "말레이시아 링깃", + "currency-display-name-mzn": "모잠비크 메티칼", + "currency-display-name-nad": "나미비아 달러", + "currency-display-name-ngn": "나이지리아 나이라", + "currency-display-name-nok": "노르웨이 크로네", + "currency-display-name-npr": "네팔 루피", + "currency-display-name-nzd": "뉴질랜드 달러", + "currency-display-name-omr": "오만 리알", + "currency-display-name-pen": "페루 솔", + "currency-display-name-pgk": "파푸아 뉴기니 키나", + "currency-display-name-php": "필리핀 페소", + "currency-display-name-pkr": "파키스탄 루피", + "currency-display-name-pln": "폴란드 즈워티", + "currency-display-name-pyg": "파라과이 과라니", + "currency-display-name-qar": "카타르 리얄", + "currency-display-name-ron": "루마니아 레우", + "currency-display-name-rsd": "세르비아 디나르", + "currency-display-name-rub": "러시아 루블", + "currency-display-name-sar": "사우디 아라비아 리얄", + "currency-display-name-sek": "스웨덴 크로나", + "currency-display-name-sgd": "싱가포르 달러", + "currency-display-name-thb": "태국 바트", + "currency-display-name-try": "터키 리라", + "currency-display-name-ttd": "트리니다드 토바고 달러", + "currency-display-name-twd": "대만 달러", + "currency-display-name-tzs": "탄자니아 실링", + "currency-display-name-uah": "우크라이나 흐리브냐", + "currency-display-name-ugx": "우간다 실링", + "currency-display-name-usd": "미국 달러", + "currency-display-name-uyu": "우루과이 페소", + "currency-display-name-vef": "베네수엘라 볼리바르", + "currency-display-name-vnd": "베트남 동", + "currency-display-name-zar": "남아프리카 공화국 랜드", + "current": "현재", + "current-average": "현재 평균", + "current-average-tip": "현재 평균 팁", + "current-base": "현재 베이스", + "current-base-fee": "현재 기본 수수료", + "current-minimum-tip": "현재 최소 팁", + "current-network": "현재 네트워크", + "current-password": "현재 비밀번호", + "current-pin": "6자리 패스코드 입력", + "current-pin-description": "6자리 패스코드를 입력해 계속 진행하세요", + "custom": "커스텀 토큰", + "custom-networks": "사용자 정의 네트워크", + "custom-node": "사용자 지정 RPC 엔드포인트를 사용하고 있습니다. 로컬 전송 기록이 불완전 할 수 있습니다.", + "custom-seed-phrase": "잘못된 시드 구문", + "custom-seed-phrase-text-1": "시드 구문 단어들이 스테이터스 딕셔너리와 일치하지 않습니다. 철자를 확인해주세요.", + "dapp": "디앱", + "dapp-starter-pack-accept": "동의하고 열기", + "dapp-starter-pack-description": "스테이터스를 시작하는 데 도움이 될 암호화폐입니다! SNT를 활용하여 이모티콘을 구입하고, ENS 이름을 등록하거나 디앱을 브라우징해보세요", + "dapp-starter-pack-title": "스타터 팩", + "dapp-would-like-to-connect-wallet": "를 아래 지갑에 연결합니다", + "dapps": "디앱", + "dapps-permissions": "디앱 권한", + "dark": "다크", + "data": "데이터", + "data-collected": "데이터 수집 완료", + "data-collected-subtitle": "아래 표에서 저장 및 전송될 정확한 데이터를 확인하세요. 데이터의 경우, 중요한 데이터가 전송되지 않도록 공공 규칙에 따라 검증됩니다. 글만 보고 믿지 말고 직접 확인하세요.", + "data-syncing": "데이터 동기화", + "database-reset-content": "채팅, 연락처, 설정이 모두 삭제되었습니다. 키카드와 계정을 사용하실 수 있습니다", + "database-reset-title": "데이터베이스 초기화", + "database-reset-warning": "데이터베이스가 초기화됩니다. 채팅, 연락처 및 설정이 삭제됩니다", + "datetime-ago": "전", + "datetime-ago-format": "{{number}}{{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "other": "일" + }, + "datetime-day-short": { + "other": "일" + }, + "datetime-hour": { + "other": "시간" + }, + "datetime-hour-short": { + "other": "시간" + }, + "datetime-minute": { + "other": "분" + }, + "datetime-minute-short": { + "other": "분" + }, + "datetime-second": { + "other": "초" + }, + "datetime-second-short": { + "other": "초" + }, + "datetime-today": "오늘", + "datetime-yesterday": "어제", + "decimals": "소수점 (Decimals)", + "decline": "거절", + "decryption-failed-content": "데이터를 복호화하는 중에 오류가 발생했습니다. 오래된 데이터를 삭제하고 새로운 계정을 생성해야 합니다. \"적용\"으로 기존 데이터를 지우거나 \"취소\"로 다시 시도해주세요", + "default": "기본 설정", + "default-assets": "기본 ERC20 및 ERC721", + "default-sync-period": "동기화 기록:", + "delete": "삭제", + "delete-account": "계정 삭제", + "delete-and-leave-group": "그룹 삭제 및 탈퇴", + "delete-bootnode": "부트노드 삭제", + "delete-bootnode-are-you-sure": "이 부트노드를 삭제하시겠습니까?", + "delete-bootnode-title": "부트노드 삭제", + "delete-category-confirmation": "이 카테고리를 삭제하시겠습니까?", + "close-chat": "채팅방 삭제", + "close-chat-confirmation": "이 채팅을 삭제하시겠습니까?", + "delete-confirmation": "삭제하시겠습니까?", + "delete-keys-keycard": "키카드에서 키 삭제", + "delete-mailserver": "스테이터스 노드 삭제", + "delete-mailserver-are-you-sure": "이 스테이터스 노드를 삭제하시겠습니까?", + "delete-mailserver-title": "스테이터스 노드 삭제", + "delete-message": "메시지 삭제", + "delete-my-account": "계정 삭제", + "delete-my-profile": "내 프로필 삭제", + "delete-network-confirmation": "이 네트워크를 삭제하시겠습니까?", + "delete-network-error": "이 네트워크를 삭제하기 전에 다른 네트워크에 연결하세요", + "delete-network-title": "네트워크를 삭제하시겠습니까?", + "delete-node": "노드 삭제", + "delete-node-are-you-sure": "이 노드를 삭제하시겠습니까?", + "delete-node-title": "노드 삭제", + "delete-profile": "프로필 삭제", + "delete-profile-warning": "경고: 시드 구문을 별도로 백업하지 않은 경우, 프로필을 삭제하면 내 자산에 접근할 수 없게 됩니다", + "deny": "거절", + "derivation-path": "파생 경로", + "describe-channel": "채널 설명", + "description": "설명", + "dev-mode": "개발 모드", + "dev-mode-settings": "개발 모드 설정", + "device-syncing": "기기 동기화", + "devices": "기기", + "disable": "비활성화", + "disable-all": "모두 비활성화", + "disable-later-in-settings": "나중에 설정에서 비활성화할 수 있습니다", + "disabled": "비활성화", + "disconnect": "연결 해제", + "disconnected": "연결 중...", + "discover": "찾아보기", + "dismiss": "무시", + "display-collectibles": "수집품 표시", + "done": "완료", + "dont-ask": "다시 묻지 않기", + "edit": "편집", + "edit-categories": "카테고리 편집", + "edit-channel-title": "채널 편집", + "edit-chats": "채팅방 편집", + "edit-community": "커뮤니티 편집", + "edit-favourite": "즐겨찾기 편집", + "edit-group": "그룹 편집", + "edit-profile": "프로필 편집", + "edited": "수정 됨", + "editing-message": "메시지 편집", + "empty-activity-center": "채팅 알림이\n여기에 나타납니다", + "empty-chat-description": "이 채팅에 아직\n메시지가 없습니다", + "empty-chat-description-community": "지난 {{quiet-hours}} 동안 이곳은 활동이 없었습니다.", + "empty-chat-description-one-to-one": "채팅방의 모든 메시지는 암호화되며, 귀하와 상대방만 열람할 수 있습니다. 채팅 상대: ", + "empty-chat-description-public": "이 채팅방은 지난 {{quiet-hours}} 동안 대화가 없었습니다. 대화를 시작하거나 ", + "empty-chat-description-public-share-this": "이 채팅을 공유하세요.", + "empty-keycard-required": "빈 키카드가 필요합니다", + "empty-pending-invitations-descr": "초대 링크를 통해 그룹에 가입하고 싶은 사용자들이\n여기에 표시됩니다", + "empty-tab": "빈 탭", + "enable": "사용", + "enable-all": "모두 활성화", + "enable-link-previews": "링크 미리보기를 활성화할까요?", + "encrypt-with-password": "비밀번호로 암호화", + "ens-10-SNT": "10 SNT", + "ens-add-username": "사용자 이름 추가", + "ens-agree-to": "다음에 동의합니다 ", + "ens-chat-settings": "채팅 설정", + "ens-custom-domain": "커스텀 도메인", + "ens-custom-username-hints": "username.domain.eth와 같은 커스텀 도메인 형식의 사용자 이름을 입력해주세요", + "ens-custom-username-taken": "소유한 사용자 이름이 아닙니다 :(", + "ens-deposit": "입금", + "ens-dismiss-message": "닫으려면 여기를 클릭하세요", + "ens-displayed-with": "귀하의 메시지가 다른 사용자에게 다음과 같이 표시됩니다", + "ens-get-name": "범용 사용자 이름 등록", + "ens-got-it": "알겠습니다", + "ens-locked": "사용자 이름이 등록되었습니다. {{date}}까지 이름을 해지할 수 없습니다", + "ens-name-content": "이더리움 네임 서비스(Ethereum Name Service)로 채팅키와 연결되는 커스텀 닉네임. ENS 이름은 탈중앙화된 사용자 이름입니다.", + "ens-name-not-found": "ENS 이름을 확인할 수 없습니다", + "ens-name-title": "ENS 이름", + "ens-network-restriction": "Mainnet에서만 사용 가능", + "ens-no-usernames": "연결된 사용자 이름이 없습니다", + "ens-powered-by": "Powered by Ethereum Name Services", + "ens-primary-username": "주 사용자 이름", + "ens-register": "등록하기", + "ens-registration-failed": "사용자 이름을 등록하려면 다시 시도해주세요", + "ens-registration-failed-title": "트랜잭션 실패", + "ens-registration-failure": "등록 실패", + "ens-registration-in-progress": "등록 중...", + "ens-release-username": "사용자 이름 계약 해지", + "ens-remove-hints": "제거하면 키와 사용자 이름이 분리됩니다.", + "ens-remove-username": "사용자 이름 삭제", + "ens-saved": "은 채팅 키와 연결되어 스테이터스에서 사용 가능합니다.", + "ens-saved-title": "사용자 이름 추가됨", + "ens-show-username": "채팅창에 내 ENS 이름 표시", + "ens-terms-header": "이름 등록 약관", + "ens-terms-point-1": "자산은 1년 동안 예치됩니다. 여러분의 SNT는 잠기게 되며, 별도로 지출되지 않습니다.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS 레지스트리).", + "ens-terms-point-2": "1년 후, 등록한 이름의 계약을 해지하고 예치금을 돌려받을 수 있습니다. 이름을 유지하고 싶을 경우에는 별도의 조치를 할 필요가 없습니다.", + "ens-terms-point-3": "스테이터스가 컨트랙트를 업그레이드 하는 등으로 이용 약관을 변경하는 경우, 사용자는 남은 기간에 상관 없이 사용자 이름을 해지할 수 있습니다.", + "ens-terms-point-4": "컨트랙트 관리자는 사용자의 예치금에 접근할 수 없습니다. 이는 등록된 주소로만 반환됩니다.", + "ens-terms-point-5": "사용자의 주소는 ENS 이름과 공개적으로 연동됩니다.", + "ens-terms-point-6": "사용자 이름은 stateofus.eth 의 서브 도메인 노드로 생성되며, ENS 스마트 컨트랙트 이용 약관을 따릅니다.", + "ens-terms-point-7": "사용자를 대신하여 SNT를 양도하는 계약을 승인합니다. 이는 트랜잭션에 전송 권한을 부여할 때부터 유효합니다.", + "ens-terms-point-8": "이러한 조항은 다음 주소의 스마트 컨트랙트 로직으로 보장됩니다:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "이름 등록 약관.", + "ens-test-message": "안녕하세요", + "ens-transaction-pending": "트랜잭션 대기 중...", + "ens-understand": "지갑 주소와 사용자 이름이 공개적으로 연결됨을 이해합니다.", + "ens-username": "ENS 사용자 이름", + "ens-username-already-added": "사용자 이름은 사용자의 채팅 키와 연결되며, 스테이터스에서 사용 가능합니다.", + "ens-username-available": "✓ 사용자 이름을 사용할 수 있습니다!", + "ens-username-connected": "이 사용자 이름은 사용자가 소유하며, 채팅 키와 연결됩니다.", + "ens-username-connected-continue": "'채팅에서 ENS 사용자 이름 표시'를 설정합니다.", + "ens-username-connected-with-different-key": "사용자 이름과 현재 키를 연결하는 트랜잭션이 필요합니다.", + "ens-username-connection-confirmation": "트랜잭션이 완료되면 {{username}}와 연결됩니다", + "ens-username-hints": "최소 4자 이상이어야 하며, 알파벳 소문자 및 숫자만 가능합니다.", + "ens-username-invalid": "문자와 숫자만 가능.", + "ens-username-invalid-name-warning": "ENS 이름 중 하나의 등록 프로세스에 문제가 발생했습니다. 지갑 트랜잭션에 해당 ENS 이름을 사용하지 마시고, support@status.im으로 지원팀에 문의해주세요", + "ens-username-owned": "✓ 이미 소유한 이름입니다. ", + "ens-username-owned-continue": "계속하면 이 사용자 이름이 채팅 키와 연결됩니다.", + "ens-username-registration-confirmation": "좋습니다! 트랜잭션이 완료되면 {{username}}(을)를 소유하게 됩니다", + "ens-username-registration-invalid": "경고! 등록 프로세스에 문제가 발생했습니다. 지갑 트랜잭션에 해당 ENS 이름을 사용하지 마시고, support@status으로 문의해주세요", + "ens-username-taken": "이미 사용 중인 이름입니다 :(", + "ens-username-you-can-follow-progress": "지갑의 트랜잭션 기록 섹션에서 진행 상황을 확인할 수 있습니다.", + "ens-usernames": "ENS 이름", + "ens-usernames-details": "다른 사용자가 쉽게 인지할 수 있도록 범용 사용자 이름을 등록하세요", + "ens-want-custom-domain": "다른 도메인의 이름 가져오기", + "ens-want-domain": "stateofus.eth 도메인 획득하기", + "ens-welcome-hints": "ENS 이름은 굉장히 긴 주소를 직관적인 사용자 이름으로 변환합니다.", + "ens-welcome-point-customize": "ENS 이름은 채팅에서 보이는 무작위 영단어 3개짜리 이름을 대체하는 닉네임입니다. {{name}} 대신 @닉네임 을 사용하세요.", + "ens-welcome-point-customize-title": "채팅 이름을 원하는 대로 만들어보세요", + "ens-welcome-point-receive": "다른 사람들과 더욱 간편하게 거래하세요.", + "ens-welcome-point-receive-title": "채팅으로 트랜잭션을 진행하세요", + "ens-welcome-point-register": "한 번 이름을 등록하면, 해당 이름을 영원히 보유할 수 있습니다. 등록한 지 1년 후, 이름을 공개하고 SNT를 돌려받을 수 있습니다.", + "ens-welcome-point-register-title": "10 SNT만으로 등록할 수 있습니다", + "ens-welcome-point-simplify": "(0x...)로 시작하는 16진수 해시값 대신, 읽고 쓰기 쉬운 ENS 이름으로 거래를 시작하세요.", + "ens-welcome-point-simplify-title": "ETH 주소를 단순화하세요", + "ens-welcome-point-verify": "다음 단계에서 소유한 사용자 이름을 인증하고 추가하세요.", + "ens-welcome-point-verify-title": "이미 사용자 이름이 있으신가요?", + "ens-your-username": "사용자 이름", + "ens-your-usernames": "사용자 이름", + "ens-your-your-name": "ENS 이름", + "enter-12-words": "12단어의 시드 구문을 입력하되 띄어쓰기로 구분해주세요", + "enter-a-private-key": "개인 키 입력", + "enter-a-seed-phrase": "시드 구문 입력", + "enter-address": "주소 입력", + "enter-contact-code": "ENS (vitalik94) 또는 채팅 키 (0x04…)", + "enter-pair-code": "페어링 코드 입력", + "enter-pair-code-description": "이미 페어링 된 스테이터스 클라이언트에서 페어링 코드를 설정할 수 있습니다", + "enter-password": "비밀번호 입력", + "enter-password-migration-prompt": "암호를 입력하고 키와 함께 연락처, 채팅 및 설정을 이전합니다", + "enter-pin": "6자리 패스코드 입력", + "enter-puk-code": "PUK 코드 입력", + "enter-puk-code-description": "6자리 패스코드가 차단되었습니다. \n PUK 코드를 입력해 차단을 해제하세요.", + "enter-recipient-address-or-username": "수신인의 지갑 주소 또는 사용자 이름을 입력하세요", + "enter-seed-phrase": "시드 구문 입력", + "enter-url": "URL 입력", + "enter-user-pk": "사용자 공개키 입력", + "enter-watch-account-address": "QR 코드 스캔 \n또는 \n열람할 주소를 입력하세요", + "enter-word": "단어 입력", + "enter-your-code": "6자리 패스코드 입력", + "enter-your-password": "비밀번호 입력", + "error": "오류", + "error-unable-to-get-balance": "잔액을 가져올 수 없습니다", + "error-unable-to-get-prices": "통화 변환 오류가 발생했습니다. 다시 시도하려면 화면을 새로고침하세요.", + "error-unable-to-get-token-balance": "토큰 잔액을 가져올 수 없습니다", + "errors": "오류", + "eth": "ETH", + "ethereum-account": "이더리움 계정", + "ethereum-address": "이더리움 주소", + "ethereum-node-started-incorrectly-description": "이더리움 노드가 잘못된 구성으로 시작되어, 어플리케이션이 중지되고 해당 상태에서 복구됩니다. 구성된 네트워크 ID = {{network-id}} , 실제 ID = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "이더리움 노드가 잘못 시작되었습니다", + "etherscan-lookup": "Etherscan에서 보기", + "everyone": "모두", + "expand-all": "모두 확장", + "export-account": "계정 정보 내보내기", + "export-key": "개인키 내보내기", + "external-storage-denied": "외부 저장소에 대한 액세스가 거부되었습니다", + "failed": "실패", + "faq": "자주 묻는 질문", + "fast": "빠름", + "favourite": "즐겨찾기", + "favourite-description": "즐겨 찾는 웹사이트가 여기에 표시됩니다", + "favourites": "즐겨찾기", + "favourites-empty": "즐겨찾기에 추가된 주소는 여기에 표시됩니다.", + "fee-cap": "수수료 한도", + "fee-explanation": "트랜잭션의 최대 가격입니다. 블록 기본 수수료가 이를 초과하는 경우, 기본 요금이 낮은 다음 블록에 포함됩니다.", + "fee-options": "권장 수수료 옵션", + "fetch-community": "커뮤니티 가져오기", + "fetch-messages": "↓ 메시지 가져오기", + "fetch-timeline": "↓ 가져오기", + "fetching-community": "커뮤니티 가져오는 중...", + "find": "찾기", + "finish": "완료", + "finishing-card-setup": "카드 설정 마무리", + "fleet": "플릿(Fleet)", + "fleet-settings": "플릿(Fleet) 설정", + "follow": "팔로우", + "follow-your-interests": "오픈채팅에서 새로운 사람들을 만나보세요", + "free": "↓ 무료", + "from": "보내는 주소", + "gas-amount-limit": "가스량 한도", + "gas-limit": "가스 한도", + "gas-price": "가스 가격", + "gas-used": "사용된 가스", + "generate-a-key": "키 생성", + "generate-a-new-account": "계정 생성", + "generate-a-new-key": "새로운 키 생성", + "generate-account": "키 생성", + "generate-an-account": "계정 생성", + "generate-new-key": "키 생성", + "generating-codes-for-pairing": "> 제품 소프트웨어를 카드에 다운로드\n > 잠금 해제 및 페어링 코드 생성", + "generating-keys": "키 생성 중...", + "generating-mnemonic": "시드 구문 생성", + "get-a-keycard": "키카드를 획득하세요", + "get-started": "시작", + "get-status-at": "http:\/\/status.im 에서 스테이터스를 만나보세요", + "get-stickers": "이모티콘 가져오기", + "give-a-short-description": "짧은 설명을 더하세요", + "give-a-short-description-community": "짧은 설명을 더하세요", + "give-permissions-camera": "카메라 접근 \n권한 허용", + "glossary": "용어 사전", + "go-to-settings": "설정으로 이동...", + "got-it": "확인했습니다", + "grant-face-id-permissions": "Face ID 사용을 승인하려면, 시스템 설정에서 스테이터스의 Face ID를 활성화해주세요", + "group-chat": "그룹 채팅", + "group-chat-admin": "관리자", + "group-chat-admin-added": "** {{member}} ** 님이 관리자로 지정됨", + "group-chat-all-contacts-invited": "이미 모든 연락처가 그룹에 있습니다.", + "group-chat-created": "** {{member}} ** 님이 ** {{name}} ** 그룹 생성", + "group-chat-decline-invitation": "초대 거절", + "group-chat-member-added": "** {{member}} ** 님이 초대됨", + "group-chat-member-joined": "** {{member}} ** 님이 그룹에 참여", + "group-chat-member-removed": "** {{member}} ** 님이 그룹을 떠남", + "group-chat-members-count": "{{selected}}\/{{max}} 멤버", + "group-chat-name-changed": "** {{member}} ** 님이 그룹명을 ** {{name}} ** (으)로 변경", + "group-chat-no-contacts": "아직 연락처가 없습니다. \n친구들을 초대하고 채팅을 시작해보세요", + "group-info": "그룹 정보", + "group-invite": "그룹 초대", + "group-invite-link": "그룹 초대 링크", + "group-membership-request": "그룹 멤버십 요청", + "gwei": "Gwei", + "has-permissions": "에게 다음 지갑 접근 권한을 허용합니다", + "hash": "해시값", + "help": "도움말", + "help-capitalized": "도움말", + "help-center": "도움말 센터", + "help-improve-status": "스테이터스가 발전할 수 있게 도와주세요", + "hide": "숨기기", + "hide-content-when-switching-apps": "화면 캡처 차단", + "hide-content-when-switching-apps-ios": "미리보기 숨기기", + "history": "기록", + "history-nodes": "스테이터스 노드", + "hold-card": "카드를 휴대전화 뒷면에 위치해주세요", + "home": "홈", + "hooks": "후크 (Hooks)", + "how-it-works": "어떻게 시작하나요?", + "http-gateway-error": "죄송합니다. 요청이 실패했습니다!", + "identifier": "식별자", + "image": "이미지", + "image-remove-current": "현재 사진 삭제", + "image-source-gallery": "갤러리에서 선택하기", + "image-source-make-photo": "촬영", + "image-source-title": "사진 편집", + "import": "불러오기", + "import-community": "커뮤니티 가져오기", + "import-community-title": "커뮤니티 가져오기", + "in-contacts": "연락처에 등록되어 있습니다", + "include": "포함", + "incoming": "입금", + "incoming-transaction": "입금 트랜잭션", + "incorrect-code": [ + "str", + "잘못된 코드입니다. 다시 입력해 주세요" + ], + "increase-gas": "가스 증가", + "initialization": "초기화", + "install": "↓ 설치", + "insufficient-balance-to-cover-fee": "거래 수수료를 위한 잔액이 충분하지 않습니다", + "intro-message1": "스테이터스에 오신 것을 환영합니다!\n이 메시지를 탭하여 비밀번호를 설정하고 시작하세요.", + "intro-privacy-policy-note1": "스테이터스는 절대로 개인 정보를 수집, 공유 및 판매하지 않습니다. 계속하면 다음에 동의하는 것으로 간주됩니다: ", + "intro-privacy-policy-note2": "개인 정보 정책", + "intro-text": "스테이터스는 탈중앙 웹으로 향하는 첫걸음입니다", + "intro-text1": "검열과 해킹으로부터 자유로운 P2P 네트워크로 자유롭게 채팅하세요", + "intro-text2": "전세계 어디서든 디지털 자산을 주고 받을 수 있습니다. 은행 계좌가 필요하지 않습니다", + "intro-text3": "여러분의 데이터를 안전하게 지키는 게임, 거래소, SNS를 체험해보세요", + "intro-title1": "검열 없는 안전한 커뮤니케이션", + "intro-title2": "안전한 암호화폐 지갑", + "intro-title3": "탈중앙 앱", + "intro-wizard-text1": "키는 사용자의 스마트폰에 저장됩니다. 저장된 키가 스테이터스 계정을 관리합니다.", + "intro-wizard-text2": "키 하나는 채팅 이름으로 사용합니다. 읽을 수 있는 이름이며, 앞으로 변경할 수 없습니다.", + "intro-wizard-text3": "키카드를 보유하고 있다면, 더욱 안전한 보안을 위해 키카드에 키를 저장하세요.", + "intro-wizard-text4": "키 보안 및 암호화", + "intro-wizard-text6": "스테이터스는 새로운 메시지를 수신하면 사용자에게 알림을 전달합니다. 사용자는 추후에 설정에서 알림 옵션을 변경할 수 있습니다.", + "intro-wizard-title-alt4": "비밀번호 만들기", + "intro-wizard-title-alt5": "비밀번호 확인", + "intro-wizard-title1": "키 생성하기", + "intro-wizard-title2": "채팅 이름 선택", + "intro-wizard-title3": "키 저장소 선택", + "intro-wizard-title4": "6자리 패스코드 만들기", + "intro-wizard-title5": "패스코드 확인", + "intro-wizard-title6": "알림 사용", + "introduce-yourself": "간단한 메시지로 자신을 소개해주세요", + "invalid-address-qr-code": "스캔한 QR 코드에 유효한 주소가 포함되어 있지 않습니다", + "invalid-format": "잘못된 형식\n{{format}} 이어야 합니다", + "invalid-key-confirm": "적용", + "invalid-key-content": "파일이 손상되어 데이터베이스를 암호화할 수 없습니다. 자산과 채팅 키는 안전하지만, 채팅과 연락처 같은 데이터는 복구될 수 없습니다. \"{{erase-multiaccounts-data-button-text}}\" 버튼으로 다른 모든 데이터를 삭제하고, 기존 자산 접근과 메시지 전송을 그대로 이용하세요", + "invalid-number": "잘못된 숫자", + "invalid-pairing-password": "잘못된 페어링 비밀번호", + "invalid-public-chat-topic": "잘못된 오픈채팅 주제", + "invalid-range": "잘못된 형식, {{min}} ~ {{max}} 사이 여야합니다", + "invalid-username-or-key": "잘못된 사용자 이름 또는 채팅 키", + "invite": "초대", + "invite-button": "초대", + "invite-chat-accept": "수락", + "invite-chat-accept-join": "수락 및 참여", + "invite-chat-intro": "친구가 스테이터스로 초대했습니다. 여러분의 시작을 도울 암호화폐가 준비되어 있습니다! SNT를 통해 ENS 이름을 등록하거나 이모티콘을 구매해보세요", + "invite-chat-name": "친구 초대", + "invite-chat-pending": "대기 중", + "invite-chat-rule": "수락하면 사용자의 친구는 암호화폐로 초대 보너스를 받게 됩니다", + "invite-chat-starter-pack": "스타터 팩", + "invite-friends": "친구 초대", + "invite-instruction-fifth": "초대 보너스는 언제든지 환급 가능합니다.", + "invite-instruction-first": "친구가 스테이터스를 다운로드하고 사용할 수 있도록 특별 초대 링크를 보내세요", + "invite-instruction-fourth": "사용자는 초대 보너스를, 친구는 스타터 팩을 받게 됩니다", + "invite-instruction-second": "친구는 스테이터스를 다운로드하고 계정을 만듭니다 (안드로이드만 가능)", + "invite-instruction-third": "초대가 확인되면 친구와의 채팅이 시작됩니다.", + "invite-people": "친구 초대", + "invite-privacy-policy-public": "초대 링크를 통해 스테이터스를 설치했습니다. 이 채팅에 참여하면 추천인에게 보상을 제공하고 다음에 동의하는 것으로 간주됩니다", + "invite-privacy-policy1": "수락을 누르면 초대 프로그램 약관에 동의하는 것으로 간주됩니다.", + "invite-privacy-policy2": "이용 약관.", + "invite-public-chat-home": "추천 초대", + "invite-public-chat-intro": "스테이터스 사용에 도움이 될 암호화폐입니다! ENS 이름을 등록하거나 이모티콘 패키지를 구입해보세요", + "invite-receive-account": "초대 보너스를 받을 계정", + "invite-reward": "친구를 초대하고 암호화폐를 받아보세요!", + "invite-reward-friend": "친구: ", + "invite-reward-friend-description": "친구는 {{reward}}로 구성된 스테이터스 스타터 팩을 받고, 스테이터스를 시작합니다", + "invite-reward-friend-name": "스타터 팩", + "invite-reward-you": "사용자: ", + "invite-reward-you-description": "친구를 초대하고 {{reward}} 초대 보너스를 받아보세요! 받은 보너스로 스테이터스에서 이모티콘을 구입하거나, ENS 이름 등록 및 디앱에 활용할 수 있습니다", + "invite-reward-you-name": "초대 보너스", + "invite-select-account": "초대 보너스를 받을 계정 선택", + "invite-warning": "이 프로모션은 미국 거주자가 아니며 안드로이드 기기를 사용하는 유저에게만 유효합니다. 초대받은 친구는 7일 이내로 초대를 확인해야 합니다", + "invited": "초대됨", + "join": "참여", + "join-a-community": "또는 커뮤니티에 참여", + "join-group-chat": "그룹 참여", + "join-group-chat-description": "{{username}} 님이 {{group-name}} 그룹에 초대", + "join-me": "스테이터스에서 만나요: {{url}}", + "join-new-private-chat": "1:1 채팅 시작", + "join-new-public-chat": "오픈채팅 참여", + "joined": "참여", + "joined-group-chat-description": "{{username}} 님의 초대로 {{group-name}} 에 입장했습니다", + "key": "키", + "key-managment": "키 관리", + "key-on-device": "개인 키가 이 기기에 저장됩니다", + "keycard": "키카드", + "keycard-access-reset": "키카드 접근 권한이 초기화되었습니다", + "keycard-applet-install-instructions": "애플릿을 설치하려면 https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation 를 확인해주세요", + "keycard-awaiting-description": "카드를 기기 NFC 접촉면에 놓아주시기 바랍니다", + "keycard-awaiting-title": "탐색 중...", + "keycard-backup": "백업 키카드 만들기", + "keycard-backup-success-body": "백업 카드가 성공적으로 생성되었습니다. 이제 기본 카드처럼 계정에서 사용할 수 있습니다.", + "keycard-backup-success-title": "백업 성공", + "keycard-blocked": "키카드가 차단되었습니다. \n계속 사용하려면 카드를 재설정해야 합니다.", + "keycard-can-use-with-new-passcode": "새 패스코드로 이 카드를 사용할 수 있습니다.", + "keycard-cancel-setup-text": "키카드 설치가 취소됩니다. 키카드를 사용하려면 설치를 완료해야 합니다. 설치를 취소하시겠습니까?", + "keycard-cancel-setup-title": "위험한 작업", + "keycard-connected-description": "카드와 기기의 접촉을 유지하세요", + "keycard-connected-title": "연결됨", + "keycard-desc": "키카드를 보유하고 계신가요? 트랜잭션에 사용할 키를 키카드에 저장하세요", + "keycard-dont-ask-card": "로그인 시 카드 요청 안함", + "keycard-enter-new-passcode": "새 패스코드 입력 {{step}} \/ 2", + "keycard-error-description": "다음 단계를 진행하기 위하여 카드를 다시 연결해주시기 바랍니다", + "keycard-error-title": "연결이 끊어졌습니다", + "keycard-factory-reset": "공장 설정으로 카드 초기화", + "keycard-factory-reset-text": "카드에 저장된 모든 니모닉 구문이 삭제됩니다. 이 키카드와 함께 사용했던 니모닉 구문의 백업이 있는지 확인해주세요.", + "keycard-factory-reset-title": "공장 초기화를 진행하시겠습니까?", + "keycard-free-pairing-slots": "키카드에는 {{n}}개의 무료 페어링 슬롯이 있습니다", + "keycard-has-multiaccount-on-it": "카드가 이미 가득 찼습니다. 카드는 하나의 키 쌍을 보유할 수 있습니다.", + "keycard-init-description": "카드를 기기 뒷면에 대고 그 상태를 유지해주세요", + "keycard-init-title": "카드 검색 중...", + "keycard-is-blocked-details": "이제 이 카드를 사용해 서명하거나 계정에 접근할 수 없습니다. 패스코드 및 PUK 접근 시도 실패 횟수가 너무 많습니다.", + "keycard-is-blocked-instructions": "계정에 액세스하려면 카드를 공장 초기화해야 합니다. 아래 버튼을 탭해 진행하세요. 니모닉이 필요합니다.", + "keycard-is-blocked-title": "키카드가 차단되었습니다", + "keycard-is-frozen-details": "자산을 지키기 위해 카드가 동결되었습니다. 계정에 접근하기 위한 카드 접근 권한을 재설정하고, 트랜잭션을 진행하시기 바랍니다. PUK 또는 니모닉으로 진행할 수 있습니다.", + "keycard-is-frozen-factory-reset": "니모닉으로 재설정", + "keycard-is-frozen-reset": "PUK 재설정", + "keycard-is-frozen-title": "키카드가 잠겼습니다", + "keycard-onboarding-finishing-header": "마무리 작업 진행 중", + "keycard-onboarding-intro-header": "키카드에 키를 저장하세요", + "keycard-onboarding-intro-text": "이 작업은 몇 분 정도 소요되며, 여러분의 계정을 안전하게 보호하기 위해 중요한 작업입니다.", + "keycard-onboarding-mnemonic-text": "또한 시드 구문을 적을 종이와 연필이 필요합니다.", + "keycard-onboarding-pairing-header": "카드 페어링 중...", + "keycard-onboarding-pin-text": "키카드에 대한 액세스를 보호하기 위한 6자리 패스코드를 생성해야 합니다.", + "keycard-onboarding-preparing-header": "카드 준비 중...", + "keycard-onboarding-puk-code-header": "메모하신 후 \n 안전한 장소에 보관해주세요", + "keycard-onboarding-recovery-phrase-description": "이 시드 구문 단어들을 통해 계정을 복구할 수 있습니다. 이 단어들을 오프라인상에 안전하게 보관하시길 바랍니다.", + "keycard-onboarding-recovery-phrase-header": "시드 구문을 백업하세요", + "keycard-onboarding-recovery-phrase-text": "이 시드 단어들은 사용자 키를 생성하는 데 사용됩니다. 이 단어들을 타인에게 공유하면 안됩니다.", + "keycard-onboarding-start-header": "스마트폰 뒷면에 \n 카드를 대주세요", + "keycard-onboarding-start-step1": "패스코드 생성", + "keycard-onboarding-start-step1-text": "키를 암호화하기 위한 6자리 패스코드 생성. 코드 생성에는 약 1분 정도 소요됩니다.", + "keycard-onboarding-start-step2": "PUK 와 페어링 코드를 메모해주세요", + "keycard-onboarding-start-step2-text": "메모를 위해 필기도구가 필요할 수 있습니다. 메모에는 1분 정도 시간이 소요됩니다", + "keycard-onboarding-start-step3": "시드 구문을 백업하세요", + "keycard-onboarding-start-step3-text": "메모를 위한 필기도구를 준비해 주세요. 메모는 1분 정도 시간이 소요됩니다", + "keycard-onboarding-start-text": "설치하는 동안 카드를 스마트폰과 접촉된 상태로 유지해주세요. 설치 과정은 약 4분 정도 소요됩니다", + "keycard-processing-description": "카드와 기기의 접촉을 유지하세요", + "keycard-processing-title": "처리 중", + "keycard-recover": "분실 또는 동결된 카드인가요?", + "keycard-recover-text": "니모닉 구문이 있는 경우, 이 계정과 연결된 새 키카드를 만들 수 있습니다. 새 키카드를 사용하거나 동결된 키카드에서 공장 초기화를 진행할 수 있습니다.", + "keycard-recover-title": "이 계정에 대한 새 카드를 만드시겠어요?", + "keycard-recovery-intro-button-text": "복구 시작", + "keycard-recovery-intro-header": "키카드에 저장된 키 복구하기", + "keycard-recovery-intro-text": "이전에 키카드로 키를 생성했고, 지금 이 기기에서 해당 키를 사용하려는 경우", + "keycard-recovery-no-key-header": "복구할 대상이\n없습니다", + "keycard-recovery-no-key-text": "이 키카드에는 키가 저장되어 있지 않습니다. 새로운 키를 생성하고 키카드에 키를 저장해주세요", + "keycard-recovery-phrase-confirm-header": "시드 구문 확인", + "keycard-recovery-phrase-confirmation-text": "두 번째 기회는 없습니다! 키카드를 분실하여 접근 권한을 손실하면, 시드 구문으로만 계정에 접근할 수 있습니다. 오로지 여러분만이 이 시드 구문을 관리할 수 있습니다. 반드시 안전하게 백업하시기 바랍니다.", + "keycard-recovery-phrase-confirmation-title": "시드 구문을 모두 메모하셨나요?", + "keycard-recovery-success-header": "키가 성공적으로\n 복구되었습니다", + "keycard-redeem-title": "수령 위치", + "keycard-redeem-tx": "자산 입금", + "keycard-redeem-tx-desc": "카드를 탭하여 서명하고, 자산을 수령하세요", + "keycard-reset-passcode": "패스코드 재설정", + "keycard-success-description": "이제 카드를 제거해도 좋습니다", + "keycard-success-title": "성공", + "keycard-unauthorized-operation": "이 작업을 수행할 권한이 없습니다.\n 올바른 카드를 탭해 다시 시도하세요.", + "keycard-upsell-subtitle": "향상된 보안과 편리성", + "language": "언어", + "last-backup-performed": "마지막 백업 수행:", + "last-transaction": "마지막 트랜잭션", + "learn-more": "더 알아보기", + "learn-more-about-keycard": "키카드에 대해 자세히 알아보기", + "leave": "나가기", + "leave-chat": "채팅방 나가기", + "leave-chat-confirmation": "채팅 기록이 기기에서 삭제됩니다. 다시 채팅 기록을 검색할 수 없습니다.", + "leave-community": "커뮤니티 나가기", + "leave-confirmation": "{{chat-name}} 나가기", + "leave-group": "그룹 나가기", + "left": "나감", + "les-ulc": "LES\/ULC", + "lets-go": "시작하기", + "light": "라이트", + "limit": "한계", + "linked-on": "{{date}} 에 연결", + "load-messages-before": "{{date}} 전", + "load-more-messages": "↓ 메시지 더 가져오기", + "load-more-timeline": "↓ 더 가져오기", + "loading": "로딩 중...", + "local-notifications": "알림", + "local-notifications-subtitle": "백그라운드 서비스 활성화", + "lock-app-with": "앱 잠금 수단:", + "log-level": "로그 수준", + "log-level-settings": "로그 수준 설정", + "logging": "로깅", + "logging-enabled": "로깅을 활성화하시겠습니까?", + "login-pin-description": "6자리 패스코드를 입력해 키를 해제하세요", + "logout": "로그아웃", + "logout-app-content": "계정에서 로그아웃힙니다. 다시 로그인하면 선택한 네트워크를 사용합니다", + "logout-are-you-sure": "로그아웃하시겠습니까?", + "logout-key-management": "키 관리에 액세스하려면 로그아웃해야 합니다.", + "logout-title": "로그아웃하시겠습니까?", + "looking-for-cards": "카드 검색 중...", + "lost-connection": "연결 끊김", + "low-tip": "팁이 너무 낮습니다", + "lower-than-average-tip": "평균보다 낮은 팁", + "mail-should-be-configured": "메일 클라이언트를 구성해야 합니다", + "mailserver-address": "스테이터스 노드 주소", + "mailserver-automatic": "자동 선택", + "mailserver-automatic-switch-explanation": "가장 빠른 스테이터스 노드 선택", + "mailserver-connection-error": "Status 노드에 연결할 수 없습니다", + "mailserver-content": "메시지를 전달하거나 최대 30일까지 메시지를 저장하는 스테이터스 네트워크 노드.", + "mailserver-details": "스테이터스 노드 세부 정보", + "mailserver-error-content": "선택한 스테이터스 노드에 연결할 수 없습니다.", + "mailserver-error-title": "스테이터스 노드에 연결하던 중 오류가 발생했습니다", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "다른 Status 노드 선택", + "mailserver-reconnect": "스테이터스 노드에 연결할 수 없습니다. 화면을 터치하여 다시 연결하세요", + "mailserver-request-error-content": "스테이터스 노드가 다음 오류를 반환했습니다: {{error}}", + "mailserver-request-error-status": "기록을 가져 오던 중 오류가 발생했습니다. 자세한 내용은 로그를 확인해주세요", + "mailserver-request-error-title": "스테이터스 노드 요청 오류", + "mailserver-request-retry": "다시 요청", + "mailserver-retry": "다시 시도", + "mailserver-title": "스테이터스 노드", + "main-currency": "주요 통화", + "main-networks": "메인 네트워크", + "main-wallet": "내 지갑", + "mainnet-network": "메인 네트워크", + "make-admin": "관리자로 지정", + "manage-connections": "애플리케이션 연결에서 연결 관리", + "manage-keys-and-storage": "키 및 저장소 관리", + "mark-all-read": "모두 읽음 처리", + "master-account": "마스터 계정", + "max-fee": "최대 수수료", + "max-priority-fee": "최대 우선 수수료", + "maximum-fee": "최대 수수료", + "maximum-fee-desc": "트랜잭션 전반의 최대 가격입니다. 현재 블록 기본 수수료가 이를 초과하는 경우 기본 수수료가 낮은 다음 블록에 거래가 포함됩니다.", + "maybe-later": "나중에", + "member-ban": "멤버 내보내기", + "member-kick": "멤버 내보내기", + "members": { + "other": "{{count}} 명" + }, + "members-active": { + "other": "{{count}} 명" + }, + "members-active-none": "멤버 없음", + "members-count": "{{count}} 명", + "members-label": "멤버", + "members-limit-reached": "멤버 한도에 도달했습니다", + "members-title": "멤버", + "membership-approval": "승인 필요", + "membership-approval-description": "커뮤니티는 무료로 가입할 수 있지만 신규 회원은 먼저 커뮤니티 생성인의 승인을 받아야 합니다.", + "membership-button": "멤버십 요건", + "membership-declined": "멤버쉽 요청이 거절되었습니다", + "membership-description": "그룹 멤버십은 그룹 관리자의 승인이 필요합니다", + "membership-ens": "ENS 사용자 이름 필요", + "membership-ens-description": "사용자의 커뮤니티에 가입하려면 ENS 사용자 이름이 필요합니다", + "membership-free": "요구 사항 없음", + "membership-free-description": "사용자의 커뮤니티는 누구나 자유롭게 가입할 수 있습니다", + "membership-invite": "다른 멤버의 초대 필요", + "membership-invite-description": "사용자의 커뮤니티는 오직 기존 멤버의 초대를 통해서만 참여할 수 있습니다", + "membership-none": "없음", + "membership-none-placeholder": "신규 회원이 가입하기 전에 특정 기준을 충족하도록 요구할 수 있습니다. 기준은 언제든지 변경할 수 있습니다.", + "membership-request-pending": "멤버십 요청 대기 중", + "membership-requests": "멤버십 요청", + "membership-title": "멤버십 요건", + "message": "메시지", + "message-not-sent": "메시지가 전송되지 않았습니다", + "message-options-cancel": "취소", + "message-reply": "답장", + "messages": "메시지", + "messages-from-contacts-only-subtitle": "연락처에 추가한 친구만이 그룹으로 사용자를 초대하거나 새 채팅을 시작할 수 있습니다", + "might-break": "일부 디앱에 오류를 일으킬 수 있습니다", + "migration-successful": "마이그레이션 성공", + "migration-successful-text": "계정이 키카드로 성공적으로 마이그레이션되었습니다", + "migrations-failed-content": "{{message}} \n스키마 버전: 초기 {{initial-version}} , 현재 {{current-version}} , 마지막 {{last-version}} \n\n데이터베이스 오류가 발생했습니다. 자산과 채팅 키는 안전하지만 채팅과 연락처 같은 데이터는 복구될 수 없습니다. \"{{erase-multiaccounts-data-button-text}}\" 버튼으로 다른 모든 데이터를 삭제하고, 기존 자산 접근과 메시지 전송을 그대로 이용하세요.", + "miners-higher-fee": "더 높은 수수료를 지불하면 채굴자들이 거래를 더 일찍 처리할 가능성이 높아집니다.", + "minimum-received": "최소 수신", + "mobile-network-ask-me": "데이터를 사용할 때 다시 묻기", + "mobile-network-continue-syncing": "동기화 계속", + "mobile-network-continue-syncing-details": "나중에 설정을 변경할 수 있습니다.", + "mobile-network-go-to-settings": "설정으로 이동", + "mobile-network-settings": "모바일 데이터", + "mobile-network-sheet-configure": "여기에서 동기화를 더 상세히\n설정하세요:", + "mobile-network-sheet-offline": "Wi-Fi 없음, 메시지 동기화 비활성화.", + "mobile-network-sheet-offline-details": "모바일 데이터를 활용한 동기화가 중지되어 있습니다", + "mobile-network-sheet-remember-choice": "내 선택 기억하기", + "mobile-network-sheet-settings": "설정", + "mobile-network-start-syncing": "동기화 시작", + "mobile-network-stop-syncing": "동기화 중지", + "mobile-network-stop-syncing-details": "Wi-Fi에 연결될 때까지 동기화를 중지할까요?", + "mobile-network-use-mobile": "모바일 데이터 사용", + "mobile-network-use-mobile-data": "스테이터스는 채팅 및 지갑 동기화 시, 많은 데이터를 소모합니다.", + "mobile-network-use-wifi": "Wi-Fi만 사용", + "mobile-syncing-sheet-details": "스테이터스는 채팅 및 지갑 동기화 시, 많은 데이터를 소모합니다.", + "mobile-syncing-sheet-title": "모바일 데이터로 동기화하시겠습니까?", + "more": "더 보기", + "move-and-reset": "이동 및 초기화", + "move-keystore-file": "키스토어 파일 이동", + "move-keystore-file-to-keycard": "키스토어 파일을 키카드로 이동하시겠어요?", + "multiaccount-exists-content": "이 계정을 위한 키가 이미 존재하여 다시 추가할 수 없습니다. 만약 비밀번호, 패스코드, 또는 키카드를 잊어버렸다면, 스테이터스 앱을 재설치하고 시드 구문을 입력해 키에 액세스해주시기 바랍니다", + "multiaccount-exists-title": "이 계정을 위한 키가 이미 존재합니다", + "multiaccounts-recover-enter-phrase-text": "12, 15, 18, 21 또는 24 단어로 구성된 시드 구문을 입력해주세요. 단어는 한 칸씩 띄어서 구분하세요.", + "multiaccounts-recover-enter-phrase-title": "내 시드 구문 입력", + "mute": "알림 끄기", + "my-accounts": "내 계정", + "my-accounts-empty": "사용 가능한 계정이 여기에 표시됩니다", + "my-profile": "내 프로필", + "my-status": "내 상태", + "name": "이름", + "name-of-token": "토큰 이름", + "name-optional": "이름 (선택)", + "name-your-channel": "채널 이름 지정", + "name-your-channel-placeholder": "채널명", + "name-your-community": "커뮤니티 이름 지정", + "name-your-community-placeholder": "기억하기 쉬운 이름", + "need-help": "도움이 필요하신가요?", + "network": "네트워크", + "network-chain": "네트워크 체인", + "network-details": "네트워크 세부정보", + "network-fee": "네트워크 수수료", + "network-id": "네트워크 ID", + "network-info": "네트워크 정보", + "network-invalid-network-id": "지정된 네트워크 ID가 RPC url의 네트워크 ID와 대응되지 않습니다", + "network-invalid-status-code": "잘못된 상태 코드 : {{code}}", + "network-invalid-url": "네트워크 URL이 잘못되었습니다", + "network-settings": "네트워크 설정", + "never": "절대", + "new": "신규", + "new-category": "새 카테고리", + "new-chat": "새 채팅", + "new-community-title": "새 커뮤니티", + "new-contact": "새 연락처", + "new-contract": "새 컨트랙트", + "new-favourite": "새 즐겨찾기", + "new-group": "새 그룹", + "new-group-chat": "새 그룹 채팅", + "new-network": "새 네트워크", + "new-password": "새 비밀번호", + "new-pin-description": "6자리 새 패스코드 입력", + "new-public-group-chat": "오픈채팅 참여", + "new-puk-description": "새로운 12자리 PUK 입력", + "new-status": "새 상태", + "new-tab": "새 탭", + "next": "다음", + "nickname": "닉네임", + "nickname-description": "닉네임은 스테이터스에서 다른 사용자를 식별하는데 사용됩니다. 설정한 닉네임은 사용자만 볼 수 있습니다", + "no": "아니오", + "no-collectibles": "수집품 없음", + "no-contacts": "아직 연락처가 없습니다", + "no-keycard-applet-on-card": "카드에 키카드 애플릿이 없습니다", + "no-messages": "메시지 없음", + "no-pairing-slots-available": "이 카드는 이미 5개의 기기에 페어링 되어 있어 이 기기와는 페어링 할 수 없습니다. 페어링 된 기기 중 하나를 사용해 이 카드로 로그인하고 카드의 페어링 슬롯을 확보하세요", + "no-pinned-messages": "고정된 메시지 없음", + "no-result": "결과 없음", + "no-thanks": "괜찮습니다", + "no-tokens-found": "토큰 없음", + "node-address": "노드 주소", + "node-details": "노드 세부정보", + "node-info": "노드 정보", + "node-version": "노드 버전", + "nodes-disabled": "스테이터스 노드 비활성화", + "non-archival-node": "RPC 엔드포인트는 보관 요청을 지원하지 않습니다. 로컬 전송 기록이 불완전할 수 있습니다.", + "non-contacts": "연락처 아님", + "nonce": "Nonce", + "none": "해당 없음", + "normal": "일반", + "not-applicable": "서명되지 않은 트랜잭션에 사용할 수 없음", + "not-connected-nodes": "스테이터스 노드에 연결되지 않았습니다", + "not-connected-to-peers": "어떤 피어에도 연결되지 않았습니다", + "not-enough-snt": "SNT가 부족합니다", + "not-found": "찾을 수 없습니다", + "not-keycard-text": "사용한 카드는 키카드가 아닙니다. 이 기능은 키카드를 구입해야 사용할 수 있습니다.", + "not-keycard-title": "키카드 아님", + "not-registered": "등록되지 않음", + "notification-settings": "알림", + "notifications": "알림", + "notifications-non-contacts": "연락처 미등록자에게 오는 알림", + "notifications-preferences": "알림 설정", + "notifications-servers": "알림 서버", + "notifications-switch": "알림 표시", + "notifications-transactions": "지갑 트랜잭션", + "notify": "알림", + "now": "방금 막", + "off": "끄기", + "off-status-tree": "스테이터스 트리 끄기", + "offline": "오프라인", + "offline-messaging-use-history-explanation": "앱이 종료된 동안 전송된 메시지를 확인하기 위해 스테이터스 노드를 활성화 합니다. 스테이터스 노드를 활성화하면, 스테이터스 노드는 여러분의 IP 주소를 사용하게 됩니다. 스테이터스 노드를 비활성화하면, 앱이 종료된 동안 수신된 메시지를 확인할 수 없습니다.", + "offline-messaging-use-history-nodes": "스테이터스 노드 사용", + "ok": "확인", + "ok-continue": "네, 알겠습니다", + "ok-got-it": "확인", + "ok-save-pass": "예, 비밀번호를 저장합니다", + "okay": "예", + "on": "켜기", + "on-status-tree": "스테이터스 트리 켜기", + "once-enabled-share-metadata": "미리보기를 활성화하면, 채팅방에 올라간 링크를 통해 메타 데이터가 웹사이트와 공유될 수 있습니다", + "one-day": "1일", + "one-month": "1달", + "one-week": "1주", + "open": "열기", + "open-chat": "채팅 열기", + "open-dapp": "디앱 브라우저", + "open-dapp-store": "디앱 찾아보기", + "open-home": "열기...", + "open-in-new-tab": "새 탭에서 열기", + "open-membership": "멤버십 오픈", + "open-nfc-settings": "NFC 설정 열기", + "open-on-block-explorer": "블록 익스플로러에서 열기", + "opening-buy-crypto": "{{site}} 여는 중...", + "optimal": "최적", + "optional": "선택", + "or": "또는", + "outgoing": "송금", + "outgoing-transaction": "출금 트랜잭션", + "page-camera-request-blocked": "카메라 요청이 차단되었습니다. 카메라 요청을 활성화하려면 설정으로 이동해주세요", + "page-would-like-to-use-camera": "에서 카메라 사용을 요청합니다", + "pair": "기기 페어링", + "pair-card": "페어 카드", + "pair-code": "페어 코드", + "pair-code-explanation": "이 카드를 다른 기기(최대 5개)와 연동하여 계정을 열람하고 트랜잭션에 서명할 수 있습니다", + "pair-code-placeholder": "페어링 코드...", + "pair-this-card": "이 카드 페어링", + "pair-this-device": "기기 페어링", + "pair-this-device-description": "기기를 페어링하여 연락처와 채팅을 동기화합니다", + "paired-devices": "페어링 된 기기", + "pairing": "페어링", + "pairing-card": "카드 페어링", + "pairing-changed": "페어링 코드가 변경되었습니다", + "pairing-code-placeholder": "페어링 코드...", + "pairing-code_error1": "페어링 코드가 일치하지 않습니다.", + "pairing-go-to-installation": "페어링 설정으로 이동", + "pairing-maximum-number-reached-content": "새 기기를 활성화하려면 이전 기기 중 하나를 비활성화해주세요", + "pairing-maximum-number-reached-title": "최대 기기 수에 도달했습니다", + "pairing-new-installation-detected-content": "다른 기기가 감지되었습니다.\n기기를 올바르게 사용하려면, 새 기기를 사용하기 전에 페어링을 사용하도록 설정해야 합니다. \n아래 설정의 기기 섹션으로 이동하여 기기를 페어링 해주세요.", + "pairing-new-installation-detected-title": "새 기기 감지", + "pairing-no-info": "정보 없음", + "pairing-please-set-a-name": "기기의 이름을 설정해주세요", + "passphrase": "패스 구문", + "password": "비밀번호", + "password-description": "최소 6자리의 비밀번호를 생성해주세요. 비밀번호는 스테이터스 앱을 사용하고 거래를 진행하는 데 사용됩니다.", + "password-mismatch": "비밀번호가 일치하지 않습니다", + "password-placeholder": "비밀번호...", + "password-placeholder2": "비밀번호 확인", + "password-reset-in-progress": "비밀번호 변경 중...", + "password-reset-success": "비밀번호 변경됨", + "password-reset-success-message": "다시 로그인해야 합니다", + "password_error1": "비밀번호가 일치하지 않습니다.", + "paste": "붙여넣기", + "paste-json": "JSON 붙여넣기", + "pay-to-chat": "지불하고 채팅 시작", + "peer-content": "스테이터스 채팅 네트워크에 연결되는 디바이스. 각 유저는 연결된 기기 수에 따라 하나 또는 하나 이상의 피어로 나타나게 됩니다.", + "peer-title": "피어", + "peer-to-peer": "P2P", + "peers": "피어", + "pending": "대기 중", + "pending-confirmation": "확인 대기 중...", + "pending-invitations": "대기 중인 멤버십 요청", + "per-gas-price-limit": "가스당 가격 제한", + "per-gas-tip-limit": "가스당 팁 제한", + "perform-backup": "백업 수행", + "permissions": "권한", + "phone-e164": "국제전화 1", + "photos": "사진", + "photos-access-error": "사진 접근 권한을 승인하려면 시스템 설정에서 스테이터스 > 사진이 선택되어 있는지 확인해 주세요.", + "pin": "고정", + "pin-changed": "6자리 패스코드가 변경되었습니다", + "pin-code": "6자리 패스코드", + "pin-limit-reached": "핀 한도에 도달했습니다. 먼저 이전 메시지를 고정 해제해주세요", + "pin-mismatch": "잘못된 비밀번호", + "pin-one-attempt": " 한 번의 시도가 실패하면 ", + "pin-one-attempt-blocked-after": "키카드가 차단됩니다", + "pin-one-attempt-blocked-before": "조심하세요. 마지막", + "pin-one-attempt-frozen-after": "키카드가 동결됩니다", + "pin-one-attempt-frozen-before": "조심하세요. 마지막", + "pin-retries-left": "남은 재시도 가능 횟수: {{number}}번", + "pinned-by": "고정한 사람", + "pinned-messages": "고정된 메시지", + "pinned-messages-count": { + "other": "고정된 메시지 {{count}} 개" + }, + "pinned-messages-empty": "고정된 메시지가 여기에 표시됩니다. 메시지를 고정하려면, 메시지를 길게 누르고 '고정'을 탭하세요.", + "powered-by-paraswap": "Powered by Paraswap", + "preference": "설정", + "preview-privacy": "미리보기 방지 모드", + "previewing-may-share-metadata": "링크 미리보기를 사용하면 메타 데이터가 해당 웹사이트와 공유될 수 있습니다", + "price-impact": "가격 영향", + "price-impact-desc": "이 트랜잭션에 대한 예상 가격 영향입니다. 현재 블록 기본 수수료가 이를 초과하는 경우 기본 수수료가 낮은 다음 블록에 거래가 포함됩니다.", + "principles": "원칙", + "priority": "우선 순위", + "privacy": "개인 정보", + "privacy-and-security": "개인 정보 및 보안", + "privacy-photos": "프로필 사진 개인 정보 보호", + "privacy-policy": "개인 정보 보호 정책", + "privacy-show-to-warning": "이미 프로필 사진을 본 사람들은 프로필을 계속 볼 수 있습니다", + "private-key": "개인 키", + "private-notifications": "프라이빗 알림", + "private-notifications-descr": "스테이터스가 새로운 메시지를 수신하면 사용자에게 알림을 전달합니다. 사용자는 설정에서 옵션을 변경할 수 있습니다.", + "processing": "잠시만 기다려주세요", + "product-information": "제품 정보", + "profile": "프로필", + "profile-deleted-content": "프로필이 성공적으로 삭제되었습니다", + "profile-deleted-keycard": "이제 키카드에서 다른 키 쌍을 복구하세요", + "profile-deleted-title": "프로필 삭제 완료", + "profile-details": "프로필 세부 사항", + "profile-not-found": "프로필을 찾을 수 없습니다", + "profile-pic-pick": "갤러리에서 선택", + "profile-pic-remove": "사진 삭제", + "profile-pic-take": "사진 촬영", + "profile-picture-updated": "프로필 사진 업데이트 됨", + "public-channel": "공공 채널", + "public-chat": "오픈채팅", + "public-chat-description": "관심사에 따라 오픈채팅에 참여해보세요! 누구든지 새로운 채팅을 시작할 수 있습니다.", + "public-chats": "오픈채팅", + "public-group-status": "오픈채팅", + "public-group-topic": "주제", + "public-key": "공개 키", + "puk-and-pairing-codes-displayed": "PUK 및 코드 표시", + "puk-changed": "12자리 PUK가 변경되었습니다", + "puk-code": "PUK 코드", + "puk-code-explanation": "6자리 패스코드를 잊어버리거나 코드를 3회 잘못 입력할 경우, 이 코드를 통해 카드 계정 잠금을 해제할 수 있습니다.", + "puk-mismatch": "PUK 코드가 일치하지 않습니다", + "push-failed-transaction": "트랜잭션이 실패했습니다", + "push-failed-transaction-body": "{{value}} {{currency}} - {{to}}", + "push-inbound-transaction": "{{value}} {{currency}}를 받았습니다", + "push-inbound-transaction-body": "{{from}} 에서 {{to}}", + "push-notifications-server-enabled": "서버 활성화", + "push-notifications-servers": "푸시 알림 서버", + "push-outbound-transaction": "{{value}} {{currency}}를 보냈습니다", + "push-outbound-transaction-body": "{{from}} 에서 {{to}}", + "quiet-days": "{{quiet-days}} 일", + "quiet-hours": "{{quiet-hours}} 시간", + "re-encrypt-key": "키 재암호화", + "rearrange-categories": "카테고리 재정렬", + "receive": "받기", + "receive-transaction": "트랜잭션 받기", + "recent": "최근", + "recent-empty": "최근에 사용한 주소가 여기에 표시됩니다", + "recent-recipients": "연락처", + "recently-used-stickers": "최근 사용한 이모티콘이 여기에 나타납니다", + "recipient": "수신인", + "recipient-code": "수신인 주소 입력", + "recipient-code-placeholder": "0x... 또는 username.domain.eth", + "recover": "복구", + "recover-key": "기존 키 액세스", + "recover-keycard-multiaccount-not-supported": "이 계정을 위한 키가 이미 존재하여 다시 추가할 수 없습니다. 만약 비밀번호, 패스코드, 또는 키카드를 잊어버렸다면, 스테이터스 앱을 재설치하고 시드 구문을 입력해 키에 액세스해주시기 바랍니다", + "recover-with-keycard": "키카드로 복구하기", + "recover-with-seed-phrase": "시드 구문으로 복구", + "recovering-key": "키 액세스 중...", + "recovery-confirm-phrase": "시드 구문 확인", + "recovery-phrase": "시드 구문", + "recovery-success-text": "새로운 코드 혹은 비밀번호를 생성해 키를 재암호화해야 합니다.", + "recovery-typo-dialog-description": "시드 구문은 처음 받은 것과 정확히 동일한 철자와 순서로 사용해야 합니다", + "recovery-typo-dialog-title": "시드 구문이 정확한가요?", + "redeem-amount": "{{quantity}} 보너스 수령 가능", + "redeem-now": "보너스 받기", + "redeem-success": "성공적으로 보너스를 받았습니다!", + "reduced-tip": "우선순위 팁이 줄어듭니다", + "refresh": "새로고침", + "registered": "등록됨", + "reject": "거절", + "reject-and-delete": "거절 및 삭제", + "remember-me": "기억하기", + "remind-me-later": "나중에 다시 확인", + "remote-notifications": "원격 알림", + "remote-notifications-subtitle": "구글 푸시 알림 활성화", + "remove": "삭제", + "remove-favourite": "즐겨찾기 제거", + "remove-from-chat": "채팅에서 내보내기", + "remove-from-contacts": "연락처 삭제", + "remove-from-contacts-text": "연락처에서 특정 사용자를 삭제해도, 사용자의 지갑 주소는 숨길 수 없습니다", + "remove-group": "그룹 삭제", + "remove-network": "네트워크 삭제", + "remove-token": "토큰 제거", + "removed": "퇴장됨", + "repeat-pin": "6자리 패스코드 다시 입력", + "repeat-puk": "새로운 12자리 PUK 반복", + "replying-to": "에 회신{{author}}", + "report-bug-email-template": "1. 문제 설명\n {{description}}\n \n\n 2. 재현 단계\n {{steps}}\n \n\n 3. 문제를 시연할 수 있는 스크린샷을 첨부하세요.\n", + "request-access": "접근 권한 요청", + "request-feature": "기능 요청", + "request-membership": "멤버쉽 요청", + "request-pending": "요청 대기 중…", + "request-transaction": "트랜잭션 요청", + "required-field": "필수 입력란", + "resend-message": "재전송", + "reset-card": "카드 재설정", + "reset-card-description": "이 작업은 카드를 초기 상태로 재설정합니다. 개인 키를 포함한 모든 카드 데이터가 지워집니다. 이 작업은 되돌릴 수 없습니다.", + "reset-database": "데이터베이스 초기화", + "reset-database-warning": "채팅, 연락처 및 설정을 삭제합니다. 비밀번호를 분실한 경우 필요합니다", + "reset-database-warning-keycard": "채팅, 연락처, 설정을 삭제합니다.", + "reset-password": "비밀번호 초기화", + "restore-defaults": "기본값 복원", + "retry": "다시 시도", + "revoke-access": "접근 권한 취소", + "rpc-url": "RPC URL", + "rpc-usage-copy": "클립보드에 복사", + "rpc-usage-filter": "필터 방법", + "rpc-usage-get-stats": "새로고침", + "rpc-usage-info": "RPC 사용 통계", + "rpc-usage-reset": "초기화", + "safe-estimate": "안전한 추정치", + "save": "저장", + "save-password": "비밀번호 저장", + "save-password-unavailable": "비밀번호를 저장하기 위해 기기 패스코드를 설정해주세요", + "save-password-unavailable-android": "비밀번호 저장을 사용할 수 없습니다. 사용자의 기기가 루팅되었거나, 필요한 보안 기능이 없을 수 있습니다.", + "scan-qr": "QR코드 스캔", + "scan-qr-code": "지갑 주소 QR 코드 스캔", + "scan-tokens": "토큰 스캔", + "search": "검색", + "search-no-chat-found": "검색 결과가 없습니다. 이것을 찾으셨나요?", + "secret-keys-confirmation-text": "이는 스마트폰을 잃어버릴 경우에도 키카드를 사용하기 위해 필요합니다.", + "secret-keys-confirmation-title": "코드를 적어두셨나요?", + "security": "보안", + "see-details": "세부 정보 확인", + "see-it-again": "다시 보기", + "see-suggestions": "제안 보기", + "seed-key-uid-mismatch": "시드가 일치하지 않습니다", + "seed-key-uid-mismatch-desc-1": "입력한 시드 구문이 {{multiaccount-name}} 와 일치하지 않습니다", + "seed-key-uid-mismatch-desc-2": "본 계정의 키를 관리하려면, 시드 구문을 인증하고 다시 시도하세요.", + "seed-phrase-content": "BIP39 표준 리스트에서 무작위로 선별된 읽기 쉬운 단어들로서, 다른 지갑 및 디바이스에서 여러분의 이더리움 지갑을 복구하거나 불러올때 사용합니다. 시드 구문은 크립토 생태계에서 \"니모닉 구문\", \"복구 구문\", 또는 \"지갑 백업\"라고도 칭합니다. 대부분의 크립토 앱들은 계정을 생성하기 위해 동일한 표준을 채택하고 있습니다.", + "seed-phrase-placeholder": "시드 구문...", + "seed-phrase-title": "시드 구문", + "select": "선택", + "select-account": "계정 선택", + "select-account-dapp": "디앱에 사용할 계정을 선택해주세요", + "select-account-first": "먼저 계정을 선택하세요", + "select-chat": "메시지를 주고받기 시작할 채팅을 선택해주세요", + "select-new-location-for-keys": "개인 키를 저장할 새 위치를 선택하세요", + "select-token-to-receive": "받을 토큰 선택", + "select-token-to-swap": "스왑할 토큰 선택", + "selected": "인기 채팅방", + "send-logs": "버그 신고", + "send-logs-to": "{{email}}에 버그 신고", + "send-message": "메시지 보내기", + "send-push-notifications": "푸시 알림 보내기", + "send-push-notifications-description": "비활성화되면, 메시지를 받는 사람에게 알림이 표시되지 않습니다", + "send-request": "요청 전송", + "send-request-amount": "수량", + "send-request-amount-max-decimals": "최대 소수점 자릿수는 {{asset-decimals}}입니다.", + "send-request-unknown-token": "알 수 없는 토큰 - {{asset}}", + "send-sending-to": "수신인: {{recipient-name}}", + "send-transaction": "트랜잭션 보내기", + "sending": "송금액:", + "sent-at": "보낸 시각:", + "server": "서버", + "set-a-topic": "채팅 주제 생성", + "set-currency": "통화 설정", + "set-custom-fee": "사용자 지정 수수료 설정", + "set-dapp-access-permissions": "디앱 접근 권한 설정", + "set-max": "최대값 설정", + "settings": "설정", + "share": "공유", + "share-address": "주소 공유", + "share-chat": "채팅 공유", + "share-contact-code": "채팅 키 공유하기", + "share-dapp-text": "스테이터스에서 사용하는 디앱 확인: {{link}}", + "share-link": "링크 공유", + "share-logs": "로그 공유", + "share-my-profile": "내 프로필 공유", + "share-profile": "프로필 공유", + "share-profile-link": "프로필 링크 공유", + "share-public-chat-text": "스테이터스 앱에서 오픈채팅에 참여하세요: {{link}}", + "shared": "공유된", + "sharing-copied-to-clipboard": "클립보드에 복사됨", + "sharing-copy-to-clipboard": "클립보드로 복사", + "sharing-data-desc-1": "데이터의 경우, 중요한 데이터가 전송되지 않도록 공공 규칙에 따라 검증됩니다. 글만 보고 믿지 말고 직접 확인하세요.", + "sharing-data-desc-2": "사용 데이터는 스테이터스의 P2P 네트워크를 통해 종단간 암호화되어 전송됩니다", + "sharing-data-desc-3": "일반 채팅 키 대신 일회용 키가 사용됩니다.", + "sharing-data-desc-4": "사용 데이터는 IP 주소와 연동될 수 없습니다", + "sharing-data-desc-5": "모든 사용자의 누적 데이터는 공개적으로 사용될 수 있습니다", + "sharing-data-desc-6": "데이터가 전송된 후 휴대폰에서 제거됩니다", + "sharing-share": "공유하기", + "show-less": "숨기기", + "show-more": "더 보기", + "show-notifications": "알림 표시", + "show-profile-pictures": "프로필 사진 보기", + "show-profile-pictures-to": "프로필 사진 보여주기", + "show-qr": "QR코드 표시", + "show-transaction-data": "트랜잭션 데이터 표시", + "sign-and-send": "서명 및 송금", + "sign-anyway": "서명 진행하기", + "sign-in": "로그인", + "sign-message": "메시지 서명", + "sign-out": "로그아웃", + "sign-request-failed": "메시지에 서명할 수 없습니다", + "sign-with": "다음으로 서명", + "sign-with-password": "비밀번호로 서명", + "sign-you-in": "로그인 하는 중...", + "signing": "서명", + "signing-a-message": "메시지 서명", + "signing-phrase": "서명 구문", + "skip": "건너 뛰기", + "slippage": "슬리피지", + "slow": "느림", + "something-went-wrong": "문제가 발생했습니다", + "soon": "곧", + "specify-address": "주소 지정", + "specify-name": "이름 지정", + "specify-network-id": "네트워크 ID 지정", + "specify-rpc-url": "RPC URL 지정", + "specify-server-public-key": "서버 공개키 입력", + "specify-symbol": "기호 지정", + "start-chat": "채팅 시작", + "start-conversation": "대화 시작", + "start-group-chat": "그룹 채팅 시작", + "start-new-chat": "새 채팅 시작", + "starter-pack-coming": "곧 스타터 팩이 지급됩니다", + "starter-pack-coming-description": "몇 분에서 몇 시간이 걸릴 수 있습니다", + "starter-pack-received": "스타터 팩을 받았습니다", + "starter-pack-received-description": "스테이터스를 시작하는 데 도움이 될 암호화폐입니다! SNT를 활용하여 이모티콘을 구입하고, ENS 이름을 등록하거나 디앱을 사용해보세요", + "status": "스테이터스", + "status-always-online": "항상 온라인", + "status-automatic": "자동", + "status-automatic-subtitle": "자동으로 상태 설정", + "status-confirmed": "확인됨", + "status-dnd": "방해 금지", + "status-dnd-subtitle": "모든 알림 음소거", + "status-hardwallet": "스테이터스 하드월렛", + "status-inactive": "비활성", + "status-inactive-subtitle": "온라인 상태 숨기기", + "status-is-open-source": "스테이터스는 오픈 소스입니다", + "status-keycard": "스테이터스 키카드", + "status-mobile-descr": "모바일 데이터로 채팅을 동기화하면 데이터를 많이 소모하게 될 수 있습니다. 설정을 통해 모바일 데이터를 사용한 동기화를 비활성화 할 수 있습니다.", + "status-not-sent-click": "전송되지 않았습니다. 옵션을 클릭하세요", + "status-not-sent-tap": "전송 실패. 옵션을 선택하세요", + "status-pending": "대기 중", + "status-sent": "전송됨", + "status-tx-not-found": "TX를 찾을 수 없습니다", + "status-updates-descr": "상태 업데이트가 여기에 표시됩니다. 타임라인 업데이트를 받으려면 프로필을 연락처로 추가하세요.", + "statuses-descr": "생각을 공유하고 연락처에 등록된 이들의 소식을 받아보세요", + "statuses-my-status-descr": "무슨 생각을 하고 계신가요? 여러분의 프로필에 방문하는 모든 사람들은 여러분의 상태 메시지를 확인할 수 있습니다. 여러분을 연락처에 등록한 사람은 여러분의 타임라인 업데이트를 확인할 수 있습니다", + "step-i-of-n": "{{number}}단계 중 {{step}}단계", + "sticker": "이모티콘", + "sticker-market": "이모티콘 마켓", + "storage": "저장소", + "submit": "로그인", + "submit-bug": "버그 제출", + "success": "성공", + "suggested-min-tip": "최소 팁 추천", + "suggested-price-limit": "권장 가격 제한", + "swap": "스왑", + "swap-details": "스왑 세부정보", + "switch-to-simple-interface": "간단한 인터페이스로 전환", + "symbol": "기호 (Symbol)", + "sync-all-devices": "모든 기기 동기화", + "sync-in-progress": "동기화 중...", + "sync-settings": "동기화 설정", + "sync-synced": "동기화 됨", + "syncing-devices": "동기화 중...", + "system": "시스템", + "tabs": "탭", + "tag-was-lost": "태그가 손실되었습니다", + "tap-card-again": "스마트폰 뒷면에 카드를 다시 터치해주세요", + "terms-of-service": "이용 약관", + "test-networks": "테스트 네트워크", + "text-input-disabled": "잠시만 기다려주세요...", + "thank-you": "감사합니다", + "this-device": "스마트폰에 저장", + "this-device-desc": "키는 암호화되어 사용자의 기기에 안전하게 저장됩니다", + "this-is-you-signing": "사용자의 서명 구문입니다", + "this-will-take-few-seconds": "이 작업은 몇 초가 소요됩니다", + "three-days": "3일", + "three-words-description": "트랜잭션 서명 전 이 3단어가 표시됩니다", + "three-words-description-2": "다른 단어가 표시되면, 트랜잭션을 취소하고 로그아웃하세요", + "timeline": "타임라인", + "tip-cap": "팁 한도", + "to": "받는 주소", + "to-block": "차단", + "to-enable-biometric": "{{bio-type-label}}를 활성화 하려면, 사용자의 잠금 해제 화면에 비밀번호를 저장해야 합니다", + "to-encrypt-enter-password": "계정을 암호화하려면 비밀번호를 입력해주세요", + "to-see-this-message": "이 메시지를 보려면,", + "token": "토큰", + "token-auto-validate-decimals-error": "{{symbol}} 토큰 주소 {{address}} 의 자릿수가 잘못 되었습니다. {{expected}} (으)로 세팅되었으나 {{actual}} 로 감지되었습니다.", + "token-auto-validate-name-error": "{{symbol}} 토큰 주소 {{address}} 의 이름이 잘못되었습니다. {{expected}} (으)로 세팅 되었으나 {{actual}} 로 감지되었습니다.", + "token-auto-validate-symbol-error": "{{symbol}} 토큰 주소 {{address}} 의 심볼이 잘못 되었습니다. {{expected}} (으)로 세팅되었으나 {{actual}} 로 감지되었습니다.", + "token-details": "토큰 세부 정보", + "topic-name-error": "소문자(a 에서 z), 숫자 및 하이픈(-)만 사용할 수 있습니다. 채팅 키는 사용할 수 없습니다.", + "total-gas": "총 가스", + "transaction": "트랜잭션", + "transaction-data": "트랜잭션 데이터", + "transaction-declined": "트랜잭션 거절됨", + "transaction-description": "네트워크에서 12번 이상 확인된 거래는 완료된 것으로 간주됩니다.", + "transaction-details": "트랜잭션 세부정보", + "transaction-failed": "트랜잭션 실패", + "transaction-fee": "거래 수수료", + "transaction-history": "트랜잭션 기록", + "transaction-request": "트랜잭션 요청", + "transaction-sent": "트랜잭션 전송됨", + "transaction-signed": "트랜잭션이 성공적으로 서명되었습니다", + "transactions": "트랜잭션", + "transactions-filter-select-all": "모두 선택", + "transactions-filter-title": "기록 필터", + "transactions-history": "트랜잭션 기록", + "transactions-history-empty": "아직 트랜잭션 기록이 없습니다", + "transactions-history-loading": "트랜잭션 기록을 로드 중입니다. 시간이 걸릴 수 있습니다.", + "transactions-load-more": "더 불러오기", + "transactions-management-enabled": "트랜잭션 관리 (알파)", + "transactions-sign": "서명", + "transfer-ma-unknown-error-desc-1": "다중 계정이 삭제되지 않은 것 같습니다. 데이터베이스가 초기화되었을 수도 있습니다", + "transfer-ma-unknown-error-desc-2": "계정 목록을 확인하고 다시 시도해주세요. 계정이 뜨지 않으면 기존 키 액세스로 이동하여 시드 구문으로 복구해주세요", + "transfers-fetching-failure": "전송 기록을 업데이트할 수 없습니다. 연결 상태를 확인하고 아래로 당겨 다시 시도하세요", + "tribute-required-by-multiaccount": "{{multiaccount-name}}님과 채팅을 시작하려면 SNT가 필요합니다.", + "tribute-state-paid": "트리뷰트 지불", + "tribute-state-pending": "트리뷰트 대기 중", + "tribute-state-required": "{{snt-amount}} SNT 트리뷰트 필요", + "tribute-to-talk": "트리뷰트 투 토크", + "tribute-to-talk-add-friends": "연락처에 등록된 지인은 트리뷰트 계약금 지불 없이 귀하에게 메시지를 보낼 수 있습니다.", + "tribute-to-talk-are-you-friends": "친구신가요?", + "tribute-to-talk-ask-to-be-added": "연락처 추가를 요청하세요", + "tribute-to-talk-contact-received-your-tribute": " 님이 귀하의 트리뷰트를 받았습니다. 귀하는 이제 연락처로 추가되어 자유롭게 채팅을 시작할 수 있습니다.", + "tribute-to-talk-desc": "새로운 사용자가 채팅을 신청하면 SNT를 요구해, 귀하의 시간에 금전적 가치를 부여하세요.", + "tribute-to-talk-disabled": "트리뷰트 투 토크 비활성화", + "tribute-to-talk-disabled-note": "지금부터 신규 사용자가 귀하에게 SNT를 보내지 않고도 채팅을 시작할 수 있습니다.", + "tribute-to-talk-enabled": "트리뷰트 투 토크를 활성화하셨습니다.", + "tribute-to-talk-finish-desc": "지금부터는 연락처에 등록된 사용자 및 트리뷰트를 지불한 사용자들로부터만 메시지를 받을 수 있습니다 ", + "tribute-to-talk-learn-more-1": "여러분의 시간은 가장 소중한 자산입니다. 트리뷰트 투 토크는 새로운 사용자가 귀하와 채팅을 시작하기 위해 필요한 SNT 계약금을 설정하여, 불필요한 메시지를 방지합니다.", + "tribute-to-talk-learn-more-2": "연락처에 없는 사용자는 귀하와 채팅을 시작하기 위해 트리뷰트를 지불해야 하며, 지불이 완료되면 귀하가 이에 응할 수 있습니다.", + "tribute-to-talk-learn-more-3": "받은 트리뷰트를 언제든지 되돌려 줄 수 있으나, 해당 사용자가 귀하에게 자유롭게 연락할 수 있도록 하려면 사용자를 연락처에 추가해주세요.", + "tribute-to-talk-paywall-learn-more-1": "시간이야말로 가장 소중한 자산입니다. 트리뷰트 투 토크는 새로운 사용자가 귀하와 채팅을 시작하기 위해 필요한 SNT 계약금을 설정하여, 불필요한 메시지를 방지합니다.", + "tribute-to-talk-paywall-learn-more-2": "트리뷰트를 설정한 사용자와 채팅을 시작하려 할 경우, 필요한 만큼 SNT를 지불하면 상대방의 연락처에 추가될 수 있습니다.", + "tribute-to-talk-paywall-learn-more-3": "만약 귀하가 이 사용자를 알고 있을 경우, 귀하의 프로필을 스테이터스 외부에 공유하면 무료로 추가하게 할 수 있습니다.", + "tribute-to-talk-pending": "트리뷰트 확인 대기중", + "tribute-to-talk-pending-note": "트리뷰트 트랜잭션이 네트워크에서 확인 대기 중입니다. 트랜잭션 기록에서 상태를 확인하실 수 있습니다", + "tribute-to-talk-removing-note": "트리뷰트 투 토크를 비활성화하면 새로운 사용자가 귀하에게 SNT 계약금 없이 메시지를 보낼 수 있습니다. 이 경우 트랜잭션 서명이 필요합니다.", + "tribute-to-talk-set-snt-amount": "새로운 사용자가 귀하와 채팅을 시작할 때 필요한 SNT 계약금을 설정합니다", + "tribute-to-talk-signing": "트랜잭션 서명 대기 중", + "tribute-to-talk-transaction-failed-note": "트랜잭션이 실패했습니다. 귀하의 트리뷰트 설정이 변경되지 않았습니다", + "tribute-to-talk-tribute-received1": "트리뷰트를 받았습니다. 당신과", + "tribute-to-talk-tribute-received2": "이제 상대방과 안전하게 채팅할 수 있습니다.", + "tribute-to-talk-you-require-snt": "귀하와 채팅을 시작하려는 새로운 사용자에게 SNT를 요구하세요.", + "try-again": "다시 시도", + "try-keeping-the-card-still": "카드와 기기의 접촉을 유지하세요", + "turn-nfc-description": "해당 기기에 NFC 기능이 비활성화되어있습니다. NFC 기능을 활성화해주세요", + "turn-nfc-on": "NFC를 켜 계속하기", + "two-minutes": "2분", + "tx-fail-description1": "이 트랜잭션은 실패할 수 있습니다. 사용자 지정 네트워크 수수료로 트랜잭션 실패 위험을 조절하세요.", + "tx-fail-description2": "이 트랜잭션은 실패할 수 있습니다. 직접 네트워크 수수료를 설정하여 실패 위험을 조절하세요.", + "type": "종류", + "type-a-message": "메시지", + "ulc-enabled": "ULC 사용", + "unable-to-fetch": "채팅 기록을 가져올 수 없습니다", + "unable-to-read-this-code": "코드를 읽을 수 없습니다", + "unable-to-send-messages": "메시지를 주고 받을 수 없습니다", + "unblock": "차단 해제", + "unblock-contact": "사용자 차단 해제", + "unknown-status-go-error": "알 수 없는 status-go 오류", + "unlimited": "무제한", + "unlock": "잠금 해제", + "unmute": "메시지 및 알림 수신", + "unpair-card": "카드 페어링 해제", + "unpair-card-confirmation": "이 작업은 현재 기기와 페어링을 해제합니다. 인증을 위해 6자리 패스코드가 필요합니다. 계속하시겠습니까?", + "unpair-keycard": "스마트폰에서 키카드 페어링 해제", + "unpair-keycard-warning": "페어링 코드 \/ PUK 및 PIN은 변경되지 않습니다", + "unpaired-keycard-text": "사용한 키카드가 이 스마트폰과 연동되어 있지 않습니다", + "unpaired-keycard-title": "카드가 페어링 되어 있지 않습니다", + "unpin": "고정 해제", + "update": "업데이트", + "update-to-listen-audio": "오디오 메시지를 들으려면 최신 버전으로 업데이트해주세요!", + "update-to-see-image": "멋진 이미지를 확인하려면 최신 버전으로 업데이트 해주세요!", + "update-to-see-sticker": "멋진 이모티콘을 확인하려면 최신 버전으로 업데이트해주세요!", + "updates-to-tos": "서비스 약관 업데이트", + "updates-to-tos-desc": "계속하기 전에 서비스 약관을 검토하고 앱 사용에 대한 책임이 사용자에게 있음을 확인해주세요", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "프로필 사진으로 사용", + "use-valid-contact-code": "유효한 채팅 키 또는 사용자 이름을 입력하거나 스캔하세요", + "validation-amount-invalid-number": "수량이 잘못되었습니다", + "validation-amount-is-too-precise": "액수가 너무 정확합니다. 최대 소수점 자리수는 {{decimals}}입니다.", + "verified-community": "✓ 검증된 커뮤니티", + "version": "앱 버전", + "view": "보기", + "view-cryptokitties": "CryptoKitties에서 보기", + "view-cryptostrikers": "CryptoStrikers에서 보기", + "view-data": "데이터 보기", + "view-details": "세부 정보 보기", + "view-etheremon": "Etheremon에서보기", + "view-gitcoin": "Gitcoin에서 보기", + "view-on-opensea": "OpenSea에서 보기", + "view-profile": "프로필 보기", + "view-public-dashboard": "공공 대시보드 보기", + "view-rules": "규칙 보기", + "view-signing": "서명 구문 보기", + "view-superrare": "SuperRare에서 보기", + "waiting-for-wifi": "Wi-Fi 없음, 메시지 동기화 비활성화.", + "waiting-for-wifi-change": "설정", + "waiting-to-sign": "트랜잭션 서명 대기 중...", + "waiting-wi-fi": "와이파이 대기 중…", + "waku-bloom-filter-mode": "와쿠 블룸 필터 모드", + "wakuv2-change-nodes": "Wakuv2 노드를 변경하시겠습니까?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "와쿠 v2 설정", + "wallet": "지갑", + "wallet-address": "지갑 주소", + "wallet-asset": "자산", + "wallet-assets": "자산", + "wallet-backup-recovery-title": "시드 구문 백업", + "wallet-choose-recipient": "수신인 선택", + "wallet-collectibles": "수집품", + "wallet-connect": "월렛 커넥트", + "wallet-connect-2.0": "월렛 커넥트 2.0", + "wallet-connect-app-connected": "연결됨", + "wallet-connect-go-back": "브라우저 또는 디앱으로 돌아가기", + "wallet-connect-proposal-description": "연결하면 {{name}} 이(가) 귀하의 계정 주소를 검색하고 Web3를 활성화할 수 있습니다", + "wallet-connect-proposal-title": "지갑과 연결합니다", + "wallet-insufficient-funds": "자산 부족", + "wallet-insufficient-gas": "가스로 사용할 ETH가 부족합니다", + "wallet-invalid-address": "잘못된 주소: \n {{data}}", + "wallet-invalid-address-checksum": "잘못된 주소: \n {{data}}", + "wallet-invalid-chain-id": "네트워크가 일치하지 않습니다: \n {{data}}, 하지만 현재 체인은 {{chain}}입니다.", + "wallet-key-content": "0x로 시작하는 64글자 16진수 주소로 이더리움 표준을 기반으로 합니다. 계정 주소를 다른 사람들에게 공유하여 암호화폐 자산을 받을 수 있습니다. 지갑 키는 \"이더리움 주소\" 또는 \"지갑 주소\"라고도 합니다.", + "wallet-key-title": "계정 주소", + "wallet-manage-accounts": "계정 관리", + "wallet-manage-app-connections": "앱 연결 관리", + "wallet-manage-assets": "자산 관리", + "wallet-request": "요청", + "wallet-send": "보내기", + "wallet-send-min-units": "최소 21000 유닛", + "wallet-send-min-wei": "최소 1 wei", + "wallet-settings": "지갑 설정", + "wallet-total-value": "총 자산", + "wallet-transaction-total-fee": "총 비용", + "wants-to-access-profile": "이 프로필 접근을 요청합니다", + "warning": "경고", + "warning-message": "죄송합니다. 스팸을 방지하기 위해 여러 메시지를 빠르게 연속적으로 보내는 것을 제한하고 있습니다. 잠시 후 다시 시도하세요.", + "warning-sending-to-contract-descr": "입력하신 주소는 스마트 컨트랙트 주소로, 이 주소로 자산을 보내게 되면 사용자의 자산을 잃을 수 있습니다. 디앱과 소통하려면, 스테이터스 디앱 브라우저에서 디앱을 열어주세요.", + "watch-only": "열람 전용", + "wc-brand-guide": "상표, 로고 등 브랜딩 사용 안내", + "wc-disclaimer": "면책 조항 (타사 제공 업체 포함), 보증 및 법적 릴리스", + "wc-dispute": "분쟁 해결 조항", + "wc-how-to-use-status-app": "개인 정보 보호 및 보안을 포함한 스테이터스 앱 사용 방법", + "wc-new-tos-based-on-principles-prefix": "새로운 서비스 약관은 다음에 기반에 설계되었습니다", + "web-view-error": "페이지를 로드할 수 없습니다", + "websites": "웹사이트", + "webview-camera-permission-requests": "웹뷰 카메라 권한 요청", + "webview-camera-permission-requests-subtitle": "활성화되면 웹사이트와 디앱에서 카메라 사용을 요청할 수 있습니다", + "welcome-blank-community-message": "사용자의 커뮤니티가 여기에 표시됩니다.", + "welcome-blank-message": "사용자의 채팅 목록이 여기에 표시됩니다. ⊕ 버튼을 눌러 새로운 채팅을 시작해보세요", + "welcome-community-blank-message": "채널이 여기에 표시됩니다. 새 채널을 만들려면 ⊕ 버튼을 클릭하고 \"채널 만들기\"를 선택하세요.", + "welcome-community-blank-message-edit-chats": "채널이 여기에 표시됩니다. 새 채널을 만들려면 커뮤니티 화면으로 돌아가서 ⊕ 버튼을 클릭하고 \"채널 만들기\"를 선택하세요", + "welcome-screen-text": "지갑을 설정하고, 친구를 초대해 채팅하고 \n디앱을 브라우징하세요!", + "welcome-to-status": "환영합니다!", + "welcome-to-status-description": "암호화폐 지갑을 설정하고, 친구들을 초대해서 채팅하거나 디앱을 둘러보세요", + "what-changed": "변경된 사항", + "what-is-shared": "공유 내용", + "whats-on-your-mind": "무엇을 공유하고 싶으신가요?", + "word-count": "단어 수", + "word-n": "{{number}}번째 단어", + "word-n-description": "시드 구문을 정확히 백업했는지 확인하기 위해, {{number}}번째 단어를 입력해주세요.", + "words-n": { + "other": "단어" + }, + "write-down-and-store-securely": "코드를 메모해 두고\n안전하게 보관하세요", + "wrong-address": "잘못된 주소", + "wrong-card": "잘못된 카드", + "wrong-card-text": "사용한 카드와 키가 호환되지 않습니다.", + "wrong-contract": "잘못된 컨트랙트", + "wrong-keycard-text": "사용한 키카드가 이 스마트폰과 연동되어 있지 않습니다", + "wrong-keycard-title": "잘못된 키카드를\n사용하셨습니다", + "wrong-password": "잘못된 비밀번호", + "wrong-word": "잘못된 단어", + "yes": "예", + "you": "사용자", + "you-already-have-an-asset": "이미 {{value}} 자산을 가지고 있습니다", + "you-are-all-set": "설정이 완료되었습니다!", + "you-are-all-set-description": "스마트폰을 분실한 경우, 시드 구문을 사용하여 계정과 자산에 액세스할 수 있습니다", + "you-can-change-account": "계정 이름과 색상을 원하는대로 변경할 수 있습니다", + "you-can-choose-preview-websites": "다음 목록에서 채팅 내 링크의 설명 및 이미지 미리보기 기능을 선택적으로 활성화할 수 있습니다", + "you-can-fetch": "채팅 기록을 가져올 수 있습니다", + "you-dont-have-contacts": "아직 연락처가 없습니다.", + "you-dont-have-contacts-invite-friends": "아직 연락처가 없습니다. \n친구들을 초대하고 채팅을 시작하세요.", + "you-dont-have-stickers": "아직 이모티콘이 없습니다", + "you-will-need-this-code": "이 코드는 스테이터스 및 트랜잭션 서명에 필요합니다", + "you-will-start-from-scratch": "처음부터 새로운 키로 다시 시작합니다", + "your-card-is-frozen": "키카드가 잠겼습니다. 카드 접근 권한을 초기화하세요", + "your-contact-code": "디앱에 접근 권한을 부여하여 채팅 키를 검색합니다", + "your-data-belongs-to-you": "시드 구문을 잃어버리면 데이터와 자산을 분실하게 됩니다", + "your-data-belongs-to-you-description": "스마트폰을 분실하거나 접근 권한을 상실한 경우, 이 시드 구문을 통해 계정에 접근할 수 있습니다. 오로지 본인만이 이 시드 구문을 관리할 수 있습니다. 메모해두고 안전하게 관리하시기 바랍니다.", + "your-keys": "키 목록", + "your-price-limit": "가격 한도", + "your-recovery-phrase": "내 시드 구문", + "your-recovery-phrase-description": "위 12단어가 사용자의 시드 구문입니다. 이 구문은 사용자의 지갑을 증명하기 위해 반드시 필요하며, 이번 한 번만 확인할 수 있습니다. 지갑을 분실하거나 재설치하는 경우 반드시 필요하므로, 종이에 적어두고 안전한 장소에 보관하세요.", + "your-tip-limit": "팁 한도", + "youre-on-mobile-network": "모바일 네트워크를 사용 중입니다" +} diff --git a/translations/la.json b/translations/la.json new file mode 100644 index 00000000000..0b7c1681301 --- /dev/null +++ b/translations/la.json @@ -0,0 +1,94 @@ +{ + "amount": "summa", + "members-active": { + "one": "I soladis, I aktive", + "other": "{{count}} sodalis, {{count}} aktivi", + "zero": "nullus sodalis" + }, + "chat-name": "nomen colloquii", + "phew-here-is-your-passphrase": "*uph* erat gravor. hic phrasis arcana sui est, *exscribe et adserva!* necesse est, ut benificium sui recreare.", + "chat-settings": "moderationes colloquiorum", + "offline": "abesse", + "invited": "invitavisse", + "address": "adloquium", + "datetime-hour": { + "one": "hora", + "other": "horae" + }, + "datetime-ago-format": "{{ago}} {{number}} {{time-intervals}}", + "remove": "amovere", + "add-members": "sodalis adjungere", + "done": "paratus", + "new-group-chat": "novum colloquium circli", + "datetime-yesterday": "heri", + "datetime-ago": "anto", + "contacts": "contagiis", + "active-online": "adesse", + "password": "signum arcanum", + "discover": "invenite", + "intro-status": "habere colloquium cum me, ut syngraphus sui congerit et moderationes sui mutare!", + "name": "nomen", + "show-qr": "QR-nota elucere", + "connect": "iungere", + "edit": "commutare", + "account-generation-message": "mane! cumputo benificium sui.", + "no-messages": "ne nuntii", + "passphrase": "phrasis arcana", + "recipient": "acceptor", + "members-title": "sodalis", + "settings": "moderationes", + "chats": "colloquia", + "image-source-make-photo": "photographere", + "save": "apothecare", + "sync-in-progress": "synchronizari...", + "incorrect-code": [ + "str", + "nos paenite, nota falsa, perscribe denuo" + ], + "image-source-gallery": "eligere ad pinacothecae", + "sync-synced": "synchronizatum esse", + "status-pending": "tractare", + "datetime-day": { + "one": "dies", + "other": "dies" + }, + "scan-qr": "QR-nota photographere", + "recent": "novae", + "status": "status", + "wrong-password": "falsum signum acranum", + "clear-history": "processus amovere", + "no-contacts": "Nulla contagio", + "datetime-today": "hodie", + "web-view-error": "Erratum ad adspectus", + "can-not-add-yourself": "ne potest adjungere ipse!", + "add-to-contacts": "adicere ad contagio", + "available": "relicus", + "You": "tu", + "main-wallet": "crumera caput", + "members": { + "one": "I sodalis", + "other": "{{count}} sodalis", + "zero": "nullus sodalis" + }, + "intro-message1": "salve! hic Status est!.\n attige id nuntium, ut signum arcanum sui congere et incipere!", + "new-contact": "novum contagium", + "datetime-second": { + "one": "pars minuta secunda horae", + "other": "pars minuta secunda horae" + }, + "recover": "recreare", + "datetime-minute": { + "one": "pars minuta horae", + "other": "pars minuta horae" + }, + "active-unknown": "incognitus", + "public-key": "publica clavis", + "profile": "biographia", + "none": "nihil", + "removed": "reliquisse", + "message": "nuntium", + "here-is-your-passphrase": "hic phrasis arcana sui est, *exscribe et adserva!* necesse est, ut benificium sui recreare.", + "image-source-title": "photographia bigraphiae", + "status-sent": "deditum iri", + "left": "desse" +} diff --git a/translations/lt.json b/translations/lt.json new file mode 100644 index 00000000000..709f34e0e94 --- /dev/null +++ b/translations/lt.json @@ -0,0 +1,196 @@ +{ + "validation-amount-invalid-number": "Kiekio skaičius netinkamas", + "transaction-details": "Sandėrių detalės", + "confirm": "Patvirtinti", + "description": "Aprašymas", + "amount": "Paskyra", + "open": "Atidaryti", + "close-app-title": "Įspėjimas!", + "members-active": { + "one": "1 narys", + "other": "{{count}} nariai", + "zero": "jokių narių" + }, + "chat-name": "Pokalbio pavadinimas", + "phew-here-is-your-passphrase": "Vajė, buvo sunkoka, čia yra jūsų slaptažodis, *išsaugokite jį!* jeigu reikės atkurti jūsų paskyrą.", + "public-group-topic": "Tema", + "chat-settings": "Pokalbio nustatymai", + "offline": "Neprisijungęs", + "invited": "pakviestas", + "address": "Adresas", + "new-public-group-chat": "Jungtis prie grupinio pokalbio", + "datetime-hour": { + "one": "valanda", + "other": "valandos" + }, + "wallet-settings": "Piniginės nustatymai", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "Patvirtinti", + "block": "Blokas", + "camera-access-error": "Norėdami suteikti reikalingą leidimą filmuoti, eikite į savo sistemos nustatymus ir įsitikinkite, kad pasirinktas Status > Camera.", + "wallet-invalid-address": "Neteisingas adresas: \n {{data}}", + "remove": "Pašalinti", + "add-members": "Pridėti narių", + "yes": "Taip", + "dapps": "DApp'ai", + "network-settings": "Tinklo nustatymai", + "photos-access-error": "Norėdami suteikti reikalingą leidimą fotografuoti, eikite į savo sistemos nustatymus ir įsitikinkite, kad pasirinktas Status > Photo.", + "hash": "Hash", + "done": "Baigta", + "close-chat": "Trinti pokalbį", + "new-group-chat": "Naujas grupinis pokalbis", + "wallet": "Piniginė", + "wallet-request": "Užklausa", + "sign-in": "Prisijungti", + "datetime-yesterday": "vakar", + "create-new-account": "Sukurti naują paskyrą", + "datetime-ago": "prieš", + "contacts": "Kontaktai", + "got-it": "Gavo", + "public-chats": "Vieši pokalbiai", + "not-applicable": "Netaikoma nepasirašytiems sandėriams", + "active-online": "Prisijungęs", + "password": "Slaptažodis", + "send-request": "Siųsti užklausą", + "paste-json": "Įklijuoti JSON", + "browsing-title": "Naršyti", + "transactions-history-empty": "Tu neturi sandorių istorijos", + "discover": "Atrasti", + "browsing-cancel": "Naršyti", + "intro-status": "Kalbėkite su manimi, kad nustatytumėte savo paskyrą ir pakeistumėte savo nustatymus!", + "name": "Vardas", + "gas-price": "Gas kaina", + "validation-amount-is-too-precise": "Suma yra per daug tiksli. Mažiausias vienetas, kurį galite siųsti, yra 1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "Kopijuoti sandėrio hash", + "show-qr": "Rodyti QR", + "connect": "Jungtis", + "edit": "Redaguoti", + "account-generation-message": "Sekundėlę, vyksta nemenki skaičiavimai! Generuojama jūsų paskyra!", + "remove-network": "Nutolęs tinklas", + "no-messages": "Jokių žinučių", + "passphrase": "Slaptafrazė", + "recipient": "Gavėjas", + "members-title": "Nariams", + "new-group": "Nauja grupė", + "phone-e164": "Tarptautinis 1", + "connected": "Jungtis", + "rpc-url": "RPC URL", + "settings": "Nustatymai", + "specify-rpc-url": "Nurodykite RPC URL", + "gas-limit": "Gas limitas", + "delete": "Ištrinti", + "chats": "Pokalbiai", + "transaction-sent": "Sandėris išsiųstas", + "transaction": "Sandėris", + "public-group-status": "Viešas", + "image-source-make-photo": "Fotografuoti", + "chat": "Pokalbis", + "start-conversation": "Pradėti pokalbį", + "save": "išsaugoti", + "all": "Viskas", + "confirmations-helper-text": "Jei norite būti tikri, kad jūsų sandoris nebus kompromituotas, palaukite, kol jis gaus mažiausiai 10 blokų patvirtinimą", + "sharing-copy-to-clipboard": "Kopijuoti į iškarpinę", + "sync-in-progress": "Sinchronizuojama...", + "enter-password": "Įveskite slaptažodį", + "send-transaction": "Siųsti sandėrį", + "confirmations": "Patvirtinimas", + "incorrect-code": [ + "str", + "Atsiprašome, kodas neteisingas, prašome įvesti jį dar kartą" + ], + "image-source-gallery": "Pasirinkti iš galerijos", + "sync-synced": "Sinchronizuota", + "currency": "Valiuta", + "status-pending": "Laukiama", + "connecting-requires-login": "Prisijungimas prie kito tinklo reikalauja prisijungimo", + "datetime-day": { + "one": "diena", + "other": "dienos" + }, + "request-transaction": "Reikalauti sandėrio", + "wallet-send": "Siųsti", + "scan-qr": "Skanuoti QR", + "contact-s": { + "one": "kontaktas", + "other": "kontaktai" + }, + "gas-used": "Gas sunaudota", + "type": "Tipas", + "next": "Sekantis", + "recent": "Paskiausios būsenos", + "open-on-etherscan": "Atidaryti Etherscan", + "share": "Dalintis", + "status": "Status", + "from": "Iš", + "wrong-password": "Neteisingas slaptažodis", + "in-contacts": "Kontaktuose", + "transactions-sign": "Pasirašyti", + "sharing-share": "Dalintis...", + "type-a-message": "Įveskite žinutę...", + "usd-currency": "USD", + "url": "URL", + "add-network": "Pridėti tinklą", + "unknown-status-go-error": "Nežinoma status-go klaida", + "clear-history": "Naikinti istoriją", + "no-contacts": "Jokių kontaktų nerasta", + "soon": "Greitai", + "close-app-content": "Programa bus uždaryta. Kai iš naujo paleisite ją, pasirinktas tinklas bus naudojamas.", + "datetime-today": "šiandien", + "web-view-error": "vajė, klaida", + "error": "Klaida", + "more": "daugiau", + "cancel": "Atšaukti", + "can-not-add-yourself": "Negalima pridėti savęs", + "transaction-description": "Jei norite būti tikri, kad jūsų sandoris nebus kompromituotas, palaukite, kol jis gaus mažiausiai 10 blokų patvirtinimą", + "add-to-contacts": "Pridėti prie kontaktų", + "available": "Prieinama", + "You": "Tu", + "main-wallet": "Pagrindinė piniginė", + "transactions": "Sandėriai", + "members": { + "one": "1 narys", + "other": "{{count}} nariai", + "zero": "jokių narių" + }, + "intro-message1": "Sveiki atvykę į Status!\nPalieskite šį pranešimą, kad nustatytumėte slaptažodį ir pradėtumėte!", + "eth": "ETH", + "transactions-history": "Istorija", + "new-contact": "Nauji kontaktai", + "datetime-second": { + "one": "sekundė", + "other": "sekundės" + }, + "recover": "Atkurti", + "wallet-total-value": "Bendra vertė", + "nonce": "Nonce", + "new-network": "Naujas tinklas", + "datetime-minute": { + "one": "minutė", + "other": "minutės" + }, + "browsing-open-in-android-web-browser": "Atverti naršyklėje", + "browsing-open-in-ios-web-browser": "Atverti naršyklėje", + "wallet-insufficient-funds": "Nepakankamos lėšos", + "edit-profile": "Redaguoti profilį", + "active-unknown": "Nežinomas", + "wallet-invalid-chain-id": "Tinklas nesutampa su: \n {{data}}", + "transaction-failed": "Sandoris nepavyko", + "public-key": "Viešasis raktas", + "profile": "Profilis", + "wallet-choose-recipient": "Pasirinkti gavėją", + "none": "Jokio", + "removed": "perkeltas", + "no": "Ne", + "transactions-filter-select-all": "Rinktis viską", + "transactions-filter-title": "Filtruoti istoriją", + "message": "Žinutė", + "here-is-your-passphrase": "Čia yra jūsų slaptafrazė, *išsaugokite ją!* jeigu reikės atkurti jūsų paskyrą.", + "wallet-assets": "Aktyvai", + "image-source-title": "Profilio atvaizdas", + "current-network": "Dabartinis tinklas", + "left": "išėjo", + "to": "Į", + "data": "Duomenys", + "status-sent": "Nusiųsta", + "cost-fee": "Kaina/Mokestis" +} diff --git a/translations/lv.json b/translations/lv.json new file mode 100644 index 00000000000..b8d6977c53e --- /dev/null +++ b/translations/lv.json @@ -0,0 +1,131 @@ +{ + "confirm": "Apstiprināt", + "amount": "Summa", + "members-active": { + "one": "1 dalībnieks", + "other": "{{count}} dalībnieki", + "zero": "nav dalībnieku" + }, + "chat-name": "Čata nosaukums", + "phew-here-is-your-passphrase": "*Fuh* tas bija grūti, re, te ir tavs jauns passphrase, *pieraksti un sargā to!* Tev viņš būs vajadzīgs lai atgūtu pieju.", + "public-group-topic": "Temats", + "chat-settings": "Čata iestatījumi", + "offline": "Offline", + "invited": "uzaicināts", + "address": "Adrese", + "new-public-group-chat": "Pievienoties publiskajam čatam", + "datetime-hour": { + "one": "stunda", + "other": "stundas" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "Kļūda, nav atļaujas piekļūt kamerai. Lūdzu, iestatījumos pārliecinies, ka Status > Camera ir izvēlēts.", + "remove": "Noņemt", + "add-members": "Pievienot biedrus", + "photos-access-error": "Kļūda, nav atļaujas piekļūt fotogrāfijām. Lūdzu, iestatījumos pārliecinies, ka Status > Photos ir izvēlēts.", + "done": "Darīts", + "close-chat": "Dzēst čatu", + "new-group-chat": "Jauna grupa", + "sign-in": "Ieiet", + "datetime-yesterday": "vakar", + "create-new-account": "Izveidot jaunu kontu", + "datetime-ago": "pirms", + "contacts": "Kontakti", + "got-it": "Got it", + "active-online": "Online", + "password": "Parole", + "browsing-title": "Browse", + "discover": "Discover", + "browsing-cancel": "Atcelt", + "intro-status": "Čato ar mani, ja gribi mainīt ustatījumus!", + "name": "Vārds", + "show-qr": "Parādīt QR", + "connect": "Savienoties", + "edit": "Rediģēt", + "account-generation-message": "Lūdzu uzgaidi...", + "no-messages": "Nav īsziņu", + "passphrase": "Passphrase", + "recipient": "Saņēmējs", + "members-title": "Dalībnieki", + "new-group": "Jauna grupa", + "phone-e164": "International 1", + "settings": "Iestatījumi", + "delete": "Dzēst", + "chats": "Čati", + "transaction": "Transakcija", + "public-group-status": "Publisks", + "image-source-make-photo": "Fotografēt", + "start-conversation": "Sākt sarunu", + "save": "Saglabāt", + "sharing-copy-to-clipboard": "Copy to clipboard", + "sync-in-progress": "Sinhronizē...", + "send-transaction": "Sūtīt transakciju", + "incorrect-code": [ + "str", + "Nepareizs kods, mēģiniet vēlreiz" + ], + "image-source-gallery": "Izvēlēties no galerijas", + "sync-synced": "Sinhronizēts", + "status-pending": "Neizlemts", + "datetime-day": { + "one": "diena", + "other": "dienas" + }, + "scan-qr": "Skanēt QR", + "contact-s": { + "one": "kontakts", + "other": "kontakti" + }, + "next": "Tālāk", + "recent": "Recent", + "status": "Status", + "from": "No", + "wrong-password": "Parole ievadīta nepareizi", + "in-contacts": "Kontaktos", + "sharing-share": "Dalīties...", + "type-a-message": "Raksti īsziņu...", + "clear-history": "Dzēst vēsturi", + "no-contacts": "Kontaktu nav", + "datetime-today": "šodien", + "web-view-error": "ups, kļūda", + "error": "Kļūda", + "more": "vairāk", + "cancel": "Atcelt", + "can-not-add-yourself": "Tu nevari pievienot sevi", + "add-to-contacts": "Pievieno kontaktu", + "available": "Pieejams", + "You": "Tu", + "main-wallet": "Galvenais maks", + "members": { + "one": "1 dalībnieks", + "other": "{{count}} dalībnieki", + "zero": "nav dalībnieku" + }, + "intro-message1": "Sveicināti! Uzspied lai sāktu!", + "new-contact": "Jauns kontakts", + "datetime-second": { + "one": "sekunde", + "other": "sekundes" + }, + "recover": "Atgūt", + "datetime-minute": { + "one": "minūte", + "other": "minūtes" + }, + "browsing-open-in-android-web-browser": "Atvert pārlūkprogrammā", + "browsing-open-in-ios-web-browser": "Atvert pārlūkprogrammā", + "edit-profile": "Rediģēt profilu", + "active-unknown": "Nezināms", + "public-key": "Public key", + "profile": "Profils", + "none": "None", + "removed": "noņemts", + "message": "Īsziņa", + "here-is-your-passphrase": "Te ir tavs jauns passphrase, *pieraksti un sargā to!* Tev viņš būs vajadzīgs lai atgūtu pieju savam kontam.", + "image-source-title": "Profila bilde", + "current-network": "Tīkls", + "left": "atstāja grupu", + "to": "Kam", + "status-sent": "Aizsūtīts", + "data": "Dati" +} diff --git a/translations/ms.json b/translations/ms.json new file mode 100644 index 00000000000..0a5541872f9 --- /dev/null +++ b/translations/ms.json @@ -0,0 +1,1630 @@ +{ + "You": "Anda", + "about-app": "Mengenai", + "about-key-storage-content": "Status tidak akan mengakses kunci peribadi anda. Pastikan anda membuat cadangan frasa benih anda. Sekiranya anda kehilangan telefon, itu satu-satunya cara untuk mengakses kunci anda.", + "about-key-storage-title": "Mengenai penyimpanan kunci", + "about-names-content": "Tidak ada yang boleh berpura-pura menjadi anda! Anda tidak dikenali secara lalai dan tidak perlu mendedahkan nama sebenar anda. Anda boleh mendaftarkan nama khas dengan sedikit bayaran.", + "about-names-title": "Nama tidak boleh diubah", + "about-sharing-data": "Mengenai perkongsian data", + "accept": "Terima", + "accept-and-add": "Terima dan tambah", + "accept-and-continue": "Terima dan teruskan", + "accept-and-share-address": "Terima dan kongsi alamat", + "accept-new-chats-from": "Terima sembang baru daripada", + "accept-status-tos-prefix": "Saya terima Status", + "access-existing-keys": "Akses kunci yang ada", + "access-key": "Kunci akses", + "account-added": "Akaun ditambahkan", + "account-color": "Warna akaun", + "account-content": "Anda boleh membandingkan akaun dalam Status dengan akaun bank. Seperti akaun bank, akaun biasanya mempunyai alamat dan baki; Anda menggunakan akaun ini untuk bertransaksi di Ethereum. Anda boleh mempunyai banyak akaun di dompet anda. Semua diakses dengan membuka kunci Status.", + "account-exists-title": "akaun telah wujud", + "account-is-used": "Akaun sedang digunakan dengan Dapps dalam pelayar.", + "account-name": "Nama akaun", + "account-settings": "Tetapan akaun", + "account-title": "Akaun", + "accounts": "Akaun", + "actions": "Tindakan", + "active-online": "Dalam talian", + "active-unknown": "Tidak diketahui", + "activity": "Aktiviti", + "add": "Tambah", + "add-a-watch-account": "Tambahkan alamat jam tangan sahaja", + "add-account": "Tambahkan akaun", + "add-account-description": "Anda boleh mengimport sebarang jenis akaun Ethereum untuk menambahkannya ke dompet Status anda", + "add-account-incorrect-password": "Kata laluan nampaknya tidak betul. Masukkan kata laluan yang anda gunakan untuk membuka kunci aplikasi.", + "add-an-account": "Tambahkan akaun", + "add-bootnode": "Tambah bootnode", + "add-contact": "Tambahkan kenalan", + "add-custom-token": "Tambahkan token tersuai", + "add-favourite": "Tambah kegemaran", + "add-mailserver": "Tambahkan nod sejarah", + "add-members": "Tambah ahli", + "add-network": "Tambah rangkaian", + "add-new-contact": "Tambah kenalan baru", + "add-nickname": "Tambahkan nama panggilan (pilihan)", + "add-node": "Tambah nod", + "add-private-key-account": "Tambahkan akaun dari kunci peribadi", + "add-seed-account": "Tambahkan akaun dengan frasa biji", + "add-to-contacts": "Tambahkan ke kenalan", + "add-to-contacts-text": "Dengan menambahkan pengguna ke senarai kenalan anda, anda berkongsi alamat dompet anda", + "add-to-favourites": "Tambah ke kegemaran", + "add-watch-account": "Tambahkan akaun jam tangan sahaja", + "address": "Alamat", + "address-or-ens-name": "Alamat atau nama ENS", + "address-received": "Alamat diterima", + "address-request-accepted": "Permintaan alamat diterima", + "address-requested": "Alamat diminta", + "advanced": "Mahir", + "advanced-settings": "Tetapan lanjutan", + "advertiser-description": "Anda telah menemui Status menerusi rakan kongsi. Adakah anda keberatan jika Status memeriksa alamat IP anda apabila rakan kongsi anda menerima ganjaran? Maklumat ini tidak akan digunakan untuk perkara lain dan akan dibuang sepenuhnya selepas 7 hari.", + "advertiser-starter-pack-accept": "Terima", + "advertiser-starter-pack-decline": "Tolak", + "advertiser-starter-pack-description": "Berikut adalah beberapa kripto sebagai permulaan! Gunakannya untuk mendapatkan pelekat, nama ENS dan mencuba dapps", + "advertiser-starter-pack-title": "Pek Permulaan", + "advertiser-title": "Dasar privasi", + "agree-by-continuing": "Dengan meneruskan anda bersetuju\n kepada kita", + "all": "Semua", + "allow": "Benarkan", + "allow-and-send": "Benarkan dan hantar", + "allow-mention-notifications": "Tunjukkan @ sebutan", + "allowing-authorizes-this-dapp": "Membolehkan membenarkan DApp ini untuk mengambil alamat dompet anda dan mengaktifkan Web3", + "already-have-asset": "Anda sudah mempunyai aset ini", + "amount": "Jumlah", + "anyone": "Sesiapa", + "appearance": "Penampilan", + "apply": "Memohon", + "are-you-sure": "Adakah anda pasti?", + "are-you-sure-description": "Anda tidak akan dapat melihat frasa benih lagi", + "are-you-sure-to-cancel": "Adakah anda pasti mahu membatalkan?", + "are-you-sure?": "Adakah anda pasti?", + "ask-in-status": "Kemukakan soalan atau laporkan pepijat", + "at": "di", + "attribution-received": "{{attrib}} daripada {{max}} bonus telah diterima", + "audio": "Audio", + "audio-recorder": "Perakam", + "audio-recorder-error": "Kesalahan perakam", + "audio-recorder-max-ms-reached": "Masa rakaman maksimum dicapai", + "audio-recorder-permissions-error": "Anda harus memberi kebenaran untuk menghantar mesej audio", + "authorize": "Memberi kebenaran", + "available": "Ada", + "available-participants": { + "other": "Anda boleh memilih {{count}} lagi peserta" + }, + "back": "Belakang", + "back-up": "Sandarkan", + "back-up-seed-phrase": "Cadangan frasa biji", + "back-up-your-seed-phrase": "Sandarkan frasa benih anda", + "backup-disabled": "Dinyahaktifkan", + "backup-recovery-phrase": "Sandar frasa pemulihan", + "bad-fees-description": "Bayaran keutamaan anda adalah di bawah parameter yang kami cadangkan.", + "balance": "Seimbang", + "begin-set-up": "Mulakan persediaan", + "below-base-fee": "bayaran maksimum di bawah bayaran asas", + "biometric-auth-android-sensor-desc": "Sensor sentuh", + "biometric-auth-android-sensor-error-desc": "Gagal", + "biometric-auth-android-title": "Pengesahan diperlukan", + "biometric-auth-confirm-logout": "Relogin", + "biometric-auth-confirm-message": "Pengesahan biometrik diperlukan untuk meneruskan, jika tidak mungkin, buka kunci kunci anda dengan kata laluan atau kod laluan anda", + "biometric-auth-confirm-title": "Anda mesti mengesahkan!", + "biometric-auth-confirm-try-again": "Cuba lagi", + "biometric-auth-error": "Tidak dapat melakukan pengesahan biometrik ( {{code}} )", + "biometric-auth-login-error-title": "Kesalahan pengesahan biometrik", + "biometric-auth-login-ios-fallback-label": "Masukkan kata laluan", + "biometric-auth-reason-login": "Log masuk dalam Status", + "biometric-auth-reason-verify": "Sahkan pengesahan", + "biometric-disable-bioauth": "nyahdayakan {{bio-type-label}}", + "biometric-disable-password-description": "Sekiranya anda melumpuhkan ini, anda juga akan", + "biometric-disable-password-title": "Lumpuhkan simpanan kata laluan", + "biometric-enable": "Jika anda tidak mahu memasukkan kata laluan anda setiap kali untuk mencapai aplikasi, dayakan {{bio-type-label}} daftar masuk", + "biometric-enable-button": "Dayakan {{bio-type-label}}", + "biometric-enable-keycard": "Sekiranya anda tidak mahu menggunakan Kad Kunci anda setiap kali untuk mengakses aplikasi, aktifkan log masuk {{bio-type-label}}", + "biometric-faceid": "ID Muka", + "biometric-fingerprint": "Cap Jari", + "biometric-secure-with": "Selamat dengan {{bio-type-label}}", + "biometric-touchid": "ID Sentuh", + "bip39-password-placeholder": "Kata laluan BIP39", + "blank-keycard-text": "Anda boleh meneruskan kad kekunci anda setelah membuat kunci dan nama", + "blank-keycard-title": "Nampaknya anda sudah mengetuk\n kad kekunci kosong", + "block": "Sekat", + "block-contact": "Sekat pengguna ini", + "block-contact-details": "Penyekatan akan menghapuskan mesej terdahulu pengguna ini dan menghentikan yang baru daripada menghubungi anda", + "blocked-users": "Pengguna yang disekat", + "bootnode-address": "Alamat bootnode", + "bootnode-details": "Butiran but but", + "bootnode-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "Kod but", + "bootnodes-enabled": "Bootnode didayakan", + "bootnodes-settings": "Tetapan kod but", + "browsed-websites": "Sejarah penyemak imbas akan muncul di sini", + "browser": "Browser", + "browser-not-secure": "Sambungan tidak selamat! Jangan menandatangani transaksi atau menghantar data peribadi di laman web ini.", + "browser-secure": "Sambungan selamat. Pastikan anda benar-benar mempercayai laman web ini sebelum menandatangani transaksi atau memasukkan data peribadi.", + "browsers": "Browser", + "browsing-cancel": "Membatalkan", + "browsing-open-in-android-web-browser": "Buka di Android", + "browsing-open-in-ios-web-browser": "Buka di iOS", + "browsing-open-in-status": "Buka dalam Status", + "browsing-site-blocked-description1": "Kami mengesan kemungkinan terdapatnya aktiviti berbahaya dari alamat ini. Untuk melindungi anda dan dompet anda, kami menghalang navigasi lebih jauh. \n\n Sekiranya anda rasa ini adalah kesalahan, beri tahu kami di", + "browsing-site-blocked-description2": "sembang awam.", + "browsing-site-blocked-go-back": "Pergi balik", + "browsing-site-blocked-title": "Laman web ini disekat", + "browsing-title": "Layari", + "bug-report": "Laporkan pepijat", + "build-yourself": "Untuk menggunakan aplikasi tanpa Terma Penggunaan ini, anda boleh membina versi anda sendiri", + "buy-crypto": "Beli kripto", + "buy-crypto-choose-a-service": "Pilih perkhidmatan yang anda ingin gunakan untuk membeli kripto", + "buy-crypto-description": "Cari dapp untuk membeli kripto sekarang", + "buy-crypto-leaving": "Anda akan meninggalkan Status dan memasuki laman web pihak ketiga untuk menyelesaikan pembelian anda", + "buy-crypto-title": "Nampaknya dompet anda kosong", + "camera-access-error": "Untuk memberikan izin kamera yang diperlukan, pergi ke tetapan sistem anda dan pastikan Status > Kamera dipilih.", + "can-not-add-yourself": "Itu ialah anda, pilih orang lain untuk memulakan perbualan", + "can-send-messages": "Anda boleh menghantar dan menerima mesej-mesej baru", + "cancel": "Membatalkan", + "cancel-keycard-setup": "Batalkan penyediaan Kad Kekunci", + "cancelling": "Membatalkan", + "cannot-read-card": "Tidak dapat membaca kad.\n Tahan di bahagian belakang telefon anda", + "cannot-use-default-pin": "Kod laluan 000000 tidak dibenarkan. \nSila gunakan nombor lain", + "cant-open-public-chat": "Tidak dapat membuka sembang awam", + "cant-report-bug": "Tidak dapat melaporkan pepijat", + "card-is-blank": "Kad ini kosong", + "card-reseted": "Kad telah ditetapkan semula", + "card-unpaired": "Kad telah dinyahpasang daripada peranti semasa", + "category": "Kategori", + "category-title": "Tajuk kategori", + "change-fleet": "Tukar armada menjadi {{fleet}}", + "change-logging-enabled": "Adakah anda pasti mahu {{enable}} log?", + "change-pairing": "Tukar kod berpasangan", + "change-pairing-description": "Mengubah kod pasangan tidak menjejaskan pasangan semasa. Walau bagaimanapun, sebarang pasangan baru akan memerlukan kod baru.", + "change-pairing-title": "Buat kod pasangan baru", + "change-passcode": "Tukar Kod Laluan", + "change-password": "Tukar Kata Laluan", + "change-pin": "Tukar kod laluan 6-digit", + "change-puk": "Tukar PUK 12 digit", + "change-tip": "Tukar tip", + "changed-amount-warning": "Jumlah diubah dari {{old}} menjadi {{new}}", + "changed-asset-warning": "Aset ditukar dari {{old}} menjadi {{new}}", + "chaos-mode": "Mod kekacauan", + "chaos-unicorn-day": "Hari Kekacauan Unicorn", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Berbual", + "chat-and-transact": "Berbual dan bertransaksi secara peribadi dengan rakan", + "chat-is-a-contact": "Hubungi", + "chat-is-not-a-contact": "Bukan kenalan", + "chat-key": "Kekunci sembang", + "chat-key-content": "Mesej pada protokol sembang Status dihantar dan diterima menggunakan kunci penyulitan. Kunci sembang awam adalah rentetan watak yang anda kongsi dengan orang lain supaya mereka dapat menghantar mesej kepada anda dalam Status", + "chat-key-title": "Kunci Sembang", + "chat-link-previews": "Pratonton pautan sembang", + "chat-name": "Nama Chat", + "chat-name-content": "Tiga perkataan rawak, diambil secara algoritma dari kekunci sembang anda dan digunakan sebagai alias lalai anda dalam sembang. Nama sembang benar-benar unik; tidak ada pengguna lain yang boleh mempunyai tiga perkataan yang sama.", + "chat-name-title": "nama Chat", + "chat-notification-preferences": "Tetapan pemberitahuan", + "chat-settings": "Tetapan sembang", + "chats": "Sembang", + "check-on-opensea": "Semak opensea", + "check-your-recovery-phrase": "Semak frasa pemulihan anda", + "choose-actions": "Pilih tindakan", + "choose-authentication-method": "Pilih kaedah pengesahan", + "choose-new-location-for-keystore": "Pilih lokasi baru untuk menyimpan fail kunci anda", + "choose-storage": "Pilih simpanan", + "clear": "Jelas", + "clear-all": "Kosongkan semua", + "clear-history": "Sejarah yang jelas", + "clear-history-action": "Jelas", + "clear-history-confirmation": "Hapus sejarah?", + "clear-history-confirmation-content": "Adakah anda pasti mahu membersihkan sejarah sembang ini?", + "clear-history-title": "Hapus sejarah?", + "close": "Tutup", + "close-all": "Tutup semua", + "close-app-button": "Sahkan", + "close-app-content": "Aplikasi akan berhenti dan ditutup. Apabila anda membukanya semula, rangkaian yang dipilih akan digunakan", + "close-app-title": "Amaran!", + "command-button-send": "Hantar", + "communities": "Komuniti", + "communities-alpha": "Komuniti (alpha)", + "communities-enabled": "Komuniti didayakan", + "communities-verified": "✓ Komuniti Status Yang Disahkan", + "community": "Komuniti", + "community-color": "Warna komuniti", + "community-color-placeholder": "Pilih warna", + "community-edit-title": "Edit komuniti", + "community-emoji-thumbnail-title": "Thumbnail", + "community-image-pick": "Pilih gambar", + "community-image-remove": "Buang", + "community-image-take": "Ambil gambar", + "community-info": "Maklumat komuniti", + "community-info-not-found": "Maklumat komuniti tidak dijumpai", + "community-invite-title": "Jemput", + "community-key": "Kunci peribadi komuniti", + "community-key-placeholder": "Taipkan kunci peribadi komuniti anda", + "community-link": "Pautan komuniti", + "community-members-title": "Ahli", + "community-message-preview": "Jemputan untuk menyertai {{community-name}}", + "community-private-key": "Kunci peribadi komuniti", + "community-requests-to-join-title": "Permintaan keahlian", + "community-roles": "Peranan", + "community-share-title": "Berkongsi", + "community-thumbnail-image": "Imej lakaran kenit", + "community-thumbnail-upload": "Muat naik", + "complete-hardwallet-setup": "Kad ini kini dipaut. Anda memerlukannya untuk menandatangani transaksi dan membuka kunci anda", + "completed": "Selesai", + "confirm": "Sahkan", + "confirm-new-password": "Sahkan kata laluan baru", + "confirm-pairing-code-placeholder": "Sahkan kod pasangan anda ...", + "confirm-password-placeholder": "Mengesahkan kata laluan anda...", + "confirmation-request": "Permintaan pengesahan", + "confirmations": "Pengesahan", + "confirmations-helper-text": "Apabila transaksi mempunyai 12 pengesahan, anda boleh mempertimbangkannya untuk menyelesaikannya.", + "connect": "Sambung", + "connect-mailserver-content": "Sambung ke {{name}} ?", + "connect-wallet": "Sambungkan dompet", + "connected": "Bersambung", + "connected-to": "Bersambung dengan", + "connecting": "Menyambung ...", + "connecting-requires-login": "Untuk menyambung ke rangkaian lain memerlukan log masuk", + "connection-status": "Status sambungan", + "connection-with-the-card-lost": "Sambungan dengan kad\n telah hilang", + "connection-with-the-card-lost-setup-text": "Untuk menyambung semula, simpan kad ke\n bahagian belakang telefon anda dan jaga\n kad ke kenalan telefon", + "connection-with-the-card-lost-text": "Untuk meneruskan, pegang kad ke bahagian belakang telefon anda", + "contact-code": "Kod pengenalan", + "contact-s": { + "other": "kenalan" + }, + "contacts": "Kenalan", + "contacts-descr": "Kenalan anda akan muncul di sini. Anda akan menerima kemas kini status dari sesiapa sahaja yang anda tambahkan sebagai kenalan", + "contacts-empty": "Kenalan dengan nama ENS akan muncul di sini", + "continue": "Teruskan", + "continue-anyway": "Teruskan pula", + "contract-address": "Alamat kontrak", + "contract-interaction": "Interaksi kontrak", + "copy-info": "Salin maklumat", + "copy-qr": "Salin kod", + "copy-to-clipboard": "Salinan", + "copy-transaction-hash": "Salin ID transaksi", + "cost-fee": "Kos \/ Bayaran", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Buat", + "create-a-pin": "Cipta kod laluan 6-digit", + "create-a-puk": "Buat PUK 12-digit", + "create-category": "Cipta kategori", + "create-channel": "Buat saluran", + "create-channel-title": "Saluran baru", + "create-community": "Buat komuniti", + "create-group-chat": "Cipta perbualan kumpulan", + "create-multiaccount": "Menjana kunci", + "create-new-key": "Dapatkan kunci baru", + "create-pin": "Buat kod laluan 6 digit", + "create-pin-description": "Anda memerlukan kad anda + kod laluan 6 digit ini untuk membuka Status dan mengesahkan transaksi", + "created-group-chat-description": "Anda telah mencipta kumpulan {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Mata Wang", + "currency-display-name-aed": "Dirham Emirat", + "currency-display-name-afn": "Afghanistan Afghanistan", + "currency-display-name-ars": "Peso Argentina", + "currency-display-name-aud": "Dolar Australia", + "currency-display-name-bbd": "Dolar Barbados", + "currency-display-name-bdt": "Taka Bangladesh", + "currency-display-name-bgn": "Lev Bulgaria", + "currency-display-name-bhd": "Dinar Bahrain", + "currency-display-name-bnd": "Dolar Brunei Darussalam", + "currency-display-name-bob": "Bolíviano Bolivia", + "currency-display-name-brl": "Brazil Sebenar", + "currency-display-name-btn": "Ngultrum Bhutan", + "currency-display-name-cad": "Dolar Kanada", + "currency-display-name-chf": "Franc Switzerland", + "currency-display-name-clp": "Peso Cili", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Peso Colombia", + "currency-display-name-crc": "Kolon Costa Rica", + "currency-display-name-czk": "Koruna Czech", + "currency-display-name-dkk": "Krone Denmark", + "currency-display-name-dop": "Peso Republik Dominika", + "currency-display-name-egp": "Pound Mesir", + "currency-display-name-etb": "Birr Ethiopia", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Pound Britain", + "currency-display-name-gel": "Lari Georgia", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Dolar Hong Kong", + "currency-display-name-hrk": "Kuna Croatia", + "currency-display-name-huf": "Forint Hungary", + "currency-display-name-idr": "Rupiah Indonesia", + "currency-display-name-ils": "Israel Shekel", + "currency-display-name-inr": "Rupee India", + "currency-display-name-isk": "Iceland Krona", + "currency-display-name-jmd": "Dolar Jamaica", + "currency-display-name-jpy": "Yen Jepun", + "currency-display-name-kes": "Shilling Kenya", + "currency-display-name-krw": "Korea (Selatan) Menang", + "currency-display-name-kwd": "Dinar Kuwait", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Rupee Sri Lanka", + "currency-display-name-mad": "Dirham Maghribi", + "currency-display-name-mdl": "Moldovan Leu", + "currency-display-name-mur": "Rupee Mauritius", + "currency-display-name-mwk": "Malawian Kwacha", + "currency-display-name-mxn": "Peso Mexico", + "currency-display-name-myr": "Ringgit Malaysia", + "currency-display-name-mzn": "Metzikal Mozambik", + "currency-display-name-nad": "Dolar Namibia", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Krone Norway", + "currency-display-name-npr": "Rupee Nepal", + "currency-display-name-nzd": "Dolar New Zealand", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinean Kina", + "currency-display-name-php": "Peso Filipina", + "currency-display-name-pkr": "Rupee Pakistan", + "currency-display-name-pln": "Poland Zloty", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Dinar Serbia", + "currency-display-name-rub": "Rubel Rusia", + "currency-display-name-sar": "Riyal Arab Saudi", + "currency-display-name-sek": "Krona Sweden", + "currency-display-name-sgd": "Dolar Singapura", + "currency-display-name-thb": "Baht Thailand", + "currency-display-name-try": "Lira Turki", + "currency-display-name-ttd": "Dolar Trinidad dan Tobago", + "currency-display-name-twd": "Dolar Baru Taiwan", + "currency-display-name-tzs": "Shilling Tanzania", + "currency-display-name-uah": "Ukraine Hryvnia", + "currency-display-name-ugx": "Shilling Uganda", + "currency-display-name-usd": "Dolar Amerika Syarikat", + "currency-display-name-uyu": "Peso Uruguay", + "currency-display-name-vef": "Venezuela Bolívar", + "currency-display-name-vnd": "Dong Vietnam", + "currency-display-name-zar": "Rand Afrika Selatan", + "current": "Semasa", + "current-average-tip": "Tip purata semasa", + "current-base-fee": "Bayaran asas semasa", + "current-minimum-tip": "Tip minimum semasa", + "current-network": "Rangkaian semasa", + "current-password": "Kata laluan semasa", + "current-pin": "Masukkan kod laluan 6-digit", + "current-pin-description": "Masukkan kod laluan 6-digit anda untuk teruskan", + "custom": "Adat", + "custom-networks": "Rangkaian khas", + "custom-node": "Anda menggunakan titik akhir RPC tersuai. Sejarah pemindahan tempatan anda mungkin tidak lengkap.", + "custom-seed-phrase": "Frasa biji tidak sah", + "custom-seed-phrase-text-1": "Frasa benih ini tidak sepadan dengan kamus kami yang disokong. Semak perkataan yang disalah eja.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Terima dan Buka", + "dapp-starter-pack-description": "Berikut adalah beberapa kripto sebagai permulaan! Gunakannya untuk mendapatkan pelekat, nama ENS dan mencuba dapps", + "dapp-starter-pack-title": "Pek Permulaan", + "dapp-would-like-to-connect-wallet": "ingin sambungkan ke", + "dapps": "ÐApps", + "dapps-permissions": "Kebenaran DApp", + "dark": "Gelap", + "data": "Data", + "data-collected": "Data dikumpul", + "data-collected-subtitle": "Jadual di bawah menunjukkan data tepat yang disimpan dan akan dihantar. Data disahkan berdasarkan peraturan awam untuk memastikan tidak ada data sensitif yang dikirim. Jangan percaya, sahkan.", + "data-syncing": "Penyelarasan data", + "database-reset-content": "Sembang, kenalan dan tetapan telah dihapuskan. Anda boleh menggunakan akaun anda dengan Kad Kunci anda", + "database-reset-title": "Set semula pangkalan data", + "database-reset-warning": "Pangkalan data akan ditetapkan semula. Sembang, kenalan dan tetapan akan dihapuskan", + "datetime-ago": "yang lalu", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "other": "hari" + }, + "datetime-day-short": { + "other": "D" + }, + "datetime-hour": { + "other": "jam" + }, + "datetime-hour-short": { + "other": "H" + }, + "datetime-minute": { + "other": "minit" + }, + "datetime-minute-short": { + "other": "M" + }, + "datetime-second": { + "other": "saat" + }, + "datetime-second-short": { + "other": "S" + }, + "datetime-today": "Hari ini", + "datetime-yesterday": "semalam", + "decimals": "Perpuluhan", + "decline": "Tolak", + "decryption-failed-content": "Ralat berlaku semasa menyahsulitkan data anda. Anda mungkin perlu menghapus data lama anda dan menghasilkan akaun baru. Ketuk \"Terapkan\" untuk menghapus atau \"Batal\" untuk mencuba lagi", + "default": "Lalai", + "default-assets": "Lalai ERC20 dan ERC721", + "default-sync-period": "Segerakkan sejarah untuk", + "delete": "Padam", + "delete-account": "Padamkan akaun", + "delete-and-leave-group": "Padam dan tinggalkan kumpulan", + "delete-bootnode": "Padamkan bootnode", + "delete-bootnode-are-you-sure": "Adakah anda pasti mahu memadam bootnode ini?", + "delete-bootnode-title": "Padamkan bootnode", + "close-chat": "Padamkan sembang", + "close-chat-confirmation": "Adakah anda pasti mahu memadamkan sembang ini?", + "delete-confirmation": "Padamkan?", + "delete-keys-keycard": "Padamkan kunci dari Kad Kunci", + "delete-mailserver": "Padamkan nod sejarah", + "delete-mailserver-are-you-sure": "Adakah anda pasti mahu memadamkan nod sejarah ini?", + "delete-mailserver-title": "Padamkan nod sejarah", + "delete-message": "Padamkan mesej", + "delete-my-account": "Padamkan akaun saya", + "delete-my-profile": "Padamkan profil saya", + "delete-network-confirmation": "Adakah anda pasti mahu memadamkan rangkaian ini?", + "delete-network-error": "Sila sambungkan ke rangkaian lain sebelum memadamkannya", + "delete-network-title": "Padamkan rangkaian?", + "delete-node": "Padamkan nod", + "delete-node-are-you-sure": "Adakah anda pasti mahu memadamkan nod ini?", + "delete-node-title": "Padamkan nod", + "delete-profile": "Padamkan profil", + "delete-profile-warning": "Amaran: Sekiranya anda tidak menuliskan frasa benih anda, anda akan kehilangan akses ke dana anda setelah anda menghapus profil anda", + "deny": "Tolak", + "derivation-path": "Jalan terbitan", + "describe-channel": "Terangkan saluran", + "description": "Penerangan", + "dev-mode": "Mod pembangunan", + "dev-mode-settings": "Tetapan mod pembangunan", + "device-syncing": "Penyegerakan peranti", + "devices": "Peranti", + "disable": "nyahdayakan", + "disable-all": "Nyahdaya semua", + "disabled": "Dinyahaktifkan", + "disconnected": "Berbual di luar talian", + "discover": "Cari", + "dismiss": "Ketepikan", + "done": "Dilakukan", + "dont-ask": "Jangan tanya saya lagi", + "edit": "Edit", + "edit-channel-title": "Edit saluran", + "edit-chats": "Sunting perbualan", + "edit-community": "Edit komuniti", + "edit-favourite": "Edit kegemaran", + "edit-group": "Edit kumpulan", + "edit-profile": "Sunting profil", + "edited": "Disunting", + "editing-message": "Menyunting mesej", + "empty-activity-center": "Pemberitahuan sembang anda\n akan muncul di sini", + "empty-chat-description": "Tidak ada mesej\n dalam sembang ini", + "empty-chat-description-community": "Tenang di sini selama {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Sebarang mesej yang anda hantar di sini disulitkan dan hanya dapat dibaca oleh anda dan", + "empty-chat-description-public": "Tenang di sini sejak {{quiet-hours}} . Mulakan perbualan atau", + "empty-chat-description-public-share-this": "kongsi sembang ini.", + "empty-keycard-required": "Perlu Kad Kunci kosong", + "empty-pending-invitations-descr": "Orang yang ingin menyertai kumpulan ini\n melalui pautan jemputan akan muncul di sini", + "empty-tab": "Tab kosong", + "enable": "Aktifkan", + "enable-all": "Aktifkan semua", + "enable-link-previews": "Dayakan pratonton pautan dalam sembang?", + "encrypt-with-password": "Enkripsi dengan kata laluan", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Tambahkan nama pengguna", + "ens-agree-to": "Bersetuju untuk", + "ens-chat-settings": "Tetapan sembang", + "ens-custom-domain": "Domain tersuai", + "ens-custom-username-hints": "Taip keseluruhan nama pengguna termasuk domain tersuai seperti nama pengguna.domain.eth", + "ens-custom-username-taken": "Nama pengguna bukan milik anda :(", + "ens-deposit": "Deposit", + "ens-dismiss-message": "Klik di sini untuk menolak", + "ens-displayed-with": "Mesej anda ditunjukkan kepada orang lain dengan", + "ens-get-name": "Dapatkan nama pengguna sejagat", + "ens-got-it": "Ok, faham", + "ens-locked": "Nama pengguna dikunci. Anda tidak akan dapat melepaskannya sehingga {{date}}", + "ens-name-content": "Alias khusus untuk kunci sembang anda yang boleh anda daftarkan menggunakan Ethereum Name Service Nama ENS adalah nama pengguna yang terdesentralisasi.", + "ens-name-not-found": "Tidak dapat menyelesaikan nama ENS", + "ens-name-title": "Nama ENS", + "ens-network-restriction": "Hanya terdapat di Mainnet", + "ens-no-usernames": "Anda tidak mempunyai nama pengguna yang disambungkan", + "ens-powered-by": "Dikuasakan oleh Ethereum Name Services", + "ens-primary-username": "Nama pengguna utama", + "ens-register": "Daftar", + "ens-registration-failed": "Untuk mendaftarkan nama pengguna, sila cuba lagi.", + "ens-registration-failed-title": "transaksi gagal", + "ens-registration-failure": "Pendaftaran gagal", + "ens-registration-in-progress": "Pendaftaran sedang dijalankan ...", + "ens-release-username": "Lepaskan nama pengguna", + "ens-remove-hints": "Mengeluarkan akan melepaskan nama pengguna dari kunci anda.", + "ens-remove-username": "Alih keluar nama pengguna", + "ens-saved": "kini dihubungkan dengan kekunci sembang anda dan boleh digunakan dalam Status.", + "ens-saved-title": "Nama pengguna ditambah", + "ens-show-username": "Tunjukkan nama pengguna ENS saya dalam sembang", + "ens-terms-header": "Syarat pendaftaran nama", + "ens-terms-point-1": "Dana disimpan selama 1 tahun. SNT anda akan dikunci, tetapi tidak dibelanjakan.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Pendaftaran ENS).", + "ens-terms-point-2": "Selepas 1 tahun, anda boleh melepaskan nama dan mendapatkan deposit anda kembali, atau tidak mengambil tindakan untuk menyimpan nama tersebut.", + "ens-terms-point-3": "Sekiranya syarat-syarat kontrak berubah - misalnya Status membuat peningkatan kontrak - pengguna berhak melepaskan nama pengguna tanpa mengira waktu yang ditahan.", + "ens-terms-point-4": "Pengawal kontrak tidak dapat mengakses dana simpanan anda. Mereka hanya boleh dipindahkan ke alamat yang menghantarnya.", + "ens-terms-point-5": "Alamat anda akan dikaitkan secara terbuka dengan nama ENS anda.", + "ens-terms-point-6": "Nama pengguna dibuat sebagai node subdomain stateofus.eth dan tertakluk kepada terma kontrak pintar ENS.", + "ens-terms-point-7": "Anda membenarkan kontrak untuk memindahkan SNT bagi pihak anda. Ini hanya boleh berlaku apabila anda menyetujui transaksi untuk membenarkan pemindahan.", + "ens-terms-point-8": "Syarat-syarat ini dijamin oleh logik kontrak pintar di alamat:", + "ens-terms-point-9": "{{address}} (Nama Pengguna StatusPendaftar)", + "ens-terms-registration": "Syarat pendaftaran nama.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Transaksi belum selesai ...", + "ens-understand": "Saya faham bahawa alamat dompet saya akan dihubungkan secara terbuka ke nama pengguna saya.", + "ens-username": "Nama pengguna ENS", + "ens-username-already-added": "Nama pengguna sudah dihubungkan dengan kunci sembang anda dan boleh digunakan di dalam Status.", + "ens-username-available": "✓ Nama pengguna ada!", + "ens-username-connected": "Nama pengguna ini dimiliki oleh anda dan dihubungkan dengan kunci sembang anda.", + "ens-username-connected-continue": "Terus menetapkan `Tunjukkan nama pengguna ENS saya dalam sembang '.", + "ens-username-connected-with-different-key": "Melanjutkan akan memerlukan transaksi untuk menghubungkan nama pengguna dengan kunci sembang semasa anda.", + "ens-username-connection-confirmation": "{{username}} akan disambungkan setelah transaksi selesai.", + "ens-username-hints": "Sekurang-kurangnya 4 watak. Huruf Latin, angka, dan huruf kecil sahaja.", + "ens-username-invalid": "Huruf dan nombor sahaja.", + "ens-username-owned": "✓ Nama pengguna dimiliki oleh anda.", + "ens-username-owned-continue": "Meneruskan akan menghubungkan nama pengguna ini dengan kekunci sembang anda.", + "ens-username-registration-confirmation": "Bagus! Anda memiliki {{username}} setelah transaksi selesai.", + "ens-username-taken": "Nama pengguna sudah diambil :(", + "ens-username-you-can-follow-progress": "Anda boleh mengikuti perkembangan di bahagian Sejarah Transaksi dompet anda.", + "ens-usernames": "Nama pengguna ENS", + "ens-usernames-details": "Daftarkan nama pengguna sejagat agar mudah dikenali oleh pengguna lain", + "ens-want-custom-domain": "Saya mempunyai nama di domain lain", + "ens-want-domain": "Saya mahukan domain stateofus.eth", + "ens-welcome-hints": "Nama ENS mengubah alamat lama menjadi nama pengguna yang unik.", + "ens-welcome-point-customize": "Nama ENS boleh menggantikan nama 3 perkataan rawak anda dalam sembang. Jadilah @ namaanda dan bukannya {{name}} .", + "ens-welcome-point-customize-title": "Sesuaikan nama sembang anda", + "ens-welcome-point-receive": "Orang lain boleh menghantar dana melalui chat dalam satu langkah mudah.", + "ens-welcome-point-receive-title": "Terima urus niaga dalam sembang", + "ens-welcome-point-register": "Daftar sekali untuk mengekalkan nama itu selama-lamanya. Selepas 1 tahun, anda boleh mengeluarkan nama dan mendapatkan kembali SNT anda.", + "ens-welcome-point-register-title": "10 SNT untuk mendaftar", + "ens-welcome-point-simplify": "Anda boleh menerima dana untuk nama ENS yang senang anda kongsi dan bukannya hash heksadesimal (0x ...).", + "ens-welcome-point-simplify-title": "Permudahkan alamat ETH anda", + "ens-welcome-point-verify": "Anda boleh mengesahkan dan menambahkan nama pengguna yang anda miliki dalam langkah seterusnya.", + "ens-welcome-point-verify-title": "Sudah memiliki nama pengguna?", + "ens-your-username": "Nama pengguna anda", + "ens-your-usernames": "Nama pengguna anda", + "ens-your-your-name": "Nama ENS anda", + "enter-12-words": "Masukkan 12 perkataan frasa pemulihan anda, dipisahkan oleh ruang tunggal", + "enter-a-private-key": "Masukkan kunci peribadi", + "enter-a-seed-phrase": "Masukkan frasa biji", + "enter-address": "Masukkan alamat", + "enter-contact-code": "ENS (vitalik94) atau kekunci sembang (0x04…)", + "enter-pair-code": "Masukkan kod pasangan anda", + "enter-pair-code-description": "Kod berpasangan boleh ditetapkan dari klien Status yang sudah dipasangkan", + "enter-password": "Masukkan kata laluan", + "enter-password-migration-prompt": "Masukkan kata laluan anda untuk memindahkan kenalan, pembualan dan tetapan bersama kunci anda", + "enter-pin": "Masukkan kod laluan 6-digit", + "enter-puk-code": "Masukkan kod PUK", + "enter-puk-code-description": "Kod laluan 6-digit telah disekat. \n Sila masukkan kod PUK untuk menyahsekat kod laluan.", + "enter-recipient-address-or-username": "Masukkan alamat atau nama pengguna penerima", + "enter-seed-phrase": "Masukkan frasa biji", + "enter-url": "Masukkan URL", + "enter-user-pk": "Masukkan kekunci awam pengguna", + "enter-watch-account-address": "Imbas kod QR\n atau\n masukkan alamat untuk ditonton", + "enter-word": "Masukkan perkataan", + "enter-your-code": "Masukkan kod laluan 6 digit anda", + "enter-your-password": "Masukkan kata laluan anda", + "error": "Ralat", + "error-unable-to-get-balance": "Tidak dapat memperoleh baki", + "error-unable-to-get-prices": "Kesalahan penukaran mata wang. Muat semula skrin anda untuk mencuba lagi.", + "error-unable-to-get-token-balance": "Tidak dapat memperoleh baki token", + "errors": "Kesalahan", + "eth": "ETH", + "ethereum-account": "Akaun Ethereum", + "ethereum-address": "Alamat Ethereum", + "ethereum-node-started-incorrectly-description": "Ethereum node dimulakan dengan konfigurasi yang salah, aplikasi akan dihentikan untuk pulih dari keadaan itu. Id rangkaian yang dikonfigurasi = {{network-id}} , sebenar = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Node Ethereum bermula dengan tidak betul", + "etherscan-lookup": "Cari Etherscan", + "everyone": "Semua orang", + "expand-all": "Kembang semua", + "export-account": "Eksport akaun", + "export-key": "Eksport kunci peribadi", + "external-storage-denied": "Akses ke storan luaran ditolak", + "failed": "Gagal", + "faq": "Soalan lazim", + "fast": "Cepat", + "favourite": "Kegemaran", + "favourite-description": "Laman web kegemaran anda akan muncul di sini", + "favourites": "Kegemaran", + "favourites-empty": "Alamat yang ditambah kepada kegemaran akan muncul di sini", + "fee-cap": "Had yuran", + "fee-explanation": "Harga keseluruhan maksimum untuk transaksi. Sekiranya bayaran asas blok melebihi ini, ia akan dimasukkan ke dalam blok berikut dengan yuran asas yang lebih rendah.", + "fee-options": "Pilihan yuran yang dicadangkan", + "fetch-messages": "↓ Ambil mesej", + "fetch-timeline": "↓ Ambil", + "find": "Mencari", + "finish": "Selesai", + "finishing-card-setup": "Menyelesaikan penyediaan kad", + "fleet": "Fleet", + "fleet-settings": "Tetapan armada", + "follow": "Ikut", + "follow-your-interests": "Lompat ke sembang awam dan temui orang baru", + "free": "↓ Percuma", + "from": "Dari", + "gas-amount-limit": "Had jumlah gas", + "gas-limit": "Had gas", + "gas-price": "Harga gas", + "gas-used": "Gas digunakan", + "generate-a-key": "Menjana kunci", + "generate-a-new-account": "Jana akaun", + "generate-a-new-key": "Jana kunci baru", + "generate-account": "Menjana kunci", + "generate-an-account": "Jana akaun", + "generate-new-key": "Menjana kunci", + "generating-codes-for-pairing": "> Memuat turun perisian produk ke kad\n > Menjana kod buka kunci & berpasangan", + "generating-keys": "Menjana kunci ...", + "generating-mnemonic": "Menjanakan frasa pemulihan", + "get-a-keycard": "Dapatkan Kad Kunci", + "get-started": "Mulakan", + "get-status-at": "Dapatkan Status di http:\/\/status.im", + "get-stickers": "Dapatkan Pelekat", + "give-a-short-description": "Beri penerangan ringkas", + "give-a-short-description-community": "Berikan penerangan ringkas", + "give-permissions-camera": "Memberi keizinan\n untuk mengakses kamera", + "glossary": "Glosari", + "go-to-settings": "Pergi ke Tetapan ...", + "got-it": "Faham", + "grant-face-id-permissions": "Untuk memberikan kebenaran ID Wajah yang diperlukan, buka tetapan sistem anda dan pastikan Status > ID Wajah dipilih", + "group-chat": "Sembang berkumpulan", + "group-chat-admin": "Pentadbir", + "group-chat-admin-added": "**{{member}}** telah dijadikan pentadbir", + "group-chat-all-contacts-invited": "Semua kenalan anda sudah ada dalam kumpulan", + "group-chat-created": "**{{member}}** mencipta kumpulan **{{name}}**", + "group-chat-decline-invitation": "Tolak jemputan", + "group-chat-member-added": "**{{member}}** telah dijemput", + "group-chat-member-joined": "**{{member}}** telah menyertai kumpulan", + "group-chat-member-removed": "**{{member}}** telah meninggalkan kumpulan", + "group-chat-members-count": "{{selected}}\/{{max}} ahli", + "group-chat-name-changed": "**{{member}}** mengubah nama kumpalan ke **{{name}}**", + "group-chat-no-contacts": "Anda belum mempunyai kenalan.\n Jemput rakan anda untuk mula berbual", + "group-info": "Maklumat kumpulan", + "group-invite": "Jemputan kumpulan", + "group-invite-link": "Pautan jemputan kumpulan", + "group-membership-request": "Permintaan keahlian kumpulan", + "gwei": "Gwei", + "has-permissions": "mempunyai kebenaran untuk mengakses", + "hash": "Hash", + "help": "menolong", + "help-capitalized": "Tolonglah", + "help-center": "Pusat Bantuan", + "help-improve-status": "Bantu bertambah baik Status", + "hide": "Sembunyi", + "hide-content-when-switching-apps": "Sekat tangkapan skrin", + "hide-content-when-switching-apps-ios": "Sembunyikan pratonton", + "history": "Sejarah", + "history-nodes": "Nod sejarah", + "hold-card": "Pegang kad ke belakang\n telefon anda", + "home": "Rumah", + "hooks": "Cangkuk", + "how-it-works": "Bagaimana ia berfungsi", + "http-gateway-error": "Alamak, permintaan gagal!", + "identifier": "Pengenal", + "image": "Imej", + "image-remove-current": "Keluarkan foto semasa", + "image-source-gallery": "Pilih dari galeri", + "image-source-make-photo": "Menangkap", + "image-source-title": "Edit gambar", + "import": "Import", + "import-community": "Import komuniti", + "import-community-title": "Import komuniti", + "in-contacts": "Dalam kenalan", + "include": "Termasuk", + "incoming": "Masuk", + "incoming-transaction": "Urus niaga masuk", + "incorrect-code": [ + "str", + "Maaf kodnya tidak betul, masukkan sekali lagi" + ], + "increase-gas": "Menambah Gas", + "initialization": "Permulaan", + "install": "Pasang", + "intro-message1": "Selamat Datang ke Status!\n Ketik mesej ini untuk menetapkan kata laluan dan memulakannya.", + "intro-privacy-policy-note1": "Status tidak mengumpulkan atau mendapat keuntungan dari data peribadi anda. Dengan meneruskan, anda bersetuju dengan", + "intro-privacy-policy-note2": "dasar privasi", + "intro-text": "Status adalah pintu masuk anda ke web yang terdesentralisasi", + "intro-text1": "Berbual melalui rangkaian peer-to-peer, disulitkan di mana mesej tidak dapat disensor atau diretas", + "intro-text2": "Hantar dan terima aset digital di mana sahaja di dunia — tidak memerlukan akaun bank", + "intro-text3": "Terokai permainan, pertukaran dan rangkaian sosial di mana anda sendiri memiliki data anda", + "intro-title1": "Komunikasi yang benar-benar peribadi", + "intro-title2": "Dompet crypto selamat", + "intro-title3": "Aplikasi terpusat", + "intro-wizard-text1": "Satu set kunci mengawal akaun anda. Kekunci anda tinggal di telefon anda, jadi hanya anda yang dapat menggunakannya", + "intro-wizard-text2": "Satu kunci adalah untuk berbual. Ia dilengkapi dengan nama yang dapat dibaca yang tidak dapat diubah.", + "intro-wizard-text3": "Sekiranya anda memiliki Kad Kunci, simpan kunci anda di sana untuk keselamatan yang lebih baik.", + "intro-wizard-text4": "Selamat dan menyulitkan kunci anda", + "intro-wizard-text6": "Status akan memberitahu anda mengenai mesej baru. Anda boleh mengedit pilihan pemberitahuan anda kemudian dalam tetapan", + "intro-wizard-title-alt4": "Buat kata laluan", + "intro-wizard-title-alt5": "Mengesahkan kata laluan anda", + "intro-wizard-title1": "Dapatkan kunci anda", + "intro-wizard-title2": "Pilih nama sembang", + "intro-wizard-title3": "Pilih simpanan kunci", + "intro-wizard-title4": "Buat kod laluan 6 digit", + "intro-wizard-title5": "Sahkan kod laluan", + "intro-wizard-title6": "Dayakan pemberitahuan", + "introduce-yourself": "Perkenalkan diri anda dengan pesanan ringkas", + "invalid-address-qr-code": "Kod QR yang diimbas tidak mengandungi alamat yang sah", + "invalid-format": "Format tidak sah\n Mesti {{format}}", + "invalid-key-confirm": "Memohon", + "invalid-key-content": "Pangkalan data tidak dapat dienkripsi kerana fail rosak. Dana dan kod pengenalan anda selamat. Data lain, seperti perbualan dan kenalan anda, tidak dapat dipulihkan. Butang \"{{erase-multiaccounts-data-button-text}}\" akan membuang semua data lain dan membenarkan anda untuk mengakses dana anda dan menghantar mesej", + "invalid-number": "Nombor tidak sah", + "invalid-pairing-password": "Kata laluan berpasangan tidak sah", + "invalid-public-chat-topic": "Topik sembang awam tidak sah", + "invalid-range": "Format tidak sah, mestilah antara {{min}} dan {{max}}", + "invalid-username-or-key": "Nama pengguna atau kekunci sembang tidak sah", + "invite": "Jemput", + "invite-button": "Jemput", + "invite-chat-accept": "Terima", + "invite-chat-accept-join": "Terima dan Sertai", + "invite-chat-intro": "Anda dirujuk oleh rakan untuk menyertai Status. Inilah beberapa crypto untuk memulakan anda! Gunakan untuk mendaftarkan nama ENS atau membeli pek pelekat", + "invite-chat-name": "Rujukan rakan", + "invite-chat-pending": "Belum selesai", + "invite-chat-rule": "Penerimaan juga akan menawarkan ganjaran rujukan bonus kripto kepada rakan anda", + "invite-chat-starter-pack": "Pek permulaan", + "invite-friends": "Menjemput kawan-kawan", + "invite-instruction-fifth": "Anda boleh memilih untuk menebus rujukan bonus anda pada bila-bila masa.", + "invite-instruction-first": "Anda menghantar pautan jemputan unik kepada rakan anda untuk memuat turun dan menyertai Status", + "invite-instruction-fourth": "Anda menerima bonus rujukan dan rakan anda Starter Pack", + "invite-instruction-second": "Rakan anda memuat turun Status dan membuat akaun (di Android)", + "invite-instruction-third": "Sembang dengan rakan anda dimulakan, di mana mereka mengesahkan rujukan anda", + "invite-people": "Jemput orang", + "invite-privacy-policy-public": "Anda memasang Status melalui pautan rujukan. Dengan menyertai sembang ini, anda mengaitkan perujuk anda dan bersetuju dengan", + "invite-privacy-policy1": "Dengan menerima anda bersetuju dengan program rujukan", + "invite-privacy-policy2": "Terma dan syarat.", + "invite-public-chat-home": "Jemputan rujukan", + "invite-public-chat-intro": "Berikut adalah beberapa kripto untuk memulakan anda! Gunakannya untuk mendaftarkan nama ENS atau membeli pek pelekat", + "invite-receive-account": "Akaun untuk menerima bonus rujukan anda", + "invite-reward": "Dapatkan crypto untuk setiap rakan yang anda jemput!", + "invite-reward-friend": "Kawan:", + "invite-reward-friend-description": "Rakan anda akan menerima Starter Pack yang terdiri daripada beberapa {{reward}} untuk memulakan", + "invite-reward-friend-name": "Pek permulaan", + "invite-reward-you": "Anda: ", + "invite-reward-you-description": "Jemput rakan dan terima {{reward}} sebagai bonus rujukan. Gunakan untuk mendapatkan pelekat, nama ENS dan cuba dapps", + "invite-reward-you-name": "Bonus rujukan", + "invite-select-account": "Pilih akaun untuk menerima bonus rujukan anda", + "invite-warning": "Promosi ini hanya sah untuk pengguna peranti Android yang bukan residen Amerika Syarikat. Rakan perlu mengesahkan rujukan dalam tempoh 7 hari", + "invited": "dijemput", + "join": "Sertailah", + "join-a-community": "atau sertai komuniti", + "join-group-chat": "Sertai kumpulan", + "join-group-chat-description": "{{username}} menjemput anda untuk menyertai kumpulan {{group-name}}", + "join-me": "Hai, sertai saya di Status: {{url}}", + "join-new-private-chat": "Mulakan sembang peribadi baru", + "join-new-public-chat": "Sertai sembang awam", + "joined": "Menyertai", + "joined-group-chat-description": "Anda telah menyertai {{group-name}} daripada jemputan oleh {{username}}", + "key": "Kunci", + "key-managment": "Pengurusan kekunci", + "key-on-device": "Kunci peribadi disimpan pada peranti ini", + "keycard": "Kad kunci", + "keycard-access-reset": "Akses kad kekunci ditetapkan semula", + "keycard-applet-install-instructions": "Untuk memasang applet sila ikuti arahan di https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Cuba gerakkan kad untuk mencari pembaca NFC pada peranti anda", + "keycard-awaiting-title": "Masih mencari...", + "keycard-backup": "Buat Kad Kekunci sandaran", + "keycard-backup-success-body": "Kad sandaran berjaya dibuat. Anda kini boleh menggunakannya dengan akaun anda seperti kad utama.", + "keycard-backup-success-title": "Sandaran berjaya", + "keycard-blocked": "Kad kunci telah disekat. \nAnda perlu menetapkan semula kad untuk terus menggunakannya.", + "keycard-can-use-with-new-passcode": "Anda boleh menggunakan kad ini dengan kod laluan baru anda", + "keycard-cancel-setup-text": "Ini akan membatalkan penyediaan kad kunci. Sangat disarankan untuk menyelesaikan persediaan untuk menggunakan kad kunci. Adakah anda benar-benar mahu membatalkan?", + "keycard-cancel-setup-title": "Operasi berbahaya", + "keycard-connected-description": "Cuba simpan kad itu", + "keycard-connected-title": "Disambungkan", + "keycard-desc": "Memiliki Kad Kunci? Simpan kunci anda di atasnya; anda memerlukannya untuk transaksi", + "keycard-dont-ask-card": "Jangan meminta kad untuk log masuk", + "keycard-enter-new-passcode": "Masukkan kod laluan baru {{step}} \/ 2", + "keycard-error-description": "Sambungkan kad sekali lagi untuk meneruskan", + "keycard-error-title": "Sambungan terputus", + "keycard-factory-reset": "Kembalikan kad ke tetapan kilang", + "keycard-factory-reset-text": "Melakukan ini akan menghapus sebarang frasa mnemonik yang tersimpan di kad. Pastikan anda mempunyai sandaran frasa mnemonik yang telah anda gunakan dengan Kad Kunci ini.", + "keycard-factory-reset-title": "Adakah anda pasti mahu melakukan tetapan semula kilang?", + "keycard-free-pairing-slots": "Kad kekunci mempunyai slot berpasangan percuma {{n}}", + "keycard-has-multiaccount-on-it": "Kad ini penuh. Setiap kad boleh menyimpan satu pad kekunci utama", + "keycard-init-description": "Letakkan kad di bahagian belakang telefon anda untuk meneruskan", + "keycard-init-title": "Mencari kad ...", + "keycard-is-blocked-details": "Anda tidak lagi dapat menggunakan kad ini untuk mengakses atau menandatangani akaun ini. Terlalu banyak percubaan kod laluan dan PUK yang gagal.", + "keycard-is-blocked-instructions": "Untuk mengakses akaun anda, anda perlu menetapkan semula kad anda. Ketik butang di bawah untuk memulakan prosedur, anda memerlukan mnemonic anda.", + "keycard-is-blocked-title": "Kad Kekunci disekat", + "keycard-is-frozen-details": "Untuk melindungi aset anda, kad anda dibekukan. Tetapkan semula kad anda untuk membekukan kad tersebut dan dapat menghantar transaksi. Anda boleh melakukan ini dengan PUK atau mnemonic anda.", + "keycard-is-frozen-factory-reset": "Set semula dengan mnemonic", + "keycard-is-frozen-reset": "Set semula dengan PUK", + "keycard-is-frozen-title": "Kad Kunci dibekukan", + "keycard-onboarding-finishing-header": "Selesai", + "keycard-onboarding-intro-header": "Simpan kunci anda di Keycard", + "keycard-onboarding-intro-text": "Bersedia, ini mungkin mengambil masa beberapa minit, tetapi penting untuk melindungi akaun anda", + "keycard-onboarding-mnemonic-text": "Anda juga memerlukan sekeping kertas dan pensil untuk menulis frasa benih anda.", + "keycard-onboarding-pairing-header": "Memasangkan kad ...", + "keycard-onboarding-pin-text": "Anda perlu membuat kod laluan 6 digit yang akan digunakan untuk melindungi akses ke Kad Kunci anda.", + "keycard-onboarding-preparing-header": "Menyiapkan kad ...", + "keycard-onboarding-puk-code-header": "Tuliskan kod\n dan simpan dengan selamat", + "keycard-onboarding-recovery-phrase-description": "Anda memerlukan frasa biji ini untuk mendapatkan kembali kunci anda. Tuliskan. Simpan dengan selamat, di luar talian, dan terpisah dari peranti ini.", + "keycard-onboarding-recovery-phrase-header": "Cadangan frasa biji", + "keycard-onboarding-recovery-phrase-text": "Untuk mata anda sahaja. Ini adalah biji ajaib yang digunakan untuk menghasilkan kunci anda.", + "keycard-onboarding-start-header": "Pegang kad ke belakang\n telefon anda untuk bermula", + "keycard-onboarding-start-step1": "Buat kod laluan", + "keycard-onboarding-start-step1-text": "Lebih kurang 1 minit. Buat kod laluan 6 digit untuk menyulitkan kunci anda", + "keycard-onboarding-start-step2": "Tuliskan PUK dan kod pasangan", + "keycard-onboarding-start-step2-text": "Lebih kurang 1 minit. Anda akan memerlukan sehelai kertas dan pensil untuk itu", + "keycard-onboarding-start-step3": "Sandarkan frasa biji", + "keycard-onboarding-start-step3-text": "Lebih kurang 1 minit. Sekeping kertas dan pensil juga diperlukan", + "keycard-onboarding-start-text": "Dan simpan kad ke kenalan telefon\n semasa persediaan. Penyediaan akan memakan masa sekitar 4 minit", + "keycard-processing-description": "Cuba simpan kad itu", + "keycard-processing-title": "Memproses ...", + "keycard-recover": "kad hilang atau beku?", + "keycard-recover-text": "Sekiranya anda mempunyai frasa mnemonik anda, anda boleh membuat Kad Kunci baru yang berkaitan dengan akaun ini. Anda boleh menggunakan Kad Kunci baru atau melakukan tetapan semula kilang pada kad yang dibekukan.", + "keycard-recover-title": "Buat kad baru untuk akaun ini?", + "keycard-recovery-intro-button-text": "Mulakan pemulihan", + "keycard-recovery-intro-header": "Pulihkan kunci yang disimpan pada kad kekunci", + "keycard-recovery-intro-text": "Sekiranya anda menghasilkan kunci menggunakan kad kekunci sebelum dan sekarang mahu menggunakan kunci ini pada peranti ini", + "keycard-recovery-no-key-header": "Tidak ada apa-apa\n pulih di sini", + "keycard-recovery-no-key-text": "Kad Kunci anda tidak mempunyai kunci yang tersimpan di dalamnya. Untuk menggunakannya, buat kunci baru dan pilih Kad Kunci anda untuk menyimpan kunci", + "keycard-recovery-phrase-confirm-header": "Sahkan frasa biji", + "keycard-recovery-phrase-confirmation-text": "Anda tidak akan mempunyai peluang kedua! Sekiranya anda kehilangan akses, misalnya dengan kehilangan kad kunci, anda hanya dapat mengakses kunci anda dengan frasa pilihan anda. Tiada siapa, tetapi anda mempunyai ungkapan benih anda. Tuliskan. Pastikan ia selamat.", + "keycard-recovery-phrase-confirmation-title": "Menulis frasa benih ke bawah?", + "keycard-recovery-success-header": "Kunci anda telah\n berjaya pulih", + "keycard-redeem-title": "Tebus ke", + "keycard-redeem-tx": "Tebus aset", + "keycard-redeem-tx-desc": "Ketik kad untuk menandatangani dan menerima aset", + "keycard-reset-passcode": "Tetapkan semula kod laluan", + "keycard-success-description": "Anda boleh mengeluarkan kad sekarang", + "keycard-success-title": "Kejayaan", + "keycard-unauthorized-operation": "Anda tidak dibenarkan melakukan operasi ini.\n Sila ketik kad yang sah dan cuba lagi.", + "keycard-upsell-subtitle": "Keselamatan dan kemudahan yang dipertingkatkan", + "language": "Bahasa", + "learn-more": "Ketahui lebih lanjut", + "learn-more-about-keycard": "Ketahui lebih lanjut mengenai Kad Kunci", + "leave": "Tinggalkan", + "leave-chat": "Tinggalkan sembang", + "leave-chat-confirmation": "Sejarah sembang akan dialih keluar daripada peranti anda. Selepas menyertai semula, anda tidak akan dapat memperoleh semula mana-mana sejarah anda.", + "leave-community": "Tinggalkan komuniti", + "leave-confirmation": "Tinggalkan {{chat-name}}", + "leave-group": "Tinggalkan kumpulan", + "left": "dibiarkan", + "les-ulc": "LES \/ ULC", + "lets-go": "Mari pergi", + "light": "Cahaya", + "linked-on": "Dipaut pada {{date}}", + "load-messages-before": "sebelum {{date}}", + "load-more-messages": "↓ Ambil lebih banyak mesej", + "load-more-timeline": "↓ Ambil lebih banyak lagi", + "loading": "Memuat ...", + "local-notifications": "Pemberitahuan tempatan", + "lock-app-with": "Kunci aplikasi dengan", + "log-level": "Tahap log", + "log-level-settings": "Tetapan tahap log", + "logging": "Pembalakan", + "logging-enabled": "Pembalakan diaktifkan?", + "login-pin-description": "Masukkan kod laluan 6-digit anda untuk membuka kunci anda", + "logout": "Log keluar", + "logout-app-content": "Akaun akan dilog keluar. Apabila anda membukanya lagi, rangkaian yang dipilih akan digunakan", + "logout-are-you-sure": "Adakah anda pasti mahu\n untuk log keluar?", + "logout-key-management": "Anda perlu log keluar untuk mencapai pengurusan kekunci.", + "logout-title": "Log keluar?", + "looking-for-cards": "Mencari kad ...", + "lost-connection": "Putus hubungan", + "low-tip": "tip terlalu rendah", + "lower-than-average-tip": "tip rendah daripada purata", + "mail-should-be-configured": "Pelanggan mel harus dikonfigurasi", + "mailserver-address": "Alamat nod sejarah", + "mailserver-automatic": "Pilihan automatik", + "mailserver-automatic-switch-explanation": "Pilih nod sejarah terpantas yang ada", + "mailserver-connection-error": "Tidak dapat menyambung ke nod sejarah", + "mailserver-content": "Node dalam rangkaian Status yang merutekan dan menyimpan mesej, sehingga 30 hari.", + "mailserver-details": "Perincian nod sejarah", + "mailserver-error-content": "Nod Status yang anda pilih tidak dapat dicapai.", + "mailserver-error-title": "Ralat semasa menyambung ke nod Status", + "mailserver-format": "enode: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "Pilih nod sejarah yang lain", + "mailserver-reconnect": "Tidak dapat menyambung ke nod sejarah. Ketik untuk menyambung semula", + "mailserver-request-error-content": "Ralat berikut telah dikembalikan oleh nod Status: {{error}}", + "mailserver-request-error-status": "Berlaku ralat semasa mengambil sejarah, periksa log untuk mendapatkan perincian", + "mailserver-request-error-title": "Ralat permintaan nod status", + "mailserver-request-retry": "Cuba semula permintaan", + "mailserver-retry": "Cuba lagi", + "mailserver-title": "Nod sejarah", + "main-currency": "Mata wang utama", + "main-networks": "Rangkaian utama", + "main-wallet": "Dompet Utama", + "mainnet-network": "Rangkaian utama", + "make-admin": "Buat pentadbir", + "manage-keys-and-storage": "Urus kekunci dan storan", + "mark-all-read": "Tandakan semua telah dibaca", + "master-account": "Akaun induk", + "max-fee": "Bayaran maksimum", + "max-priority-fee": "Bayaran keutamaan maksimum", + "maximum-fee": "Bayaran maksimum", + "maybe-later": "Mungkin kemudian", + "member-ban": "Melarang ahli", + "member-kick": "Tendang ahli", + "members": { + "other": "{{count}} ahli" + }, + "members-active": { + "other": "{{count}} ahli" + }, + "members-active-none": "tiada ahli", + "members-count": "{{count}} ahli", + "members-label": "Ahli", + "members-limit-reached": "Had ahli tercapai", + "members-title": "Ahli", + "membership-approval": "Memerlukan kelulusan", + "membership-approval-description": "Komuniti anda bebas untuk menyertai, tetapi ahli baru perlu diluluskan oleh pencipta komuniti terlebih dahulu", + "membership-button": "Syarat keahlian", + "membership-declined": "Permintaan keahlian ditolak", + "membership-description": "Keahlian kumpulan menghendaki anda diterima oleh pentadbir kumpulan", + "membership-ens": "Perlu nama pengguna ENS", + "membership-ens-description": "Komuniti anda memerlukan nama pengguna ENS untuk dapat menyertai", + "membership-free": "Tiada syarat", + "membership-free-description": "Komuniti anda bebas untuk disertai oleh sesiapa sahaja", + "membership-invite": "Memerlukan jemputan daripada ahli lain", + "membership-invite-description": "Komuniti anda hanya boleh disertai dengan jemputan daripada ahli komuniti sedia ada", + "membership-none": "Tiada", + "membership-none-placeholder": "Anda boleh meminta ahli baru untuk memenuhi kriteria tertentu sebelum mereka dapat bergabung. Ini boleh diubah pada bila-bila masa", + "membership-request-pending": "Permintaan keahlian belum selesai", + "membership-requests": "Permintaan keahlian", + "membership-title": "Syarat keahlian", + "message": "Mesej", + "message-not-sent": "Mesej tidak dihantar", + "message-options-cancel": "Batal", + "message-reply": "Balas", + "messages": "Mesej", + "messages-from-contacts-only-subtitle": "Hanya orang yang anda tambahkan sebagai kenalan yang boleh memulakan sembang baru dengan anda atau menjemput anda ke kumpulan", + "might-break": "Mungkin memecahkan beberapa ÐApps", + "migration-successful": "Pemindahan berjaya", + "migration-successful-text": "Akaun berjaya dipindahkan ke Kad Kunci", + "migrations-failed-content": "{{message}}\nversi skema: asal {{initial-version}}, semasa {{current-version}}, terakhir {{last-version}}\n\nRalat pangkalan data berlaku. Dana dan kod pengenalan anda selamat. Data lain, seperti perbualan dan kenalan anda, tidak dapat dipulihkan. Butang \"{{erase-multiaccounts-data-button-text}}\", akan membuang semua data lain dan membenarkan anda untuk mengakses dana dan menghantar mesej.", + "miners-higher-fee": "Pelombong mungkin akan memasukkan transaksi anda lebih awal jika anda bayar lebih tinggi.", + "mobile-network-ask-me": "Tanya saya semasa berada di rangkaian mudah alih", + "mobile-network-continue-syncing": "Teruskan penyegerakan", + "mobile-network-continue-syncing-details": "Anda boleh mengubahnya kemudian dalam tetapan", + "mobile-network-go-to-settings": "Pergi ke tetapan", + "mobile-network-settings": "Data mudah alih", + "mobile-network-sheet-configure": "Anda boleh mengkonfigurasi penyegerakan dengan lebih banyak lagi\n terperinci dalam", + "mobile-network-sheet-offline": "Tanpa Wi-fi, penyegerakan mesej dilumpuhkan.", + "mobile-network-sheet-offline-details": "Penyegerakan menggunakan rangkaian mudah alih dimatikan", + "mobile-network-sheet-remember-choice": "Ingat pilihan saya", + "mobile-network-sheet-settings": "Seting", + "mobile-network-start-syncing": "Mula menyegerakkan", + "mobile-network-stop-syncing": "Berhenti menyegerakkan", + "mobile-network-stop-syncing-details": "Sehingga disambungkan ke Wi-Fi?", + "mobile-network-use-mobile": "Gunakan data mudah alih", + "mobile-network-use-mobile-data": "Status menggunakan banyak data semasa menyegerakkan sembang dan dompet.", + "mobile-network-use-wifi": "Wi-Fi sahaja", + "mobile-syncing-sheet-details": "Status menggunakan banyak data semasa menyegerakkan sembang dan dompet.", + "mobile-syncing-sheet-title": "Segerakkan menggunakan data mudah alih?", + "more": "lebih banyak lagi", + "move-and-reset": "Alih dan Set Semula", + "move-keystore-file": "Pindahkan fail keystore", + "move-keystore-file-to-keycard": "Pindahkan fail kunci ke kad kekunci?", + "multiaccount-exists-content": "Kunci untuk akaun ini sudah ada dan tidak dapat ditambahkan lagi. Sekiranya anda kehilangan kata laluan, kod laluan atau Kad Kunci, nyahpasang aplikasi, pasang semula dan akses kunci anda dengan memasukkan frasa pilihan", + "multiaccount-exists-title": "Kunci untuk akaun ini sudah ada", + "multiaccounts-recover-enter-phrase-text": "Masukkan 12, 15, 18, 21 atau 24 perkataan.\n Pisahkan perkataan dengan satu ruang.", + "multiaccounts-recover-enter-phrase-title": "Masukkan frasa benih anda", + "mute": "Bisu", + "my-accounts": "Akaun saya", + "my-accounts-empty": "Akaun anda yang ada akan muncul di sini", + "my-profile": "Profil saya", + "my-status": "Status saya", + "name": "Nama", + "name-of-token": "Nama token anda", + "name-optional": "Nama (pilihan)", + "name-your-channel": "Namakan saluran anda", + "name-your-channel-placeholder": "Nama saluran", + "name-your-community": "Namakan komuniti anda", + "name-your-community-placeholder": "Nama yang menarik", + "need-help": "Perlukan bantuan?", + "network": "Rangkaian", + "network-chain": "Rangkaian rangkaian", + "network-details": "Perincian rangkaian", + "network-fee": "Bayaran rangkaian", + "network-id": "ID Rangkaian", + "network-info": "Maklumat rangkaian", + "network-invalid-network-id": "ID rangkaian yang ditentukan tidak sepadan dengan ID rangkaian oleh URL RPC", + "network-invalid-status-code": "Kod status tidak sah: {{code}}", + "network-invalid-url": "URL rangkaian tidak sah", + "network-settings": "Tetapan rangkaian", + "new": "Baru", + "new-category": "Kategori baru", + "new-chat": "Sembang baru", + "new-community-title": "Komuniti baru", + "new-contact": "Kenalan baru", + "new-contract": "Kontrak Baru", + "new-favourite": "Kegemaran baru", + "new-group": "Kumpulan baru", + "new-group-chat": "Sembang kumpulan baru", + "new-network": "Rangkaian baru", + "new-password": "Kata laluan baru", + "new-pin-description": "Masukkan kod laluan 6-digit baru", + "new-public-group-chat": "Sertai sembang awam", + "new-puk-description": "Masukkan 12-digit PUK baru", + "new-status": "Status baru", + "new-tab": "Tab baru", + "next": "Seterusnya", + "nickname": "Nama Panggilan", + "nickname-description": "Nama panggilan membantu anda mengenal pasti orang lain dalam Status.\n Hanya anda yang dapat melihat nama panggilan yang telah anda tambahkan", + "no": "Tidak", + "no-collectibles": "Tidak ada koleksi yang tersedia", + "no-contacts": "Belum ada kenalan", + "no-keycard-applet-on-card": "Tiada Keycard applet pada kad", + "no-messages": "Tiada mesej", + "no-pairing-slots-available": "Kad ini sudah dipasangkan dengan 5 peranti dan tidak dapat dipasangkan dengan kad ini. Sila gunakan salah satu peranti berpasangan, log masuk dengan kad ini dan lepaskan slot pasangan pada kad", + "no-pinned-messages": "Tiada mesej yang dipinkan", + "no-result": "Tiada keputusan", + "no-thanks": "Tidak, Terima kasih", + "no-tokens-found": "Token tidak dijumpai", + "node-address": "Alamat nod", + "node-details": "Butiran nod", + "node-info": "Maklumat nod", + "node-version": "Versi nod", + "nodes-disabled": "Nod status dinyahaktifkan", + "non-archival-node": "Titik akhir RPC tidak menyokong permintaan arkib. Sejarah pemindahan tempatan anda mungkin tidak lengkap.", + "non-contacts": "Bukan kenalan", + "nonce": "Bukan", + "none": "Tiada", + "normal": "Biasa", + "not-applicable": "Tidak terpakai untuk transaksi yang tidak ditandatangani", + "not-connected-nodes": "Tidak disambungkan ke nod status", + "not-connected-to-peers": "Tidak berhubung dengan peer", + "not-enough-snt": "Tidak cukup SNT", + "not-found": "Tidak dijumpai", + "not-keycard-text": "Kad yang anda gunakan bukan Kad Kunci. Anda perlu membeli Kad Kunci untuk menggunakannya", + "not-keycard-title": "Bukan Kad Kunci", + "not-registered": "tidak berdaftar", + "notification-settings": "Pemberitahuan", + "notifications": "Pemberitahuan", + "notifications-non-contacts": "Pemberitahuan daripada bukan kenalan", + "notifications-preferences": "Pilihan pemberitahuan", + "notifications-servers": "Pelayan pemberitahuan", + "notifications-switch": "Tunjukkan pemberitahuan", + "notifications-transactions": "Urus niaga dompet", + "notify": "Maklumkan", + "now": "Sekarang", + "off": "Mati", + "off-status-tree": "Pokok Status Mati", + "offline": "Luar talian", + "offline-messaging-use-history-explanation": "Benarkan nod Status untuk mengambil mesej yang telah dihantar semasa aplikasi ditutup. Apabila diaktifkan, nod Status mendapat alamat IP anda. Apabila dinyahdayakan, anda tidak akan menerima mesej apabila aplikasi ditutup dan tidak akan melihatnya apabila anda membuka aplikasi kemudian.", + "offline-messaging-use-history-nodes": "Gunakan nod Status", + "ok": "okey", + "ok-continue": "Ok, teruskan", + "ok-got-it": "Ok, teruskan", + "ok-save-pass": "OK, simpan kata laluan", + "okay": "baik", + "on": "Dihidupkan", + "on-status-tree": "Pada pokok Status", + "once-enabled-share-metadata": "Setelah didayakan, pautan yang disiarkan dalam sembang mungkin berkongsi metadata anda dengan tapak", + "one-day": "Satu hari", + "one-month": "Satu bulan", + "one-week": "Satu minggu", + "open": "Buka", + "open-chat": "Buka sembang", + "open-dapp": "Buka Ð Aplikasi", + "open-dapp-store": "Cari ÐApps", + "open-home": "Buka...", + "open-in-new-tab": "Buka di tab baru", + "open-membership": "Buka keahlian", + "open-nfc-settings": "Buka tetapan NFC", + "opening-buy-crypto": "Membuka {{site}}...", + "optimal": "Optimum", + "optional": "pilihan", + "or": "Atau", + "outgoing": "Keluar", + "outgoing-transaction": "Urus niaga keluar", + "page-camera-request-blocked": "permintaan kamera disekat. Untuk mengaktifkan permintaan kamera, pergi ke Tetapan", + "page-would-like-to-use-camera": "ingin menggunakan kamera anda", + "pair": "Pasangkan peranti", + "pair-card": "Pasangkan ke peranti ini", + "pair-code": "Kod berpasangan", + "pair-code-explanation": "Pasangkan kad ke peranti lain (hingga 5) untuk membuka kunci dan menandatangani urus niaga dengan Kad Kunci yang sama", + "pair-code-placeholder": "Pasangkan kod ...", + "pair-this-card": "Pasangkan kad ini", + "pair-this-device": "Iklankan peranti", + "pair-this-device-description": "Pasangkan peranti anda untuk menyegerakkan kenalan dan sembang di antara mereka", + "paired-devices": "Peranti berpasangan", + "pairing": "Berpasangan", + "pairing-card": "Kad berpasangan", + "pairing-changed": "Kod pasangan telah diubah", + "pairing-code-placeholder": "Meyambungkan kod ...", + "pairing-code_error1": "Kod berpasangan tidak sepadan.", + "pairing-go-to-installation": "Pergi ke tetapan memasang", + "pairing-maximum-number-reached-content": "Sila nyahdayakan salah satu peranti anda sebelum mengaktifkan yang baru.", + "pairing-maximum-number-reached-title": "Bilangan maksimum peranti dicapai", + "pairing-new-installation-detected-content": "Peranti baru telah dikesan.\nUntuk menggunakan peranti anda dengan betul, ia adalah penting untuk memasang dan mengaktifkannya sebelum menggunakannya.\nSila pergi ke bahagian peranti di bawah tetapan untuk memasangkan peranti anda.", + "pairing-new-installation-detected-title": "Peranti baru dikesan", + "pairing-no-info": "Tiada maklumat", + "pairing-please-set-a-name": "Sila tetapkan nama untuk peranti anda.", + "passphrase": "Frasa Laluan", + "password": "Kata Laluan", + "password-description": "Sekurang-kurangnya 6 karakter. Kata laluan anda memelihara kod anda. Anda akan memerlukan kata laluan ini untuk membuka Status dan bertransaksi.", + "password-mismatch": "Kata laluan dan pengesahan baru tidak sepadan", + "password-placeholder": "Kata Laluan ...", + "password-placeholder2": "Mengesahkan kata laluan anda", + "password-reset-in-progress": "Menukar kata laluan ...", + "password-reset-success": "Kata laluan ditukar", + "password-reset-success-message": "Anda perlu log masuk lagi", + "password_error1": "Kata laluan tidak sepadan.", + "paste": "Tampal", + "paste-json": "Tampal JSON", + "pay-to-chat": "Bayar untuk berbual", + "peer-content": "Peranti yang disambungkan ke rangkaian sembang Status. Setiap pengguna dapat mewakili satu atau lebih rakan sebaya, bergantung pada jumlah peranti mereka.", + "peer-title": "Rakan sebaya", + "peer-to-peer": "Peer to peer", + "peers": "Rakan sebaya", + "pending": "Yang belum selesai", + "pending-confirmation": "Menunggu pengesahan ...", + "pending-invitations": "Permintaan keahlian yang belum selesai", + "per-gas-price-limit": "Had harga berdasarkan gas", + "per-gas-tip-limit": "Had jumlah gas", + "permissions": "Kebenaran", + "phone-e164": "Antarabangsa 1", + "photos": "Gambar", + "photos-access-error": "Untuk memberikan izin foto yang diperlukan, pergi ke tetapan sistem anda dan pastikan Status > Foto dipilih.", + "pin": "Pin", + "pin-changed": "Kod laluan 6-digit telah ditukar", + "pin-code": "Kod laluan 6-digit", + "pin-limit-reached": "Had pin tercapai. Lepas pin mesej sebelumnya terlebih dahulu.", + "pin-mismatch": "Kod laluan yang salah", + "pin-one-attempt": "satu percubaan", + "pin-one-attempt-blocked-after": "sebelum Kad Kunci anda disekat", + "pin-one-attempt-blocked-before": "Hati-hati, anda hanya ada", + "pin-one-attempt-frozen-after": "sebelum Kad Kunci anda dibekukan", + "pin-one-attempt-frozen-before": "Hati-hati, anda hanya ada", + "pin-retries-left": "{{number}} percubaan tinggal", + "pinned-by": "Dipinkan oleh", + "pinned-messages": "Mesej-mesej yang dipinkan", + "pinned-messages-empty": "Mesej-mesej yang dipinkan akan muncul di sini. Untuk mengepin mesej, tekan dan tahannya dan ketik 'Pin'", + "preference": "Pilihan", + "preview-privacy": "Pratonton mod privasi", + "previewing-may-share-metadata": "Pratonton pautan dari laman web ini dapat berkongsi metadata anda dengan pemiliknya", + "principles": "Prinsip", + "privacy": "Privasi", + "privacy-and-security": "Privasi dan keselamatan", + "privacy-photos": "Privasi Foto Profil", + "privacy-policy": "Dasar Privasi", + "private-key": "Kunci peribadi", + "private-notifications": "Pemberitahuan peribadi", + "private-notifications-descr": "Status akan memberitahu anda mengenai mesej baru. Anda boleh mengedit pilihan pemberitahuan anda kemudian dalam tetapan.", + "processing": "Sekejap", + "product-information": "Maklumat Produk", + "profile": "Profil", + "profile-deleted-content": "Profil anda berjaya dipadamkan", + "profile-deleted-keycard": "Anda kini boleh memulihkan pad kekunci lain pada Kad Kunci anda", + "profile-deleted-title": "Profil dipadamkan", + "profile-details": "Maklumat profil", + "profile-not-found": "Profil tidak dijumpai", + "profile-pic-pick": "Pilih dari galeri", + "profile-pic-remove": "Buang foto", + "profile-pic-take": "Ambil gambar", + "public-channel": "Saluran awam", + "public-chat": "Sembang awam", + "public-chat-description": "Sertai sembang awam untuk minat anda! Sesiapa sahaja boleh memulakan yang baru.", + "public-chats": "Sembang awam", + "public-group-status": "Awam", + "public-group-topic": "Topik", + "public-key": "Kunci awam", + "puk-and-pairing-codes-displayed": "Kod PUK dan kod pasangan dipaparkan", + "puk-changed": "PUK 12 digit telah diubah", + "puk-code": "Kod PUK", + "puk-code-explanation": "Sekiranya anda terlupa kod laluan 6 digit anda atau memasukkannya dengan salah 3 kali, anda memerlukan kod ini untuk membuka kunci kad anda.", + "puk-mismatch": "Kod PUK salah", + "push-failed-transaction": "Urus niaga anda gagal", + "push-failed-transaction-body": "{{value}} {{currency}} hingga {{to}}", + "push-inbound-transaction": "Anda menerima {{value}} {{currency}}", + "push-inbound-transaction-body": "Dari {{from}} hingga {{to}}", + "push-notifications-server-enabled": "Pelayan didayakan", + "push-notifications-servers": "Tolak pelayan pemberitahuan", + "push-outbound-transaction": "Anda telah menghantar {{value}} {{currency}}", + "push-outbound-transaction-body": "Dari {{from}} hingga {{to}}", + "quiet-days": "{{quiet-days}} hari", + "quiet-hours": "{{quiet-hours}} jam", + "re-encrypt-key": "Masukkan semula kunci anda", + "receive": "Menerima", + "receive-transaction": "Terima urus niaga", + "recent": "Terkini", + "recent-empty": "Alamat yang baru digunakan akan muncul di sini", + "recent-recipients": "Kenalan", + "recently-used-stickers": "Pelekat yang baru digunakan akan terpapar di sini", + "recipient": "Penerima", + "recipient-code": "Masukkan alamat penerima", + "recipient-code-placeholder": "0x ... atau nama pengguna.domain.eth", + "recover": "Pulihkan", + "recover-key": "Akses kunci yang ada", + "recover-keycard-multiaccount-not-supported": "Kunci untuk akaun ini sudah ada dan tidak dapat ditambahkan lagi. Sekiranya anda kehilangan kata laluan, kod laluan atau Kad Kunci, nyahpasang aplikasi, pasang semula dan akses kunci anda dengan memasukkan frasa pilihan anda", + "recover-with-keycard": "Pulihkan dengan Kad Kunci", + "recover-with-seed-phrase": "Pulih dengan frasa benih", + "recovering-key": "Mengakses kunci ...", + "recovery-confirm-phrase": "Sahkan frasa", + "recovery-phrase": "Frasa pemulihan", + "recovery-success-text": "Anda perlu membuat kod atau kata laluan baru untuk menyulitkan semula kunci anda", + "recovery-typo-dialog-description": "Harap maklum, ungkapan benih anda mesti menggunakan perkataan dan pesanan yang sama persis seperti yang anda terima", + "recovery-typo-dialog-title": "Adakah frasa tersebut tepat?", + "redeem-amount": "{{quantity}} bonus yang dipunyai", + "redeem-now": "Tebus sekarang", + "redeem-success": "Penebusan bonus berjaya!", + "reduced-tip": "tip keutamaan akan dikurangkan", + "refresh": "Segarkan", + "registered": "berdaftar", + "reject-and-delete": "Tolak dan padam", + "remember-me": "Ingat saya", + "remind-me-later": "Tunjukkan ini lagi", + "remove": "Keluarkan", + "remove-favourite": "Buang kegemaran", + "remove-from-chat": "Alih keluar dari sembang", + "remove-from-contacts": "Alih keluar dari kenalan", + "remove-from-contacts-text": "Dengan mengeluarkan pengguna dari senarai kenalan anda, anda tidak menyembunyikan alamat dompet anda dari mereka", + "remove-group": "Keluarkan kumpulan", + "remove-network": "Keluarkan rangkaian", + "remove-token": "Keluarkan token", + "removed": "dikeluarkan", + "repeat-pin": "Ulangi kod laluan 6 digit baru", + "repeat-puk": "Ulangi PUK 12 digit baru", + "replying-to": "Membalas kepada {{author}}", + "report-bug-email-template": "1. Penerangan Isu\n (Jelaskan ciri yang anda mahukan, atau ringkaskan pepijat dan apa yang anda buat, apa yang anda harapkan berlaku, dan apa yang sebenarnya berlaku. Bahagian di bawah) \n\n\n 2. Langkah untuk membiak\n (Terangkan bagaimana kita dapat meniru bug langkah demi langkah.)\n -Buka Status\n -...\n -Langkah 3, dll. \n\n\n 3. Tingkah laku yang diharapkan\n (Jelaskan apa yang anda jangkakan akan berlaku.) \n\n\n 4. Tingkah laku sebenar\n (Huraikan apa yang sebenarnya berlaku.) \n\n\n 5. Lampirkan tangkapan skrin yang dapat menunjukkan masalah\n", + "request-access": "Minta akses", + "request-feature": "Mohon ciri", + "request-membership": "Minta keahlian", + "request-pending": "Permintaan tertangguh…", + "request-transaction": "Minta transaksi", + "required-field": "Medan wajib", + "resend-message": "Hantar semula", + "reset-card": "Tetapkan semula kad", + "reset-card-description": "Operasi ini akan menetapkan semula kad ke keadaan asal. Ia akan memadamkan semua data kad termasuk kunci peribadi. Operasi ini tidak dapat dipulihkan kembali.", + "reset-database": "Tetapkan semula pangkalan data", + "reset-database-warning": "Padamkan sembang, kenalan dan seting. Diperlukan apabila anda kehilangan kata laluan anda", + "reset-database-warning-keycard": "Padamkan sembang, kenalan dan tetapan.", + "reset-password": "Set semula kata laluan", + "restore-defaults": "Kembali kepada asal", + "retry": "Cuba lagi", + "revoke-access": "Batalkan akses", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Salinan", + "rpc-usage-filter": "Kaedah tapisan", + "rpc-usage-get-stats": "Segarkan", + "rpc-usage-info": "Statistik penggunaan RPC", + "rpc-usage-reset": "Set semula", + "save": "Jimat", + "save-password": "Simpan katalaluan", + "save-password-unavailable": "Tetapkan kod laluan peranti untuk menyimpan kata laluan", + "save-password-unavailable-android": "Simpan kata laluan tidak tersedia: peranti anda mungkin di-root atau tidak mempunyai ciri keselamatan yang diperlukan.", + "scan-qr": "Imbas kod QR", + "scan-qr-code": "Imbas kod QR dengan alamat dompet", + "scan-tokens": "Imbasan ", + "search": "Cari", + "search-no-chat-found": "Tiada hasil carian. Adakah awak bermaksud", + "secret-keys-confirmation-text": "Anda memerlukan mereka untuk terus menggunakan Kad Kunci anda sekiranya anda kehilangan telefon.", + "secret-keys-confirmation-title": "Menulis kod?", + "security": "Keselamatan", + "see-details": "Lihat perincian", + "see-it-again": "LIHAT LAGI", + "see-suggestions": "Lihat cadangan", + "seed-key-uid-mismatch": "Benih tidak sepadan", + "seed-key-uid-mismatch-desc-1": "Frasa benih yang anda masukkan tidak sepadan dengan {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Untuk menguruskan kekunci untuk akaun ini menentusahkan frasa benih anda dan cuba lagi.", + "seed-phrase-content": "Satu set perkataan yang mudah dibaca, dipilih secara rawak dari senarai standard BIP39 dan digunakan untuk memulihkan atau mengakses akaun Ethereum anda di dompet dan peranti lain. Juga disebut sebagai \"frasa mnemonik\", \"frasa pemulihan\" atau \"sandaran dompet\" di seluruh ekosistem crypto. Sebilangan besar aplikasi crypto menggunakan standard yang sama untuk menjana akaun.", + "seed-phrase-placeholder": "Frasa benih ...", + "seed-phrase-title": "Frasa Benih", + "select": "Pilih", + "select-account": "Pilih akaun", + "select-account-dapp": "Pilih akaun yang ingin anda gunakan dengan Dapps", + "select-account-first": "Pilih akaun terlebih dahulu", + "select-chat": "Pilih sembang untuk memulakan pesanan", + "select-new-location-for-keys": "Pilih lokasi baru untuk menyimpan kunci peribadi anda", + "selected": "Terpilih", + "send-logs": "Laporkan pepijat", + "send-logs-to": "Laporkan pepijat ke {{email}}", + "send-message": "Menghantar mesej", + "send-push-notifications-description": "Apabila dilumpuhkan, orang yang menerima mesej anda tidak akan diberitahu mengenai kedatangan mereka", + "send-request": "Hantar permintaan", + "send-request-amount": "Jumlah", + "send-request-amount-max-decimals": "Bilangan perpuluhan maksimum ialah {{asset-decimals}}", + "send-request-unknown-token": "Token tidak diketahui - {{asset}}", + "send-sending-to": "kepada {{recipient-name}}", + "send-transaction": "Hantar transaksi", + "sending": "Menghantar", + "sent-at": "Dihantar pada", + "server": "Pelayan", + "set-a-topic": "Buat topik", + "set-currency": "Tetapkan mata wang", + "set-custom-fee": "Tetapkan bayaran tersuai", + "set-dapp-access-permissions": "Tetapkan kebenaran akses DApp", + "set-max": "Tetapkan maks", + "settings": "Tetapan", + "share": "Berkongsi", + "share-address": "Kongsi alamat", + "share-chat": "Kongsi sembang", + "share-contact-code": "Kongsi kod pengenalan saya", + "share-dapp-text": "Lihat DApp ini yang saya gunakan di Status: {{link}}", + "share-link": "Kongsi pautan", + "share-my-profile": "Kongsi profil saya", + "share-profile": "Kongsi profil", + "share-profile-link": "Kongsi pautan profil", + "share-public-chat-text": "Lihat sembang umum ini di aplikasi Status: {{link}}", + "shared": "Dikongsi", + "sharing-copied-to-clipboard": "Disalin", + "sharing-copy-to-clipboard": "Salinan", + "sharing-data-desc-1": "Data disahkan berdasarkan peraturan awam untuk memastikan tidak ada data sensitif yang dikirim. Jangan percaya, sahkan.", + "sharing-data-desc-2": "Data penggunaan dihantar dari hujung ke hujung dienkripsi melalui rangkaian peer-to-peer Status", + "sharing-data-desc-3": "Daripada kekunci sembang biasa anda, kunci penggunaan sekali sahaja digunakan", + "sharing-data-desc-4": "Penggunaan data tidak akan dikaitkan dengan alamat IP anda", + "sharing-data-desc-5": "Data kumulatif semua pengguna boleh didapati secara umum", + "sharing-data-desc-6": "Data dialih keluar daripada telefon anda selepas ia dihantar", + "sharing-share": "Berkongsi", + "show-less": "Tunjukkan kurang", + "show-more": "Tunjukkan lagi", + "show-notifications": "Tunjukkan pemberitahuan", + "show-profile-pictures": "Lihat gambar profil daripada", + "show-profile-pictures-to": "Tunjukkan gambar profil anda kepada", + "show-qr": "Tunjukkan kod QR", + "show-transaction-data": "Tunjukkan data transaksi", + "sign-and-send": "Tandatangan dan hantar", + "sign-anyway": "Masuk pula", + "sign-in": "Daftar masuk", + "sign-message": "Mesej Tanda", + "sign-out": "Keluar", + "sign-request-failed": "Tidak dapat menandatangani mesej", + "sign-with": "Masuk dengan", + "sign-with-password": "Masuk dengan kata laluan", + "sign-you-in": "Log masuk anda…", + "signing": "Menandatangani", + "signing-a-message": "Menandatangani mesej", + "signing-phrase": "Menulis frasa", + "skip": "Langkau", + "slow": "Perlahan", + "something-went-wrong": "Ada yang tidak kena", + "soon": "Tidak lama lagi", + "specify-address": "Nyatakan alamat", + "specify-name": "Nyatakan nama", + "specify-network-id": "Tentukan id rangkaian", + "specify-rpc-url": "Tentukan URL RPC", + "specify-server-public-key": "Masukkan kunci awam pelayan", + "start-chat": "Mulakan sembang", + "start-conversation": "Mulakan perbualan", + "start-group-chat": "Mulakan sembang kumpulan", + "start-new-chat": "Mulakan sembang baru", + "starter-pack-coming": "Starter Pack akan datang", + "starter-pack-coming-description": "Boleh mengambil masa beberapa minit hingga berjam-jam", + "starter-pack-received": "Pek Permulaan", + "starter-pack-received-description": "Berikut adalah beberapa kripto sebagai permulaan! Gunakannya untuk mendapatkan pelekat, nama ENS dan mencuba dapps", + "status": "Status", + "status-confirmed": "Disahkan", + "status-hardwallet": "Hardwallet status", + "status-is-open-source": "Status adalah sumber terbuka", + "status-keycard": "Kad Kekunci Status", + "status-mobile-descr": "Status cenderung menggunakan banyak data semasa menyegerakkan sembang. Anda boleh memilih untuk tidak menyegerakkan ketika berada di rangkaian mudah alih", + "status-not-sent-click": "Tidak disahkan. Klik untuk pilihan", + "status-not-sent-tap": "Tidak disahkan. Ketik untuk pilihan", + "status-pending": "Yang belum selesai", + "status-sent": "Dihantar", + "status-tx-not-found": "TX tidak dijumpai", + "status-updates-descr": "Kemas kini status akan muncul di sini. Tambahkan profil sebagai kenalan untuk menerima kemas kini mengenai garis masa anda.", + "statuses-descr": "Kongsi perkara yang ada di fikiran anda dan kekal dikemaskini dengan kenalan anda", + "statuses-my-status-descr": "Kongsikan apa yang ada di fikiran anda. Sesiapa yang mengunjungi profil anda akan dapat melihat status anda. Orang yang menambahkan anda sebagai kenalan mereka akan menerima kemas kini anda pada garis masa mereka", + "step-i-of-n": "Langkah {{step}} daripada {{number}}", + "sticker": "Pelekat", + "sticker-market": "Pasaran pelekat", + "storage": "Penyimpanan", + "submit": "Hantar", + "submit-bug": "Hantar pepijat", + "success": "Kejayaan", + "suggested-min-tip": "Cadangan tip minima", + "suggested-price-limit": "Had harga yang dicadangkan", + "symbol": "Simbol", + "sync-all-devices": "Segerakkan semua peranti", + "sync-in-progress": "Menyegerakkan ...", + "sync-settings": "Tetapan penyegerakan", + "sync-synced": "Dalam penyegerakan", + "syncing-devices": "Sedang disegerakkan...", + "system": "Sistem", + "tabs": "Tab-tab", + "tag-was-lost": "Tag telah hilang", + "tap-card-again": "Ketik kad ke bahagian belakang telefon anda sekali lagi", + "terms-of-service": "Syarat Penggunaan", + "test-networks": "Rangkaian ujian", + "text-input-disabled": "Sila tunggu sebentar...", + "thank-you": "Terima kasih", + "this-device": "Peranti ini", + "this-device-desc": "Kunci anda akan dienkripsi dan disimpan dengan selamat di peranti anda", + "this-is-you-signing": "Ini adalah frasa menandatangani anda", + "this-will-take-few-seconds": "Ini akan mengambil masa beberapa saat", + "three-days": "Tiga hari", + "three-words-description": "Anda harus melihat 3 perkataan ini sebelum menandatangani setiap transaksi", + "three-words-description-2": "Sekiranya anda melihat kombinasi yang berbeza, batalkan transaksi dan log keluar", + "timeline": "Garis Masa", + "tip-cap": "Had petua", + "to": "Untuk", + "to-block": "Sekat", + "to-enable-biometric": "Untuk mengaktifkan {{bio-type-label}} , anda mesti menyimpan kata laluan anda di skrin buka kunci", + "to-encrypt-enter-password": "Untuk menyulitkan akaun sila masukkan kata laluan anda", + "to-see-this-message": "Untuk melihat mesej ini,", + "token-auto-validate-decimals-error": "Perpuluhan token yang salah {{symbol}} pada alamat {{address}} - ditetapkan ke {{expected}} tetapi dikesan sebagai {{actual}}", + "token-auto-validate-name-error": "Nama token yang salah {{symbol}} di alamat {{address}} - ditetapkan ke {{expected}} tetapi dikesan sebagai {{actual}}", + "token-auto-validate-symbol-error": "Simbol salah untuk token {{symbol}} di alamat {{address}} - ditetapkan ke {{expected}} tetapi dikesan sebagai {{actual}}", + "token-details": "Butiran token", + "topic-name-error": "Gunakan hanya huruf kecil (a hingga z), nombor & sengkang (-). Jangan gunakan kod pengenalan", + "transaction": "Transaksi", + "transaction-data": "Data transaksi", + "transaction-declined": "Transaksi ditolak", + "transaction-description": "Transaksi dengan 12 pengesahan boleh dianggap tidak dapat diubah lagi", + "transaction-details": "Butiran transaksi", + "transaction-failed": "transaksi gagal", + "transaction-history": "Sejarah transaksi", + "transaction-request": "Permintaan Transaksi", + "transaction-sent": "Transaksi dihantar", + "transaction-signed": "Urus niaga berjaya ditandatangani", + "transactions": "Urus Niaga", + "transactions-filter-select-all": "Pilih semua", + "transactions-filter-title": "Tapis sejarah", + "transactions-history": "Sejarah transaksi", + "transactions-history-empty": "Belum ada transaksi dalam sejarah anda", + "transactions-history-loading": "Memuatkan sejarah transaksi. Ini mungkin mengambil masa.", + "transactions-load-more": "Tambah lagi", + "transactions-management-enabled": "Pengurusan urus niaga (alpha)", + "transactions-sign": "Tanda", + "transfer-ma-unknown-error-desc-1": "Nampaknya banyak akaun anda tidak dipadamkan. Pangkalan data mungkin telah ditetapkan semula", + "transfer-ma-unknown-error-desc-2": "Sila periksa senarai akaun anda dan cuba lagi. Sekiranya akaun tidak disenaraikan pergi ke Akses kunci yang ada untuk pulih dengan frasa biji", + "transfers-fetching-failure": "Sejarah pemindahan tidak dapat dikemaskini. Semak sambungan anda dan tarik ke bawah untuk mencuba lagi", + "tribute-required-by-multiaccount": "{{multiaccount-name}} memerlukan SNT untuk memulakan sembang.", + "tribute-state-paid": "Penghormatan dibayar", + "tribute-state-pending": "Penghormatan belum selesai", + "tribute-state-required": "Memerlukan penghormatan SNT {{snt-amount}}", + "tribute-to-talk": "Penghormatan untuk bercakap", + "tribute-to-talk-add-friends": "Tambahkan rakan sebagai kenalan untuk membenarkan sembang tanpa pembayaran penghormatan.", + "tribute-to-talk-are-you-friends": "Adakah anda kawan?", + "tribute-to-talk-ask-to-be-added": "Minta ditambahkan sebagai kenalan", + "tribute-to-talk-contact-received-your-tribute": "menerima penghormatan anda. Anda kini boleh berbual dengan selamat antara satu sama lain.", + "tribute-to-talk-desc": "Wangkan perhatian anda dengan meminta SNT untuk orang baru memulakan sembang", + "tribute-to-talk-disabled": "Tribute to Talk dilumpuhkan", + "tribute-to-talk-disabled-note": "Mulai sekarang, orang baru dapat memulakan sembang dengan anda tanpa menghantar SNT.", + "tribute-to-talk-enabled": "Anda telah mengaktifkan Tribute to Talk.", + "tribute-to-talk-finish-desc": "Mulai sekarang, anda hanya akan menerima sembang dari kenalan dan orang yang membayar", + "tribute-to-talk-learn-more-1": "Masa dan perhatian anda adalah aset paling berharga anda. Tribute to Talk membolehkan anda menetapkan jumlah SNT yang diperlukan bagi orang baru untuk memulakan sembang dengan anda.", + "tribute-to-talk-learn-more-2": "Sesiapa yang tidak ada dalam senarai kenalan anda akan diminta untuk membayar, dan anda boleh membalasnya setelah mereka memilikinya.", + "tribute-to-talk-learn-more-3": "Anda selalu dapat mengembalikan wang, tetapi untuk memastikan rakan dapat menghubungi anda dengan bebas, tambahkan mereka sebagai kenalan terlebih dahulu.", + "tribute-to-talk-paywall-learn-more-1": "Masa dan perhatian kita adalah aset paling berharga kita. Tribute to Talk membolehkan anda menghubungi orang baru sebagai pertukaran untuk pembayaran SNT.", + "tribute-to-talk-paywall-learn-more-2": "Untuk memulakan sembang dengan seseorang yang mempunyai set penghargaan, cukup bayar SNT yang diperlukan dan anda akan ditambahkan sebagai kenalan.", + "tribute-to-talk-paywall-learn-more-3": "Sekiranya anda mengenali mereka, anda boleh berkongsi profil anda di luar Status untuk ditambahkan secara percuma.", + "tribute-to-talk-pending": "Penghormatan menunggu pengesahan", + "tribute-to-talk-pending-note": "Transaksi penghormatan menunggu pengesahan di rangkaian. Anda boleh menyemak statusnya dalam sejarah transaksi", + "tribute-to-talk-removing-note": "Mengeluarkan Tribute to Talk akan membolehkan orang baru memulakan sembang tanpa menghantar SNT. Memerlukan transaksi yang akan dibuat.", + "tribute-to-talk-set-snt-amount": "Tetapkan jumlah SNT yang diperlukan bagi orang baru untuk memulakan sembang", + "tribute-to-talk-signing": "Menunggu untuk menandatangani transaksi", + "tribute-to-talk-transaction-failed-note": "Transaksi telah gagal dan tetapan Tribute to Talk anda belum diubah", + "tribute-to-talk-tribute-received1": "Penghormatan diterima. Anda dan", + "tribute-to-talk-tribute-received2": "kini menjadi kenalan dan boleh berbual dengan selamat antara satu sama lain", + "tribute-to-talk-you-require-snt": "Anda memerlukan SNT untuk orang baru untuk memulakan sembang.", + "try-again": "Cuba lagi", + "try-keeping-the-card-still": "Cuba simpan kad itu", + "turn-nfc-description": "NFC dilumpuhkan pada peranti anda. Anda boleh mengaktifkannya dalam tetapan", + "turn-nfc-on": "Hidupkan NFC untuk meneruskan", + "tx-fail-description1": "Urus niaga ini kemungkinan akan gagal. Masuk dengan risiko anda sendiri menggunakan bayaran rangkaian khusus.", + "tx-fail-description2": "Urus niaga ini kemungkinan akan gagal. Tetapkan bayaran rangkaian khusus untuk menandatangani dengan risiko anda sendiri.", + "type": "Jenis", + "type-a-message": "Mesej", + "ulc-enabled": "ULC didayakan", + "unable-to-fetch": "Tidak dapat mengambil sejarah sembang", + "unable-to-read-this-code": "Tidak dapat membaca kod ini", + "unable-to-send-messages": "Tidak dapat menghantar dan menerima mesej-mesej", + "unblock": "Buka sekatan", + "unblock-contact": "Nyahsekat pengguna ini", + "unknown-status-go-error": "Ralat status-go yang tidak diketahui", + "unlock": "Buka kunci", + "unmute": "Tidak bersuara", + "unpair-card": "Nyahpasang kad", + "unpair-card-confirmation": "Operasi ini akan memutuskan kad dari peranti semasa. Memerlukan kebenaran kod laluan 6 digit. Adakah anda mahu meneruskan?", + "unpair-keycard": "Nyahpasang Kad Kunci dari telefon ini", + "unpair-keycard-warning": "Kod pasangan \/ PUK & PIN anda tidak berubah", + "unpaired-keycard-text": "Kad Kunci yang anda ketik tidak dikaitkan dengan telefon ini", + "unpaired-keycard-title": "Nampaknya kad anda tidak berpasangan", + "unpin": "Lepaskan pin", + "update": "Kemas kini", + "update-to-listen-audio": "Kemas kini ke versi terkini untuk mendengar mesej audio di sini!", + "update-to-see-image": "Kemas kini ke versi terkini untuk melihat gambar yang bagus di sini!", + "update-to-see-sticker": "Kemas kini ke versi terkini untuk melihat pelekat yang bagus di sini!", + "updates-to-tos": "Kemas kini kepada Syarat-syarat Penggunaan", + "updates-to-tos-desc": "Sebelum anda meneruskan, sila tinjau Syarat Penggunaan dan sahkan bahawa anda bertanggungjawab sepenuhnya mengenai cara anda menggunakan aplikasi ini.", + "url": "URL", + "usd-currency": "USD", + "use-valid-contact-code": "Sila masukkan atau imbas kod pengenalan atau nama pengguna yang sah", + "validation-amount-invalid-number": "Jumlah bukan nombor yang sah", + "validation-amount-is-too-precise": "Jumlahnya terlalu tepat. Bilangan perpuluhan maksimum ialah {{decimals}} .", + "verified-community": "✓ Komuniti yang disahkan", + "version": "Versi apl", + "view": "Lihat", + "view-cryptokitties": "Lihat di CryptoKitties", + "view-cryptostrikers": "Lihat di CryptoStrikers", + "view-data": "Lihat data", + "view-details": "Lihat butiran", + "view-etheremon": "Lihat di Etheremon", + "view-gitcoin": "Lihat di Gitcoin", + "view-profile": "Lihat profil", + "view-public-dashboard": "Lihat papan pemuka awam", + "view-rules": "Lihat peraturan", + "view-signing": "Lihat frasa menandatangani", + "view-superrare": "Lihat di SuperRare", + "waiting-for-wifi": "Tanpa Wi-fi, penyegerakan mesej dilumpuhkan.", + "waiting-for-wifi-change": "Tetapan", + "waiting-to-sign": "Menunggu untuk menandatangani transaksi ...", + "waiting-wi-fi": "Menunggu Wi-Fi...", + "waku-bloom-filter-mode": "Mod penapis mekar Waku", + "wakuv2-change-nodes": "Adakah anda pasti mahu menukar nod Wakuv2?", + "wakuv2-node-format": "\/ ip4 \/ {node-ip} \/ tcp \/ {port} \/ p2p \/ {id}", + "wakuv2-settings": "Tetapan Waku v2", + "wallet": "Dompet", + "wallet-address": "Alamat dompet", + "wallet-asset": "Aset", + "wallet-assets": "Aset", + "wallet-backup-recovery-title": "Sandarkan frasa pemulihan anda", + "wallet-choose-recipient": "Pilih Penerima", + "wallet-collectibles": "Barang koleksi", + "wallet-insufficient-funds": "Kekurangan dana", + "wallet-insufficient-gas": "Tidak cukup ETH untuk gas", + "wallet-invalid-address": "Alamat tidak sah:\n {{data}}", + "wallet-invalid-address-checksum": "Ralat dalam alamat:\n {{data}}", + "wallet-invalid-chain-id": "Rangkaian tidak sepadan:\n {{data}} tetapi rantaian semasa adalah {{chain}}", + "wallet-key-content": "Alamat hex 64 aksara berdasarkan standard Ethereum dan bermula dengan 0x. Secara terbuka, alamat akaun anda akan dikongsi dengan orang lain semasa anda ingin menerima dana. Juga disebut sebagai \"alamat Ethereum\" atau \"alamat dompet.\"", + "wallet-key-title": "Alamat akaun", + "wallet-manage-accounts": "Urus akaun", + "wallet-manage-assets": "Urus Aset", + "wallet-request": "Permintaan", + "wallet-send": "Hantar", + "wallet-send-min-units": "Min 21000 unit", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Tetapan dompet", + "wallet-total-value": "Jumlah nilai", + "wallet-transaction-total-fee": "Jumlah Bayaran", + "wants-to-access-profile": "mahu mengakses ke profil anda", + "warning": "Amaran", + "warning-message": "Maaf, kami mengehadkan menghantar beberapa mesej berturut-turut untuk mengelakkan spam. Sila cuba sebentar lagi", + "warning-sending-to-contract-descr": "Alamat yang anda masukkan adalah kontrak pintar, menghantar dana ke alamat ini dapat mengakibatkan kehilangan dana. Untuk berinteraksi dengan DApp, buka DApp di Status DApp Browser.", + "watch-only": "Hanya menonton", + "wc-brand-guide": "Panduan penggunaan penjenamaan seperti tanda dagangan dan logo", + "wc-disclaimer": "Penafian (termasuk penyedia pihak ketiga), jaminan, dan pelepasan undang-undang", + "wc-dispute": "Peruntukan penyelesaian pertikaian", + "wc-how-to-use-status-app": "Cara menggunakan aplikasi Status termasuk privasi dan keselamatan", + "wc-new-tos-based-on-principles-prefix": "Terma Penggunaan Baru yang direka berdasarkan kami", + "web-view-error": "Tidak dapat memuatkan halaman", + "websites": "Laman web", + "webview-camera-permission-requests": "Permintaan kebenaran kamera webview", + "webview-camera-permission-requests-subtitle": "Apabila diaktifkan, laman web dan dapp dapat meminta untuk menggunakan kamera anda", + "welcome-blank-community-message": "Komuniti anda akan muncul di sini.", + "welcome-blank-message": "Sembang anda akan muncul di sini. Untuk memulakan sembang baru tekan butang ⊕", + "welcome-community-blank-message": "Sembang anda akan muncul di sini. Untuk memulakan sembang baru, klik pada 3 titik di atas dan pilih \"Buat saluran\"", + "welcome-screen-text": "Sediakan dompet anda, jemput rakan untuk berbual\n dan layari dapp yang popular!", + "welcome-to-status": "Selamat datang ke Status", + "welcome-to-status-description": "Sediakan dompet crypto anda, jemput rakan untuk berbual dan melayari aplikasi terdesentralisasi", + "what-changed": "Apa yang berubah", + "what-is-shared": "Apa yang dikongsi", + "whats-on-your-mind": "Apa yang kamu fikirkan…", + "word-count": "Kiraan perkataan", + "word-n": "Perkataan # {{number}}", + "word-n-description": "Untuk memeriksa sama ada anda telah menyandarkan frasa pemulihan anda dengan tepat, masukkan perkataan #{{number}} di atas.", + "words-n": { + "other": "1 kata" + }, + "write-down-and-store-securely": "Tuliskan kod\n & simpan dengan selamat", + "wrong-address": "Salah alamat", + "wrong-card": "Kad yang salah", + "wrong-card-text": "Kad yang diketuk tidak sesuai dengan kunci yang anda pilih", + "wrong-contract": "Kontrak yang salah", + "wrong-keycard-text": "Kad Kunci yang anda ketik tidak dikaitkan dengan telefon ini", + "wrong-keycard-title": "Nampaknya anda sudah mengetuk\n kad kekunci yang salah", + "wrong-password": "Salah kata laluan", + "wrong-word": "Perkataan yang salah", + "yes": "Ya", + "you": "anda", + "you-already-have-an-asset": "Anda sudah mempunyai aset {{value}}", + "you-are-all-set": "Anda telah siap sedia!", + "you-are-all-set-description": "Jika anda kehilangan telefon anda, anda boleh mengakses dana dan kod pengenalan anda menggunakan frasa pemulihan", + "you-can-change-account": "Anda boleh menukar nama dan warna akaun mengikut kehendak anda", + "you-can-choose-preview-websites": "Anda boleh memilih mana dari laman web berikut yang dapat melihat pratonton pautan keterangan dan gambar dalam sembang", + "you-can-fetch": "Anda boleh ambil sejarah sembang", + "you-dont-have-contacts": "Anda belum mempunyai kenalan.", + "you-dont-have-contacts-invite-friends": "Anda belum mempunyai kenalan.\n Jemput rakan anda untuk mula berbual.", + "you-dont-have-stickers": "Anda tidak mempunyai sebarang pelekat lagi", + "you-will-need-this-code": "Anda memerlukan kod ini untuk membuka Status dan menandatangani transaksi", + "you-will-start-from-scratch": "Anda akan bermula dari awal dengan satu set kunci baru", + "your-card-is-frozen": "Kad Kunci anda dibekukan. Tetapkan semula akses kad", + "your-contact-code": "Memberi akses membenaran DApp ini untuk mengambil kod pengenalan anda", + "your-data-belongs-to-you": "Jika anda kehilangan frasa pemulihan anda, anda kehilangan data dan dana anda", + "your-data-belongs-to-you-description": "Sekiranya anda kehilangan akses, misalnya dengan kehilangan telefon anda, anda hanya dapat mengakses kunci anda dengan frasa pilihan anda. Tiada siapa, tetapi anda mempunyai ungkapan benih anda. Tuliskan. Pastikan ia selamat", + "your-keys": "Kunci anda", + "your-price-limit": "Had harga anda", + "your-recovery-phrase": "Frasa pemulihan anda", + "your-recovery-phrase-description": "Ini adalah frasa pemulihan anda. Anda menggunakannya untuk membuktikan bahawa ini adalah dompet anda. Anda hanya dapat melihatnya sekali sahaja! Tuliskannya pada kertas dan simpan di tempat yang selamat. Anda akan memerlukannya jika anda kehilangan atau memasang semula dompet anda.", + "your-tip-limit": "Had tip anda", + "youre-on-mobile-network": "Anda menggunakan rangkaian mudah alih" +} diff --git a/translations/nb.json b/translations/nb.json new file mode 100644 index 00000000000..530b3ef3f8c --- /dev/null +++ b/translations/nb.json @@ -0,0 +1,145 @@ +{ + "confirm": "Bekreft", + "amount": "Beløp", + "members-active": { + "one": "1 medlem", + "other": "{{count}} medlemmer", + "zero": "ingen medlemmer" + }, + "chat-name": "Kallenavn", + "phew-here-is-your-passphrase": "*Phew* det var vrient, her er din nye passordfrase, *skriv den ned og hold den for deg selv!* Du vil trenge den for å kunne gjenopprette kontoen.", + "public-group-topic": "Emne", + "chat-settings": "Chat instillinger", + "offline": "Avlogget", + "invited": "invitert", + "address": "Adresse", + "new-public-group-chat": "Bli med i offentlig chat", + "datetime-hour": { + "one": "time", + "other": "timer" + }, + "wallet-settings": "Lommeboksinstillinger", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "For å tillate bruk av kamera, gå til systeminstillinger og sørg for at Status > Kamera er aktivert.", + "remove": "Fjern", + "add-members": "Legg til medlemmer", + "photos-access-error": "For å tillate bruk av bilder, gå til systeminstillinger og sørg for at Status > Bilder er aktivert.", + "done": "Ferdig", + "close-chat": "Fjern melding", + "new-group-chat": "Ny gruppemelding", + "wallet": "Lommebok", + "wallet-request": "Forespørsel", + "sign-in": "Logg på", + "datetime-yesterday": "i går", + "create-new-account": "Opprett konto", + "datetime-ago": "siden", + "contacts": "Kontaker", + "got-it": "Mottatt", + "active-online": "Pålogget", + "password": "Passord", + "browsing-title": "Utforsk", + "transactions-history-empty": "Du har ingen tidligere transaksjoner", + "discover": "Oppdag", + "browsing-cancel": "Avbryt", + "intro-status": "Chat med meg for å sette opp kontoen din og endre instillinger!", + "name": "Navn", + "show-qr": "Vis QR-kode", + "connect": "Koble til", + "edit": "Rediger", + "account-generation-message": "Gi meg et øyeblikk! Jeg må granske universet for å generere en konto til deg!", + "no-messages": "Ingen meldinger", + "passphrase": "Passordfrase", + "recipient": "Mottager", + "members-title": "Medlemmer", + "new-group": "Ny gruppe", + "phone-e164": "Internasjonal 1", + "settings": "Instillinger", + "delete": "Slett", + "chats": "Chats", + "transaction": "Transaksjon", + "public-group-status": "Offentlig", + "image-source-make-photo": "Opptak", + "start-conversation": "Start en samtale", + "save": "Lagre", + "sharing-copy-to-clipboard": "Kopier til utklippstavle", + "sync-in-progress": "Synkroniserer...", + "send-transaction": "Send overføring", + "incorrect-code": [ + "str", + "Beklager, prøv på ny" + ], + "image-source-gallery": "Velg fra bilder", + "sync-synced": "Synkronisert", + "status-pending": "Venter", + "datetime-day": { + "one": "dag", + "other": "dager" + }, + "wallet-send": "Send", + "scan-qr": "Skan QR-kode", + "contact-s": { + "one": "kontakt", + "other": "kontaker" + }, + "type": "Type", + "next": "Neste", + "recent": "Nylig", + "status": "Status", + "from": "Fra", + "wrong-password": "Feil passord", + "in-contacts": "I kontaker", + "transactions-sign": "Signer", + "sharing-share": "Del...", + "type-a-message": "Skriv en melding...", + "unknown-status-go-error": "Ukjent status-go feil", + "clear-history": "Fjern historikk", + "no-contacts": "Ingen kontaker enda", + "datetime-today": "i dag", + "web-view-error": "oops, feil", + "error": "Feil", + "more": "mer", + "cancel": "Avbryt", + "can-not-add-yourself": "Du kan ikke legge til deg selv", + "add-to-contacts": "Legg til i kontakter", + "available": "Tilgjengelig", + "You": "Du", + "main-wallet": "Hovedlommebok", + "transactions": "Transaksjoner", + "members": { + "one": "1 medlem", + "other": "{{count}} medlemmer", + "zero": "ingen medlemmer" + }, + "intro-message1": "Velkommen til Status\nTrykk på denne beskjeden for å sette et passord og komme i gang!", + "transactions-history": "Historikk", + "new-contact": "Ny kontakt", + "datetime-second": { + "one": "sekund", + "other": "sekunder" + }, + "recover": "Gjenopprett", + "wallet-total-value": "Total verdi", + "datetime-minute": { + "one": "minutt", + "other": "minutter" + }, + "browsing-open-in-android-web-browser": "Åpne i nettleser", + "browsing-open-in-ios-web-browser": "Åpne i nettleser", + "edit-profile": "Rediger profil", + "active-unknown": "Ukjent", + "public-key": "Offentlig nøkkel", + "profile": "Profil", + "none": "Ingen", + "removed": "fjernet", + "transactions-filter-select-all": "Velg alle", + "transactions-filter-title": "Filtrer historikk", + "message": "Melding", + "here-is-your-passphrase": "Her er din nye passordfrase, *skriv den ned og hold den for deg selv!* Du vil trenge den for å kunne gjenopprette kontoen.", + "wallet-assets": "Assets", + "image-source-title": "Profilbilde", + "current-network": "Nåværende nettverk", + "left": "venstre", + "to": "Til", + "status-sent": "Sendt", + "data": "Data" +} diff --git a/translations/ne.json b/translations/ne.json new file mode 100644 index 00000000000..a12a5406043 --- /dev/null +++ b/translations/ne.json @@ -0,0 +1,474 @@ +{ + "about-app": "बारेमा", + "active-online": "अनलाइन", + "active-unknown": "अज्ञात", + "add": "Tambah", + "add-bootnode": "Bootnode थप्नुहोस्", + "add-mailserver": "Tambah mailserver", + "add-members": "सदस्यहरु जोड्नुहोस्", + "add-network": "Tambah rangkaian", + "add-to-contacts": "सम्पर्कहरुमा जोड्नुहोस्", + "address": "ठेगाना", + "advanced": "Lanjutan", + "advanced-settings": "Tetapan lanjutan", + "agree-by-continuing": "Dengan meneruskan anda bersetuju dengan ", + "all": "सबै", + "allow": "Benarkan", + "allowing-authorizes-this-dapp": "Membenarkan DApp ini untuk mengambil alamat dompet anda dan mengaktifkan Web3", + "amount": "रकम", + "apply": "Setuju", + "are-you-sure?": "के तपाईँ निश्चित हुनुहुन्छ?", + "at": "pada", + "available": "उपलब्ध", + "begin-set-up": "mulakan penyediaan", + "block": "ब्लक गर्नुहोस्", + "bootnode-address": "Alamat Bootnode", + "bootnode-details": "Bootnode विवरणहरू", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes diaktifkan", + "bootnodes-settings": "Tetapan Bootnodes", + "browser": "ब्राउजर", + "browser-not-secure": "Sambungan tidak selamat! Jangan menandatangani transaksi atau menghantar data peribadi di laman web ini.", + "browser-secure": "Sambungan adalah selamat. Pastikan anda benar-benar mempercayai laman web ini sebelum menandatangani transaksi atau memasukkan data peribadi.", + "browsing-cancel": "रद्द गर्नुहोस्", + "browsing-open-in-android-web-browser": "वेब ब्राउजरमा खोल्ने", + "browsing-open-in-ios-web-browser": "वेब ब्राउजरमा खोल्ने", + "browsing-open-in-status": "स्टेटसमा खोल्नुहोस्", + "browsing-site-blocked-description1": "Kami mengesan aktiviti berniat jahat dari alamat ini. Untuk melindungi anda dan dompet anda, kami menghalang navigasi selanjutnya. \n\nJika anda berpendapat bahawa ini adalah satu kesilapan, beritahu kami di ", + "browsing-site-blocked-description2": " perbualan umum.", + "browsing-site-blocked-go-back": "Kembali", + "browsing-site-blocked-title": "Laman ini disekat", + "browsing-title": "ब्राउज", + "camera-access-error": "कृपया क्यामेरा उपयोग गर्न आवश्यक अनुमति प्रदान गर्न, सिस्टम सेटिङ्ग भित्र गएर स्टेटस > क्यमेरा चयन भएको स्थिति निश्चित गर्नुहोस् ।", + "cancel": "रद्द गर्नुहोस्", + "change-fleet": "Tukar fleet ke {{fleet}}", + "changed-amount-warning": "Amaun telah ditukar daripada {{old}} kepada {{new}}", + "changed-asset-warning": "सम्पत्ति {{old}} बाट {{new}} मा परिवर्तन भएको थियो।", + "chat": "च्याट", + "chat-name": "च्याट नाम", + "chat-settings": "च्याट सेटिङ्गहरु", + "chats": "च्याटहरु", + "choose-authentication-method": "Pilih kaedah pengesahan untuk melindungi akaun anda", + "clear": "Hapus", + "clear-history": "इतिहास खाली गर्नुहोस्", + "clear-history-action": "Hapus", + "clear-history-confirmation": "इतिहास मेटाउने हो?", + "clear-history-confirmation-content": "Adakah anda pasti untuk memadamkan sejarah perbualan ini?", + "clear-history-title": "इतिहास मेटाउने हो?", + "close-app-button": "पुष्टि गर्नुहोस्", + "close-app-content": "Aplikasi ini akan berhenti dan ditutup. Apabila anda membuka semula, rangkaian yang dipilih akan digunakan", + "close-app-title": "चेतावनी!", + "command-button-send": "Hantar", + "confirm": "पुष्टि गर्नुहोस्", + "confirmations": "Pengesahan", + "confirmations-helper-text": "Apabila transaksi mempunyai 12 pengesahan, anda boleh menganggap ia telah diselesaikan.", + "connect": "कनेक्ट", + "connect-mailserver-content": "Sambung ke {{name}}?", + "connected": "जडित", + "connecting-requires-login": "Menyambung ke rangkaian lain memerlukan daftar masuk", + "contact-s": { + "one": "सम्पर्क", + "other": "सम्पर्कहरु" + }, + "contacts": "सम्पर्कहरु", + "copy-qr": "Salin kod", + "copy-transaction-hash": "लेनदेन आईडी प्रतिलिपि गर्नुहोस्", + "cost-fee": "Kos\/Fi", + "counter-9-plus": "9+", + "create": "सिर्जना गर्नुहोस्", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Matawang", + "currency-display-name-aed": "Dirham Emiriah", + "currency-display-name-afn": "Afghani Afghanistan", + "currency-display-name-ars": "अर्जेण्टीना पीसो", + "currency-display-name-aud": "Dolar Australia", + "currency-display-name-bbd": "बार्बाडोस डलर", + "currency-display-name-bdt": "बांग्लादेशी ताका", + "currency-display-name-bgn": "बल्गेरियाई लेभ", + "currency-display-name-bhd": "Dinar Bahrain", + "currency-display-name-bnd": "ब्रुनेई दारुसलाम डलर", + "currency-display-name-bob": "Bolíviano Bolivia", + "currency-display-name-brl": "ब्राजील रियल", + "currency-display-name-btn": "भूटानी नगुलट्रम", + "currency-display-name-cad": "क्यानाडा डलर", + "currency-display-name-chf": "Franc Switzerland", + "currency-display-name-clp": "Peso Chile", + "currency-display-name-cny": "Yuan Renminbi China", + "currency-display-name-cop": "Peso Colombia", + "currency-display-name-crc": "Colon Costa Rica", + "currency-display-name-czk": "Koruna Czech", + "currency-display-name-dkk": "डेनमार्क क्रौन", + "currency-display-name-dop": "Peso Republik Dominica", + "currency-display-name-egp": "मिस्र पाउंड", + "currency-display-name-etb": "Birr Ethiopia", + "currency-display-name-eur": "यूरो", + "currency-display-name-gbp": "Pound British", + "currency-display-name-gel": "जर्जियाली लारी", + "currency-display-name-ghs": "Cedi Ghana", + "currency-display-name-hkd": "Dolar Hong Kong", + "currency-display-name-hrk": "Kuna Croatia", + "currency-display-name-huf": "Forint Hungary", + "currency-display-name-idr": "Rupiah Indonesia", + "currency-display-name-ils": "Shekel Israel", + "currency-display-name-inr": "भारत रुपैयाँ", + "currency-display-name-isk": "Krona Sweden", + "currency-display-name-jmd": "जमैका डलर", + "currency-display-name-jpy": "Yen Jepun", + "currency-display-name-kes": "केन्याई शिलिंग", + "currency-display-name-krw": "कोरिया (दक्षिण) वोन", + "currency-display-name-kwd": "Dinar Kuwait", + "currency-display-name-kzt": "Tenge Kazakhstan", + "currency-display-name-lkr": "Rupee Sri Lanka", + "currency-display-name-mad": "Dirham Maghribi", + "currency-display-name-mdl": "Leu Moldova", + "currency-display-name-mur": "Rupee Mauritius", + "currency-display-name-mwk": "Kwacha Malawi", + "currency-display-name-mxn": "मेक्सिको पीसो", + "currency-display-name-myr": "मलेशिया रिंगित", + "currency-display-name-mzn": "मोजाम्बिक मेटिकल", + "currency-display-name-nad": "नामिबिया डलर", + "currency-display-name-ngn": "नाइजेरिया नाइरा", + "currency-display-name-nok": "नर्वे क्रौन", + "currency-display-name-npr": "नेपाल रुपैयाँ", + "currency-display-name-nzd": "Dolar New Zealand", + "currency-display-name-omr": "ओमन रियाल", + "currency-display-name-pen": "Sol Peru", + "currency-display-name-pgk": "Kina Papua New Guinea", + "currency-display-name-php": "Peso Filipina", + "currency-display-name-pkr": "पाकिस्तान रुपैयाँ", + "currency-display-name-pln": "पोल्याण्ड ज्लटी", + "currency-display-name-pyg": "Guarani Paraguay", + "currency-display-name-qar": "Riyal Qatar", + "currency-display-name-ron": "Leu Romania", + "currency-display-name-rsd": "Dinar Serbia", + "currency-display-name-rub": "रूस रुबल", + "currency-display-name-sar": "Riyal Arab Saudi", + "currency-display-name-sek": "Krona Sweden", + "currency-display-name-sgd": "Dolar Singapura", + "currency-display-name-thb": "Baht Thailand", + "currency-display-name-try": "Lira Turki", + "currency-display-name-ttd": "Dolar Trinidad dan Tobago", + "currency-display-name-twd": "ताइवान नयाँ डलर", + "currency-display-name-tzs": "तान्जानियन शिलिंग", + "currency-display-name-uah": "Hryvnia Ukraine", + "currency-display-name-ugx": "Shilling Uganda", + "currency-display-name-usd": "Dolar Amerika Syarikat", + "currency-display-name-uyu": "उरुग्वे पेसो", + "currency-display-name-vef": "भेनेजुएला बोलिवर", + "currency-display-name-vnd": "भियतनाम दांग", + "currency-display-name-zar": "दक्षिण अफ्रीका रेण्ड", + "current-network": "चल्ती नेटवर्क", + "custom": "Pilihan Lain", + "custom-networks": "Rangkaian lain", + "dapp": "ÐApp", + "dapps": "ÐApps", + "data": "डाटा", + "datetime-ago": "पहिले", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-day": { + "one": "दिन", + "other": "दिन" + }, + "datetime-hour": { + "one": "घण्टा", + "other": "घण्टा" + }, + "datetime-minute": { + "one": "मिनेट", + "other": "मिनेट" + }, + "datetime-second": { + "one": "सेकेन्ड", + "other": "सेकेन्ड" + }, + "datetime-today": "आज", + "datetime-yesterday": "हिजो", + "decryption-failed-content": "Kami tidak dapat untuk menyahsulitkan data anda, anda mungkin perlu mencipta akaun baru dan memadamkan data lama anda dengan mengetik \"Pilih\". Klik pada \"Batal\", untuk mencuba lagi", + "delete": "मेटाउनुहोस्", + "delete-bootnode": "Bootnode मेटाउनुहोस्", + "delete-bootnode-are-you-sure": "Adakah anda pasti untuk memadamkan bootnode ini?", + "delete-bootnode-title": "Padamkan bootnode", + "close-chat": "च्याट मेटाउने", + "close-chat-confirmation": "Adakah anda pasti untuk memadamkan perbualan ini?", + "delete-confirmation": "Padam?", + "delete-mailserver": "Padam mailserver", + "delete-mailserver-are-you-sure": "Adakah anda pasti untuk memadamkan mailserver ini?", + "delete-mailserver-title": "Padam mailserver", + "delete-message": "सन्देश मेटाउनुहोस्", + "delete-network-confirmation": "Adakah anda pasti mahu memadamkan rangkaian ini?", + "delete-network-error": "Sila sambungkan ke rangkaian lain sebelum memadamkan ini", + "delete-network-title": "Padam rangkaian?", + "deny": "Nafikan", + "description": "विवरण", + "dev-mode": "Mod pembangunan", + "disconnected": "Menyambung ke peer...", + "discover": "भेट्टाउनुहोस्", + "done": "सम्पन्न", + "edit": "सम्पादन", + "edit-profile": "प्रोफाइल सम्पादन", + "empty-chat-description": "अहिलेसम्म कुनै सन्देशहरू छैनन्", + "empty-chat-description-one-to-one": "Sebarang mesej yang anda hantar disini adalah disulitkan dan hanya boleh dibaca oleh anda dan ", + "enter-address": "ठेगान प्रविष्ट गर्ने", + "enter-pair-code": "Masukkan kod pautan", + "enter-pair-code-description": "Diperlukan untuk memautkan kad anda dengan peranti ini", + "enter-password": "Masukkan kata laluan", + "enter-url": "युआरएल प्रविष्ट गर्नुहोस्", + "enter-word": "Masukkan perkataan", + "error": "त्रुटि", + "error-unable-to-get-balance": "Tidak boleh mendapatkan baki", + "error-unable-to-get-prices": "Ralat penukaran matawang. Muat semula skrin anda untuk mencuba lagi.", + "error-unable-to-get-token-balance": "Tidak boleh mendapatkan baki token", + "errors": "त्रुटिहरू", + "eth": "ETH", + "failed": "Gagal", + "faq": "Soalan lazim", + "find": "Cari", + "fleet": "Fleet", + "fleet-settings": "Tetapan fleet", + "from": "बाट", + "gas-limit": "ग्यास सीमा", + "gas-price": "ग्याँस मूल्य", + "gas-used": "Gas digunakan", + "generating-codes-for-pairing": "Menjana kod pautan untuk berhubung dengan akaun Status anda.", + "get-status-at": "Dapatkan Status di http:\/\/status.im", + "go-to-settings": "Pergi ke Tetapan", + "got-it": "पाइयो", + "group-chat": "Perbualan kumpulan", + "group-info": "Maklumat kumpulan", + "gwei": "Gwei", + "hash": "ह्यास", + "help": "bantuan", + "help-center": "Pusat Bantuan", + "hold-card": "pegang kad dibelakang telefon anda", + "home": "Utama", + "hooks": "Cangkuk", + "identifier": "Pengenalpasti", + "image-remove-current": "वर्तमान फोटो हटाउनुहोस्", + "image-source-gallery": "ग्यालेरीबाट चयन गर्नुहोस्", + "image-source-make-photo": "खिच्नुहोस", + "image-source-title": "प्रोफाइल तस्विर", + "in-contacts": "सम्पर्कहरुमा समावेस छ", + "incoming": "Masuk", + "incorrect-code": [ + "str", + "माफ गर्नुहोस्, त्यो कोड गलत रहेछ, कृपया पुनः प्रविष्ट गर्नुहोस्" + ], + "intro-message1": "स्टेटसमा तपाईंलाई स्वागत छ\nतपाईंको पास्वर्ड सेटअप र सुरुवात गर्नको लागि यो सन्देसमा ट्याप गर्नुहोस् ।", + "intro-text": "Status adalah pintu gerbang anda ke web yang terdesentralisasi", + "invalid-key-confirm": "Setuju", + "invalid-number": "Nombor tidak sah", + "invite-friends": "Jemput rakan", + "invited": "आमन्त्रित", + "keycard-connected-title": "जडित", + "keycard-success-title": "Berjaya", + "leave": "Tinggalkan", + "leave-group": "Tinggalkan kumpulan", + "left": "बाहिरियो", + "log-level": "लग स्तर", + "log-level-settings": "Tetapan tahap log", + "logout": "लग आउट", + "logout-are-you-sure": "Adakah anda pasti mahu daftar keluar?", + "logout-title": "Daftar keluar?", + "mailserver-address": "Alamat Mailserver", + "mailserver-connection-error": "Tidak dapat bersambung ke mailserver", + "mailserver-details": "Mailserver विवरणहरू", + "mailserver-reconnect": "Tidak dapat bersambung ke mailserver. Ketik untuk menyambung semula", + "mailserver-title": "Mailserver", + "main-currency": "मुख्य मुद्रा", + "main-networks": "मुख्य नेटवर्कहरू", + "main-wallet": "मुख्य वालेट", + "mainnet-network": "मुख्य नेटवर्क", + "members": { + "one": "१ सदस्य", + "other": "{{count}} सदस्यहरु" + }, + "members-active": { + "one": "१ सदस्य", + "other": "{{count}} सदस्यहरु" + }, + "members-active-none": "tiada ahli", + "members-title": "सदस्यहरु", + "message": "सन्देश", + "message-not-sent": "Mesej tidak dihantar", + "message-options-cancel": "रद्द गर्नुहोस्", + "message-reply": "जवाफ दिनुहोस्", + "more": "अरु", + "name": "नाम", + "need-help": "सहयोग चाहियो?", + "network": "Rangkaian", + "network-chain": "नेटवर्क श्रृंखला", + "network-details": "Maklumat rangkaian", + "network-id": "नेटवर्क आईडी", + "network-settings": "नेटवर्क सेटिङहरू", + "new": "नयाँ", + "new-chat": "नयाँ च्याट", + "new-contact": "नया सम्पर्क", + "new-contract": "Kontrak Baru", + "new-group": "नया समूह", + "new-group-chat": "नया सामूहिक च्याट", + "new-network": "Rangkaian baru", + "new-public-group-chat": "सार्वजनिक च्याटमा भाग लिने", + "next": "अर्को", + "no": "Tidak", + "no-contacts": "हाल कुनै सम्पर्कहरु छैनन्", + "no-messages": "सन्देशहरु खाली", + "no-pairing-slots-available": "Tiada slot pautan tersedia. \n Anda boleh menyahpasang peranti yang telah dipautkan dengan kad", + "nonce": "Nonce", + "none": "बिना कुनै", + "not-applicable": "अहस्ताक्षरित लेनदेनको लागी लागू छैन", + "notifications": "Pemberitahuan", + "off": "Tidak aktif", + "offline": "अफलाइन", + "offline-messaging": "Mailserver", + "offline-messaging-settings": "Tetapan mailserver", + "ok": "ठिक छ", + "on": "Pada", + "open": "खोल्नुहोस्", + "open-dapp": "ÐApp खोल्नुहोस्", + "open-on-etherscan": "Buka pada Etherscan.io", + "outgoing": "Keluar", + "pair-card": "paut kad", + "pair-code": "जोडा कोड", + "pair-code-explanation": "Pautkan kad dengan peranti berbeza yang mempunyai akaun Status yang sama padanya", + "pairing-card": "Memautkan kad", + "passphrase": "गुप्तवाक्यांश", + "password": "पासवर्ड", + "password_error1": "Kata laluan tidak sepadan.", + "password-placeholder2": "आफ्नो पासवर्ड निश्चित गर्नुहोस्", + "paste-json": "टाँस्नुहोस् JSON", + "pending": "Belum selesai", + "permissions": "अनुमतिहरू", + "phone-e164": "अन्तराष्ट्रिय १", + "photos-access-error": "कृपया फोटो उपयोग गर्न आवश्यक अनुमति प्रदान गर्न, सिस्टम सेटिङ्ग भित्र गएर स्टेटस > फोटो चयन भएको स्थिति निश्चित गर्नुहोस् ।", + "profile": "प्रोफाइल", + "public-chat": "सार्वजनिक कुराकानी", + "public-chats": "सार्वजनिक च्याटहरू", + "public-group-status": "सार्वजनिक", + "public-group-topic": "विषय", + "public-key": "सार्वजनिक सांचो", + "puk-code": "PUK कोड", + "receive": "प्राप्त गर्नुहोस्", + "receive-transaction": "लेनदेन प्राप्त गर्नुहोस्", + "recent": "भर्खरको", + "recent-recipients": "Kenalan", + "recipient": "प्रापक", + "recipient-code": "Masukkan alamat penerima", + "recover": "पुनर्स्थापना", + "recovery-typo-dialog-description": "Sekiranya anda memasukkan kata-kata yang salah, anda akan membuat akaun baru dan bukannya memulihkan akaun yang lama.", + "remove": "हटाउनुहोस्", + "remove-from-chat": "च्याटबाट हटाउनुहोस्", + "remove-from-contacts": "सम्पर्कहरुबाट हटाउनुहोस्", + "remove-network": "सञ्जाल हटाउनुहोस्", + "removed": "हटाइयो", + "request-feature": "एउटा सुविधा अनुरोध गर्नुहोस्", + "request-transaction": "Minta transaksi", + "required-field": "आवश्यक फिल्ड", + "resend-message": "Hantar semula", + "rpc-url": "URL RPC", + "save": "साँच्नुहोस्", + "save-password": "लगआउट सम्म पासवर्ड बचत गर्नुहोस्", + "save-password-unavailable": "पासवर्ड सुरक्षित गर्न उपकरण पासकोड सेट गर्नुहोस्", + "scan-qr": "QR स्क्यान गर्नुहोस्", + "scan-qr-code": "Imbas kod QR dengan alamat dompet", + "secret-keys-confirmation-text": "Tulis ini sekarang kerana anda tidak akan dapat melihat skrin ini lagi", + "secret-keys-confirmation-title": "Adakah anda telah menulisnya?", + "selected": "चयन गरिएको", + "send-message": "सन्देश पठाउनुहोस्", + "send-request": "अनुरोध पठाउने", + "send-request-amount": "Jumlah", + "send-request-amount-max-decimals": "Bilangan maksimum perpuluhan adalah {{asset-decimals}}", + "send-request-unknown-token": "Token tidak diketahui - {{asset}}", + "send-transaction": "कारोबार पठाउनुहोस्", + "sent-at": "मा पठाइएको", + "set-a-topic": "Cipta topik", + "settings": "सेटिङ्गहरु", + "share": "Kongsi", + "share-chat": "Kongsi perbualan", + "share-dapp-text": "Lihat DApp yang saya gunakan di Status: {{link}}", + "share-link": "Kongsi pautan", + "share-my-profile": "Kongsi profil saya", + "share-profile-link": "Kongsi alamat profil", + "share-public-chat-text": "Lihat perbualan kumpulan ini di Status: {{link}}", + "sharing-copied-to-clipboard": "क्लिपबोर्डमा प्रतिलिपि गरियो", + "sharing-copy-to-clipboard": "क्लिप्बोर्डमा प्रतिलिपि राख्नुहोस्", + "sharing-share": "बांड्नुहोस् ॰॰॰", + "show-less": "Paparkan dengan kurang", + "show-more": "Paparkan lagi", + "show-qr": "QR देखाउने", + "sign-message": "Tandatangan Mesej", + "sign-you-in": "Mendaftar anda masuk...", + "soon": "Akan datang", + "specify-name": "एक नाम निर्दिष्ट गर्नुहोस्", + "specify-network-id": "Tetapkan id rangkaian", + "specify-rpc-url": "RPC URL निर्दिष्ट गर्नुहोस्", + "start-chat": "च्याट सुरू गर्नुहोस्", + "start-conversation": "कुराकानी सुरु गर्नुहोस्", + "start-group-chat": "Mulakan perbualan kumpulan", + "start-new-chat": "Mulakan perbualan baru", + "status": "स्टेटस", + "status-confirmed": "पुष्टि भयो", + "status-hardwallet": "Dompet fizikal Status", + "status-pending": "बाँकी छ", + "status-sent": "पठाइसकेको", + "status-tx-not-found": "TX फेला परेन", + "step-i-of-n": "Langkah {{step}} daripada {{number}}", + "submit-bug": "Hantar laporan kerentanan", + "success": "Berjaya", + "sync-in-progress": "एकनास बनाइंदै छ ॰॰॰", + "sync-synced": "एकनास छ", + "test-networks": "परीक्षण नेटवर्कहरू", + "text-input-disabled": "कृपया एक क्षण प्रतीक्षा गर्नुहोस् ...", + "to": "तर्फ", + "transaction": "कारोबार", + "transaction-description": "Transaksi dengan 12 pengesahan boleh dianggap tidak dapat diubah lagi", + "transaction-details": "लेनदेन विवरणहरू", + "transaction-failed": "Transaksi gagal", + "transaction-history": "Sejarah Transaksi", + "transaction-request": "Permintaan Transaksi", + "transaction-sent": "कारोबार पठाइयो", + "transactions": "Transaksi", + "transactions-filter-select-all": "Pilih semua", + "transactions-filter-title": "Tapis sejarah", + "transactions-history": "Sejarah transaksi", + "transactions-history-empty": "तपाईको इतिहासमा अझै कुनै लेनदेन छैन", + "transactions-sign": "Ditandatangan", + "turn-nfc-on": "Hidupkan nfc", + "type": "Jenis", + "type-a-message": "सन्देश टाइप गरौं ॰॰॰", + "unable-to-read-this-code": "यो कोड पढ्न असमर्थ", + "unknown-status-go-error": "Ralat status-go yang tidak diketahui", + "url": "URL", + "usd-currency": "USD", + "validation-amount-invalid-number": "राशि वैध संख्या होइन", + "validation-amount-is-too-precise": "Jumlah terlalu banyak. Jumlah maksimum perpuluhan adalah {{decimals}} .", + "view-cryptokitties": "CryptoKitties मा हेर्नुहोस्", + "view-cryptostrikers": "Lihat di CryptoStrikers", + "view-etheremon": "Etheremon मा हेर्नुहोस्", + "view-profile": "Lihat profil", + "view-superrare": "Lihat di SuperRare", + "wallet": "वालेट", + "wallet-asset": "Aset", + "wallet-assets": "Aset", + "wallet-choose-recipient": "Pilih Penerima", + "wallet-collectibles": "Koleksi", + "wallet-insufficient-funds": "Kekurangan dana", + "wallet-insufficient-gas": "Tidak cukup ETH untuk gas", + "wallet-invalid-address": "अवैध ठेगाना: \n {{data}}", + "wallet-invalid-chain-id": "Rangkaian tidak sepadan: \n {{data}} tetapi rangkaian semasa adalah {{chain}}", + "wallet-request": "अनुरोध", + "wallet-send": "Hantar", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "वालेट सेटिङहरू", + "wallet-total-value": "Jumlah nilai", + "wallet-transaction-total-fee": "Jumlah Fi", + "wants-to-access-profile": "ingin mengakses profil anda", + "warning-message": "Maaf, kami menghadkan penghantaran mesej secara berturut-turut untuk mencegah spam. Sila cuba kembali sebentar lagi", + "web-view-error": "ओहोऽऽऽ, त्रुटि", + "word-n": "Perkataan #{{number}}", + "write-down-and-store-securely": "Tuliskan ini dan simpannya dengan selamat", + "wrong-password": "गलत पासवर्ड", + "wrong-word": "गलत शब्द", + "yes": "हो", + "You": "तपाईं", + "you-are-all-set": "Anda telah siap sedia!" +} diff --git a/translations/nl.json b/translations/nl.json new file mode 100644 index 00000000000..c375bf7110c --- /dev/null +++ b/translations/nl.json @@ -0,0 +1,1639 @@ +{ + "You": "Jij", + "about-app": "Over", + "about-key-storage-content": "Status heeft nooit toegang tot de private key. Maak een back-up van de seed phrase. Als je de telefoon verliest, is dit de enige manier om toegang te krijgen tot je keys.", + "about-key-storage-title": "Over key-opslag", + "about-names-content": "Niemand kan zich als jou voordoen! Je bent standaard anoniem en hoeft nooit je echte naam te onthullen. Je kunt tegen een kleine vergoeding een aangepaste naam registreren.", + "about-names-title": "Namen kunnen niet veranderd worden.", + "about-sharing-data": "Over delen van data", + "accept": "Accepteren", + "accept-and-add": "Accepteren en toevoegen", + "accept-and-continue": "Accepteren en doorgaan", + "accept-and-share-address": "Accepteer en deel adres", + "accept-new-chats-from": "Accepteer nieuwe chats van", + "accept-status-tos-prefix": "Status accepteren", + "access-existing-keys": "Toegang tot bestaande keys", + "access-key": "Toegang tot key", + "account-added": "Account toegevoegd", + "account-color": "Accountkleur", + "account-content": "Accounts in Status kun je vergelijken met bankrekeningen. Net als een bankrekening heeft een account een adres en een saldo; Je gebruikt deze account om transacties te doen op Ethereum. Je kunt meerdere accounts in je wallet hebben. Allemaal toegankelijk door Status te ontgrendelen.", + "account-exists-title": "Account bestaat al", + "account-is-used": "Het account wordt gebruikt met Dapps in de browser.", + "account-name": "Accountnaam", + "account-settings": "Account instellingen", + "account-title": "Account", + "accounts": "Accounts", + "actions": "Acties", + "active-online": "Online", + "active-unknown": "Onbekend", + "activity": "Activiteit", + "add": "Toevoegen", + "add-a-watch-account": "Voeg een watch-only adres toe", + "add-account": "Een account toevoegen", + "add-account-description": "Je kunt elk type Ethereum-account importeren om het aan je Status-wallet toe te voegen", + "add-account-incorrect-password": "Wachtwoord lijkt onjuist te zijn. Voer wachtwoord in dat je gebruikt om app te ontgrendelen.", + "add-an-account": "Een account toevoegen", + "add-bootnode": "Bootnode toevoegen", + "add-contact": "Contact toevoegen", + "add-custom-token": "Aangepaste token toevoegen", + "add-favourite": "Favoriet toevoegen", + "add-mailserver": "Toevoegen Status-node", + "add-members": "Leden toevoegen", + "add-network": "Toevoegen netwerk", + "add-new-contact": "Nieuw contact toevoegen", + "add-nickname": "Voeg een bijnaam toe (optioneel)", + "add-private-key-account": "Account toevoegen van private-key", + "add-seed-account": "Account toevoegen met seed phrase ", + "add-to-contacts": "Toevoegen aan contacten", + "add-to-contacts-text": "Door een gebruiker toe te voegen aan uw contactenlijst, deelt je jouw wallet-adres met hen.", + "add-to-favourites": "Toevoegen aan favorieten", + "add-watch-account": "Voeg een watch-only account toe", + "address": "Adres", + "address-or-ens-name": "Adres of ENS-naam", + "address-received": "Adres ontvangen", + "address-request-accepted": "Adresverzoek geaccepteerd", + "address-requested": "Adres verzocht", + "advanced": "Gevorderd", + "advanced-settings": "Geavanceerde instellingen", + "advertiser-description": "Je hebt Status dankzij een partner ontdekt. Vind je het erg als Status je IP-adres één keer controleert, zodat ze worden beloond? Deze informatie wordt nergens anders voor gebruikt en wordt na 7 dagen volledig verwijderd.", + "advertiser-starter-pack-accept": "Accepteren", + "advertiser-starter-pack-decline": "Afwijzen", + "advertiser-starter-pack-description": "Hier is wat crypto om je op weg te helpen! Gebruik het voor stickers, een ENS naam en om dapps te proberen", + "advertiser-starter-pack-title": "Starterspakket", + "advertiser-title": "Privacy is standaard", + "agree-by-continuing": "Door verder te gaan ga je akkoord\n met onze ", + "all": "Alle", + "allow": "Toestaan", + "allow-and-send": "Toestaan en verzenden", + "allow-mention-notifications": "Toon @ vermeldingen", + "allowing-authorizes-this-dapp": "Toestaan autoriseert deze DApp om je wallet-adres op te halen en Web3 in te schakelen", + "already-have-asset": "Je hebt deze asset al", + "amount": "Bedrag", + "anyone": "Iedereen", + "appearance": "Thema", + "apply": "Toepassen", + "are-you-sure": "Weet je het zeker?", + "are-you-sure-description": "De seed-phrase kun je hierna niet meer zien", + "are-you-sure-to-cancel": "Weet je zeker dat je wilt annuleren?", + "are-you-sure?": "Weet je het zeker?", + "ask-in-status": "Stel een vraag of meld een bug", + "at": "op", + "attribution-received": "{{attrib}} van {{max}} ontvangen bonussen", + "audio": "Audio", + "audio-recorder": "Recorder", + "audio-recorder-error": "Recorder fout", + "audio-recorder-max-ms-reached": "Maximale opnametijd bereikt", + "audio-recorder-permissions-error": "Je moet toestemming geven om audioberichten te sturen", + "authorize": "Machtigen", + "available": "Beschikbaar", + "available-participants": { + "one": "Je kan nog één deelnemer selecteren", + "other": "Je kan {{count}} deelnemers selecteren" + }, + "back": "Terug", + "back-up": "Maak back-up", + "back-up-seed-phrase": "Seed phrase", + "back-up-your-seed-phrase": "Maak een back-up van je seed-phrase", + "backup-disabled": "Uitgeschakeld", + "backup-recovery-phrase": "Back up seed phrase", + "bad-fees-description": "Je prioriteitstarief ligt onder onze voorgestelde parameters.", + "balance": "Balans", + "begin-set-up": "Start instellen", + "below-base-fee": "maximale tarief onder base fee", + "biometric-auth-android-sensor-desc": "Aanraaksensor", + "biometric-auth-android-sensor-error-desc": "Mislukt", + "biometric-auth-android-title": "Verificatie vereist", + "biometric-auth-confirm-logout": "Opnieuw inloggen", + "biometric-auth-confirm-message": "Biometrische verificatie is vereist om door te gaan, zo niet mogelijk, ontgrendel je keys met wachtwoord of passcode", + "biometric-auth-confirm-title": "Je moet authenticeren!", + "biometric-auth-confirm-try-again": "Probeer opnieuw", + "biometric-auth-error": "Kan geen biometrische verificatie uitvoeren ({{code}})", + "biometric-auth-login-error-title": "Biometrische authenticatiefout", + "biometric-auth-login-ios-fallback-label": "Voer wachtwoord in", + "biometric-auth-reason-login": "In Status inloggen", + "biometric-auth-reason-verify": "Verifieer verificatie", + "biometric-disable-bioauth": "{{bio-type-label}} uitschakelen", + "biometric-disable-password-description": "Als j dit uitschakelt, zult je ook ", + "biometric-disable-password-title": "Wachtwoord opslaan uitschakelen", + "biometric-enable": "Als je niet elke keer je wachtwoord wilt invoeren om toegang te krijgen tot de app, schakel je {{bio-type-label}} inloggen in", + "biometric-enable-button": "{{bio-type-label}} inschakelen", + "biometric-enable-keycard": "Als je niet elke keer je Keycard wilt gebruiken om toegang te krijgen tot de app, schakel dan {{bio-type-label}} inloggen", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Vingerafdruk", + "biometric-secure-with": "Beveilig met {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39-wachtwoord", + "blank-keycard-text": "Je kunt pas doorgaan met je keycard nadat je keys en een naam hebt aangemaakt", + "blank-keycard-title": "Het lijkt erop dat je een blanco keycard hebt gebruikt", + "block": "Blokkeer", + "block-contact": "Blokkeer deze gebruiker", + "block-contact-details": "Door te blokkeren worden vorige berichten van deze gebruiker verwijderd en kunnen nieuwe berichten je niet meer bereiken", + "blocked-users": "Geblokkeerde gebruikers", + "bootnode-address": "Bootnode-adres", + "bootnode-details": "Bootnode-gegevens", + "bootnode-format": "enode:\/\/{enode-id}@{ip-adres}:{poort}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes ingeschakeld", + "bootnodes-settings": "Bootnodes-instellingen", + "browsed-websites": "Browsergeschiedenis verschijnt hier", + "browser": "Browser", + "browser-not-secure": "De verbinding is niet veilig! Teken geen transacties en verstuur geen persoonlijke gegevens via deze site.", + "browser-secure": "De verbinding is veilig. Zorg ervoor dat je deze site echt vertrouwt voordat je transacties ondertekent of persoonlijke gegevens invoert.", + "browsers": "Browsers", + "browsing-cancel": "Annuleren", + "browsing-open-in-android-web-browser": "Open in Android", + "browsing-open-in-ios-web-browser": "Open in iOS", + "browsing-open-in-status": "Open in Status", + "browsing-site-blocked-description1": "We hebben mogelijk schadelijke activiteiten vanaf dit adres waargenomen. Om jou en je wallet te beschermen, voorkomen we verdere navigatie.\n\nAls je denkt dat dit een fout is, laat het ons weten in de ", + "browsing-site-blocked-description2": " publieke chat.", + "browsing-site-blocked-go-back": "Ga terug", + "browsing-site-blocked-title": "Deze site is geblokkeerd", + "browsing-title": "Bladeren", + "bug-report": "Meld een bug", + "build-yourself": "Om de app te gebruiken zonder deze Gebruiksvoorwaarden, kun je jouw eigen versie bouwen", + "buy-crypto": "Crypto kopen", + "buy-crypto-choose-a-service": "Selecteer een service die u wilt gebruiken om crypto te kopen", + "buy-crypto-description": "Vind een dapp om nu crypto te kopen", + "buy-crypto-leaving": "U verlaat Status en gaat naar een website van een derde partij om uw aankoop te voltooien", + "buy-crypto-title": "Het lijkt erop dat je wallet leeg is", + "camera-access-error": "Om de vereiste cameratoestemming te verlenen, ga je naar je systeeminstellingen en zorg je ervoor dat Status > Camera is geselecteerd.", + "can-not-add-yourself": "Dat ben jij, om een chat te starten, kies iemand anders", + "can-send-messages": "Je kunt nieuwe berichten verzenden en ontvangen", + "cancel": "Annuleren", + "cancel-keycard-setup": "Annuleren Keycard instellen", + "cancelling": "Annuleren", + "cannot-read-card": "Kan card niet lezen.\nHoudt het tegen de achterkant van je telefoon", + "cannot-use-default-pin": "Passcode 000000 is niet toegestaan.\nGebruik een ander nummer", + "cant-open-public-chat": "Kan geen publieke chat openen", + "cant-report-bug": "Kan een bug niet melden", + "card-is-blank": "Deze card is leeg", + "card-reseted": "Card is gereset", + "card-unpaired": "Card is ontkoppeld van het huidige apparaat", + "category": "Categorie", + "category-title": "Categorie titel", + "change-fleet": "Verander fleet in {{fleet}}", + "change-logging-enabled": "Weet je zeker dat je loggen wilt {{enable}}?", + "change-pairing": "Wijzig koppelcode", + "change-pairing-description": "Het wijzigen van de koppelcode heeft geen invloed op de huidige koppelingen. Voor elke nieuwe koppeling is echter de nieuwe code vereist.", + "change-pairing-title": "Maak een nieuwe koppelcode", + "change-passcode": "Toegangscode wijzigen", + "change-password": "Wachtwoord wijzigen", + "change-pin": "Wijzig 6-cijferige passcode", + "change-puk": "Wijzig 12-cijferige PUK", + "change-tip": "Aanpassen fooi", + "changed-amount-warning": "Bedrag is gewijzigd van {{old}} in {{new}}", + "changed-asset-warning": "Asset is gewijzigd van {{old}} in {{new}}", + "chaos-mode": "Chaos-modus", + "chaos-unicorn-day": "Chaos Unicorn-dag", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Privé chatten en transacties doen met vrienden", + "chat-is-a-contact": "Contact", + "chat-is-not-a-contact": "Geen contactpersoon", + "chat-key": "Chat-key", + "chat-key-content": "Berichten op het Status-chatprotocol worden verzonden en ontvangen met behulp van encryptie-keys. De publieke chat-key is een reeks tekens die je met anderen deelt, zodat ze jou in Status berichten kunnen sturen.", + "chat-key-title": "Chat-key", + "chat-link-previews": "Chat-link previews", + "chat-name": "Chatnaam", + "chat-name-content": "Drie willekeurige woorden, algoritmisch afgeleid van je chat-key en gebruikt als je standaardalias in de chat. Chatnamen zijn volledig uniek; geen enkele andere gebruiker kan dezelfde drie woorden hebben.", + "chat-name-title": "Chatnaam", + "chat-notification-preferences": "Meldingsinstellingen", + "chat-settings": "Chat-instellingen", + "chats": "Chats", + "check-on-opensea": "Controleer op opensea", + "check-your-recovery-phrase": "Controleer je seed phrase", + "choose-actions": "Selecteer actie", + "choose-authentication-method": "Kies een verificatiemethode", + "choose-new-location-for-keystore": "Selecteer een nieuwe locatie om je keystore-bestand op te slaan", + "choose-storage": "Selecteer opslag", + "clear": "Wissen", + "clear-all": "Alles wissen", + "clear-history": "Wissen geschiedenis", + "clear-history-action": "Wissen", + "clear-history-confirmation": "Wissen geschiedenis?", + "clear-history-confirmation-content": "Weet je zeker dat je deze chatgeschiedenis wilt wissen?", + "clear-history-title": "Wissen geschiedenis?", + "close": "Sluiten", + "close-all": "Sluit alles", + "close-app-button": "Bevestig", + "close-app-content": "De app zal stoppen en sluiten. Wanneer je de app heropent, wordt het geselecteerde netwerk gebruikt", + "close-app-title": "Waarschuwing!", + "command-button-send": "Verzenden", + "communities": "Communities", + "communities-alpha": "Communities (alfa)", + "communities-enabled": "Communities ingeschakeld", + "communities-verified": "✓ Geverifieerde Status Community", + "community": "Community", + "community-color": "Community-kleur", + "community-color-placeholder": "Kies een kleur", + "community-edit-title": "Bewerk community", + "community-image-pick": "Kies een afbeelding", + "community-image-remove": "Verwijderen", + "community-image-take": "Neem foto", + "community-info": "Community-info", + "community-info-not-found": "Community-informatie niet gevonden", + "community-invite-title": "Uitnodigen", + "community-key": "Community-private-key", + "community-key-placeholder": "Typ je community-private-key", + "community-link": "Communitylink", + "community-members": { + "one": "{{count}} deelnemer", + "other": "{{count}} deelnemers" + }, + "community-members-title": "Deelnemers", + "community-message-preview": "Uitnodiging om deelnemer te worden van {{community-name}}", + "community-private-key": "Community private-key", + "community-requests-to-join-title": "Deelnameverzoeken", + "community-roles": "Rollen", + "community-share-title": "Delen", + "community-thumbnail-image": "Miniatuurafbeelding", + "community-thumbnail-upload": "Uploaden", + "complete-hardwallet-setup": "Deze card is nu gekoppeld. Je hebt het nodig om transacties te ondertekenen en je keys te ontgrendelen", + "completed": "Voltooid", + "confirm": "Bevestig", + "confirm-new-password": "Bevestig nieuw wachtwoord", + "confirm-pairing-code-placeholder": "Bevestig je koppelcode ...", + "confirm-password-placeholder": "Bevestig je wachtwoord...", + "confirmation-request": "Bevestigingsverzoek", + "confirmations": "Bevestigingen", + "confirmations-helper-text": "Wanneer de transactie 12 bevestigingen heeft kun je het als verrekend beschouwen.", + "connect": "Verbinden", + "connect-mailserver-content": "Verbinden met {{name}} ?", + "connect-wallet": "Wallet verbinden", + "connected": "Verbonden", + "connected-to": "Verbonden met", + "connecting": "Verbinden...", + "connecting-requires-login": "Verbinding maken met een ander netwerk vereist inloggen", + "connection-status": "Verbindingsstatus", + "connection-with-the-card-lost": "Verbinding met de card\n is verloren", + "connection-with-the-card-lost-setup-text": "Om met instellen verder te gaan houd je de card tegen de achterkant van de telefoon en zorg je ervoor dat de card in contact blijft met de telefoon.", + "connection-with-the-card-lost-text": "Om verder te gaan, houd je de card tegen de achterkant van de telefoon", + "contact-code": "Chat-key", + "contact-s": { + "one": "contact", + "other": "contacten" + }, + "contacts": "Contacten", + "contacts-descr": "Je contacten verschijnen hier. Je ontvangt statusupdates van iedereen die u als contactpersoon toevoegt", + "contacts-empty": "Contacten met ENS-namen verschijnen hier", + "continue": "Doorgaan", + "continue-anyway": "Toch doorgaan", + "contract-address": "Contract adres", + "contract-interaction": "Contract-interactie", + "copy-info": "Kopieer informatie", + "copy-qr": "Kopieer code", + "copy-to-clipboard": "Kopiëren", + "copy-transaction-hash": "Kopieer transactie-ID", + "cost-fee": "Kosten\/Tarief", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Maken", + "create-a-pin": "Maak een 6-cijferige passcode", + "create-a-puk": "Maak een 12-cijferige PUK-code", + "create-category": "Categorie maken", + "create-channel": "Maak een kanaal", + "create-channel-title": "Nieuw kanaal", + "create-community": "Maak een community", + "create-group-chat": "Maak groepschat", + "create-multiaccount": "Keys aanmaken", + "create-new-key": "Nieuwe key aanmaken", + "create-pin": "Maak 6-cijferige passcode", + "create-pin-description": "Je hebt je card + deze 6-cijferige passcode nodig om Status te ontgrendelen en transacties te bevestigen", + "created-group-chat-description": "Je hebt de groep {{group-name}} gemaakt", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Valuta", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghaanse Afghani", + "currency-display-name-ars": "Argentijnse Peso", + "currency-display-name-aud": "Australische Dollar", + "currency-display-name-bbd": "Barbados Dollar", + "currency-display-name-bdt": "Bengalese Taka", + "currency-display-name-bgn": "Bulgaarse Lev", + "currency-display-name-bhd": "Bahreinse Dinar", + "currency-display-name-bnd": "Brunei Darussalam-Dollar", + "currency-display-name-bob": "Boliviaanse Boliviano", + "currency-display-name-brl": "Braziliaanse Reaal", + "currency-display-name-btn": "Bhutaanse Ngultrum", + "currency-display-name-cad": "Canadese Dollar", + "currency-display-name-chf": "Zwitserse Frank", + "currency-display-name-clp": "Chileense Peso", + "currency-display-name-cny": "Chinese Yuan Renminbi", + "currency-display-name-cop": "Colombiaanse Peso", + "currency-display-name-crc": "Costa Ricaanse Colon", + "currency-display-name-czk": "Tsjechische Kroon", + "currency-display-name-dkk": "Deense Kroon", + "currency-display-name-dop": "Dominicaanse Republiek Peso", + "currency-display-name-egp": "Egyptische Pond", + "currency-display-name-etb": "Ethiopische Birr", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Britse Pond", + "currency-display-name-gel": "Georgische Lari", + "currency-display-name-ghs": "Ghanese Cedi", + "currency-display-name-hkd": "Hong Kong Dollar", + "currency-display-name-hrk": "Kroatische Kuna", + "currency-display-name-huf": "Hongaarse Forint", + "currency-display-name-idr": "Indonesische Rupiah", + "currency-display-name-ils": "Israël Shekel", + "currency-display-name-inr": "Indiase Roepie", + "currency-display-name-isk": "IJslandse Kroon", + "currency-display-name-jmd": "Jamaicaanse Dollar", + "currency-display-name-jpy": "Japanse Yen", + "currency-display-name-kes": "Keniaanse Shilling", + "currency-display-name-krw": "Zuid-Koreaanse Won", + "currency-display-name-kwd": "Koeweitse Dinar", + "currency-display-name-kzt": "Kazachstan Tenge", + "currency-display-name-lkr": "Sri Lankaanse Roepie", + "currency-display-name-mad": "Marokkaanse Dirham", + "currency-display-name-mdl": "Moldavische Leu", + "currency-display-name-mur": "Mauritiaanse Roepie", + "currency-display-name-mwk": "Malawiaanse Kwacha", + "currency-display-name-mxn": "Mexicaanse Peso", + "currency-display-name-myr": "Maleise Ringgit", + "currency-display-name-mzn": "Mozambique Metical", + "currency-display-name-nad": "Namibische Dollar", + "currency-display-name-ngn": "Nigeriaanse Naira", + "currency-display-name-nok": "Noorse Kroon", + "currency-display-name-npr": "Nepalese Roepie", + "currency-display-name-nzd": "Nieuw Zeelandse Dollar", + "currency-display-name-omr": "Omaanse Rial", + "currency-display-name-pen": "Peruaanse Sol", + "currency-display-name-pgk": "Papoea-Nieuw-Guinea Kina", + "currency-display-name-php": "Filipijnse Peso", + "currency-display-name-pkr": "Pakistaanse Roepie", + "currency-display-name-pln": "Poolse Zloty", + "currency-display-name-pyg": "Paraguayaanse Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Roemeense Leu", + "currency-display-name-rsd": "Servische Dinar", + "currency-display-name-rub": "Russische Roebel", + "currency-display-name-sar": "Saoedi-Arabië Riyal", + "currency-display-name-sek": "Zweedse Kroon", + "currency-display-name-sgd": "Singapore Dollar", + "currency-display-name-thb": "Thailand Baht", + "currency-display-name-try": "Turkse Lira", + "currency-display-name-ttd": "Trinidad en Tobago Dollar", + "currency-display-name-twd": "Taiwanese Dollar", + "currency-display-name-tzs": "Tanzaniaanse Shilling", + "currency-display-name-uah": "Oekraïnse Grivna", + "currency-display-name-ugx": "Oegandese Shilling", + "currency-display-name-usd": "Amerikaanse Dollar", + "currency-display-name-uyu": "Uruguayaanse Peso", + "currency-display-name-vef": "Venezolaanse Bolivar", + "currency-display-name-vnd": "Vietnamese Dong", + "currency-display-name-zar": "Zuid-Afrikaanse Rand", + "current": "Huidig", + "current-average-tip": "Huidige gemiddelde fooi", + "current-base-fee": "Huidige base fee", + "current-minimum-tip": "Huidige minimum fooi", + "current-network": "Huidig netwerk", + "current-password": "Huidig wachtwoord", + "current-pin": "Voer 6-cijferige passcode in", + "current-pin-description": "Voer de 6-cijferige passcode in om door te gaan", + "custom": "Aangepast", + "custom-networks": "Aangepaste netwerken", + "custom-node": "Je gebruikt een aangepast RPC-eindpunt. Uw lokale transfergeschiedenis is mogelijk onvolledig.", + "custom-seed-phrase": "Afwijkende seed phrase", + "custom-seed-phrase-text-1": "De seed phrase komt niet overeen met ons ondersteunende woordenboek. Controleer op verkeerd gespelde woorden.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Accepteren en openen", + "dapp-starter-pack-description": "Hier is wat crypto om je op weg te helpen! Gebruik het om stickers, een ENS naam te krijgen en dapps te proberen", + "dapp-starter-pack-title": "Startpakket", + "dapp-would-like-to-connect-wallet": "wil graag verbinden met", + "dapps": "ÐApps", + "dapps-permissions": "DApp-permissies", + "dark": "Donker", + "data": "Gegevens", + "data-collected": "Verzamelde data", + "data-collected-subtitle": "Onderstaande tabel toont de exacte data die wordt opgeslagen en verzonden. Data wordt gevalideerd volgens openbare regels om ervoor te zorgen dat er geen gevoelige data wordt verzonden. Niet vertrouwen, verifiëren.", + "data-syncing": "Gegevens synchroniseren", + "database-reset-content": "Chats, contacten en instellingen zijn verwijderd. Je kunt het account gebruiken met je Keycard", + "database-reset-title": "Database resetten", + "database-reset-warning": "Database wordt gereset. Chats, contacten en instellingen worden verwijderd", + "datetime-ago": "geleden", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "dag", + "other": "dagen" + }, + "datetime-day-short": { + "one": "d", + "other": "d" + }, + "datetime-hour": { + "one": "uur", + "other": "uren" + }, + "datetime-hour-short": { + "one": "u", + "other": "u" + }, + "datetime-minute": { + "one": "minuut", + "other": "minuten" + }, + "datetime-minute-short": { + "one": "m", + "other": "m" + }, + "datetime-second": { + "one": "seconde", + "other": "seconden" + }, + "datetime-second-short": { + "one": "s", + "other": "s" + }, + "datetime-today": "vandaag", + "datetime-yesterday": "gisteren", + "decimals": "Decimalen", + "decline": "Afwijzen", + "decryption-failed-content": "Er is een fout opgetreden bij het decoderen van je gegevens. Mogelijk moet je de oude gegevens wissen en een nieuwe account aanmaken. Tik op \"Toepassen\" om te wissen of \"Annuleren\" om opnieuw te proberen", + "default": "Standaard", + "default-assets": "Standaard ERC20 en ERC721", + "default-sync-period": "Synchronisatie geschiedenis voor", + "delete": "Verwijderen", + "delete-account": "Account verwijderen", + "delete-and-leave-group": "Groep verwijderen en verlaten", + "delete-bootnode": "Verwijder bootnode", + "delete-bootnode-are-you-sure": "Weet je zeker dat je deze bootnode wilt verwijderen?", + "delete-bootnode-title": "Verwijder bootnode", + "close-chat": "Chat verwijderen", + "close-chat-confirmation": "Weet je zeker dat je deze chat wilt verwijderen?", + "delete-confirmation": "Verwijderen?", + "delete-keys-keycard": "Verwijder keys van Keycard", + "delete-mailserver": "Verwijderen Status-node", + "delete-mailserver-are-you-sure": "Weet je zeker dat je deze status-node wilt verwijderen?", + "delete-mailserver-title": "Status-node verwijderen", + "delete-message": "Verwijder bericht", + "delete-my-account": "Mijn account verwijderen", + "delete-my-profile": "Mijn profiel verwijderen", + "delete-network-confirmation": "Weet je zeker dat je dit netwerk wilt verwijderen?", + "delete-network-error": "Maak verbinding met een ander netwerk voordat je deze verwijdert", + "delete-network-title": "Netwerk verwijderen?", + "delete-profile": "Profiel verwijderen", + "delete-profile-warning": "Waarschuwing: als je de seed phrase niet hebt opgeschreven, verlies je toegang tot je middelen nadat je het profiel hebt verwijderd", + "deny": "Weigeren", + "derivation-path": "Afgeleid pad", + "describe-channel": "Kanaal beschrijven", + "description": "Beschrijving", + "dev-mode": "Ontwikkelmodus", + "dev-mode-settings": "Instellingen ontwikkelingsmodus", + "device-syncing": "Apparaat synchroniseren", + "devices": "Apparaten", + "disable": "uitschakelen", + "disable-all": "Alles uitschakelen", + "disabled": "Uitgeschakeld", + "disconnected": "Chat offline", + "discover": "Ontdek", + "dismiss": "Afwijzen", + "done": "Klaar", + "dont-ask": "Vraag niet opnieuw", + "edit": "Bewerken", + "edit-channel-title": "Kanaal bewerken", + "edit-chats": "Chats bewerken", + "edit-community": "Bewerk community", + "edit-favourite": "Favoriet bewerken", + "edit-group": "Groep bewerken", + "edit-profile": "Profiel bewerken", + "edited": "Bewerkt", + "editing-message": "Bericht bewerken", + "empty-activity-center": "Je chat-berichten\nverschijnen hier", + "empty-chat-description": "Er zijn nog geen berichten \nin deze chat", + "empty-chat-description-community": "Het is hier de afgelopen {{quiet-hours}} stil geweest.", + "empty-chat-description-one-to-one": "Alle berichten die je hier verzendt, zijn gecodeerd en kunnen alleen worden gelezen door jou en", + "empty-chat-description-public": "Het is hier de afgelopen {{quiet-hours}} stil geweest. Start het gesprek of ", + "empty-chat-description-public-share-this": "deel deze chat.", + "empty-keycard-required": "Vereist een lege keycard", + "empty-pending-invitations-descr": "Mensen die met groep willen deelnemen via\neen uitnodigingslink zullen hier verschijnen", + "empty-tab": "Leeg tabblad", + "enable": "Inschakelen", + "enable-all": "Alles inschakelen", + "enable-link-previews": "Inschakelen link-previews in chat?", + "encrypt-with-password": "Versleutel met wachtwoord", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Gebruikersnaam toevoegen", + "ens-agree-to": "Ga akkoord met ", + "ens-chat-settings": "Chat-instellingen", + "ens-custom-domain": "Aangepast domein", + "ens-custom-username-hints": "Typ de volledige gebruikersnaam inclusief het aangepaste domein zoals username.domain.eth", + "ens-custom-username-taken": "Gebruikersnaam is niet van jou :(", + "ens-deposit": "Storting", + "ens-dismiss-message": "Klik hier om te sluiten", + "ens-displayed-with": "Uw berichten worden aan anderen weergegeven met", + "ens-get-name": "Een universele gebruikersnaam aanvragen", + "ens-got-it": "Oké, ik snap het", + "ens-locked": "Gebruikersnaam vergrendeld. Je kunt het niet vrijgeven tot {{date}}", + "ens-name-content": "Eigen alias voor je chats-key die je kunt registreren met de Ethereum Name Service. ENS-namen zijn gedecentraliseerde gebruikersnamen.", + "ens-name-not-found": "Kan ENS-naam niet vinden", + "ens-name-title": "ENS-naam", + "ens-network-restriction": "Alleen beschikbaar op Mainnet", + "ens-no-usernames": "Je hebt geen gebruikersnaam verbonden", + "ens-powered-by": "Mogelijk gemaakt door Ethereum Name Services", + "ens-primary-username": "Primaire gebruikersnaam", + "ens-register": "Registreren", + "ens-registration-failed": "Probeer opnieuw om de gebruikersnaam te registreren.", + "ens-registration-failed-title": "Transactie mislukt", + "ens-registration-failure": "Registratie mislukt", + "ens-registration-in-progress": "Registratie bezig ...", + "ens-release-username": "Gebruikersnaam vrijgeven", + "ens-remove-hints": "Verwijderen zal gebruikersnaam van de key losmaken.", + "ens-remove-username": "Gebruikersnaam verwijderen", + "ens-saved": " is nu verbonden met je key en kan worden gebruikt in Status.", + "ens-saved-title": "Gebruikersnaam toegevoegd", + "ens-show-username": "Mijn ENS-gebruikersnaam weergeven in chats", + "ens-terms-header": "Voorwaarden voor naamregistratie", + "ens-terms-point-1": "Middelen worden voor 1 jaar gestort. Je SNT-tokens worden vastgehouden, maar niet uitgegeven.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS-register).", + "ens-terms-point-2": "Na 1 jaar kun je de naam vrijgeven en je aanbetaling terugkrijgen, of geen actie ondernemen om de naam te behouden.", + "ens-terms-point-3": "Als de voorwaarden van het contract veranderen - bv. Status maakt contractupgrades - heeft de gebruiker het recht om de gebruikersnaam vrij te geven, ongeacht de vastgehouden tijd.", + "ens-terms-point-4": "De contractbeheerder heeft geen toegang tot jouw gestorte middelen. Ze kunnen alleen terug worden gestuurd naar het adres wat ze heeft verzonden.", + "ens-terms-point-5": "Je adres(sen) zullen publiekelijk worden gekoppeld met je ENS-naam.", + "ens-terms-point-6": "Gebruikersnamen worden gemaakt als subdomein-nodes van stateofus.eth en zijn onderworpen aan de ENS-smart-contract voorwaarden.", + "ens-terms-point-7": "Je machtigt het contract om namens jou SNT over te maken. Dit kan alleen gebeuren als je een transactie goedkeurt om het overmaken te autoriseren.", + "ens-terms-point-8": "Deze voorwaarden worden gegarandeerd door de smart-contract logica van adressen:", + "ens-terms-point-9": "{{address}} (Status GebruikersnaamRegistratie)", + "ens-terms-registration": "Voorwaarden voor naamregistratie", + "ens-test-message": "Hallo", + "ens-transaction-pending": "Transactie in afwachting...", + "ens-understand": "Ik begrijp dat mijn wallet-adres openbaar zal worden verbonden met mijn gebruikersnaam.", + "ens-username": "ENS gebruikersnaam", + "ens-username-already-added": "Gebruikersnaam is al verbonden met je chat-key en kan gebruikt worden in Status.", + "ens-username-available": "✓ Gebruikersnaam beschikbaar!", + "ens-username-connected": "Deze gebruikersnaam is jouw eigendom en is verbonden met de chat-key.", + "ens-username-connected-continue": "Ga door om `Mijn ENS-gebruikersnaam weergeven in chats` in te stellen.", + "ens-username-connected-with-different-key": "Doorgaan zal een transactie vereisen om gebruikersnaam te verbinden met uw huidige chat-key.", + "ens-username-connection-confirmation": "{{username}} wordt verbonden zodra de transactie is voltooid.", + "ens-username-hints": "Minimaal 4 tekens. Allen Latijnse letters, cijfers en kleine letters.", + "ens-username-invalid": "Alleen letters en cijfers.", + "ens-username-owned": "✓ Gebruikersnaam is jouw eigendom. ", + "ens-username-owned-continue": "Doorgaan zal deze gebruikersnaam verbinden met je chat-key.", + "ens-username-registration-confirmation": "Mooi! Je bezit {{username}} zodra de transactie voltooid is.", + "ens-username-taken": "Gebruikersnaam is al bezet :(", + "ens-username-you-can-follow-progress": "Je kunt de voortgang volgen in het Transactie Geschiedenis gedeelte van je wallet.", + "ens-usernames": "ENS gebruikersnamen", + "ens-usernames-details": "Registreer een universele gebruikersnaam om makkelijk door andere gebruikers herkend te worden", + "ens-want-custom-domain": "Ik bezit een naam op een ander domein", + "ens-want-domain": "Ik wil een stateofus.eth domein", + "ens-welcome-hints": "ENS-namen zetten die hele lange adressen om in unieke gebruikersnamen.", + "ens-welcome-point-customize": "Een ENS-naam kan je willekeurige drie-woorden-naam in de chat vervangen. Wees @jenaam in plaats van {{name}}.", + "ens-welcome-point-customize-title": "Je chatnaam aanpassen", + "ens-welcome-point-receive": "Anderen kunnen je middelen sturen via chat met één simpele stap.", + "ens-welcome-point-receive-title": "Ontvang transacties in de chat", + "ens-welcome-point-register": "Registreer éénmaal om naam voor altijd te behouden. Na 1 jaar kunt je de naam vrijgeven en je SNT terugkrijgen.", + "ens-welcome-point-register-title": "10 SNT om te registreren", + "ens-welcome-point-simplify": "Je kunt middelen ontvangen op je eenvoudig te delen ENS-naam in plaats van op je hexadecimale hash (0x ...).", + "ens-welcome-point-simplify-title": "Vereenvoudig je ETH-adres", + "ens-welcome-point-verify": "Je kunt al je gebruikersnamen verifiëren en toevoegen in de volgende stappen.", + "ens-welcome-point-verify-title": "Heeft u al een gebruikersnaam?", + "ens-your-username": "Je gebruikersnaam", + "ens-your-usernames": "Je gebruikersnamen", + "ens-your-your-name": "Je ENS-naam", + "enter-12-words": "Voer de 12 woorden van je seed phrase in, gescheiden door spaties", + "enter-a-private-key": "Private-key invoeren", + "enter-a-seed-phrase": "Seed phrase invoeren", + "enter-address": "Adres invoeren", + "enter-contact-code": "ENS (vitalik94) of chat-key (0x04...)", + "enter-pair-code": "Voer je koppelcode in", + "enter-pair-code-description": "De koppelcode werd aan je weergegeven tijdens instellen van de Keycard", + "enter-password": "Voer wachtwoord in", + "enter-password-migration-prompt": "Voer wachtwoord in om contacten, chats en instellingen samen met je keys te verplaatsen", + "enter-pin": "Voer 6-cijferige passcode in", + "enter-puk-code": "Voer de PUK-code in", + "enter-puk-code-description": "6-cijferige passcode is geblokkeerd.\n Voer de PUK-code in om de passcode te deblokkeren.", + "enter-recipient-address-or-username": "Voer adres of gebruikersnaam van de ontvanger in", + "enter-seed-phrase": "Seed phrase invoeren", + "enter-url": "URL invoeren", + "enter-user-pk": "Voer public-key gebruiker in", + "enter-watch-account-address": "Scan een QR-code\nof\nvoer adres in om te kijken", + "enter-word": "Woord invoeren", + "enter-your-code": "Voer je 6-cijferige code in", + "enter-your-password": "Voer je wachtwoord in", + "error": "Fout", + "error-unable-to-get-balance": "Kan geen saldo vinden", + "error-unable-to-get-prices": "Fout bij het omrekenen van valuta. Vernieuw je scherm om het opnieuw te proberen.", + "error-unable-to-get-token-balance": "Kan tokensaldo niet krijgen", + "errors": "Fouten", + "eth": "ETH", + "ethereum-account": "Ethereum-account", + "ethereum-address": "Ethereum-adres", + "ethereum-node-started-incorrectly-description": "Ethereum-node werd gestart met onjuiste configuratie, applicatie zal worden gestopt om daarvan te herstellen. Geconfigureerd netwerk id = {{network-id}}, daadwerkelijk = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ethereum-node onjuist gestart", + "etherscan-lookup": "Kijk op Etherscan", + "everyone": "Iedereen", + "expand-all": "Alles uitvouwen", + "export-account": "Account exporteren", + "export-key": "Exporteren private-key", + "external-storage-denied": "Toegang tot externe opslag is geweigerd", + "failed": "Mislukt", + "faq": "Vaak gestelde vragen", + "fast": "Snel", + "favourite": "Favoriet", + "favourite-description": "Je favoriete websites verschijnen hier", + "favourites": "Favorieten", + "favourites-empty": "Adressen toegevoegd aan favorieten verschijnen hier", + "fee-cap": "Tarieflimiet", + "fee-explanation": "Maximale totale prijs voor de transactie. Als de base fee van het blok dit overschrijdt, wordt deze opgenomen in een volgend blok met een lagere base fee.", + "fee-options": "Voorgestelde tariefopties", + "fetch-messages": "↓ Berichten ophalen", + "fetch-timeline": "↓ Ophalen", + "find": "Zoeken", + "finish": "Voltooien", + "finishing-card-setup": "Card-instellen voltooien", + "fleet": "Fleet", + "fleet-settings": "Fleet-instellingen", + "follow": "Volgen", + "follow-your-interests": "Spring in een publieke chat en ontmoet nieuwe mensen", + "free": "↓ Gratis", + "from": "Van", + "gas-amount-limit": "Limiet gas-bedrag", + "gas-limit": "Gas-limiet", + "gas-price": "Gas-prijs", + "gas-used": "Gas gebruikt", + "generate-a-key": "Keys aanmaken", + "generate-a-new-account": "Maak een account aan", + "generate-a-new-key": "Maak een nieuwe key aan", + "generate-account": "Keys aanmaken", + "generate-an-account": "Maak een account aan", + "generate-new-key": "Keys aanmaken", + "generating-codes-for-pairing": "> Downloaden productsoftware naar card\n > Genereren van ontgrendel & koppelcodes", + "generating-keys": "Keys genereren....", + "generating-mnemonic": "Seed phrase wordt aangemaakt", + "get-a-keycard": "Bestel een Keycard", + "get-started": "Starten", + "get-status-at": "Download Status op http:\/\/status.im", + "get-stickers": "Haal stickers", + "give-a-short-description": "Geef een korte beschrijving", + "give-a-short-description-community": "Geef het een korte beschrijving", + "give-permissions-camera": "Geef toestemming\nvoor toegang tot de camera", + "glossary": "Woordenlijst", + "go-to-settings": "Ga naar Instellingen...", + "got-it": "Begrepen", + "grant-face-id-permissions": "Om de vereiste toestemming voor Face ID te verlenen, ga je naar systeeminstellingen en zorg je ervoor dat Status > Face ID is geselecteerd", + "group-chat": "Groepschat", + "group-chat-admin": "Beheerder", + "group-chat-admin-added": "**{{member}}** is beheerder geworden", + "group-chat-all-contacts-invited": "Al uw contacten zitten al in de groep", + "group-chat-created": "**{{member}}** heeft de groep **{{name}}** gemaakt", + "group-chat-decline-invitation": "Uitnodiging afslaan", + "group-chat-member-added": "**{{member}}** is uitgenodigd", + "group-chat-member-joined": "**{{member}}** heeft zich bij de groep aangesloten", + "group-chat-member-removed": "**{{member}}** heeft de groep verlaten", + "group-chat-members-count": "{{selected}}\/ {{max}} deelnemers", + "group-chat-name-changed": "**{{member}}** heeft groepsnaam gewijzigd in **{{name}}**", + "group-chat-no-contacts": "Je hebt nog geen contacten.\n Nodig je vrienden uit om te chatten", + "group-info": "Groepsinfo", + "group-invite": "Groep-uitnodiging", + "group-invite-link": "Groep-uitnodigingslink", + "group-membership-request": "Groep deelnameverzoek", + "gwei": "Gwei", + "has-permissions": "heeft toestemming voor toegang", + "hash": "Hash", + "help": "hulp", + "help-capitalized": "Help", + "help-center": "Hulpcentrum", + "help-improve-status": "Help om Status te verbeteren", + "hide": "Verberg", + "hide-content-when-switching-apps": "Blokkeer screenshots maken", + "hide-content-when-switching-apps-ios": "Verberg preview", + "history": "Geschiedenis", + "history-nodes": "Status-nodes", + "hold-card": "Houd de card tegen de achterkant\n van je telefoon", + "home": "Home", + "hooks": "Hooks", + "how-it-works": "Hoe het werkt", + "http-gateway-error": "Oeps, verzoek mislukt!", + "identifier": "Identifier", + "image": "Afbeelding", + "image-remove-current": "Verwijder huidige foto", + "image-source-gallery": "Selecteer uit galerij", + "image-source-make-photo": "Vastleggen", + "image-source-title": "Foto bewerken", + "import": "Importeren", + "import-community": "Importeer een community", + "import-community-title": "Importeer een community", + "in-contacts": "In contacten", + "include": "Includeer", + "incoming": "Inkomend", + "incoming-transaction": "Inkomende transactie", + "incorrect-code": [ + "str", + "Sorry, de code was onjuist, voer het opnieuw in" + ], + "increase-gas": "Verhoog Gas", + "initialization": "Initialisatie", + "install": "↓ Installeer", + "intro-message1": "Welkom bij Status!\n Tik op dit bericht om je wachtwoord in te stellen en aan de slag te gaan.", + "intro-privacy-policy-note1": "Status verzamelt geen of profiteert niet van je persoonlijke gegevens. Door verder te gaan, ga je akkoord met het ", + "intro-privacy-policy-note2": "privacybeleid", + "intro-text": "Status is je toegangspoort tot het gedecentraliseerde web", + "intro-text1": "Chat via een peer-to-peer, versleuteld netwerk waar berichten niet gecensureerd of gehackt kunnen worden", + "intro-text2": "Verstuur en ontvang digitale assets overal ter wereld - geen bankrekening vereist", + "intro-text3": "Ontdek games, exchanges en sociale netwerken waar jij alleen eigenaar bent van je gegevens", + "intro-title1": "Echte privé-communicatie", + "intro-title2": "Veilige crypto-wallet", + "intro-title3": "Gedecentraliseerde apps", + "intro-wizard-text1": "Een set keys beheert je account. De keys staan op je telefoon, dus alleen jij kunt ze gebruiken", + "intro-wizard-text2": "Deze key wordt gebruikt voor chat. Het komt met een leesbare naam die niet kan worden veranderd.", + "intro-wizard-text3": "Als je een Keycard hebt, bewaar dan je keys daar voor extra veiligheid.", + "intro-wizard-text4": "Beveilig en versleutel je keys", + "intro-wizard-text6": "Status zal je melden over nieuwe berichten. Je kunt meldingsvoorkeuren later in de instellingen bewerken", + "intro-wizard-title-alt4": "Maak een wachtwoord", + "intro-wizard-title-alt5": "Bevestig je wachtwoord", + "intro-wizard-title1": "Ontvang je keys", + "intro-wizard-title2": "Kies een chatnaam", + "intro-wizard-title3": "Key-opslag selecteren", + "intro-wizard-title4": "Maak een 6-cijferige passcode", + "intro-wizard-title5": "Bevestig de passcode", + "intro-wizard-title6": "Meldingen inschakelen", + "introduce-yourself": "Stel jezelf voor met een kort bericht", + "invalid-address-qr-code": "Gescande QR-code bevat geen geldig adres", + "invalid-format": "Ongeldig formaat\nMoet {{format}} zijn", + "invalid-key-confirm": "Toepassen", + "invalid-key-content": "Database kan niet worden versleuteld omdat een bestand corrupt is. Je middelen en chat-key zijn veilig. Andere gegevens, zoals je chats en contacten, kunnen niet worden hersteld. \"{{erase-multiaccounts-data-button-text}}\" knop, zal alle andere gegevens verwijderen en geeft je toegang tot je middelen en het verzenden van berichten", + "invalid-number": "Ongeldig nummer", + "invalid-pairing-password": "Ongeldig koppel-wachtwoord", + "invalid-public-chat-topic": "Ongeldig publiek chatonderwerp", + "invalid-range": "Ongeldig formaat, moet tussen {{min}} en {{max}} liggen", + "invalid-username-or-key": "Ongeldige gebruikersnaam of chat key", + "invite": "Uitnodigen", + "invite-button": "Uitnodigen", + "invite-chat-accept": "Accepteren", + "invite-chat-accept-join": "Accepteren en toetreden", + "invite-chat-intro": "Je werd doorverwezen door een vriend om Status te installeren. Hier is wat crypto om je op weg te helpen! Gebruik het om een ENS-naam te registreren of een stickerpakket te kopen", + "invite-chat-name": "Verwijs een vriend door", + "invite-chat-pending": "In afwachting", + "invite-chat-rule": "Als je accepteert, wordt je vriend ook beloond met een crypto-doorverwijsbonus", + "invite-chat-starter-pack": "Starterspakket", + "invite-friends": "Vrienden uitnodigen", + "invite-instruction-fifth": "Je kunt er op ieder moment voor kiezen om je doorverwijsbonus in te wisselen.", + "invite-instruction-first": "Je stuurt een unieke uitnodigingslink naar je vriend om status te downloaden en te installeren", + "invite-instruction-fourth": "Je ontvangt je doorverwijsbonus en je vriend het starterspakket", + "invite-instruction-second": "Je vriend downloadt Status en maakt een account aan (op Android)", + "invite-instruction-third": "Er wordt een chat met je vriend gestart, waarin de doorverwijzing bevestigd wordt", + "invite-people": "Mensen uitnodigen", + "invite-privacy-policy-public": "Je hebt Status geïnstalleerd via een doorverwijs-link. Door deel te nemen aan deze chat, beloon je uw verwijzer toe en gaat u akkoord met de", + "invite-privacy-policy1": "Door te accepteren ga je akkoord met het doorverwijsprogramma", + "invite-privacy-policy2": "Algemene voorwaarden.", + "invite-public-chat-home": "Doorverwijsuitnodiging", + "invite-public-chat-intro": "Hier is wat crypto om je op weg te helpen! Gebruik het voor een ENS naam en stickers", + "invite-receive-account": "Account om doorverwijsbonus op te ontvangen", + "invite-reward": "Verdien crypto voor elke vriend die je uitnodigt!", + "invite-reward-friend": "Vriend:", + "invite-reward-friend-description": "Je vriend ontvangt een starterspakket dat bestaat uit enkele {{reward}} om aan de slag te gaan", + "invite-reward-friend-name": "Starterspakket", + "invite-reward-you": "Jij: ", + "invite-reward-you-description": "Nodig een vriend uit en ontvang {{reward}} als doorverwijsbonus. Gebruik het om stickers te krijgen, een ENS naam en probeer dapps", + "invite-reward-you-name": "Doorverwijsbonus", + "invite-select-account": "Selecteer een account om doorverwijsbonus te ontvangen", + "invite-warning": "Deze promotie is alleen geldig voor gebruikers van een Android toestel, die geen inwoner zijn van de VS. Vriend moet doorverwijzing binnen 7 dagen bevestigen", + "invited": "uitgenodigd", + "join": "Deelnemen", + "join-a-community": "of word lid van een community", + "join-group-chat": "Aan groep deelnemen", + "join-group-chat-description": "{{username}} heeft je uitgenodigd om deelnemer te worden van groep {{group-name}}", + "join-me": "Hey, doe mee met Status: {{url}}", + "join-new-private-chat": "Start een nieuwe privéchat", + "join-new-public-chat": "Deelnemen aan een publieke chat", + "joined": "Toegetreden", + "joined-group-chat-description": "Je bent deelnemer geworden van {{group-name}} via een uitnodiging van {{username}}", + "key": "Key", + "key-managment": "Key-beheer", + "key-on-device": "De private-key is opgeslagen op dit apparaat", + "keycard": "Keycard", + "keycard-access-reset": "Keycard-toegang is gereset", + "keycard-applet-install-instructions": "Om de applet te installeren volgt je de instructies op https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Beweeg de card om de NFC-lezer op uw apparaat te vinden", + "keycard-awaiting-title": "Nog steeds op zoek...", + "keycard-backup": "Maak een back-up Keycard", + "keycard-backup-success-body": "Back-upkaart maken is gelukt. Je kunt het nu met je account gebruiken, net als met de primaire kaart.", + "keycard-backup-success-title": "Back-up geslaagd", + "keycard-blocked": "Keycard is geblokkeerd.\nJe moet de card resetten om deze te kunnen blijven gebruiken.", + "keycard-can-use-with-new-passcode": "Je kunt deze card gebruiken met je nieuwe passcode", + "keycard-cancel-setup-text": "Hiermee wordt instellen van de keycard geannuleerd. Het wordt sterk aangeraden instellen af te ronden om de keycard te gebruiken. Wil je echt annuleren?", + "keycard-cancel-setup-title": "Gevaarlijke handeling", + "keycard-connected-description": "Probeer de card stil te houden", + "keycard-connected-title": "Verbonden", + "keycard-desc": "Heb je een Keycard? Bewaar je keys erop; je hebt ze nodig voor transacties", + "keycard-dont-ask-card": "Vraag niet om card om in te loggen", + "keycard-enter-new-passcode": "Voer een nieuwe passcode in {{step}} \/ 2", + "keycard-error-description": "Verbind de card opnieuw om door te gaan", + "keycard-error-title": "Verbinding verbroken", + "keycard-factory-reset": "Card terugzetten naar fabrieksinstellingen", + "keycard-factory-reset-text": "Als je dit uitvoert, worden alle mnemonic-phrases die op de card zijn opgeslagen, verwijderd. Zorg ervoor dat je een back-up hebt van de mnemonic-phrase die je met deze Keycard hebt gebruikt.", + "keycard-factory-reset-title": "Weet je zeker dat je een fabrieksreset wilt uitvoeren?", + "keycard-free-pairing-slots": "Keycard heeft {{n}} vrije koppelslots", + "keycard-has-multiaccount-on-it": "Deze card is vol. Elke card kan één key-paar bevatten", + "keycard-init-description": "Houdt de card nog eens tegen de achterkant van je telefoon om door te gaan", + "keycard-init-title": "Op zoek naar cards...", + "keycard-is-blocked-details": "Je kunt deze card niet langer gebruiken voor toegang of tekenen voor deze account. Er zijn te veel mislukte passcode- en PUK-pogingen geweest.", + "keycard-is-blocked-instructions": "Om toegang tot je account te krijgen moet je een fabrieksreset op de card uitvoeren. Tik op de onderstaande knop om de procedure te starten, je hebt jouw mnemonic-phrase nodig.", + "keycard-is-blocked-title": "Keycard is geblokkeerd", + "keycard-is-frozen-details": "Om je assets te beschermen, is je card bevroren. Reset de card om deze te deblokkeren en transacties te kunnen verzenden. Je kunt dit doen met jouw PUK of mnemonic-phrase.", + "keycard-is-frozen-factory-reset": "Reset met mnemonic", + "keycard-is-frozen-reset": "Reset met PUK", + "keycard-is-frozen-title": "Keycard is geblokkeerd", + "keycard-onboarding-finishing-header": "Afronden", + "keycard-onboarding-intro-header": "Bewaar je keys op Keycard", + "keycard-onboarding-intro-text": "Maak je klaar, dit kan een paar minuten duren, maar het is belangrijk om je account te beveiligen", + "keycard-onboarding-mnemonic-text": "Je hebt ook een stuk papier en een potlood nodig om je seed-phrase op te schrijven.", + "keycard-onboarding-pairing-header": "De card koppelen...", + "keycard-onboarding-pin-text": "Je moet een 6-cijferige toegangscode maken die wordt gebruikt om toegang tot je Keycard te beveiligen.", + "keycard-onboarding-preparing-header": "Card aan het voorbereiden...", + "keycard-onboarding-puk-code-header": "Schrijf de codes op\n en bewaar ze veilig", + "keycard-onboarding-recovery-phrase-description": "Je hebt deze seed phrase nodig om je key terug te krijgen. Schrijf het op. Bewaar het veilig, offline en apart van dit apparaat.", + "keycard-onboarding-recovery-phrase-header": "Maak een back up seed phrase", + "keycard-onboarding-recovery-phrase-text": "Alleen voor jouw ogen. Dit is de magische seed phrase die gebruikt wordt om je key aan te maken.", + "keycard-onboarding-start-header": "Houdt de card tegen de achterkant van je telefoon om te starten", + "keycard-onboarding-start-step1": "Maak een passcode", + "keycard-onboarding-start-step1-text": "Ongeveer 1 minuut. Maak een 6-cijferige passcode om je keys te versleutelen", + "keycard-onboarding-start-step2": "Schrijf de PUK en koppelcode op", + "keycard-onboarding-start-step2-text": "Ongeveer 1 minuut. Je hebt daar papier en potlood voor nodig", + "keycard-onboarding-start-step3": "Maak een back-up van de seed phrase", + "keycard-onboarding-start-step3-text": "Ongeveer 1 minuut. Ook papier en potlood zijn nodig", + "keycard-onboarding-start-text": "En houdt de card in contact met de telefoon tijdens het instellen. Instellen duurt ongeveer 4 minuten", + "keycard-processing-description": "probeer de kaar stil te houden", + "keycard-processing-title": "Verwerken...", + "keycard-recover": "verloren of bevroren card?", + "keycard-recover-text": "Als je de mnemonic-phrase hebt, kun je een nieuwe Keycard maken die aan dit account gekoppeld is. Je kunt een nieuwe Keycard gebruiken of een fabrieksreset uitvoeren op een bevroren Keycard.", + "keycard-recover-title": "Een nieuwe card voor dit account maken?", + "keycard-recovery-intro-button-text": "Start herstel", + "keycard-recovery-intro-header": "Herstel keys die op de keycard opgeslagen zijn", + "keycard-recovery-intro-text": "Als je eerder met een keycard keys hebt aangemaakt en deze nu op dit apparaat wilt gebruiken", + "keycard-recovery-no-key-header": "Er is hier niets om\nte herstellen", + "keycard-recovery-no-key-text": "Op je Keycard is geen key opgeslagen. Om deze te gebruiken, maak je een nieuwe key aan en kies je de Keycard om de key op te slaan", + "keycard-recovery-phrase-confirm-header": "Bevestig seed-phrase", + "keycard-recovery-phrase-confirmation-text": "Je krijgt geen tweede kans! Als je de toegang verliest, bijvoorbeeld door de keycard te verliezen, heb je alleen toegang tot je keys met de seed phrase. Alleen jij hebt de seed phrase. Schrijf het op. Hou het veilig.", + "keycard-recovery-phrase-confirmation-title": "Heb je de seed phrase opgeschreven?", + "keycard-recovery-success-header": "Je keys zijn\n met succes hersteld", + "keycard-redeem-title": "Inwisselen naar", + "keycard-redeem-tx": "Inwisselen assets", + "keycard-redeem-tx-desc": "Tik op de card om te tekenen en assets te ontvangen", + "keycard-reset-passcode": "Reset passcode", + "keycard-success-description": "Je mag de card nu verwijderen", + "keycard-success-title": "Succes", + "keycard-unauthorized-operation": "Je bent niet geautoriseerd om deze handeling uit te voeren.\nGebruik een geldige card en probeer het opnieuw.", + "keycard-upsell-subtitle": "Verbeterde veiligheid en gemak", + "language": "Taal", + "learn-more": "Meer leren", + "learn-more-about-keycard": "Meer informatie over Keycard", + "leave": "Verlaten", + "leave-chat": "Chat verlaten", + "leave-chat-confirmation": "Weet je zeker dat je de chat wilt verlaten?", + "leave-community": "Verlaat community", + "leave-confirmation": "Chat verlaten", + "leave-group": "Verlaat groep", + "left": "links", + "les-ulc": "LES \/ ULC", + "lets-go": "Let's go", + "light": "Licht", + "linked-on": "Gekoppeld op {{date}}", + "load-messages-before": "voor {{date}}", + "load-more-messages": "↓ Haal meer berichten op", + "load-more-timeline": "↓ Meer ophalen", + "loading": "Laden...", + "local-notifications": "Lokale meldingen", + "lock-app-with": "App vergrendelen met", + "log-level": "Log-niveau", + "log-level-settings": "Instellingen logniveau", + "logging": "Loggen", + "logging-enabled": "Loggen ingeschakeld?", + "login-pin-description": "Voer de 6-cijferige passcode in om je keys te ontgrendelen", + "logout": "Uitloggen", + "logout-app-content": "Het account wordt uitgelogd. Als je het weer ontgrendelt, wordt het geselecteerde netwerk gebruikt", + "logout-are-you-sure": "Weet je zeker dat je wilt\n uitloggen?", + "logout-key-management": "U moet uitloggen om toegang te krijgen tot het key-beheer.", + "logout-title": "Uitloggen?", + "looking-for-cards": "Op zoek naar cards...", + "lost-connection": "Verbinding verbroken", + "low-tip": "fooi is te laag", + "lower-than-average-tip": "lager dan gemiddelde fooi", + "mail-should-be-configured": "Mail client moet geconfigureerd zijn", + "mailserver-address": "Status-node adres", + "mailserver-automatic": "Automatische selectie", + "mailserver-automatic-switch-explanation": "Kies de snelst beschikbare Status-node", + "mailserver-connection-error": "Kon geen verbinding maken met Status-node", + "mailserver-content": "Een node in het Statusnetwerk dat berichten doorstuurt en opslaat, voor maximaal 30 dagen.", + "mailserver-details": "Status-node gegevens", + "mailserver-error-content": "De Status-node die je hebt geselecteerd kon niet worden bereikt.", + "mailserver-error-title": "Fout bij verbinden met Status-node", + "mailserver-format": "enode:\/\/{enode-id}:{wachtwoord}@{ip-adres}:{poort}", + "mailserver-pick-another": "Kies een andere Status-node", + "mailserver-reconnect": "Kan geen verbinding maken met Status-node. Tik om opnieuw te verbinden", + "mailserver-request-error-content": "De volgende fout werd door de Status-node teruggestuurd: {{error}}", + "mailserver-request-error-status": "Er is een fout opgetreden tijdens het ophalen van de geschiedenis, controleer de logs voor details", + "mailserver-request-error-title": "Status-node verzoekfout", + "mailserver-request-retry": "Verzoek opnieuw proberen", + "mailserver-retry": "Opnieuw proberen", + "mailserver-title": "Status-node", + "main-currency": "Hoofdvaluta", + "main-networks": "Hoofdnetwerken", + "main-wallet": "Hoofd-wallet", + "mainnet-network": "Hoofdnetwerk", + "make-admin": "Beheerder maken", + "manage-keys-and-storage": "Beheer keys en opslag", + "mark-all-read": "Markeer alles als gelezen", + "master-account": "Master-account", + "max-fee": "Maximale tarief", + "max-priority-fee": "Maximale prioriteitstarief", + "maximum-fee": "Maximale tarief", + "maybe-later": "Misschien later", + "member-ban": "Deelnemer verbannen", + "member-kick": "Verwijder deelnemer", + "members": { + "one": "1 deelnemer", + "other": "{{count}} deelnemers" + }, + "members-active": { + "one": "deelnemer", + "other": "deelnemers" + }, + "members-active-none": "geen deelnemers", + "members-count": "{{count}} deelnemers", + "members-label": "Deelnemers", + "members-limit-reached": "Deelnemers-limiet bereikt", + "members-title": "Deelnemers", + "membership-approval": "Goedkeuring vereisen", + "membership-approval-description": "Men kan gratis aan je community deelnemen, alleen moeten nieuwe deelnemers wel eerst door de maker van de community goedgekeurd worden", + "membership-button": "Criterium deelnemerschap", + "membership-declined": "Deelnameverzoek is afgewezen", + "membership-description": "Voor groepsdeelname moet je worden geaccepteerd door de groepsbeheerder", + "membership-ens": "ENS-gebruikersnaam vereist", + "membership-ens-description": "Je community vereist een ENS-gebruikersnaam om te kunnen deelnemen", + "membership-free": "Geen vereiste", + "membership-free-description": "Iedereen kan gratis aan je community deelnemen", + "membership-invite": "Uitnodiging van een ander lid vereisen", + "membership-invite-description": "Je kunt alleen deelnemen aan je community door een uitnodiging van bestaande community-deelnemers", + "membership-none": "Geen", + "membership-none-placeholder": "Je kunt nieuwe leden vragen om aan bepaalde criteria te voldoen voordat ze deel kunnen nemen. Dit kan op elk moment worden gewijzigd", + "membership-request-pending": "Deelnameverzoek in afwachting", + "membership-requests": "Deelnameverzoeken", + "membership-title": "Criterium deelnemerschap", + "message": "Bericht", + "message-not-sent": "Bericht niet verzonden", + "message-options-cancel": "Annuleren", + "message-reply": "Antwoord", + "messages": "Berichten", + "messages-from-contacts-only-subtitle": "Alleen mensen die je hebt toegevoegd als contacten, kunnen een nieuwe chat met je beginnen of je uitnodigen voor een groep", + "might-break": "Kan sommige ÐApps breken", + "migration-successful": "Migratie geslaagd", + "migration-successful-text": "Account succesvol gemigreerd naar Keycard", + "migrations-failed-content": "{{message}}\n schemaversie: eerste {{initial-version}}, huidige {{current-version}}, laatste {{last-version}} \n\nEr is een databasefout opgetreden. Je geld en chat-key zijn veilig. Andere gegevens, zoals je chats en contacten, kunnen niet worden hersteld. \"{{erase-multiaccounts-data-button-text}}\" knop, zal alle andere gegevens verwijderen en geeft je toegang tot je middelen en het versturen van berichten.", + "miners-higher-fee": "Miners zullen je transactie waarschijnlijk eerder opnemen als je een hoger tarief betaalt.", + "mobile-network-ask-me": "Vraag me wanneer mobiele dataverbinding", + "mobile-network-continue-syncing": "Ga door met synchroniseren", + "mobile-network-continue-syncing-details": "Je kunt dit later wijzigen in de instellingen", + "mobile-network-go-to-settings": "Ga naar instellingen", + "mobile-network-settings": "Mobiele dataverbinding", + "mobile-network-sheet-configure": "Je kunt synchronisatie verder configureren in", + "mobile-network-sheet-offline": "Geen wifi, berichten synchroniseren uitgeschakeld.", + "mobile-network-sheet-offline-details": "Synchroniseren via mobiel netwerk is uitgeschakeld", + "mobile-network-sheet-remember-choice": "Onthoud mijn keuze", + "mobile-network-sheet-settings": "instellingen", + "mobile-network-start-syncing": "Start synchroniseren", + "mobile-network-stop-syncing": "Stop met synchroniseren", + "mobile-network-stop-syncing-details": "Totdat er wifi-verbinding is?", + "mobile-network-use-mobile": "Gebruik mobiele dataverbinding", + "mobile-network-use-mobile-data": "Status gebruikt veel data bij het synchroniseren van chats en wallet.", + "mobile-network-use-wifi": "Alleen wifi", + "mobile-syncing-sheet-details": "Status gebruikt veel data bij het synchroniseren van chats en wallet.", + "mobile-syncing-sheet-title": "Synchroniseren met mobiele dataverbinding?", + "more": "meer", + "move-and-reset": "Verplaatsen en resetten", + "move-keystore-file": "Verplaats keystore-bestand", + "move-keystore-file-to-keycard": "Verplaats keystore-bestand naar keycard?", + "multiaccount-exists-content": "Keys voor dit account bestaan al en kunnen niet opnieuw worden toegevoegd. Als je je wachtwoord, toegangscode of Keycard bent kwijtgeraakt: verwijder de app, herinstalleer de app, en voer je seed phrase in", + "multiaccount-exists-title": "Keys voor dit account bestaan al", + "multiaccounts-recover-enter-phrase-text": "12, 15, 18, 21 of 24 woorden invoeren.\nScheid woorden met één spatie.", + "multiaccounts-recover-enter-phrase-title": "Voor je seed phrase in", + "mute": "Mute", + "my-accounts": "Mijn accounts", + "my-accounts-empty": "Uw beschikbare accounts verschijnen hier", + "my-profile": "Mijn profiel", + "my-status": "Mijn status", + "name": "Naam", + "name-of-token": "De naam van jouw token", + "name-optional": "Naam (optioneel)", + "name-your-channel": "Geef je kanaal een naam", + "name-your-channel-placeholder": "Kanaalnaam", + "name-your-community": "Geef je community een naam", + "name-your-community-placeholder": "Een pakkende naam", + "need-help": "Hulp nodig?", + "network": "Netwerk", + "network-chain": "Netwerkketen", + "network-details": "Netwerkgegevens", + "network-fee": "Netwerkkosten", + "network-id": "Netwerk-ID", + "network-info": "Netwerk info", + "network-invalid-network-id": "Opgegeven netwerk-id komt niet overeen met netwerk-id door RPC-url", + "network-invalid-status-code": "Ongeldige statuscode: {{code}}", + "network-invalid-url": "Netwerk-URL is ongeldig", + "network-settings": "Netwerkinstellingen", + "new": "Nieuw", + "new-category": "Nieuwe categorie", + "new-chat": "Nieuwe chat", + "new-community-title": "Nieuwe community", + "new-contact": "Nieuw contact", + "new-contract": "Nieuw contract", + "new-favourite": "Nieuwe favoriet", + "new-group": "Nieuwe groep", + "new-group-chat": "Nieuwe groepschat", + "new-network": "Nieuw netwerk", + "new-password": "Nieuw wachtwoord", + "new-pin-description": "Voer nieuwe 6-cijferige passcode in", + "new-public-group-chat": "Neem deel aan publieke chat", + "new-puk-description": "Voer nieuwe 12-cijferige PUK in", + "new-status": "Nieuwe status", + "new-tab": "Nieuw tabblad", + "next": "Volgende", + "nickname": "Bijnaam", + "nickname-description": "Bijnamen helpen je anderen te identificeren in Status.\nAlleen jij kunt de bijnamen zien die je hebt toegevoegd", + "no": "Nee", + "no-collectibles": "Geen collectibles beschikbaar", + "no-contacts": "Nog geen contacten", + "no-keycard-applet-on-card": "Geen Keycard applet op card", + "no-messages": "Geen berichten", + "no-pairing-slots-available": "Deze card is al aan 5 apparaten gekoppeld en kan hier niet aan worden gekoppeld. Gebruik één van de gekoppelde apparaten, log in met deze card en maak koppelings-slots op de card vrij", + "no-pinned-messages": "Geen vastgepinde berichten", + "no-result": "Geen resultaten", + "no-thanks": "Nee dank je", + "no-tokens-found": "Geen tokens gevonden", + "node-info": "Node informatie", + "node-version": "Node-versie", + "nodes-disabled": "Status-nodes uitgeschakeld", + "non-archival-node": "RPC-eindpunt ondersteunt geen archiveringsverzoeken. Je lokale transfergeschiedenis is mogelijk onvolledig.", + "non-contacts": "Niet-contacten", + "nonce": "Nonce", + "none": "Geen", + "normal": "Normaal", + "not-applicable": "Niet van toepassing op niet-ondertekende transacties", + "not-connected-nodes": "Niet verbonden met een Status-node", + "not-connected-to-peers": "Niet verbonden met peers", + "not-enough-snt": "Niet genoeg SNT", + "not-found": "Niet gevonden", + "not-keycard-text": "De card die je hebt gebruikt, is geen Keycard. Je moet een Keycard aanschaffen om deze te kunnen gebruiken.", + "not-keycard-title": "Geen Keycard", + "not-registered": "niet geregistreerd", + "notification-settings": "Meldingen", + "notifications": "Meldingen", + "notifications-non-contacts": "Meldingen van niet-contacten", + "notifications-preferences": "Voorkeuren voor meldingen", + "notifications-servers": "Notificatie-servers", + "notifications-switch": "Meldingen tonen", + "notifications-transactions": "Wallet-transacties", + "notify": "Melden", + "now": "Nu", + "off": "Uit", + "off-status-tree": "Uit Status-tree", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Schakel Status-nodes in om berichten op te halen die zijn verzonden terwijl de app gesloten was. Wanneer ingeschakeld, krijgt een Status-node je IP-adres. Wanneer uitgeschakeld, ontvang je geen berichten als de app gesloten is en zie je ze niet als je de app later opent.", + "offline-messaging-use-history-nodes": "Gebruik Status-nodes", + "ok": "OK", + "ok-continue": "Oké, doorgaan", + "ok-got-it": "Oké, ik snap het", + "ok-save-pass": "OK, wachtwoord opslaan", + "okay": "Oké", + "on": "Aan", + "on-status-tree": "In Status boom", + "once-enabled-share-metadata": "Eenmaal ingeschakeld, kunnen links die in de chat zijn geplaatst, uw metadata met de site delen", + "one-day": "Één dag", + "one-month": "Één maand", + "one-week": "Één week", + "open": "Open", + "open-chat": "Chat openen", + "open-dapp": "Open ÐApp", + "open-dapp-store": "Ontdek ÐApps", + "open-home": "Open...", + "open-in-new-tab": "Open in nieuw tabblad", + "open-membership": "Open deelname", + "open-nfc-settings": "Open NFC-instellingen", + "opening-buy-crypto": "Openen {{site}}...", + "optimal": "Optimaal", + "optional": "optioneel", + "or": "OF", + "outgoing": "Uitgaand", + "outgoing-transaction": "Uitgaande transactie", + "page-camera-request-blocked": "cameraverzoeken geblokkeerd. Ga naar Instellingen om cameraverzoeken in te schakelen", + "page-would-like-to-use-camera": "wil je camera gebruiken", + "pair": "Koppel apparaten", + "pair-card": "Koppel aan dit apparaat", + "pair-code": "Koppelcode", + "pair-code-explanation": "Koppelt de card aan een ander apparaat (maximaal 5) om keys te ontgrendelen en transacties te ondertekenen met dezelfde Keycard", + "pair-code-placeholder": "Koppelcode ...", + "pair-this-card": "Deze kaart koppelen", + "pair-this-device": "Adverteer apparaat", + "pair-this-device-description": "Koppel de apparaten om contacten en chats tussen hen te synchroniseren", + "paired-devices": "Gekoppelde apparaten", + "pairing": "Koppelen", + "pairing-card": "Koppel card", + "pairing-changed": "De koppelcode is gewijzigd", + "pairing-code-placeholder": "Koppelcode...", + "pairing-code_error1": "Koppelcodes komen niet overeen.", + "pairing-go-to-installation": "Ga naar koppelinstellingen", + "pairing-maximum-number-reached-content": "Schakel één van de apparaten uit voordat je een nieuwe inschakelt.", + "pairing-maximum-number-reached-title": "Maximaal aantal apparaten bereikt", + "pairing-new-installation-detected-content": "Er is een nieuw apparaat ontdekt.\nOm de apparaten correct te gebruiken, is het belangrijk om ze te koppelen en in te schakelen voordat je ze gebruikt.\nGa naar de apparaatsectie onder instellingen om de apparaten te koppelen.", + "pairing-new-installation-detected-title": "Nieuw apparaat ontdekt", + "pairing-no-info": "Geen informatie", + "pairing-please-set-a-name": "Stel naam in voor je apparaat.", + "passphrase": "Passphrase", + "password": "Wachtwoord", + "password-description": "Tenminste 6 tekens. Je wachtwoord beschermt je keys. Je hebt het nodig om Status te ontgrendelen en transacties te doen.", + "password-mismatch": "Nieuw wachtwoord en bevestiging komen niet overeen", + "password-placeholder": "Wachtwoord...", + "password-placeholder2": "Bevestig je wachtwoord", + "password-reset-in-progress": "Wachtwoord wijzigen...", + "password-reset-success": "Wachtwoord veranderd", + "password-reset-success-message": "Je zult opnieuw moeten inloggen", + "password_error1": "Wachtwoorden komen niet overeen.", + "paste": "Plakken", + "paste-json": "Plak JSON", + "pay-to-chat": "Betaal om te chatten", + "peer-content": "Een apparaat verbonden met het Status-chatnetwerk. Elke gebruiker kan één of meer peers vertegenwoordigen, afhankelijk van hun aantal apparaten.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Peers", + "pending": "In afwachting", + "pending-confirmation": "In afwachting van bevestiging...", + "pending-invitations": "Onbeantwoorde deelnameverzoeken", + "per-gas-price-limit": "Prijslimiet per gas", + "per-gas-tip-limit": "Fooilimiet per gas", + "permissions": "Toestemmingen", + "phone-e164": "Internationaal 1", + "photos": "Foto's", + "photos-access-error": "Om de vereiste toestemming voor foto's te verlenen, ga je naar de systeeminstellingen en zorgt je ervoor dat Status > Foto's is geselecteerd.", + "pin": "Pinnen", + "pin-changed": "6-cijferige passcode is gewijzigd", + "pin-code": "6-cijferige passcode", + "pin-limit-reached": "Pin limiet bereikt. Verwijder eerst de pin van een vorig bericht.", + "pin-mismatch": "Verkeerde passcode", + "pin-one-attempt": " één poging ", + "pin-one-attempt-blocked-after": "voordat je Keycard wordt geblokkeerd", + "pin-one-attempt-blocked-before": "Wees voorzichtig, je hebt maar", + "pin-one-attempt-frozen-after": "voordat je Keycard wordt geblokkeerd", + "pin-one-attempt-frozen-before": "Wees voorzichtig, je hebt maar", + "pin-retries-left": "{{number}} pogingen over", + "pinned-by": "Vastgepind door", + "pinned-messages": "Gepinde berichten", + "pinned-messages-count": { + "one": "1 vastgepind bericht", + "other": "{{count}} vastgepinde berichten" + }, + "pinned-messages-empty": "Vastgepinde berichten verschijnen hier. Om een bericht vast te pinnen, houd je het ingedrukt en tikt u op `Pinnen`.", + "preference": "Voorkeur", + "preview-privacy": "Voorbeeld privacymodus", + "previewing-may-share-metadata": "Het is mogelijk dat link-previews van deze websites metadata met hun eigenaren delen", + "principles": "Principes", + "privacy": "Privacy", + "privacy-and-security": "Privacy en beveiliging", + "privacy-policy": "Privacybeleid", + "private-key": "Private-key", + "private-notifications": "Lokale meldingen", + "private-notifications-descr": "Status zal je melden over nieuwe berichten. Je kunt meldingsvoorkeuren later in de instellingen bewerken.", + "processing": "Een ogenblik", + "product-information": "Productinformatie", + "profile": "Profiel", + "profile-deleted-content": "Je profiel is succesvol verwijderd", + "profile-deleted-keycard": "Je kunt nu een ander keypair op je Keycard herstellen", + "profile-deleted-title": "Profiel verwijderd", + "profile-details": "Profielgegevens", + "profile-not-found": "Profiel niet gevonden", + "profile-pic-pick": "Selecteer uit galerij", + "profile-pic-remove": "Verwijder foto", + "profile-pic-take": "Neem foto", + "public-channel": "Publiek kanaal", + "public-chat": "Publieke chat", + "public-chat-description": "Doe mee aan publieke chats voor jouw interesses! Iedereen kan een nieuwe starten.", + "public-chats": "Publieke chats", + "public-group-status": "Publiek", + "public-group-topic": "Onderwerp", + "public-key": "Public-key", + "puk-and-pairing-codes-displayed": "PUK- en koppelcodes weergegeven", + "puk-changed": "12-cijferige PUK is gewijzigd", + "puk-code": "PUK-code", + "puk-code-explanation": "Als je de 6-cijferige passcode vergeet of deze driemaal verkeerd invoert, heb je deze code nodig om jouw card te ontgrendelen.", + "puk-mismatch": "Verkeerde PUK-code", + "push-failed-transaction": "Transactie mislukt", + "push-failed-transaction-body": "{{value}} {{currency}} naar {{to}}", + "push-inbound-transaction": "Je hebt {{value}} {{currency}} ontvangen", + "push-inbound-transaction-body": "Van {{from}} naar {{to}}", + "push-notifications-server-enabled": "Server ingeschakeld", + "push-notifications-servers": "Push-notificatie servers", + "push-outbound-transaction": "Je hebt {{value}} {{currency}} verzonden", + "push-outbound-transaction-body": "Van {{from}} naar {{to}}", + "quiet-days": "{{quiet-days}} dagen", + "quiet-hours": "{{quiet-hours}} uur", + "re-encrypt-key": "Keys opnieuw versleutelen", + "receive": "Onvang", + "receive-transaction": "Ontvang transactie", + "recent": "Recent", + "recent-empty": "Recent gebruikte adressen verschijnen hier", + "recent-recipients": "Contacten", + "recently-used-stickers": "Recent gebruikte stickers verschijnen hier", + "recipient": "Ontvanger", + "recipient-code": "Voer adres van ontvanger in", + "recipient-code-placeholder": "0x ... of username.domain.eth", + "recover": "Herstellen", + "recover-key": "Toegang tot bestaande keys", + "recover-keycard-multiaccount-not-supported": "Keys voor dit account bestaan al en kunnen niet opnieuw worden toegevoegd. Als je wachtwoord, toegangscode of Keycard bent kwijtgeraakt: verwijder de app, herinstalleer de app, en voer je seed phrase in", + "recover-with-keycard": "Herstellen met Keycard", + "recover-with-seed-phrase": "Instellen met seed phrase", + "recovering-key": "Toegang tot keys...", + "recovery-confirm-phrase": "Bevestig seed phrase", + "recovery-phrase": "Seed phrase", + "recovery-success-text": "Je zult een nieuwe code of wachtwoord moeten aanmaken om uw keys opnieuw te versleutelen", + "recovery-typo-dialog-description": "Let op, je seed phrase moet exact dezelfde woorden en volgorde gebruiken als dat je het hebt ontvangen", + "recovery-typo-dialog-title": "Klopt de seed phrase?", + "redeem-amount": "{{quantity}} bonussen beschikbaar", + "redeem-now": "Nu inwisselen", + "redeem-success": "Inwisselen bonus succes!", + "reduced-tip": "prioriteitsfooi wordt verlaagd", + "refresh": "Vernieuwen", + "registered": "geregistreerd", + "reject-and-delete": "Afwijzen en verwijderen", + "remember-me": "Onthoud mij", + "remind-me-later": "Later nog eens zien", + "remove": "Verwijderen", + "remove-favourite": "Verwijder favoriet", + "remove-from-chat": "Verwijder uit chat", + "remove-from-contacts": "Verwijderen uit contacten", + "remove-from-contacts-text": "Door een gebruiker uit je contactenlijst te verwijderen, verbergt je jouw wallet-adres niet voor hen.", + "remove-group": "Groep verwijderen", + "remove-network": "Netwerk verwijderen", + "remove-token": "Token verwijderen", + "removed": "verwijderd", + "repeat-pin": "Herhaal nieuw 6-cijferige passcode", + "repeat-puk": "Herhaal nieuwe 12-cijferige PUK", + "replying-to": "{{author}} beantwoorden", + "report-bug-email-template": "1. Probleemomschrijving \n (Beschrijf de functie die je wilt, of vat de bug kort samen en wat je deed, wat je had verwacht en wat er daadwerkelijk gebeurde. Secties hieronder) \n\n\n 2. Stappen om te reproduceren \n (Beschrijf hoe we de bug stap voor stap kunnen repliceren.) \n -Open Status \n -... \n -Stap 3, etc. \n\n\n 3. Verwacht gedrag \n (Beschrijf wat je had verwacht.) \n\n\n 4. Feitelijk gedrag \n (Beschrijf wat er echt is gebeurd.) \n\n\n 5. Voeg screenshots toe die het probleem kunnen demonstreren \n", + "request-access": "Verzoek toegang", + "request-feature": "Verzoek een nieuwe functie", + "request-membership": "Verzoek deelname", + "request-pending": "Verzoek in afwachting...", + "request-transaction": "Verzoek transactie", + "required-field": "Verplicht veld", + "resend-message": "Opnieuw verzenden", + "reset-card": "Reset card", + "reset-card-description": "Deze handeling zet de card terug naar oorspronkelijke staat. Alle card-gegevens, inclusief de private-keys, worden gewist. De handeling is niet omkeerbaar.", + "reset-database": "Reset de database", + "reset-database-warning": "Verwijder chats, contacten en instellingen. Vereist als je het wachtwoord bent vergeten", + "reset-database-warning-keycard": "Verwijder chats, contacten en instellingen.", + "reset-password": "Wachtwoord resetten", + "restore-defaults": "Standaardwaarden herstellen", + "retry": "Opnieuw proberen", + "revoke-access": "Toegang intrekken", + "rpc-url": "RPC-URL", + "rpc-usage-copy": "Kopiëren", + "rpc-usage-filter": "Filtermethoden", + "rpc-usage-get-stats": "Vernieuwen", + "rpc-usage-info": "RPC-gebruiksstatistieken", + "rpc-usage-reset": "Reset", + "save": "Opslaan", + "save-password": "Wachtwoord opslaan", + "save-password-unavailable": "Instellen passcode van apparaat om wachtwoord op te slaan", + "save-password-unavailable-android": "Wachtwoord opslaan is niet beschikbaar: je toestel is wellicht geroot of mist de nodige beveiligingsfuncties.", + "scan-qr": "Scan QR-code", + "scan-qr-code": "Scan QR-code met een wallet-adres", + "scan-tokens": "Tokens scannen", + "search": "Zoeken", + "search-no-chat-found": "Geen zoekresultaten. Bedoel je", + "secret-keys-confirmation-text": "Je hebt ze nodig om jouw Keycard te kunnen blijven gebruiken, mocht je de telefoon ooit verliezen.", + "secret-keys-confirmation-title": "Heb je de codes opgeschreven?", + "security": "Veiligheid", + "see-details": "Zie gegevens", + "see-it-again": "ZIE HET OPNIEUW", + "see-suggestions": "Zie suggesties", + "seed-key-uid-mismatch": "Seed phrase komt niet overeen", + "seed-key-uid-mismatch-desc-1": "De seed phrase die je hebt ingevoerd, komt niet overeen met {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Controleer je seed phrase en probeer het opnieuw.", + "seed-phrase-content": "Een set eenvoudig te lezen woorden, willekeurig geselecteerd uit de BIP39-standaardlijst en gebruikt om je Ethereum-account op andere wallets en apparaten te herstellen of te openen. Ook wel een \"mnemonic phrase\", \"recovery phrase\" of \"wallet backup\" genoemd in het crypto-ecosysteem. Meeste crypto-apps gebruiken deze standaard om accounts te genereren.", + "seed-phrase-placeholder": "Seed phrase", + "seed-phrase-title": "Seed phrase", + "select": "Selecteer", + "select-account": "Selecteer account", + "select-account-dapp": "Selecteer het account dat je met Dapps wilt gebruiken", + "select-account-first": "Selecteer eerst een account", + "select-chat": "Selecteer chat om berichten te versturen", + "select-new-location-for-keys": "Selecteer een nieuwe locatie om uw private-key(s) op te slaan", + "selected": "Geselecteerde", + "send-logs": "Meld een bug", + "send-logs-to": "Een bug rapporteren aan {{email}}", + "send-message": "Bericht verzenden", + "send-push-notifications-description": "Wanneer uitgeschakeld, wordt de persoon die uw berichten ontvangt, niet op de hoogte gesteld van hun aankomst", + "send-request": "Verzend verzoek", + "send-request-amount": "Bedrag", + "send-request-amount-max-decimals": "Maximaal aantal decimalen is {{asset-decimals}}", + "send-request-unknown-token": "Onbekend token - {{asset}}", + "send-sending-to": "naar {{recipient-name}}", + "send-transaction": "Transactie verzenden", + "sending": "Verzenden", + "sent-at": "Verzonden om", + "server": "Server", + "set-a-topic": "Maak een onderwerp", + "set-currency": "Valuta instellen", + "set-custom-fee": "Stel aangepast tarief in", + "set-dapp-access-permissions": "DApp-toegangsrechten instellen", + "set-max": "Zet op max", + "settings": "Instellingen", + "share": "Delen", + "share-address": "Adres delen", + "share-chat": "Deel chat", + "share-contact-code": "Deel mijn chat-key", + "share-dapp-text": "Kijk eens naar deze DApp die ik op Status gebruik: {{link}}", + "share-link": "Link delen", + "share-my-profile": "Deel mijn profiel", + "share-profile": "Profiel delen", + "share-profile-link": "Deel profiel-link", + "share-public-chat-text": "Bekijk deze publieke chat in de Status-app: {{link}}", + "shared": "Gedeeld", + "sharing-copied-to-clipboard": "Gekopieerd", + "sharing-copy-to-clipboard": "Kopiëren", + "sharing-data-desc-1": "Data wordt gevalideerd aan de hand van openbare regels om zeker te zijn dat geen gevoelige data wordt verzonden. Vertrouw niet, verifieer.", + "sharing-data-desc-2": "Gebruiksdata wordt end-to-end versleuteld verzonden via het peer-to-peer-netwerk van Status", + "sharing-data-desc-3": "In plaats van je gewone chat-key wordt een eenmalige-key gebruikt", + "sharing-data-desc-4": "Gebruiksdata kan niet worden gekoppeld aan je IP-adres", + "sharing-data-desc-5": "Cumulatieve data van alle gebruikers zijn openbaar beschikbaar", + "sharing-data-desc-6": "De data wordt van je telefoon verwijderd nadat het is verzonden", + "sharing-share": "Delen", + "show-less": "Minder weergeven", + "show-more": "Toon meer", + "show-notifications": "Meldingen weergeven", + "show-profile-pictures": "Toon profielfoto's van", + "show-qr": "Toon QR-code", + "show-transaction-data": "Weergeven transactiegegevens", + "sign-and-send": "Tekenen en verzenden", + "sign-anyway": "Toch tekenen", + "sign-in": "Inloggen", + "sign-message": "Teken bericht", + "sign-out": "Uitloggen", + "sign-request-failed": "Kon bericht niet ondertekenen", + "sign-with": "Teken met", + "sign-with-password": "Tekenen met wachtwoord", + "sign-you-in": "Ontsleutelen", + "signing": "Ondertekenen", + "signing-a-message": "Handtekening plaatsen", + "signing-phrase": "Geheime code", + "skip": "Overslaan", + "slow": "Traag", + "something-went-wrong": "Er is iets fout gegaan", + "soon": "Binnenkort", + "specify-address": "Adres opgeven", + "specify-name": "Geef een naam op", + "specify-network-id": "Specificeer netwerk-id", + "specify-rpc-url": "Geef een RPC-URL op", + "specify-server-public-key": "Voer public-key van de server in", + "start-chat": "Start chat", + "start-conversation": "Start gesprek", + "start-group-chat": "Start groepschat", + "start-new-chat": "Start nieuwe chat", + "starter-pack-coming": "Starterspakket komt jouw kant op", + "starter-pack-coming-description": "Het kan enkele minuten tot uren duren", + "starter-pack-received": "Starter Pack ontvangen", + "starter-pack-received-description": "Hier is wat crypto om je op weg te helpen! Gebruik het voor stickers, een ENS naam en om dapps te proberen", + "status": "Status", + "status-confirmed": "Bevestigd", + "status-hardwallet": "Status hardwallet", + "status-is-open-source": "Status is open-source", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status gebruikt veel data bij het synchroniseren van chats. Je kunt ervoor kiezen om niet te synchroniseren als je een mobiele dataverbinding hebt", + "status-not-sent-click": "Niet bevestigd. Klik voor opties", + "status-not-sent-tap": "Niet bevestigd. Tik voor opties", + "status-pending": "In afwachting", + "status-sent": "Verzonden", + "status-tx-not-found": "TX niet gevonden", + "status-updates-descr": "Statusupdates verschijnen hier. Voeg het profiel als contactpersoon toe om updates te ontvangen op je tijdlijn.", + "statuses-descr": "Deel wat je bezighoudt en blijf op de hoogte van je contacten", + "statuses-my-status-descr": "Deel wat je bezighoudt. Iedereen die uw profiel bezoekt, kan je status zien. Mensen die jou als contactpersoon toevoegen, ontvangen je updates op hun tijdlijn", + "step-i-of-n": "Stap {{step}} van {{number}}", + "sticker": "Sticker", + "sticker-market": "Stickermarkt", + "storage": "Opslag", + "submit": "Bevestigen", + "submit-bug": "Een bug inzenden", + "success": "Succes", + "suggested-min-tip": "Voorgestelde min. fooi", + "suggested-price-limit": "Voorgestelde prijslimiet", + "symbol": "Symbool", + "sync-all-devices": "Synchroniseer alle apparaten", + "sync-in-progress": "Synchroniseren...", + "sync-settings": "Synchronisatie-instellingen", + "sync-synced": "In sync", + "syncing-devices": "Synchroniseren...", + "system": "Systeem", + "tabs": "Tabbladen", + "tag-was-lost": "Tag is verloren", + "tap-card-again": "Houdt de card nog eens tegen de achterkant van je telefoon.", + "terms-of-service": "Gebruiksvoorwaarden", + "test-networks": "Test netwerken", + "text-input-disabled": "Een ogenblik alstublieft...", + "thank-you": "Bedankt", + "this-device": "Dit apparaat", + "this-device-desc": "Je keys worden versleuteld en veilig op je apparaat opgeslagen", + "this-is-you-signing": "Dit is je geheime code", + "this-will-take-few-seconds": "Dit duurt een paar seconden", + "three-days": "Drie dagen", + "three-words-description": "Je moet deze 3 woorden zien voordat je elke transactie tekent", + "three-words-description-2": "Als je een andere combinatie ziet, annuleer de transactie en log uit", + "timeline": "Tijdlijn", + "tip-cap": "Fooilimiet", + "to": "Naar", + "to-block": "Blokkeren", + "to-enable-biometric": "Om {{bio-type-label}} in te schakelen, moet je het wachtwoord opslaan op het ontgrendelscherm", + "to-encrypt-enter-password": "Voer uw wachtwoord in om je account te versleutelen.", + "to-see-this-message": "Om dit bericht te zien,", + "token-auto-validate-decimals-error": "Verkeerde decimalen voor token {{symbol}} op adres {{address}} - ingesteld op {{expected}} maar gedetecteerd als {{actual}}", + "token-auto-validate-name-error": "Verkeerde naam voor token {{symbol}} op adres {{address}} - ingesteld op {{expected}} maar gedetecteerd als {{actual}}", + "token-auto-validate-symbol-error": "Verkeerd symbool voor token {{symbol}} op adres {{address}} - ingesteld op {{expected}} maar gedetecteerd als {{actual}}", + "token-details": "Token-gegevens", + "topic-name-error": "Gebruik alleen kleine letters (a tot z), cijfers & streepjes (-). Gebruik geen chat-keys", + "transaction": "Transactie", + "transaction-data": "Transactie gegevens", + "transaction-declined": "Transactie afgewezen", + "transaction-description": "Beschouw het als voltooid na 12 bevestigingen op het netwerk.", + "transaction-details": "Transactiegegevens", + "transaction-failed": "Transactie mislukt", + "transaction-history": "Transactie geschiedenis", + "transaction-request": "Transactieverzoek", + "transaction-sent": "Transactie verzonden", + "transaction-signed": "De transactie is ondertekend", + "transactions": "Transacties", + "transactions-filter-select-all": "Selecteer alles", + "transactions-filter-title": "Filter geschiedenis", + "transactions-history": "Transactie geschiedenis", + "transactions-history-empty": "Nog geen transacties in je geschiedenis", + "transactions-history-loading": "Laden transactie geschiedenis. Dit kan even duren.", + "transactions-load-more": "Meer laden", + "transactions-management-enabled": "Transactiebeheer (alfa)", + "transactions-sign": "Teken", + "transfer-ma-unknown-error-desc-1": "Het lijkt erop dat je multiaccount niet is verwijderd. Database is mogelijk gereset", + "transfer-ma-unknown-error-desc-2": "Controleer je accountlijst en probeer het opnieuw. Als account niet in de lijst staat, ga naar Toegang tot bestaande keys om te herstellen met seed phrase", + "transfers-fetching-failure": "De tranfer-geschiedenis kon niet worden bijgewerkt. Controleer uw verbinding en trek naar beneden om opnieuw te proberen", + "tribute-required-by-multiaccount": "{{multiaccount-naam}} heeft SNT nodig om een chat te starten.", + "tribute-state-paid": "Tribute betaald", + "tribute-state-pending": "Tribute in afwachting", + "tribute-state-required": "Vereist {{snt-amount}} SNT-tribute", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Voeg vrienden toe als contact om chats mogelijk te maken zonder tribute-betaling.", + "tribute-to-talk-are-you-friends": "Zijn jullie vrienden?", + "tribute-to-talk-ask-to-be-added": "Vraag om als contact te worden toegevoegd", + "tribute-to-talk-contact-received-your-tribute": " heeft je tribute ontvangen. Jullie kunnen nu veilig met elkaar chatten.", + "tribute-to-talk-desc": "Verdien geld voor jouw aandacht door SNT te vragen aan nieuwe mensen om een chat te starten", + "tribute-to-talk-disabled": "Tribute to Talk uitgeschakeld", + "tribute-to-talk-disabled-note": "Vanaf nu kunnen nieuwe mensen een chat met je starten zonder SNT te sturen.", + "tribute-to-talk-enabled": "Je hebt Tribute to Talk ingeschakeld.", + "tribute-to-talk-finish-desc": "Vanaf nu zul je alleen chats ontvangen van contacten, en van mensen die betaald hebben ", + "tribute-to-talk-learn-more-1": "Je tijd en aandacht zijn je meest waardevolle bezit. Met Tribute to Talk kun je een hoeveelheid SNT instellen die nieuwe mensen nodig hebben om een chat met je te starten.", + "tribute-to-talk-learn-more-2": "Iedereen die niet in je contactlijst staat, zal worden gevraagd te betalen, en je kunt reageren zodra ze dat hebben gedaan.", + "tribute-to-talk-learn-more-3": "Je kunt het geld altijd terugsturen, maar om ervoor te zorgen dat vrienden je vrij kunnen bereiken, voeg je ze eerst toe als contact.", + "tribute-to-talk-paywall-learn-more-1": "Onze tijd en aandacht zijn ons meest waardevolle bezit. Met Tribute to Talk kun je contact leggen met nieuwe mensen in ruil voor een SNT-betaling.", + "tribute-to-talk-paywall-learn-more-2": "Om een chat te starten met iemand die een tribute-set heeft, betaal je gewoon de vereiste SNT en zal je worden toegevoegd als contact.", + "tribute-to-talk-paywall-learn-more-3": "Als je ze kent, kun je buiten Status je profiel delen om gratis te worden toegevoegd.", + "tribute-to-talk-pending": "Tribute in afwachting van bevestiging", + "tribute-to-talk-pending-note": "Tribute-transactie is in afwachting van bevestiging op het netwerk. Je kunt de status controleren in de transactiegeschiedenis", + "tribute-to-talk-removing-note": "Als je Tribute to Talk verwijdert, kunnen nieuwe mensen een chat starten zonder SNT te verzenden. Vereist dat er een transactie wordt uitgevoerd.", + "tribute-to-talk-set-snt-amount": "Stel de hoeveelheid SNT in die nodig is voor nieuwe mensen om een chat te starten", + "tribute-to-talk-signing": "Wachten om transactie te tekenen", + "tribute-to-talk-transaction-failed-note": "De transactie is mislukt en je instellingen voor Tribute to Talk zijn niet gewijzigd", + "tribute-to-talk-tribute-received1": "Tribute ontvangen. Jij en ", + "tribute-to-talk-tribute-received2": " zijn nu contacten en kunnen veilig met elkaar chatten.", + "tribute-to-talk-you-require-snt": "Je hebt SNT nodig voor nieuwe mensen om een chat te starten.", + "try-again": "Probeer het opnieuw", + "try-keeping-the-card-still": "Probeer de card stil te houden", + "turn-nfc-description": "NFC is uitgeschakeld op uw apparaat. U kunt het inschakelen in de instellingen", + "turn-nfc-on": "Schakel NFC in om door te gaan", + "tx-fail-description1": "Deze transactie zal waarschijnlijk mislukken. Stel aangepast netwerktarief in om op eigen risico te ondertekenen.", + "tx-fail-description2": "Deze transactie zal waarschijnlijk mislukken. Stel aangepast netwerktarief in om op eigen risico te ondertekenen.", + "type": "Type", + "type-a-message": "Bericht", + "ulc-enabled": "ULC ingeschakeld", + "unable-to-fetch": "Kan chatgeschiedenis niet ophalen", + "unable-to-read-this-code": "Kan deze code niet lezen", + "unable-to-send-messages": "Kan geen berichten verzenden en ontvangen", + "unblock": "Deblokkeren", + "unblock-contact": "Deblokkeer deze gebruiker", + "unknown-status-go-error": "Onbekende status-go-fout", + "unlock": "Ontgrendelen", + "unmute": "Unmute", + "unpair-card": "Card ontkoppelen", + "unpair-card-confirmation": "Deze handeling ontkoppelt de card van het huidige apparaat. Hiervoor is een 6-cijferige toegangscode vereist. Wil je doorgaan?", + "unpair-keycard": "Keycard loskoppelen van deze telefoon", + "unpair-keycard-warning": "Je koppelcode \/ PUK en PIN blijven ongewijzigd", + "unpaired-keycard-text": "De gebruikte Keycard is niet aan deze telefoon gekoppeld", + "unpaired-keycard-title": "Het lijkt erop dat je kaart niet is gekoppeld", + "unpin": "Pin losmaken", + "update": "Update", + "update-to-listen-audio": "Update naar de nieuwste versie om hier naar een audiobericht te luisteren!", + "update-to-see-image": "Update naar de nieuwste versie om hier een leuke afbeelding te zien!", + "update-to-see-sticker": "Update naar de nieuwste versie om hier een leuke sticker te zien!", + "updates-to-tos": "Updates van Gebruiksvoorwaarden", + "updates-to-tos-desc": "Lees voor doorgaan de Gebruiksvoorwaarden door en bevestig dat je volle verantwoordelijkheid neemt voor hoe je de app gebruikt.", + "url": "URL", + "usd-currency": "USD", + "use-valid-contact-code": "Voer een geldige chat-key of gebruikersnaam in of scan deze", + "validation-amount-invalid-number": "Bedrag is geen geldig getal", + "validation-amount-is-too-precise": "Bedrag is te nauwkeurig. Het maximale aantal decimalen is {{decimals}}.", + "verified-community": "✓ Geverifieerde community", + "version": "App-versie", + "view": "View", + "view-cryptokitties": "Bekijk in CryptoKitties", + "view-cryptostrikers": "Bekijk in CryptoStrikers", + "view-data": "Data weergeven", + "view-details": "Bekijken gegevens", + "view-etheremon": "Bekijk in Etheremon", + "view-gitcoin": "Bekijk in Gitcoin", + "view-profile": "Profiel weergeven", + "view-public-dashboard": "Openbaar dashboard weergeven", + "view-rules": "Regels weergeven", + "view-signing": "Bekijk de geheime code", + "view-superrare": "Bekijk in SuperRare", + "waiting-for-wifi": "Geen wifi, berichten synchroniseren uitgeschakeld.", + "waiting-for-wifi-change": "Instellingen", + "waiting-to-sign": "Wachten om transactie te tekenen...", + "waiting-wi-fi": "Wachten op wifi…", + "waku-bloom-filter-mode": "Waku bloom filter-modus", + "wallet": "Wallet", + "wallet-address": "Wallet-adres", + "wallet-asset": "Asset", + "wallet-assets": "Assets", + "wallet-backup-recovery-title": "Maak een back-up van je seed phrase", + "wallet-choose-recipient": "Kies Ontvanger", + "wallet-collectibles": "Collectibles", + "wallet-insufficient-funds": "Onvoldoende middelen", + "wallet-insufficient-gas": "Niet genoeg ETH voor gas", + "wallet-invalid-address": "Ongeldig adres:\n {{data}}", + "wallet-invalid-address-checksum": "Fout in adres:\n {{data}}", + "wallet-invalid-chain-id": "Netwerk komt niet overeen:\n {{data}} maar huidige chain is {{chain}}", + "wallet-key-content": "Een hex-adres van 64 tekens op basis van de Ethereum-standaard en beginnent met 0x. Je accountadres wordt openbaar gemaakt en met anderen gedeeld wanneer je middelen wilt ontvangen. Ook wel een \"Ethereum-adres\" of \"wallet-adres\" genoemd.", + "wallet-key-title": "Accountadres", + "wallet-manage-accounts": "Accounts beheren", + "wallet-manage-assets": "Beheer assets", + "wallet-request": "Verzoek", + "wallet-send": "Verzenden", + "wallet-send-min-units": "Min 21000 eenheden", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Wallet-instellingen", + "wallet-total-value": "Totale waarde", + "wallet-transaction-total-fee": "Totale Tarief", + "wants-to-access-profile": "wil toegang tot je profiel", + "warning": "Waarschuwing", + "warning-message": "Sorry, we beperken het snel na elkaar verzenden van meerdere berichten om spam te voorkomen. Probeer het later nog eens", + "warning-sending-to-contract-descr": "Het adres dat u hebt ingevoerd is een smart contract, het verzenden van middelen naar dit adres kan leiden tot verlies van middelen. Als u met een DApp wilt communiceren, opent u de DApp in de Status DApp-browser.", + "watch-only": "Alleen kijken", + "wc-brand-guide": "Richtlijnen voor het gebruik van branding zoals handelsmerken en logo's", + "wc-disclaimer": "Disclaimers (inclusief externe leveranciers), garanties en wettelijke verklaringen", + "wc-dispute": "Bepalingen voor geschillenbeslechting", + "wc-how-to-use-status-app": "Hoe de Status-app te gebruiken, inclusief privacy en beveiliging", + "wc-new-tos-based-on-principles-prefix": "Nieuwe gebruiksvoorwaarden ontworpen op basis van onze", + "web-view-error": "Kan pagina niet laden", + "websites": "Websites", + "webview-camera-permission-requests": "Webview cameraverzoeken", + "webview-camera-permission-requests-subtitle": "Wanneer ingeschakeld, kunnen websites en dapps vragen om je camera te gebruiken", + "welcome-blank-community-message": "Je community's verschijnen hier.", + "welcome-blank-message": "Je chats verschijnen hier. Druk op de ⊕-knop om nieuwe chats te starten", + "welcome-community-blank-message": "Je chats verschijnen hier. Klik op de 3 stippen hierboven en selecteer \"Maak een kanaal\" om nieuwe chats te starten.", + "welcome-screen-text": "Stel uw wallet in, nodig vrienden uit om te chatten en blader door populaire dapps!", + "welcome-to-status": "Welkom bij Status!", + "welcome-to-status-description": "Stel je crypto-wallet in, nodig vrienden uit om te chatten en blader door decentralized-apps", + "what-changed": "Wat is er veranderd", + "what-is-shared": "Wat wordt gedeeld", + "whats-on-your-mind": "Wat houdt je bezig...", + "word-count": "Aantal woorden", + "word-n": "Woord #{{number}}", + "word-n-description": "Om te controleren of je de seed phrase correct hebt opgeslagen, voer je hierboven woord #{{number}} in.", + "words-n": { + "one": "1 woord", + "other": "{{count}} woorden" + }, + "write-down-and-store-securely": "Schrijf codes op\n & bewaar ze veilig", + "wrong-address": "Verkeerde adres", + "wrong-card": "Verkeerde card", + "wrong-card-text": "Gebruikte card komt niet overeen met de geselecteerde keys", + "wrong-contract": "Verkeerde contract", + "wrong-keycard-text": "De gebruikte Keycard is niet aan deze telefoon gekoppeld", + "wrong-keycard-title": "Het lijkt erop dat je een verkeerde keycard hebt gebruikt", + "wrong-password": "Verkeerd wachtwoord", + "wrong-word": "Verkeerd woord", + "yes": "Ja", + "you": "jij", + "you-already-have-an-asset": "Je hebt al een asset {{value}}", + "you-are-all-set": "Je bent klaar!", + "you-are-all-set-description": "Als je de telefoon verliest, heb je nu toegang tot je data, crypto en chat key met behulp van je seed phrase", + "you-can-change-account": "Je kunt de accountnaam en -kleur naar wens wijzigen", + "you-can-choose-preview-websites": "Je kunt kiezen welke van de volgende websites een link-preview van beschrijvingen en afbeeldingen in chats kunnen tonen", + "you-can-fetch": "Je kunt chatgeschiedenis ophalen", + "you-dont-have-contacts": "Je hebt nog geen contacten.", + "you-dont-have-contacts-invite-friends": "Je hebt nog geen contacten.\nNodig je vrienden uit om te beginnen met chatten.", + "you-dont-have-stickers": "Je hebt nog geen stickers", + "you-will-need-this-code": "Je hebt deze code nodig om Status te openen en transacties te tekenen", + "you-will-start-from-scratch": "Je start helemaal opnieuw met een nieuwe set keys", + "your-card-is-frozen": "Je Keycard is geblokkeerd. Card-toegang resetten", + "your-contact-code": "Toegang verlenen machtigt deze DApp om je chat-key op te halen", + "your-data-belongs-to-you": "Als je de seed phrase verliest, verlies je toegang tot je data, crypto en chat key", + "your-data-belongs-to-you-description": "Als je de toegang verliest, bijvoorbeeld doordat je de telefoon verliest, heb je alleen toegang tot je keys met je seed-phrase. Niemand behalve jij heeft de seed phrase. Schrijf het op. Bewaar het veilig", + "your-keys": "Je keys", + "your-price-limit": "Jouw prijslimiet", + "your-recovery-phrase": "Jouw seed phrase", + "your-recovery-phrase-description": "Dit is je seed phrase. Je gebruikt het om te bewijzen dat dit je wallet is. Je krijgt het maar één keer te zien! Schrijf het op papier en bewaar het op een veilige plaats. Je hebt het nodig als je de wallet verliest of opnieuw installeert.", + "your-tip-limit": "Jouw fooilimiet", + "youre-on-mobile-network": "Je hebt een mobiele dataverbinding" +} diff --git a/translations/pl.json b/translations/pl.json new file mode 100644 index 00000000000..237acb045f0 --- /dev/null +++ b/translations/pl.json @@ -0,0 +1,1743 @@ +{ + "You": "Ty", + "about-app": "O aplikacji", + "about-key-storage-content": "Status nigdy nie uzyska dostępu do Twojego klucza prywatnego. Pamiętaj, aby wykonać kopię zapasową frazy odzyskiwania (Seed). Jeśli zgubisz telefon, jest to jedyny sposób, aby uzyskać dostęp do kluczy.", + "about-key-storage-title": "Informacje o przechowywaniu kluczy", + "about-names-content": "Nikt nie może udawać, że jest Tobą! Domyślnie jesteś anonimowy i nigdy nie musisz ujawniać swojego prawdziwego imienia. Możesz zarejestrować własną, niestandardową nazwę za niewielką opłatą.", + "about-names-title": "Nazwy nie mogą być zmieniane", + "about-sharing-data": "O udostępnianiu danych", + "accept": "Akceptuj", + "accept-and-add": "Zaakceptuj i dodaj", + "accept-and-continue": "Zaakceptuj i kontynuuj", + "accept-and-share-address": "Zaakceptuj i udostępnij adres", + "accept-new-chats-from": "Akceptuj nowe czaty od", + "accept-status-tos-prefix": "Akceptuję Status", + "access-existing-keys": "Uzyskaj dostęp do istniejących kluczy", + "access-key": "Uzyskaj dostęp do kluczy", + "account-added": "Konto dodane", + "account-color": "Kolor konta", + "account-content": "Możesz porównać konta w Statusie do kont bankowych. Podobnie jak konto bankowe, konto zazwyczaj ma adres i saldo; Używasz tego konta do transakcji na Ethereum. Możesz mieć wiele kont w swoim portfelu. Wszystkie dostępne po odblokowaniu Statusu.", + "account-exists-title": "Konto już istnieje", + "account-is-used": "Konto jest używane z Dapps w przeglądarce.", + "account-name": "Nazwa konta", + "account-settings": "Ustawienia konta", + "account-title": "Konto", + "accounts": "Konta", + "actions": "Działania", + "active-online": "Online", + "active-unknown": "Nieznany", + "activity": "Aktywność", + "add": "Dodaj", + "add-a-watch-account": "Dodaj adresy tylko do obserwacji", + "add-account": "Dodaj konto", + "add-account-description": "Możesz zaimportować dowolny typ konta Ethereum, aby dodać je do swojego portfela Status", + "add-account-incorrect-password": "Hasło wygląda na nieprawidłowe. Wprowadź hasło, którego używasz do odblokowania aplikacji.", + "add-an-account": "Dodaj konto", + "add-bootnode": "Dodaj bootnode", + "add-contact": "Dodaj kontakt", + "add-custom-token": "Dodaj niestandardowy token", + "add-favourite": "Dodaj ulubione", + "add-mailserver": "Dodaj węzeł Status", + "add-members": "Dodaj użytkowników", + "add-network": "Dodaj sieć", + "add-new-contact": "Dodaj nowy kontakt", + "add-nickname": "Dodaj pseudonim (opcjonalnie)", + "add-node": "Dodaj węzeł", + "add-private-key-account": "Dodaj konto z klucza prywatnego", + "add-seed-account": "Dodaj konto z frazą odzyskiwania (Seed)", + "add-to-contacts": "Dodaj do kontaktów", + "add-to-contacts-text": "Dodając użytkownika do swojej listy kontaktów, udostępniasz mu swój adres portfela", + "add-to-favourites": "Dodaj do ulubionych", + "add-watch-account": "Dodaj konto tylko do oglądania", + "address": "Adres", + "address-or-ens-name": "Adres lub nazwa ENS", + "address-received": "Adres otrzymany", + "address-request-accepted": "Żądanie adresu zostało zaakceptowane", + "address-requested": "Żądany adres", + "advanced": "Zaawansowane", + "advanced-settings": "Zaawansowane ustawienia", + "advertiser-description": "Odkryłeś Status dzięki partnerowi. Czy masz coś przeciwko, jeśli Status sprawdzi tylko raz Twój adres IP, aby go wynagrodzić? Informacje te nie zostaną wykorzystane do niczego innego i zostaną całkowicie usunięte po 7 dniach.", + "advertiser-starter-pack-accept": "Akceptuj", + "advertiser-starter-pack-decline": "Odrzuć", + "advertiser-starter-pack-description": "Oto trochę kryptowalut na dobry początek! Użyj ich, aby zarejestrować nazwę ENS lub kupić pakiet naklejek", + "advertiser-starter-pack-title": "Pakiet startowy", + "advertiser-title": "Prywatność domyślnie", + "agree-by-continuing": "Kontynuując, zgadzasz się \nna naszą ", + "all": "Wszystko", + "allow": "Zezwól", + "allow-and-send": "Zezwól i wyślij", + "allow-mention-notifications": "Pokaż @ wzmianki", + "allowing-authorizes-this-dapp": "Zgadzając się, umożliwisz tej zdecentralizowanej aplikacji na pobranie adresu Twojego portfela i uruchomieniu Web3", + "already-have-asset": "Masz już to aktywo", + "amount": "Ilość", + "anyone": "Ktoś", + "appearance": "Wygląd", + "apply": "Zastosuj", + "approve": "Zatwierdź", + "approve-limit": "Zatwierdź limit", + "approve-token": "Zatwierdź token", + "approve-token-contract-desc": "Zatwierdzenie tokena z kontraktem pozwala mu na wydanie Twojego salda tokenów. Jeśli uważasz, że dany projekt jest niegodny zaufania, nie zatwierdzaj z nim tokena, lub zatwierdzaj z nim tylko kwotę, którą wykorzystasz.", + "are-you-sure": "Jesteś pewny?", + "are-you-sure-description": "Nie będziesz w stanie ponownie zobaczyć całej frazy odzyskiwania (Seed)", + "are-you-sure-to-cancel": "Czy na pewno chcesz anulować?", + "are-you-sure?": "Jesteś pewny?", + "ask-in-status": "Zadaj pytanie lub zgłoś błąd", + "at": "w", + "attribution-received": "{{attrib}} z {{max}} otrzymanych premii", + "audio": "Audio", + "audio-recorder": "Dyktafon", + "audio-recorder-error": "Błąd Dyktafonu", + "audio-recorder-max-ms-reached": "Osiągnięto maksymalny czas nagrywania", + "audio-recorder-permissions-error": "Musisz wyrazić zgodę na wysyłanie wiadomości audio", + "authorize": "Autoryzuj", + "available": "Dostępny", + "available-participants": { + "one": "jednego", + "few": "kilku", + "many": "wielu", + "other": "innych" + }, + "back": "Powrót", + "back-up": "Utwórz kopię zapasową", + "back-up-seed-phrase": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "back-up-your-seed-phrase": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "backing-up": "Tworzenie kopii zapasowej...", + "backup-disabled": "Wyłączone", + "backup-enabled": "Włączony", + "backup-recovery-phrase": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "backup-settings": "Ustawienia kopii zapasowej", + "backup-through-waku": "Backup przez waku", + "bad-fees-description": "Twoja opłata priorytetowa jest poniżej naszych sugerowanych parametrów.", + "balance": "Saldo", + "begin-set-up": "Rozpocznij konfigurację", + "below-base-fee": "opłata maksymalna poniżej opłaty podstawowej", + "biometric-auth-android-sensor-desc": "Sensor Touch ID", + "biometric-auth-android-sensor-error-desc": "Niepowodzenie", + "biometric-auth-android-title": "Wymagane uwierzytelnienie", + "biometric-auth-confirm-logout": "Zaloguj się ponownie", + "biometric-auth-confirm-message": "Aby kontynuować, wymagane jest uwierzytelnianie biometryczne, a jeśli nie jest to możliwe, odblokuj klucze za pomocą hasła lub kodu dostępu", + "biometric-auth-confirm-title": "Musisz się uwierzytelnić!", + "biometric-auth-confirm-try-again": "Spróbuj ponownie", + "biometric-auth-error": "Nie można przeprowadzić uwierzytelnienia biometrycznego ({{code}})", + "biometric-auth-login-error-title": "Błąd uwierzytelniania biometrycznego", + "biometric-auth-login-ios-fallback-label": "Wprowadź hasło", + "biometric-auth-reason-login": "Zaloguj się do Status", + "biometric-auth-reason-verify": "Zweryfikuj uwierzytelnianie", + "biometric-disable-bioauth": "wyłącz {{bio-type-label}}", + "biometric-disable-password-description": "Jeśli to wyłączysz, również ", + "biometric-disable-password-title": "Wyłącz zapisywanie hasła", + "biometric-enable": "Jeśli nie chcesz wpisywać swojego hasła za każdym razem, aby uzyskać dostęp do aplikacji, włącz logowanie {{bio-type-label}}.", + "biometric-enable-button": "Włącz {{bio-type-label}}", + "biometric-enable-keycard": "Jeśli nie chcesz używać karty Keycard za każdym razem, aby uzyskać dostęp do aplikacji, włącz opcję logowanie {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Odcisk palca", + "biometric-secure-with": "Zabezpiecz za pomocą {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "hasło BIP39", + "blank-keycard-text": "Możesz kontynuować korzystanie z karty dostępu, kiedy wygenerujesz swoje klucze oraz imię", + "blank-keycard-title": "Wygląda na to, że kliknąłeś \nzłą kartę.", + "block": "Blok", + "block-contact": "Zablokuj tego użytkownika", + "block-contact-details": "Zablokowanie usunie poprzednie wiadomości tego użytkownika i uniemożliwi otrzymywanie nowych od Ciebie.", + "blocked-users": "Zablokowani użytkownicy", + "bootnode-address": "Adres bootnode", + "bootnode-details": "Szczegóły bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes włączone", + "bootnodes-settings": "Opcje bootnodes", + "browsed-websites": "Historia przeglądarki pojawi się tutaj", + "browser": "Przeglądarka", + "browser-not-secure": "Połączenie nie jest bezpieczne! Nie podpisuj transakcji ani nie przesyłaj danych osobowych na tej stronie.", + "browser-secure": "Połączenie jest bezpieczne. Upewnij się, że naprawdę ufasz tej stronie przed podpisaniem transakcji lub wprowadzeniem danych osobowych.", + "browsers": "Przeglądarki", + "browsing-cancel": "Anuluj", + "browsing-open-in-android-web-browser": "Otwórz w Android", + "browsing-open-in-ios-web-browser": "Otwórz w iOS", + "browsing-open-in-status": "Otwórz w Status", + "browsing-site-blocked-description1": "Wykryliśmy potencjalną szkodliwą aktywność z tego adresu. Aby Cię chronić oraz Twój portfel, uniemożliwiamy dalszą nawigację. \n\nJeśli uważasz, że to błąd, daj nam znać w ", + "browsing-site-blocked-description2": " czat publiczny.", + "browsing-site-blocked-go-back": "Wróć", + "browsing-site-blocked-title": "Ta strona jest zablokowana", + "browsing-title": "Przeglądaj", + "bug-report": "Zgłoś błąd", + "bug-report-description": "* Opis", + "bug-report-description-placeholder": "Wymagane, nie może być puste", + "bug-report-steps": "Kroki do odtworzenia", + "bug-report-steps-placeholder": "- otwórz aplikację\n- zrób coś\n- a potem jeszcze coś...", + "bug-report-submit-email": "Prześlij e-mailem z archiwum logów", + "bug-report-submit-gh-issue": "Zgłoś problem na GitHubie bez logów", + "bug-report-too-short-description": "Opis jest za krótki", + "build-yourself": "Aby korzystać z aplikacji bez niniejszych Warunków Użytkowania, możesz zbudować własną wersję", + "buy-crypto": "Kup kryptowaluty", + "buy-crypto-choose-a-service": "Wybierz usługę, której chcesz użyć do zakupu kryptowalut", + "buy-crypto-description": "Znajdź zdecentralizowaną aplikację, aby kupić kryptowaluty", + "buy-crypto-leaving": "Opuszczasz aplikację Status i wchodzisz na zewnętrzną stronę internetową w celu sfinalizowania zakupu.", + "buy-crypto-title": "Wygląda na to, że Twój portfel jest pusty", + "camera-access-error": "Aby nadać wymagane uprawnienia dla aparatu, przejdź do ustawień systemowych i upewnij się, że zaznaczono opcję Status > Aparat.", + "can-not-add-yourself": "To ty, aby rozpocząć rozmowę, wybierz kogoś innego", + "can-send-messages": "Możesz wysyłać i odbierać nowe wiadomości", + "cancel": "Anuluj", + "cancel-keycard-setup": "Anuluj konfigurację karty Keycard", + "cancelling": "Anulowanie", + "cannot-read-card": "Nie można odczytać karty.\n Przyłóż ją do tylnej części telefonu", + "cannot-use-default-pin": "Kod dostępu 000000 jest niedozwolony.\n Użyj innego numeru", + "cant-open-public-chat": "Nie można utworzyć czatu publicznego", + "cant-report-bug": "Nie można zgłosić błędu", + "card-is-blank": "Ta karta jest pusta", + "card-reseted": "Karta została zresetowana", + "card-unpaired": "Karta została odłączona od bieżącego urządzenia", + "category": "Kategoria", + "category-title": "Tytuł kategorii", + "change-fleet": "Zmień fleet na {{fleet}}", + "change-logging-enabled": "Czy na pewno chcesz {{enable}} logowanie?", + "change-pairing": "Zmień kod parowania", + "change-pairing-description": "Zmiana kodu parowania nie wpływa na bieżące sparowania. Jednak każde nowe parowanie będzie wymagać nowego kodu.", + "change-pairing-title": "Utwórz nowy kod parowania", + "change-passcode": "Zmiana kodu dostępu", + "change-password": "Zmień hasło", + "change-pin": "Zmień 6-cyfrowy kod dostępu", + "change-puk": "Zmień 12-cyfrowy PUK", + "change-tip": "Zmień napiwek", + "changed-amount-warning": "Kwota została zmieniona z {{old}} na {{new}}", + "changed-asset-warning": "Aktywo zostało zmienione z {{old}} na {{new}}", + "chaos-mode": "Tryb Chaos", + "chaos-unicorn-day": "Chaos Dzień Jednorożca", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Czat", + "chat-and-transact": "Czatuj i przeprowadzaj prywatne transakcje z przyjaciółmi", + "chat-is-a-contact": "Kontakt", + "chat-is-not-a-contact": "To nie kontakt", + "chat-key": "Klucz czatu", + "chat-key-content": "Wiadomości w protokole czatu Status są wysyłane i odbierane przy użyciu kluczy szyfrujących. Klucz czatu publicznego to ciąg znaków, które udostępniasz innym, aby mogli wysyłać Ci wiadomości w statusie.", + "chat-key-title": "Klucz czatu", + "chat-link-previews": "Podgląd linków czatu", + "chat-name": "Nazwa czatu", + "chat-name-content": "Trzy losowe słowa, uzyskane algorytmicznie z twojego klucza czatu i używane jako twoja domyślna nazwa na czacie. Nazwy czatów są całkowicie unikalne; żaden inny użytkownik nie może mieć takich samych trzech słów, nazwy.", + "chat-name-title": "Nazwa czatu", + "chat-notification-preferences": "Ustawienia powiadomień", + "chat-settings": "Ustawienia czatu", + "chats": "Czaty", + "check-on-opensea": "Sprawdź na Opensea", + "check-your-recovery-phrase": "Sprawdź swoją frazę odzyskiwania (Seed)", + "choose-actions": "Wybierz działania", + "choose-authentication-method": "Wybierz metodę uwierzytelniania", + "choose-new-location-for-keystore": "Wybierz nową lokalizację, aby zapisać plik keystore", + "choose-storage": "Wybierz miejsce na dane", + "clear": "Wyczyść", + "clear-all": "Wyczyść wszystko", + "clear-history": "Wyczyść historię", + "clear-history-action": "Wyczyść", + "clear-history-confirmation": "Wyczyścić historię?", + "clear-history-confirmation-content": "Czy na pewno chcesz wyczyścić historię czatu?", + "clear-history-title": "Wyczyścić historię?", + "close": "Zamknij", + "close-all": "Zamknij wszystkie", + "close-app-button": "Potwierdź", + "close-app-content": "Aplikacja zatrzyma się i zamknie. Po ponownym otwarciu wybrana sieć zostanie użyta.", + "close-app-title": "Ostrzeżenie!", + "collectibles-leak-metadata": "Tutaj możesz wyświetlić swoje NFT. Jeśli to zrobisz, udostępnisz swój portfel i adres IP", + "command-button-send": "Wyślij", + "communities": "Społeczności", + "communities-alpha": "Społeczności (alpha)", + "communities-enabled": "Społeczności włączone", + "communities-verified": "✓ Zweryfikowana Społeczność Statusu", + "community": "Społeczność", + "community-color": "Kolor społeczności", + "community-color-placeholder": "Wybierz kolor", + "community-edit-title": "Edytuj społeczność", + "community-emoji-thumbnail-title": "Miniaturka", + "community-image-pick": "Wybierz obraz", + "community-image-remove": "Usuń", + "community-image-take": "Zrób zdjęcie", + "community-info": "Informacje o społeczności", + "community-info-not-found": "Nie znaleziono informacji o społeczności", + "community-invite-title": "Zaproś", + "community-key": "Klucz prywatny społeczności", + "community-key-placeholder": "Wpisz klucz prywatny swojej społeczności", + "community-link": "Link do społeczności", + "community-members": { + "one": "jeden", + "few": "kilku", + "many": "wielu", + "other": "inni" + }, + "community-members-title": "Użytkownicy", + "community-message-preview": "Zaproszenie do dołączenia do {{community-name}}", + "community-private-key": "Klucz prywatny społeczności", + "community-requests-to-join-title": "Prośby o członkostwo", + "community-roles": "Role", + "community-share-title": "Udostępnij", + "community-thumbnail-image": "Miniatura", + "community-thumbnail-upload": "Prześlij", + "complete-hardwallet-setup": "Ta karta jest teraz połączona. Potrzebujesz jej do podpisywania transakcji i odblokowywania kluczy", + "completed": "Zakończono", + "confirm": "Potwierdź", + "confirm-new-password": "Potwierdź nowe hasło", + "confirm-pairing-code-placeholder": "Potwierdź swój kod parowania...", + "confirm-password-placeholder": "Potwierdź swoje hasło", + "confirmation-request": "Prośba o potwierdzenie", + "confirmations": "Potwierdzenia", + "confirmations-helper-text": "Kiedy transakcja ma 12 potwierdzeń, możesz uznać ją za uregulowaną.", + "connect": "Połącz", + "connect-mailserver-content": "Połącz z {{name}}?", + "connect-wallet": "Podłącz portfel", + "connected": "Połączono", + "connected-to": "Podłączony do", + "connecting": "Trwa łączenie...", + "connecting-requires-login": "Połączenie z inną siecią wymaga logowania", + "connection-status": "Stan połączenia", + "connection-with-the-card-lost": "Połączenie z kartą\n zostało utracone", + "connection-with-the-card-lost-setup-text": "Aby wznowić konfigurację, przyłóż kartę \nz tyłu telefonu i utrzymuj fizyczny kontakt \nmiędzy kartą a telefonem", + "connection-with-the-card-lost-text": "Aby kontynuować, przyłóż kartę do tylnej części telefonu", + "contact-code": "Klucz czatu", + "contact-s": { + "one": "kontakt", + "few": "kontaktów", + "many": "kontaktów", + "other": "kontakty" + }, + "contacts": "Kontakty", + "contacts-descr": "W tym miejscu pojawią się Twoje kontakty. Będziesz otrzymywać aktualizacje statusu od każdej osoby, którą dodasz jako kontakt.", + "contacts-empty": "Kontakty z nazwami ENS będą wyświetlane tutaj", + "continue": "Kontynuuj", + "continue-anyway": "Mimo to kontynuuj", + "contract-address": "Adres kontraktu", + "contract-interaction": "Interakcja kontraktu", + "contract-isnt-supported": "Kontrakt nie jest obsługiwany", + "copy-info": "Kopiuj informacje", + "copy-qr": "Skopiuj kod", + "copy-to-clipboard": "Kopiuj", + "copy-transaction-hash": "Skopiuj ID transakcji", + "cost-fee": "Koszt\/Opłata", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Utwórz", + "create-a-pin": "Utwórz 6-cyfrowy kod dostępu", + "create-a-puk": "Utwórz 12-cyfrowy PUK", + "create-category": "Utwórz kategorię", + "create-channel": "Utwórz kanał", + "create-channel-title": "Nowy kanał", + "create-community": "Utwórz społeczność", + "create-group-chat": "Utwórz czat grupowy", + "create-multiaccount": "Wygeneruj klucze", + "create-new-key": "Uzyskaj nowe klucze", + "create-pin": "Utwórz 6-cyfrowy kod dostępu", + "create-pin-description": "Będziesz potrzebować swojej karty i 6-cyfrowego kodu, aby odblokować aplikację Status oraz potwierdzać transakcje.", + "created-group-chat-description": "Grupa {{group-name}}została utworzona", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Waluta", + "currency-display-name-aed": "Dirham Zjednoczonych Emiratów Arabskich", + "currency-display-name-afn": "Afgani afganistańskie", + "currency-display-name-ars": "Argentyńskie Peso", + "currency-display-name-aud": "Dolar australijski", + "currency-display-name-bbd": "Dolar Barbadosu", + "currency-display-name-bdt": "Taka", + "currency-display-name-bgn": "Bułgarski Lew", + "currency-display-name-bhd": "Bahrański dinar", + "currency-display-name-bnd": "Dolar Brunei", + "currency-display-name-bob": "Boliwijski boliwar", + "currency-display-name-brl": "Brazylijski Real", + "currency-display-name-btn": "Ngultrum", + "currency-display-name-cad": "Dolar Kanadyjski", + "currency-display-name-chf": "Frank szwajcarski", + "currency-display-name-clp": "Peso chilijskie", + "currency-display-name-cny": "Juan chiński Renminbi", + "currency-display-name-cop": "Peso kolumbijskie", + "currency-display-name-crc": "Colon kostarykański", + "currency-display-name-czk": "Korona czeska", + "currency-display-name-dkk": "Korona Duńska", + "currency-display-name-dop": "Peso dominikańskie", + "currency-display-name-egp": "Funt Egipski", + "currency-display-name-etb": "Birr etiopski", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Funt brytyjski", + "currency-display-name-gel": "Gruzińskie Lari", + "currency-display-name-ghs": "Cedi ghańskie", + "currency-display-name-hkd": "Dolar Hongkoński", + "currency-display-name-hrk": "Kuna chorwacka", + "currency-display-name-huf": "Forint węgierski", + "currency-display-name-idr": "Rupia indonezyjska", + "currency-display-name-ils": "Szekel izraelski", + "currency-display-name-inr": "Indyjska Rupia", + "currency-display-name-isk": "Korona islandzka", + "currency-display-name-jmd": "Dolar Jamajski", + "currency-display-name-jpy": "Jen japoński", + "currency-display-name-kes": "Kenijski Szyling", + "currency-display-name-krw": "Południowokoreański Won", + "currency-display-name-kwd": "Dinar kuwejcki", + "currency-display-name-kzt": "Kazachstański Tenge", + "currency-display-name-lkr": "Rupia lankijska", + "currency-display-name-mad": "Dirham marokański", + "currency-display-name-mdl": "Mołdawski Lej", + "currency-display-name-mur": "Rupia maurytyjska", + "currency-display-name-mwk": "Kwacha malawijska", + "currency-display-name-mxn": "Meksykańskie Peso", + "currency-display-name-myr": "Malezyjski Ringgit", + "currency-display-name-mzn": "Mozambijski Metikal", + "currency-display-name-nad": "Dolar Namibijski", + "currency-display-name-ngn": "Nigeryjska Naira", + "currency-display-name-nok": "Korona Norweska", + "currency-display-name-npr": "Nepalska Rupia", + "currency-display-name-nzd": "Dolar nowozelandzki", + "currency-display-name-omr": "Rial Omański", + "currency-display-name-pen": "Sol peruwiański", + "currency-display-name-pgk": "Kina Papui-Nowej Gwinei", + "currency-display-name-php": "Peso filipińskie", + "currency-display-name-pkr": "Pakistańska Rupia", + "currency-display-name-pln": "Polski złoty", + "currency-display-name-pyg": "Paragwajskie Guarani", + "currency-display-name-qar": "Rial Katarski", + "currency-display-name-ron": "Rumuński Lej", + "currency-display-name-rsd": "Serbski dinar", + "currency-display-name-rub": "Rosyjski Rubel", + "currency-display-name-sar": "Rial Saudyjski", + "currency-display-name-sek": "Korona szwedzka", + "currency-display-name-sgd": "Dolar singapurski", + "currency-display-name-thb": "Baht tajlandzki", + "currency-display-name-try": "Lira Turecka", + "currency-display-name-ttd": "Dolar Trynidadu i Tobago", + "currency-display-name-twd": "Dolar Tajwański", + "currency-display-name-tzs": "Tanzański Szyling", + "currency-display-name-uah": "Hrywna ukraińska", + "currency-display-name-ugx": "Ugandyjski Szyling", + "currency-display-name-usd": "Dolar amerykański", + "currency-display-name-uyu": "Urugwajskie Peso", + "currency-display-name-vef": "Boliwar Wenezuelski", + "currency-display-name-vnd": "Wietnam Dong", + "currency-display-name-zar": "Południowoafrykański Rand", + "current": "Obecne", + "current-average": "Aktualna średnia", + "current-average-tip": "Aktualny średni napiwek", + "current-base": "Aktualna baza", + "current-base-fee": "Aktualna opłata podstawowa", + "current-minimum-tip": "Aktualna minimalny napiwek", + "current-network": "Obecna sieć", + "current-password": "Aktualne hasło", + "current-pin": "Wprowadź 6-cyfrowy kod dostępu", + "current-pin-description": "Wprowadź swój 6-cyfrowy kod dostępu, aby kontynuować.", + "custom": "Niestandardowe", + "custom-networks": "Niestandardowe ustawienia sieci", + "custom-node": "Używasz niestandardowego punktu końcowego RPC. Twoja historia lokalnych przelewów może być niekompletna.", + "custom-seed-phrase": "Nieprawidłowa fraza odzyskiwania (Seed)", + "custom-seed-phrase-text-1": "Ta fraza odzyskiwania (Seed) nie pasuje do naszego obsługiwanego słownika. Sprawdź, czy nie ma błędnie wpisanych słów.", + "dapp": "dApp", + "dapp-starter-pack-accept": "Zaakceptuj i otwórz", + "dapp-starter-pack-description": "Oto trochę kryptowalut na dobry początek! Użyj ich, aby kupić naklejki, zmienić nazwę ENS lub korzystać ze zdecentralizowanych aplikacji", + "dapp-starter-pack-title": "Pakiet startowy", + "dapp-would-like-to-connect-wallet": "chciałby połączyć się z", + "dapps": "dAppsy", + "dapps-permissions": "Uprawnienia zdecentralizowanych aplikacji (dApps)", + "dark": "Ciemny", + "data": "Dane", + "data-collected": "Zebrane dane", + "data-collected-subtitle": "Poniższa tabela pokazuje dokładne dane, które są przechowywane i zostaną wysłane. Dane są sprawdzane zgodnie z zasadami publicznymi, aby zapewnić, że nie są wysyłane żadne dane wrażliwe. Nie ufaj, zweryfikuj.", + "data-syncing": "Synchronizacja danych", + "database-reset-content": "Czaty, kontakty i ustawienia zostały usunięte. Możesz używać swojego konta za pomocą karty Keycard", + "database-reset-title": "Reset bazy danych", + "database-reset-warning": "Baza danych zostanie zresetowana. Czaty, kontakty i ustawienia zostaną usunięte", + "datetime-ago": "temu", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "dzień", + "few": "dni", + "many": "dni", + "other": "dni" + }, + "datetime-day-short": { + "one": "D", + "few": "D", + "many": "D", + "other": "D" + }, + "datetime-hour": { + "one": "godzina", + "few": "godzin", + "many": "godzin", + "other": "godzin(y)" + }, + "datetime-hour-short": { + "one": "G", + "few": "G", + "many": "G", + "other": "G" + }, + "datetime-minute": { + "one": "minuta", + "few": "minut", + "many": "minut", + "other": "minut(y)" + }, + "datetime-minute-short": { + "one": "M", + "few": "M", + "many": "M", + "other": "M" + }, + "datetime-second": { + "one": "sekunda", + "few": "sekund", + "many": "sekund", + "other": "sekund(y)" + }, + "datetime-second-short": { + "one": "S", + "few": "S", + "many": "S", + "other": "S" + }, + "datetime-today": "dzisiaj", + "datetime-yesterday": "wczoraj", + "decimals": "Liczby po przecinku", + "decline": "Odrzuć", + "decryption-failed-content": "Nie udało się odszyfrować Twoich danych. Może być konieczne usunięcie starych danych i utworzenie nowego konta. Naciśnij 'Zastosuj', aby wymazać dane lub wybierz 'Anuluj' aby spróbować ponownie", + "default": "Domyślne", + "default-assets": "Domyślne ERC20 i ERC721", + "default-sync-period": "Synchronizuj historię dla", + "delete": "Usuń", + "delete-account": "Usuń konto", + "delete-and-leave-group": "Usuń i opuść grupę", + "delete-bootnode": "Usuń bootnode", + "delete-bootnode-are-you-sure": "Czy na pewno chcesz usunąć ten bootnode?", + "delete-bootnode-title": "Usuń bootnode", + "delete-category-confirmation": "Czy na pewno chcesz usunąć tę kategorię?", + "close-chat": "Usuń czat", + "close-chat-confirmation": "Czy na pewno chcesz usunąć ten czat?", + "delete-confirmation": "Usunąć?", + "delete-keys-keycard": "Usuń klucze z karty Keycard", + "delete-mailserver": "Usuń węzeł Status", + "delete-mailserver-are-you-sure": "Czy na pewno chcesz usunąć ten węzeł Status?", + "delete-mailserver-title": "Usuń węzeł Status", + "delete-message": "Usuń wiadomość", + "delete-my-account": "Usuń moje konto", + "delete-my-profile": "Usuń mój profil", + "delete-network-confirmation": "Czy na pewno chcesz usunąć tę sieć?", + "delete-network-error": "Przed usunięciem tej sieci proszę połączyć się z inną siecią", + "delete-network-title": "Usunąć sieć?", + "delete-node": "Usuń węzeł", + "delete-node-are-you-sure": "Czy na pewno chcesz usunąć ten węzeł?", + "delete-node-title": "Usuń węzeł", + "delete-profile": "Usuń profil", + "delete-profile-warning": "Ostrzeżenie: jeśli nie zapisałeś swojej frazy Seed, utracisz dostęp do swoich funduszy po usunięciu swojego profilu", + "deny": "Odmów", + "derivation-path": "Ścieżka wyprowadzenia", + "describe-channel": "Opisz kanał", + "description": "Opis", + "dev-mode": "Tryb deweloperski", + "dev-mode-settings": "Ustawienia trybu deweloperskiego", + "device-syncing": "Synchronizacja urządzeń", + "devices": "Urządzenia", + "disable": "wyłącz", + "disable-all": "Wyłącz wszystkie", + "disable-later-in-settings": "Możesz wyłączyć to później w Ustawieniach", + "disabled": "Wyłączone", + "disconnected": "Łączenie z peerami…", + "discover": "Odkryj", + "dismiss": "Odrzuć", + "display-collectibles": "Eksponuj kolekcje", + "done": "Zrobione", + "dont-ask": "Nie pytaj mnie ponownie", + "edit": "Edytuj", + "edit-channel-title": "Edytuj kanał", + "edit-chats": "Edytuj czaty", + "edit-community": "Edytuj społeczność", + "edit-favourite": "Edytuj ulubione", + "edit-group": "Edytuj grupę", + "edit-profile": "Edytuj profil", + "edited": "Edytowane", + "editing-message": "Edycja wiadomości", + "empty-activity-center": "Twoje powiadomienia z czatu\npojawią się tutaj", + "empty-chat-description": "W tym czacie nie ma \njeszcze wiadomości", + "empty-chat-description-community": "Było tu cicho przez ostatnie {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Wszystkie wysyłane tutaj wiadomości są szyfrowane i mogą być odczytane tylko przez Ciebie i ", + "empty-chat-description-public": "Przez ostatnie {{quiet-hours}} było tu cicho. Rozpocznij rozmowę lub ", + "empty-chat-description-public-share-this": "udostępnij ten czat.", + "empty-keycard-required": "Wymaga pustej karty Keycard", + "empty-pending-invitations-descr": "Osoby, które chcą dołączyć do grupy\npoprzez link zapraszający pojawią się tutaj", + "empty-tab": "Pusta karta", + "enable": "Włącz", + "enable-all": "Włącz wszystkie", + "enable-link-previews": "Włączyć podgląd linków na czacie?", + "encrypt-with-password": "Szyfruj za pomocą hasła", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Dodaj nazwę użytkownika", + "ens-agree-to": "Zgadzam się na ", + "ens-chat-settings": "Ustawienia czatu", + "ens-custom-domain": "Domena niestandardowa", + "ens-custom-username-hints": "Wpisz całą nazwę użytkownika, w tym domenę niestandardową, taką jak nazwaużytkownika.domena.eth", + "ens-custom-username-taken": "Nazwa użytkownika nie należy do Ciebie :(", + "ens-deposit": "Depozyt", + "ens-dismiss-message": "Kliknij tutaj, aby odrzucić", + "ens-displayed-with": "Twoje wiadomości są wyświetlane innym osobom za pomocą", + "ens-get-name": "Uzyskaj uniwersalną nazwę użytkownika", + "ens-got-it": "Ok, rozumiem", + "ens-locked": "Nazwa użytkownika zablokowana. Nie będzie można jej uwolnić do {{date}}", + "ens-name-content": "Niestandardowa nazwa dla twojego klucza czatu, którą możesz zarejestrować za pomocą usługi Ethereum Name Service, w skrócie ENS. Nazwy ENS to zdecentralizowane nazwy użytkowników.", + "ens-name-not-found": "Nie można rozpoznać nazwy ENS", + "ens-name-title": "Nazwa ENS", + "ens-network-restriction": "Dostępne tylko na Mainnet", + "ens-no-usernames": "Nie masz podłączonej żadnej nazwy użytkownika", + "ens-powered-by": "Napędzane przez Ethereum Name Services", + "ens-primary-username": "Podstawowa nazwa użytkownika", + "ens-register": "Zarejestruj", + "ens-registration-failed": "Aby zarejestrować nazwę użytkownika, proszę spróbować ponownie.", + "ens-registration-failed-title": "Transakcja nie powiodła się", + "ens-registration-failure": "Rejestracja nie powiodła się", + "ens-registration-in-progress": "Rejestracja w toku ...", + "ens-release-username": "Zwolnij nazwę użytkownika", + "ens-remove-hints": "Usunięcie spowoduje odłączenie nazwy użytkownika od twojego klucza.", + "ens-remove-username": "Usuń nazwę użytkownika", + "ens-saved": "jest teraz połączony z twoim kluczem czatu i może być używany w aplikacji Status.", + "ens-saved-title": "Nazwa użytkownika została dodana", + "ens-show-username": "Pokaż moją nazwę użytkownika ENS w czatach", + "ens-terms-header": "Warunki rejestracji nazwy.", + "ens-terms-point-1": "Fundusze są zdeponowane na 1 rok. Twoje SNT zostaną zablokowane, ale nie zostaną wydane.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Rejestr ENS).", + "ens-terms-point-2": "Po upływie 1 roku możesz zwolnić nazwę i odzyskać depozyt lub nie podejmować żadnych działań, aby ją zachować.", + "ens-terms-point-3": "Jeśli warunki umowy ulegną zmianie — np. Status dokona aktualizacji umowy — użytkownik ma prawo do zwolnienia nazwy użytkownika bez względu na czas posiadania.", + "ens-terms-point-4": "Kontroler kontraktu nie ma dostępu do Twoich zdeponowanych środków. Mogą być one jedynie przeniesione z powrotem na adres, który je wysłał.", + "ens-terms-point-5": "Twój adres lub adresy będą publicznie powiązane z twoją nazwą ENS.", + "ens-terms-point-6": "Nazwy użytkowników są tworzone jako węzły subdomeny stateofus.eth i podlegają warunkom inteligentnego kontraktu (smart contract) ENS.", + "ens-terms-point-7": "Upoważniasz kontrakt do przeniesienia SNT w Twoim imieniu. Może to nastąpić tylko wtedy, gdy zatwierdzisz transakcję, aby autoryzować przelew.", + "ens-terms-point-8": "Warunki te są gwarantowane przez logikę inteligentnego kontraktu w adresach:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "Warunki rejestracji nazwy.", + "ens-test-message": "Hej", + "ens-transaction-pending": "Transakcja w toku...", + "ens-understand": "Rozumiem, że mój adres portfela będzie publicznie połączony z moją nazwą użytkownika.", + "ens-username": "Nazwa użytkownika ENS", + "ens-username-already-added": "Nazwa użytkownika jest już połączona z twoim kluczem czatu i może być używana wewnątrz aplikacji Status.", + "ens-username-available": "✓ Nazwa użytkownika jest dostępna!", + "ens-username-connected": "Ta nazwa użytkownika należy do Ciebie i jest połączona z Twoim kluczem czatu.", + "ens-username-connected-continue": "Kontynuuj ustawianie opcji `Pokazuj moją nazwę użytkownika ENS w czatach`.", + "ens-username-connected-with-different-key": "Kontynuacja będzie wymagać transakcji w celu połączenia nazwy użytkownika z aktualnym kluczem czatu.", + "ens-username-connection-confirmation": "{{username}} zostanie połączony po zakończeniu transakcji.", + "ens-username-hints": "Co najmniej 4 znaki. Tylko litery łacińskie, cyfry i małe litery.", + "ens-username-invalid": "Tylko cyfry i litery.", + "ens-username-owned": "✓ Nazwa użytkownika jest twoją własnością.", + "ens-username-owned-continue": "Kontynuacja spowoduje połączenie tej nazwy użytkownika z twoim kluczem czatu.", + "ens-username-registration-confirmation": "Świetnie! Zostaniesz właścicielem {{username}} po zakończeniu transakcji.", + "ens-username-taken": "Nazwa użytkownika jest już zajęta :(", + "ens-username-you-can-follow-progress": "Możesz śledzić postęp w sekcji „Historia Transakcji” w swoim portfelu.", + "ens-usernames": "Nazwy użytkowników ENS", + "ens-usernames-details": "Zarejestruj uniwersalną nazwę użytkownika, aby być łatwo rozpoznawalnym przez innych użytkowników", + "ens-want-custom-domain": "Jestem właścicielem nazwy w innej domenie", + "ens-want-domain": "Chcę mieć domenę stateofus.eth", + "ens-welcome-hints": "Nazwy ENS przekształcają szalenie długie adresy w unikalne nazwy użytkowników.", + "ens-welcome-point-customize": "Nazwa ENS może zastąpić twoje losowe 3-słowne imię na czacie. Bądź @własnanazwa zamiast {{name}}.", + "ens-welcome-point-customize-title": "Dostosuj nazwę swojego czatu", + "ens-welcome-point-receive": "Inni mogą wysłać Ci fundusze za pośrednictwem czatu w jednym prostym kroku.", + "ens-welcome-point-receive-title": "Odbieraj transakcje na czacie", + "ens-welcome-point-register": "Zarejestruj się raz, aby zachować nazwę na zawsze. Po 1 roku możesz zwolnić nazwę i odzyskać SNT.", + "ens-welcome-point-register-title": "10 SNT do rejestracji", + "ens-welcome-point-simplify": "Możesz otrzymać środki na swoją łatwą do udostępnienia nazwę ENS zamiast na swój szesnastkowy hash (0x ...).", + "ens-welcome-point-simplify-title": "Uprość swój adres ETH", + "ens-welcome-point-verify": "W kolejnych krokach możesz zweryfikować i dodać dowolne posiadane przez Ciebie nazwy użytkowników.", + "ens-welcome-point-verify-title": "Posiadasz już nazwę użytkownika?", + "ens-your-username": "Twoja nazwa użytkownika", + "ens-your-usernames": "Twoje nazwy użytkownika", + "ens-your-your-name": "Twoja nazwa ENS", + "enter-12-words": "Wpisz 12 słów swojej frazy odzyskiwania (Seed), oddzielonych pojedynczymi spacjami.", + "enter-a-private-key": "Wprowadź klucz prywatny", + "enter-a-seed-phrase": "Wpisz frazę odzyskiwania (Seed)", + "enter-address": "Wprowadź adres", + "enter-contact-code": "ENS (vitalik94) lub klucz czatu (0x04...)", + "enter-pair-code": "Wprowadź swój kod parowania", + "enter-pair-code-description": "Kod parowania może być ustawiony z już sparowanego klienta Status.", + "enter-password": "Wprowadź hasło", + "enter-password-migration-prompt": "Wprowadź swoje hasło, aby przenieść kontakty, czaty i ustawienia wraz z Twoimi kluczami", + "enter-pin": "Wprowadź 6-cyfrowy kod dostępu", + "enter-puk-code": "Wprowadź kod PUK.", + "enter-puk-code-description": "6-cyfrowy kod dostępu został zablokowany.\n Wprowadź kod PUK, aby odblokować kod dostępu.", + "enter-recipient-address-or-username": "Wprowadź adres lub nazwę użytkownika odbiorcy", + "enter-seed-phrase": "Wpisz frazę odzyskiwania (Seed)", + "enter-url": "Wprowadź adres URL", + "enter-user-pk": "Wprowadź klucz publiczny użytkownika", + "enter-watch-account-address": "Zeskanuj kod QR\nlub\nwprowadź adres do obejrzenia", + "enter-word": "Wprowadź słowo", + "enter-your-code": "Wprowadź swój 6-cyfrowy kod dostępu.", + "enter-your-password": "Wprowadź swoje hasło.", + "error": "Błąd", + "error-unable-to-get-balance": "Nie można uzyskać historii transakcji", + "error-unable-to-get-prices": "Błąd konwersji waluty. Odśwież ekran, aby spróbować ponownie.", + "error-unable-to-get-token-balance": "Nie można uzyskać historii transakcji", + "errors": "Błędy", + "eth": "ETH", + "ethereum-account": "Konto Ethereum", + "ethereum-address": "Adres Ethereum", + "ethereum-node-started-incorrectly-description": "Węzeł Ethereum został uruchomiony z nieprawidłową konfiguracją, aplikacja zostanie zatrzymana w celu przywrócenia stanu pierwotnego. Skonfigurowany identyfikator sieci = {{network-id}}, rzeczywisty = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Węzeł Ethereum został uruchomiony nieprawidłowo", + "etherscan-lookup": "Wyszukaj na Etherscan", + "everyone": "Wszystkich", + "expand-all": "Rozwiń wszystko", + "export-account": "Eksportuj konto", + "export-key": "Eksportuj klucz prywatny", + "external-storage-denied": "Odmowa dostępu do zewnętrznej pamięci masowej", + "failed": "Niepowodzenie", + "faq": "Często zadawane pytania", + "fast": "Szybki", + "favourite": "Ulubione", + "favourite-description": "Twoje ulubione strony pojawią się tutaj", + "favourites": "Ulubione", + "favourites-empty": "Adresy dodane do ulubionych pojawią się tutaj", + "fee-cap": "Pułap opłat", + "fee-explanation": "Maksymalna łączna cena za transakcję. Jeżeli opłata bazowa bloku przekroczy tę kwotę, zostanie ona uwzględniona w kolejnym bloku z niższą opłatą bazową.", + "fee-options": "Proponowane opcje opłat", + "fetch-community": "Społeczność pobierania", + "fetch-messages": "↓ Pobierz wiadomości", + "fetch-timeline": "↓ Pobierz", + "fetching-community": "Pobieranie społeczności...", + "find": "Znajdź", + "finish": "Zakończ", + "finishing-card-setup": "Kończę konfigurację karty", + "fleet": "Fleet", + "fleet-settings": "Ustawienia fleet", + "follow": "Śledź", + "follow-your-interests": "Dołącz do publicznego czatu i poznaj nowych ludzi", + "free": "↓ Darmowy", + "from": "Od", + "gas-amount-limit": "Limit ilości gazu", + "gas-limit": "Limit Gasu", + "gas-price": "Cena gasu", + "gas-used": "Użyty gas", + "generate-a-key": "Generuj klucze", + "generate-a-new-account": "Wygeneruj konto", + "generate-a-new-key": "Wygeneruj nowy klucz", + "generate-account": "Generuj klucze", + "generate-an-account": "Wygeneruj konto", + "generate-new-key": "Generuj klucze", + "generating-codes-for-pairing": "> Pobieranie oprogramowania produktu na kartę\n > Generowanie kodów odblokowujących i parujących", + "generating-keys": "Generowanie kluczy ...", + "generating-mnemonic": "Generowanie frazy odzyskiwania (Seed)", + "get-a-keycard": "Zdobądź kartę Keycard", + "get-started": "Rozpocznij", + "get-status-at": "Pobierz Status na http:\/\/status.im", + "get-stickers": "Pobierz naklejki", + "give-a-short-description": "Podaj krótki opis", + "give-a-short-description-community": "Podaj krótki opis", + "give-permissions-camera": "Daj pozwolenie\nna dostęp do kamery", + "glossary": "Słowniczek", + "go-to-settings": "Przejdź do Ustawień", + "got-it": "Rozumiem", + "grant-face-id-permissions": "Aby nadać wymagane uprawnienia Face ID, należy przejść do ustawień systemowych i upewnić się, że opcja Status > Face ID jest zaznaczona", + "group-chat": "Czat grupowy", + "group-chat-admin": "Administrator", + "group-chat-admin-added": "**{{member}}** został administratorem", + "group-chat-all-contacts-invited": "Wszystkie Twoje kontakty są już w grupie", + "group-chat-created": "**{{member}}** utworzył grupę **{{name}}**.", + "group-chat-decline-invitation": "Odrzuć zaproszenie", + "group-chat-member-added": "**{{member}}** został zaproszony", + "group-chat-member-joined": "**{{member}}** dołączył do grupy", + "group-chat-member-removed": "** {{member}} ** opuścił grupę", + "group-chat-members-count": "{{selected}} \/ {{max}} członków", + "group-chat-name-changed": "{{member}} zmienił nazwę grupy na {{name}}", + "group-chat-no-contacts": "Nie masz jeszcze żadnych kontaktów.\nZaproś swoich znajomych do rozpoczęcia czatu", + "group-info": "Informacje o grupie", + "group-invite": "Zaproszenie do grupy", + "group-invite-link": "Link z zaproszeniem do grupy", + "group-membership-request": "Prośba o członkostwo w grupie", + "gwei": "Gwei", + "has-permissions": "ma pozwolenie na dostęp", + "hash": "Hash", + "help": "pomoc", + "help-capitalized": "Pomoc", + "help-center": "Centrum pomocy", + "help-improve-status": "Pomóż ulepszyć Status", + "hide": "Ukryj", + "hide-content-when-switching-apps": "Zablokuj zrzuty ekranu", + "hide-content-when-switching-apps-ios": "Ukryj podgląd", + "history": "Historia", + "history-nodes": "Węzły Status", + "hold-card": "przytrzymaj kartę z tyłu telefonu", + "home": "Start", + "hooks": "Hooks", + "how-it-works": "Jak to działa?", + "http-gateway-error": "Ups, żądanie się nie powiodło!", + "identifier": "Identyfikator", + "image": "Obraz", + "image-remove-current": "Usuń obecne zdjęcie", + "image-source-gallery": "Wybierz z galerii", + "image-source-make-photo": "Przechwyć", + "image-source-title": "Edytuj zdjęcie", + "import": "Importuj", + "import-community": "Importuj społeczność", + "import-community-title": "Importuj społeczność", + "in-contacts": "W kontaktach", + "include": "Dołącz", + "incoming": "Przychodzące", + "incoming-transaction": "Transakcja przychodząca", + "incorrect-code": [ + "str", + "Przepraszamy, kod jest nieprawidłowy. Prosimy wprowadzić kod ponownie" + ], + "increase-gas": "Zwiększ Gas", + "initialization": "Rozpoczynanie", + "install": "↓ Zainstaluj", + "intro-message1": "Witamy w Status!\nKliknij tę wiadomość, aby ustawić hasło i rozpocząć!", + "intro-privacy-policy-note1": "Status nie zbiera ani nie czerpie korzyści z twoich danych osobowych. Kontynuując, zgadzasz się z", + "intro-privacy-policy-note2": "Polityka prywatności", + "intro-text": "Status jest twoją bramą do zdecentralizowanej sieci.", + "intro-text1": "Rozmawiaj za pośrednictwem sieci typu peer-to-peer, w której wiadomości nie mogą być cenzurowane ani hakowane", + "intro-text2": "Wysyłaj i odbieraj cyfrowe aktywa w dowolnym miejscu na świecie — bez konieczności posiadania konta bankowego", + "intro-text3": "Odkrywaj gry, giełdy i sieci społecznościowe, w których tylko Ty jesteś właścicielem swoich danych", + "intro-title1": "Prawdziwie prywatna komunikacja", + "intro-title2": "Bezpieczny portfel kryptowalutowy", + "intro-title3": "Zdecentralizowane aplikacje", + "intro-wizard-text1": "Zestaw kluczy kontroluje Twoje konto. Twoje klucze są przechowywane w telefonie, więc tylko ty możesz ich używać", + "intro-wizard-text2": "Jeden klucz jest przeznaczony do czatu. Dostarczany jest z czytelną nazwą, której nie można zmienić.", + "intro-wizard-text3": "Jeśli posiadasz kartę Keycard, przechowuj w niej klucze dla większego bezpieczeństwa.", + "intro-wizard-text4": "Zabezpiecz i zaszyfruj swoje klucze", + "intro-wizard-text6": "Status będzie Cię powiadamiał o nowych wiadomościach. Możesz później edytować swoje preferencje dotyczące powiadomień w ustawieniach.", + "intro-wizard-title-alt4": "Utwórz hasło", + "intro-wizard-title-alt5": "Potwierdź swoje hasło", + "intro-wizard-title1": "Zdobądź swoje klucze", + "intro-wizard-title2": "Wybierz nazwę czatu", + "intro-wizard-title3": "Wybierz miejsce przechowywania klucza", + "intro-wizard-title4": "Utwórz 6-cyfrowy kod dostępu", + "intro-wizard-title5": "Potwierdź kod dostępu", + "intro-wizard-title6": "Włącz powiadomienia", + "introduce-yourself": "Przedstaw się za pomocą krótkiego opisu", + "invalid-address-qr-code": "Zeskanowany kod QR nie zawiera prawidłowego adresu", + "invalid-format": "Niepoprawny format\nMusi być {{format}}", + "invalid-key-confirm": "Zastosuj", + "invalid-key-content": "Baza danych nie może zostać zaszyfrowana, ponieważ plik jest uszkodzony. Twoje środki i klucz czatu są bezpieczne. Inne dane, takie jak czaty i kontakty, nie mogą zostać przywrócone. Przycisk '{{erase-multiaccounts-data-button-text}}' usunie wszystkie inne dane i pozwoli Ci na dostęp do Twoich środków i wysyłanie wiadomości.", + "invalid-number": "Nieprawidłowy numer", + "invalid-pairing-password": "Nieprawidłowe hasło parowania", + "invalid-public-chat-topic": "Nieprawidłowy temat czatu publicznego", + "invalid-range": "Nieprawidłowy format musi zawierać się między {{min}} a {{max}}", + "invalid-username-or-key": "Nieprawidłowa nazwa użytkownika lub klucz czatu", + "invite": "Zaproś", + "invite-button": "Zaproś", + "invite-chat-accept": "Przyjmij", + "invite-chat-accept-join": "Zaakceptuj i dołącz", + "invite-chat-intro": "Zostałeś polecony przez znajomego, aby dołączyć do Status. Oto trochę kryptowalut na dobry początek! Użyj Ich, aby zarejestrować nazwę ENS lub kupić pakiet naklejek.", + "invite-chat-name": "Polecenie Znajomego", + "invite-chat-pending": "Oczekujące", + "invite-chat-rule": "Akceptacja wynagrodzi również znajomego premią w postaci bonusu kryptowalutowego", + "invite-chat-starter-pack": "Pakiet startowy", + "invite-friends": "Zaproś znajomych", + "invite-instruction-fifth": "Bonus za polecenie możesz zrealizować w dowolnym momencie.", + "invite-instruction-first": "Wysyłasz znajomemu unikalny link z zaproszeniem do pobrania i dołączenia do platformy Status", + "invite-instruction-fourth": "Otrzymasz premię za polecenie, a twój znajomy pakiet startowy", + "invite-instruction-second": "Twój znajomy pobiera Status i tworzy konto (na Androidzie)", + "invite-instruction-third": "Czat z Twoim znajomym rozpoczął się, w którym to potwierdzi on Twoje polecenie", + "invite-people": "Zaproś ludzi", + "invite-privacy-policy-public": "Zainstalowałeś Status poprzez link polecający. Dołączając do tego czatu, przypisujesz się do osoby polecającej i zgadzasz się na", + "invite-privacy-policy1": "Akceptując wyrażasz zgodę na program poleceń", + "invite-privacy-policy2": "Warunki i zasady.", + "invite-public-chat-home": "Zaproszenie polecające", + "invite-public-chat-intro": "Oto trochę kryptowalut na dobry początek! Użyj ich, aby zarejestrować nazwę ENS lub kupić pakiet naklejek", + "invite-receive-account": "Konto, aby otrzymać premię za polecenie", + "invite-reward": "Zarabiaj kryptowaluty za każdego znajomego, którego zaprosisz!", + "invite-reward-friend": "Znajomy: ", + "invite-reward-friend-description": "Twój znajomy otrzyma Pakiet Startowy składający się z {{reward}} na początek", + "invite-reward-friend-name": "Pakiet startowy", + "invite-reward-you": "Ty:", + "invite-reward-you-description": "Zaproś znajomego i otrzymaj {{reward}} jako bonus za polecenie. Użyj go, aby uzyskać naklejki, nazwę ENS i korzystać ze zdecentralizowanych aplikacji", + "invite-reward-you-name": "Premia za polecenie", + "invite-select-account": "Wybierz konto, aby otrzymać premię za polecenie", + "invite-warning": "Ta promocja jest ważna tylko dla użytkowników urządzeń z systemem Android, którzy nie są mieszkańcami USA. Znajomy musi potwierdzić polecenie w ciągu 7 dni.", + "invited": "zaproszeni", + "join": "Dołącz", + "join-a-community": "lub dołącz do społeczności", + "join-group-chat": "Dołącz do grupy", + "join-group-chat-description": "{{username}}zaprosił Cię abyś dołączył do grupy {{group-name}}", + "join-me": "Hej, dołącz do mnie na Status: {{url}}", + "join-new-private-chat": "Rozpocznij nowy prywatny czat", + "join-new-public-chat": "Dołącz do publicznego czatu", + "joined": "Dołączono", + "joined-group-chat-description": "Dołączyłeś do {{group-name}} z zaproszenia od {{username}}.", + "key": "Klucz", + "key-managment": "Zarządzanie kluczami", + "key-on-device": "Klucz prywatny jest zapisany na tym urządzeniu", + "keycard": "Karta Keycard", + "keycard-access-reset": "Dostęp do karty jest zresetowany", + "keycard-applet-install-instructions": "Aby zainstalować aplet, postępuj zgodnie z instrukcjami na https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Spróbuj przesunąć kartę, aby znaleźć czytnik NFC w swoim urządzeniu", + "keycard-awaiting-title": "Nadal szukam...", + "keycard-backup": "Utwórz kopię zapasową karty Keycard", + "keycard-backup-success-body": "Karta zapasowa została utworzona pomyślnie. Możesz jej teraz używać na swoim koncie tak samo, jak karty głównej.", + "keycard-backup-success-title": "Wykonanie kopii zapasowej zakończone sukcesem", + "keycard-blocked": "Karta kluczy została zablokowana.\nAby kontynuować korzystanie z karty, musisz zresetować kartę.", + "keycard-can-use-with-new-passcode": "Możesz używać tej karty z nowym kodem dostępu", + "keycard-cancel-setup-text": "Spowoduje to anulowanie konfiguracji karty kluczy. Zdecydowanie zaleca się zakończenie konfiguracji w celu użycia karty Keycard. Czy naprawdę chcesz anulować?", + "keycard-cancel-setup-title": "Niebezpieczna operacja", + "keycard-connected-description": "Spróbuj trzymać kartę nieruchomo", + "keycard-connected-title": "Połączono", + "keycard-desc": "Posiadasz kartę Keycard? Przechowuj na niej swoje klucze; będzie Ci ona potrzebna do transakcji", + "keycard-dont-ask-card": "Nie pytaj o kartę, aby się zalogować", + "keycard-enter-new-passcode": "Wprowadź nowy kod dostępu {{step}}\/2", + "keycard-error-description": "Podłącz ponownie kartę, aby kontynuować", + "keycard-error-title": "Utracono połączenie", + "keycard-factory-reset": "Przywróć kartę do ustawień fabrycznych", + "keycard-factory-reset-text": "Wykonanie tej czynności spowoduje usunięcie wszystkich fraz mnemotechnicznych zapisanych na karcie. Upewnij się, że masz kopię zapasową wyrażenia mnemotechnicznego, którego używałeś z tą kartą.", + "keycard-factory-reset-title": "Czy na pewno chcesz przywrócić ustawienia fabryczne?", + "keycard-free-pairing-slots": "Keycard ma {{n}} wolne miejsca na parowanie", + "keycard-has-multiaccount-on-it": "Ta karta jest pełna. Każda karta może pomieścić jedną główną parę kluczy", + "keycard-init-description": "Przyłóż kartę do tylnej części telefonu, aby kontynuować", + "keycard-init-title": "Szukam kart ...", + "keycard-is-blocked-details": "Nie możesz już używać tej karty do uzyskiwania dostępu lub zalogowania się na to konto. Było zbyt wiele nieudanych prób wprowadzenia kodu dostępu i kodu PUK.", + "keycard-is-blocked-instructions": "Aby uzyskać dostęp do swojego konta, musisz zresetować kartę do ustawień fabrycznych. Naciśnij poniższy przycisk, aby rozpocząć procedurę, będziesz potrzebować swojego wyrażenia mnemomicznego.", + "keycard-is-blocked-title": "Karta Keycard jest zablokowana", + "keycard-is-frozen-details": "Aby chronić swoje zasoby, karta została zawieszona. Zresetuj kartę, aby ją odblokować i móc wysyłać transakcje. Możesz to zrobić za pomocą PUK lub wyrażenia mnemomicznego.", + "keycard-is-frozen-factory-reset": "Zresetuj regułą mnemotechniczną,", + "keycard-is-frozen-reset": "Zresetuj za pomocą PUK", + "keycard-is-frozen-title": "Karta Keycard jest zamrożona", + "keycard-onboarding-finishing-header": "Kończę", + "keycard-onboarding-intro-header": "Przechowuj swoje klucze na karcie Keycard", + "keycard-onboarding-intro-text": "Przygotuj się, może to zająć kilka minut, ale ważne jest to, abyś zabezpieczył swoje konto", + "keycard-onboarding-mnemonic-text": "Będziesz również potrzebował kartki papieru i ołówka, aby zapisać swoje hasło.", + "keycard-onboarding-pairing-header": "Parowanie karty ...", + "keycard-onboarding-pin-text": "Będziesz musiał utworzyć 6-cyfrowy kod dostępu, który będzie używany do ochrony dostępu do Twojej karty Keycard.", + "keycard-onboarding-preparing-header": "Przygotowanie karty ...", + "keycard-onboarding-puk-code-header": "Zapisz kody\n i przechowuj je bezpiecznie", + "keycard-onboarding-recovery-phrase-description": "Potrzebujesz tej frazy odzyskiwania (Seed), aby odzyskać swój klucz. Zapisz ją. Przechowuj ją w bezpiecznym miejscu, poza siecią i poza tym urządzeniem.", + "keycard-onboarding-recovery-phrase-header": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "keycard-onboarding-recovery-phrase-text": "Tylko dla twoich oczu. To jest magiczny Seed użyty do wygenerowania Twojego klucza.", + "keycard-onboarding-start-header": "Przytrzymaj kartę z tyłu\n telefonu, aby rozpocząć", + "keycard-onboarding-start-step1": "Utwórz kod dostępu", + "keycard-onboarding-start-step1-text": "Około 1 minuty. Utwórz 6-cyfrowy kod dostępu, aby zaszyfrować swoje klucze", + "keycard-onboarding-start-step2": "Zapisz PUK i kod parowania", + "keycard-onboarding-start-step2-text": "Około 1 minuty. Będziesz potrzebować do tego kartki papieru i długopisu", + "keycard-onboarding-start-step3": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "keycard-onboarding-start-step3-text": "Około 1 minuty. Na tym etapie również potrzebna jest kartka papieru i długopis", + "keycard-onboarding-start-text": "I utrzymuj kontakt między kartą a telefonem\n podczas konfiguracji. Konfiguracja zajmie około 4 minut", + "keycard-processing-description": "Spróbuj trzymać kartę nieruchomo", + "keycard-processing-title": "Przetwarzanie...", + "keycard-recover": "karta zgubiona bądź zawieszona?", + "keycard-recover-text": "Jeśli masz swoje wyrażenie mnemoniczne, możesz utworzyć nową kartę Keycard powiązaną z tym kontem. Możesz użyć nowej karty Keycard lub przywrócić ustawienia fabryczne zawieszonej karty.", + "keycard-recover-title": "Czy utworzyć nową kartę dla tego konta?", + "keycard-recovery-intro-button-text": "Rozpocznij odzyskiwanie", + "keycard-recovery-intro-header": "Odzyskaj klucze przechowywane na karcie Keycard", + "keycard-recovery-intro-text": "Jeśli wcześniej generowałeś klucze za pomocą karty Keycard, a teraz chcesz używać tych kluczy na tym urządzeniu", + "keycard-recovery-no-key-header": "Nie ma tu nic do odzyskiwania", + "keycard-recovery-no-key-text": "Twoja karta Keycard nie zawiera żadnego klucza. Aby z niej skorzystać, wygeneruj nowy klucz i wybierz swoją kartę Keycard przechowywać klucz", + "keycard-recovery-phrase-confirm-header": "Potwierdź frazę odzyskiwania (Seed)", + "keycard-recovery-phrase-confirmation-text": "Nie będziesz mieć drugiej szansy! Jeżeli utracisz dostęp, na przykład poprzez utratę karty Keycard, możesz uzyskać dostęp do twoich kluczy jedynie dzięki twojej frazie Seed. Nikt, oprócz Ciebie nie posiada Twojej frazy Seed. Zapisz ją i przechowuj w bezpiecznym miejscu.", + "keycard-recovery-phrase-confirmation-title": "Czy fraza odzyskiwania (Seed) została zapisana?", + "keycard-recovery-success-header": "Twoje klucze zostały\n pomyślnie odzyskane", + "keycard-redeem-title": "Odbierz na", + "keycard-redeem-tx": "Odbierz aktywa", + "keycard-redeem-tx-desc": "Stuknij w kartę, aby podpisać i odebrać aktywa", + "keycard-reset-passcode": "Resetuj kod dostępu.", + "keycard-success-description": "Możesz teraz wyjąć kartę", + "keycard-success-title": "Sukces", + "keycard-unauthorized-operation": "Nie masz uprawnień do wykonania tej operacji.\n Wybierz ważną kartę i spróbuj ponownie.", + "keycard-upsell-subtitle": "Zwiększone bezpieczeństwo i wygoda", + "language": "Język", + "last-backup-performed": "Ostatnia wykonana kopia zapasowa:", + "last-transaction": "Ostatnia transakcja", + "learn-more": "Dowiedz się więcej", + "learn-more-about-keycard": "Dowiedz się więcej o Keycard", + "leave": "Opuść", + "leave-chat": "Opuść czat", + "leave-chat-confirmation": "Historia czatu zostanie usunięta z Twojego urządzenia. Po ponownym dołączeniu nie będziesz w stanie odzyskać żadnej swojej historii.", + "leave-community": "Opuść społeczność", + "leave-confirmation": "Opuść {{chat-name}}", + "leave-group": "Opuść grupę", + "left": "pozostało", + "les-ulc": "LES\/ULC", + "lets-go": "Zaczynamy", + "light": "Jasny", + "limit": "Limit", + "linked-on": "Połączono w dniu {{date}}", + "load-messages-before": "przed {{date}}", + "load-more-messages": "↓ Pobierz więcej wiadomości", + "load-more-timeline": "↓ Pobierz więcej", + "loading": "Ładowanie...", + "local-notifications": "Powiadomienia lokalne", + "lock-app-with": "Zablokuj aplikację za pomocą", + "log-level": "Poziom Log", + "log-level-settings": "Ustawienia poziomu logów", + "logging": "Logowanie", + "logging-enabled": "Logowanie włączone?", + "login-pin-description": "Wprowadź swój 6-cyfrowy kod dostępu, aby odblokować swoje klucze", + "logout": "Wyloguj", + "logout-app-content": "Konto zostanie wylogowane. Po ponownym odblokowaniu będzie używana wybrana sieć.", + "logout-are-you-sure": "Czy na pewno chcesz\nsię wylogować?", + "logout-key-management": "Musisz się wylogować, aby uzyskać dostęp do zarządzania kluczami.", + "logout-title": "Wylogować?", + "looking-for-cards": "Szukam kart...", + "lost-connection": "Utracono połączenie", + "low-tip": "napiwek jest za niski", + "lower-than-average-tip": "niższy niż przeciętny napiwek", + "mail-should-be-configured": "Aplikacja mailowa powinna być skonfigurowana", + "mailserver-address": "Adres węzła Status", + "mailserver-automatic": "Automatyczna selekcja", + "mailserver-automatic-switch-explanation": "Wybierz najszybszy dostępny węzeł dla Status", + "mailserver-connection-error": "Nie udało się połączyć z węzłem Status", + "mailserver-content": "Węzeł w sieci Status, który kieruje i przechowuje wiadomości przez maksymalnie 30 dni.", + "mailserver-details": "Szczegóły węzła Status", + "mailserver-error-content": "Wybrany węzeł Status nie może zostać osiągnięty.", + "mailserver-error-title": "Błąd podczas łączenia się z węzłem Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Wybierz inny węzeł Status", + "mailserver-reconnect": "Nie udało się połączyć z węzłem Status. Kliknij, aby ponowić połączenie", + "mailserver-request-error-content": "Następujący błąd został zwrócony przez węzeł Status: {{error}}", + "mailserver-request-error-status": "Wystąpił błąd podczas pobierania historii, sprawdź logi, aby uzyskać szczegóły", + "mailserver-request-error-title": "Błąd podczas prośby otrzymania węzła Status", + "mailserver-request-retry": "Ponów prośbę", + "mailserver-retry": "Ponów", + "mailserver-title": "Węzeł Status", + "main-currency": "Główna waluta", + "main-networks": "Główne sieci", + "main-wallet": "Portfel główny", + "mainnet-network": "Sieć główna", + "make-admin": "Uczyń administratorem", + "manage-keys-and-storage": "Zarządzanie kluczami i przechowywaniem", + "mark-all-read": "Oznacz wszystkie jako przeczytane", + "master-account": "Konto główne", + "max-fee": "Maksymalna opłata", + "max-priority-fee": "Maksymalna opłata priorytetowa", + "maximum-fee": "Maksymalna opłata", + "maximum-fee-desc": "Maksymalna łączna cena za transakcję. Jeśli aktualna opłata bazowa za blok przekracza tę wartość, Twoja transakcja zostanie uwzględniona w kolejnym bloku z niższą opłatą bazową.", + "maybe-later": "Może później", + "member-ban": "Zablokuj członka", + "member-kick": "Wyrzuć członka", + "members": { + "one": "1 użytkownik", + "few": "użytkowników", + "many": "użytkowników", + "other": "Użytkownicy: {{count}}" + }, + "members-active": { + "one": "1 członek", + "few": "członków", + "many": "członków", + "other": "{{count}} członkowie" + }, + "members-active-none": "brak członków", + "members-count": "{{count}} członków", + "members-label": "Użytkownicy", + "members-limit-reached": "Osiągnięto limit członków", + "members-title": "Użytkownicy", + "membership-approval": "Wymagaj zatwierdzenia", + "membership-approval-description": "Twoja społeczność może bezpłatnie dołączyć, ale nowi członkowie muszą najpierw zostać zatwierdzeni przez twórcę społeczności", + "membership-button": "Wymagane członkostwo", + "membership-declined": "Wniosek o członkostwo został odrzucony", + "membership-description": "Członkostwo w grupie wymaga akceptacji przez administratora grupy", + "membership-ens": "Wymagaj nazwy użytkownika ENS", + "membership-ens-description": "Twoja społeczność wymaga nazwy użytkownika ENS, aby móc się do niej przyłączyć.", + "membership-free": "Brak wymagań", + "membership-free-description": "Twoja społeczność jest darmowa i każdy może do niej dołączyć", + "membership-invite": "Wymagaj zaproszenia od innego członka", + "membership-invite-description": "Do Twojej społeczności można dołączyć tylko poprzez zaproszenie od istniejących członków społeczności", + "membership-none": "Brak", + "membership-none-placeholder": "Możesz wymagać, aby nowi członkowie spełniali pewne kryteria, zanim będą mogli dołączyć. To może być zmienione w każdej chwili", + "membership-request-pending": "Wniosek o członkostwo w trakcie rozpatrywania", + "membership-requests": "Prośby o członkostwo", + "membership-title": "Wymagane członkostwo", + "message": "Wiadomość", + "message-not-sent": "Wiadomość nie wysłana", + "message-options-cancel": "Anuluj", + "message-reply": "Odpowiedz", + "messages": "Wiadomości", + "messages-from-contacts-only-subtitle": "Tylko osoby dodane jako kontakty mogą rozpocząć nowy czat z Tobą lub zaprosić Cię do grupy", + "might-break": "Może zepsuć niektóre zdecentralizowane aplikacje", + "migration-successful": "Migracja powiodła się", + "migration-successful-text": "Konto pomyślnie zmigrowane do Keycard", + "migrations-failed-content": "{{message}}\n wersja schematu: początkowa {{initial-version}}, aktualna {{current-version}}, ostatnia {{last-version}} \n\nWystąpił błąd bazy danych. Twoje fundusze i klucz czatu są bezpieczne. Inne dane, takie jak czaty i kontakty, nie mogą zostać przywrócone. Przycisk '{{erase-multiaccounts-data-button-text}}' usunie wszystkie inne dane i umożliwi Ci dostęp do twoich środków oraz wysyłania wiadomości.", + "miners-higher-fee": "Górnicy prawdopodobnie uwzględnią Twoją transakcję wcześniej, jeśli zapłacisz wyższą opłatę.", + "minimum-received": "Otrzymane minimum", + "mobile-network-ask-me": "Zapytaj mnie, gdy używam sieci komórkowej", + "mobile-network-continue-syncing": "Kontynuuj synchronizację", + "mobile-network-continue-syncing-details": "Możesz to później zmienić w ustawieniach", + "mobile-network-go-to-settings": "Przejdź do ustawień", + "mobile-network-settings": "Dane komórkowe", + "mobile-network-sheet-configure": "Możesz skonfigurować synchronizację bardziej\nszczegółowo w", + "mobile-network-sheet-offline": "Brak dostępu do sieci Wi-Fi, synchronizacja wiadomości jest wyłączona.", + "mobile-network-sheet-offline-details": "Synchronizacja przy użyciu danych komórkowych jest wyłączona", + "mobile-network-sheet-remember-choice": "Zapamiętaj mój wybór", + "mobile-network-sheet-settings": "ustawienia", + "mobile-network-start-syncing": "Rozpocznij synchronizację", + "mobile-network-stop-syncing": "Zatrzymaj synchronizację", + "mobile-network-stop-syncing-details": "Do czasu połączenia z Wi-Fi?", + "mobile-network-use-mobile": "Użyj danych komórkowych", + "mobile-network-use-mobile-data": "Status zużywa dużo danych podczas synchronizacji czatów i portfela.", + "mobile-network-use-wifi": "Tylko Wi-Fi", + "mobile-syncing-sheet-details": "Status zużywa dużo danych podczas synchronizacji czatów i portfela.", + "mobile-syncing-sheet-title": "Synchronizować przy użyciu danych komórkowych?", + "more": "więcej", + "move-and-reset": "Przenieś i zresetuj", + "move-keystore-file": "Przenieś plik keystore", + "move-keystore-file-to-keycard": "Przenieść plik keystore na kartę Keycard?", + "multiaccount-exists-content": "Klucze do tego konta już istnieją i nie mogą być dodane ponownie. Jeśli zgubiłeś hasło, kod dostępu lub kartę Keycard, odinstaluj aplikację, zainstaluj ją ponownie i uzyskaj dostęp do kluczy, wprowadzając swoją frazę Seed", + "multiaccount-exists-title": "Klucze do tego konta już istnieją", + "multiaccounts-recover-enter-phrase-text": "Wprowadź 12, 15, 18, 21 lub 24 słowa.\nOddziel słowa pojedynczą spacją.", + "multiaccounts-recover-enter-phrase-title": "Wpisz swoją frazę odzyskiwania (Seed)", + "mute": "Wycisz", + "my-accounts": "Moje konta", + "my-accounts-empty": "Twoje dostępne konta pojawią się tutaj", + "my-profile": "Mój profil", + "my-status": "Mój status", + "name": "Nazwa", + "name-of-token": "Nazwa twojego tokena", + "name-optional": "Nazwa (opcjonalnie)", + "name-your-channel": "Nazwij swój kanał", + "name-your-channel-placeholder": "Nazwa kanału", + "name-your-community": "Nazwij swoją społeczność", + "name-your-community-placeholder": "Chwytliwe imię", + "need-help": "Potrzebujesz pomocy?", + "network": "Sieć", + "network-chain": "Łańcuch sieci", + "network-details": "Szczegóły sieci", + "network-fee": "Opłata sieciowa", + "network-id": "Identyfikator sieci", + "network-info": "Informacje o sieci", + "network-invalid-network-id": "Podany identyfikator sieci nie jest zgodny z identyfikatorem sieci podanym w adresie URL RPC", + "network-invalid-status-code": "Nieprawidłowy kod statusu: {{code}}", + "network-invalid-url": "Adres URL sieci jest nieprawidłowy", + "network-settings": "Ustawienia sieci", + "never": "Nigdy", + "new": "Nowy", + "new-category": "Nowa kategoria", + "new-chat": "Nowy czat", + "new-community-title": "Nowa społeczność", + "new-contact": "Nowy kontakt", + "new-contract": "Nowy kontrakt", + "new-favourite": "Nowe ulubione", + "new-group": "Nowa grupa", + "new-group-chat": "Nowy czat grupowy", + "new-network": "Nowa sieć", + "new-password": "Nowe hasło", + "new-pin-description": "Powtórz nowy 6-cyfrowy kod dostępu.", + "new-public-group-chat": "Dołącz do publicznego czatu", + "new-puk-description": "Wprowadź nowy 12-cyfrowy PUK", + "new-status": "Nowy status", + "new-tab": "Nowa karta", + "next": "Dalej", + "nickname": "Pseudonim", + "nickname-description": "Pseudonimy pomagają Ci identyfikować innych w Statusie.\nTylko Ty możesz zobaczyć dodane przez siebie pseudonimy.", + "no": "Nie", + "no-collectibles": "Brak dostępnych przedmiotów kolekcjonerskich", + "no-contacts": "W tej chwili brak kontaktów", + "no-keycard-applet-on-card": "Brak apletu Keycard na karcie", + "no-messages": "Brak wiadomości", + "no-pairing-slots-available": "Ta karta jest już sparowana z 5 urządzeniami i nie można jej sparować z tym urządzeniem. Użyj jednego ze sparowanych urządzeń, zaloguj się za pomocą tej karty i zwolnij gniazda parowania na karcie", + "no-pinned-messages": "Brak przypiętych wiadomości", + "no-result": "Brak wyników", + "no-thanks": "Nie, dziękuję", + "no-tokens-found": "Nie znaleziono tokenów", + "node-address": "Adres węzła", + "node-details": "Szczegóły węzła", + "node-info": "Informacje o węźle", + "node-version": "Wersja węzła", + "nodes-disabled": "Węzły Status wyłączone", + "non-archival-node": "Punkt końcowy RPC nie obsługuje żądań archiwalnych. Twoja historia lokalnych przelewów może być niekompletna.", + "non-contacts": "Spoza listy kontaktów", + "nonce": "Nonce", + "none": "Brak", + "normal": "Normalny", + "not-applicable": "Nie dotyczy niepodpisanych transakcji", + "not-connected-nodes": "Nie podłączony do węzła Statusu", + "not-connected-to-peers": "Nie jest połączony z żadnym peerem", + "not-enough-snt": "Niewystarczająca ilość SNT", + "not-found": "Nie znaleziono", + "not-keycard-text": "Karta, której użyłeś, nie jest kartą Keycard. Aby z niej korzystać, należy zakupić kartę Keycard.", + "not-keycard-title": "To nie jest karta Keycard", + "not-registered": "niezarejestrowany", + "notification-settings": "Powiadomienia", + "notifications": "Powiadomienia", + "notifications-non-contacts": "Powiadomienia od osób niebędących kontaktami", + "notifications-preferences": "Preferencje powiadomień", + "notifications-servers": "Serwery powiadomień", + "notifications-switch": "Pokaż powiadomienia", + "notifications-transactions": "Transakcje portfelowe", + "notify": "Powiadamiaj", + "now": "Teraz", + "off": "Wył.", + "off-status-tree": "Off Status tree", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Włącz węzły aplikacji Status, aby pobrać wiadomości, które zostały wysłane, gdy aplikacja była zamknięta. Po włączeniu węzeł Status pobiera Twój adres IP. Po wyłączeniu nie będziesz otrzymywać wiadomości, gdy aplikacja jest zamknięta, i nie zobaczysz ich po późniejszym otwarciu aplikacji.", + "offline-messaging-use-history-nodes": "Użyj nodów Status", + "ok": "OK", + "ok-continue": "OK, kontynuuj", + "ok-got-it": "OK, rozumiem", + "ok-save-pass": "OK, zapisz hasło", + "okay": "W porządku", + "on": "Wł.", + "on-status-tree": "On Status tree", + "once-enabled-share-metadata": "Po włączeniu tej funkcji łącza publikowane na czacie mogą udostępniać witrynie metadane użytkownika.", + "one-day": "Jeden dzień", + "one-month": "Jeden miesiąc", + "one-week": "Jeden tydzień", + "open": "Otwórz", + "open-chat": "Utwórz czat publiczny", + "open-dapp": "Otwórz dAppkę", + "open-dapp-store": "Odkryj dAppsy", + "open-home": "Otwórz...", + "open-in-new-tab": "Otwórz w nowej karcie", + "open-membership": "Otwarte członkostwo", + "open-nfc-settings": "Otwórz ustawienia NFC", + "opening-buy-crypto": "Otwieram {{site}} ...", + "optimal": "Optymalny", + "optional": "opcjonalne", + "or": "LUB", + "outgoing": "Wychodzące", + "outgoing-transaction": "Transakcja wychodząca", + "page-camera-request-blocked": "dostęp do aparatu zablokowany. Aby odblokować dostęp do kamery, przejdź do Ustawień", + "page-would-like-to-use-camera": "chciałby użyć twojego aparatu", + "pair": "Sparuj urządzenia", + "pair-card": "Sparuj z tym urządzeniem", + "pair-code": "Kod parowania", + "pair-code-explanation": "Paruje kartę z innym urządzeniem (maksymalnie z 5), aby odblokować klucze i podpisywać transakcje za pomocą tej samej karty Keycard", + "pair-code-placeholder": "Kod parowania", + "pair-this-card": "Sparuj tę kartę", + "pair-this-device": "Reklamuj urządzenie", + "pair-this-device-description": "Sparuj swoje urządzenia, aby synchronizować między nimi kontakty i czaty", + "paired-devices": "Sparowane urządzenia", + "pairing": "Parowanie", + "pairing-card": "Karta parowania", + "pairing-changed": "Kod parowania został zmieniony", + "pairing-code-placeholder": "Kod parowania...", + "pairing-code_error1": "Kody parowania nie są zgodne.", + "pairing-go-to-installation": "Przejdź do ustawień parowania", + "pairing-maximum-number-reached-content": "Proszę wyłączyć jedno z urządzeń przed włączeniem nowego.", + "pairing-maximum-number-reached-title": "Osiągnięto maksymalną liczbę urządzeń", + "pairing-new-installation-detected-content": "Zostało wykryte nowe urządzenie.\nAby prawidłowo korzystać z urządzeń, ważne jest, aby je sparować i włączyć przed ich użyciem.\nPrzejdź do sekcji 'Urządzenia' w ustawieniach, aby sparować urządzenia.", + "pairing-new-installation-detected-title": "Wykryto nowe urządzenie", + "pairing-no-info": "Brak informacji", + "pairing-please-set-a-name": "Nadaj nazwę swojemu urządzeniu.", + "passphrase": "Passphrase", + "password": "Hasło", + "password-description": "Przynajmniej 6 znaków. Twoje hasło chroni Twoje klucze. Potrzebujesz go, aby odblokować aplikację Status i dokonywać transakcji.", + "password-mismatch": "Nowe hasło i potwierdzenie nie pasują do siebie", + "password-placeholder": "Hasło...", + "password-placeholder2": "Potwierdź hasło", + "password-reset-in-progress": "Zmiana hasła...", + "password-reset-success": "Hasło zostało zmienione", + "password-reset-success-message": "Musisz się ponownie zalogować", + "password_error1": "Hasła nie pasują do siebie.", + "paste": "Wklej", + "paste-json": "Wklej JSON", + "pay-to-chat": "Zapłać, by rozmawiać", + "peer-content": "Urządzenie podłączone do sieci czatu aplikacji Status. Każdy użytkownik może reprezentować jedno lub więcej połączeń, w zależności od liczby posiadanych urządzeń.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer (Od osoby do osoby)", + "peers": "Peery", + "pending": "W oczekiwaniu", + "pending-confirmation": "Oczekujące potwierdzenie...", + "pending-invitations": "Oczekujące wnioski o członkostwo", + "per-gas-price-limit": "Limit ceny za gaz", + "per-gas-tip-limit": "Limit na końcówkę gazu", + "perform-backup": "Wykonaj kopię zapasową", + "permissions": "Uprawnienia", + "phone-e164": "Międzynarodowy 1", + "photos": "Zdjęcia", + "photos-access-error": "Aby nadać wymagane uprawnienia do zdjęć, przejdź do ustawień systemowych i upewnij się, że zaznaczono opcję Status > Zdjęcia.", + "pin": "Przypnij", + "pin-changed": "6-cyfrowy kod dostępu został zmieniony", + "pin-code": "6-cyfrowy kod dostępu.", + "pin-limit-reached": "Osiągnięto limit przypięć. Najpierw odepnij poprzednią wiadomość.", + "pin-mismatch": "Nieprawidłowy kod dostępu", + "pin-one-attempt": " jedną próbę ", + "pin-one-attempt-blocked-after": "zanim Twoja karta Keycard zostanie zablokowana", + "pin-one-attempt-blocked-before": "Uważaj, masz tylko", + "pin-one-attempt-frozen-after": "zanim Twoja karta Keycard zostanie zamrożona", + "pin-one-attempt-frozen-before": "Uważaj, masz tylko", + "pin-retries-left": "Pozostało {{number}}", + "pinned-by": "Przypięte przez", + "pinned-messages": "Przypięte wiadomości", + "pinned-messages-count": { + "one": "Jeden", + "few": "Kilka", + "many": "Wiele", + "other": "Inne" + }, + "pinned-messages-empty": "Tutaj pojawią się przypięte wiadomości. Aby przypiąć wiadomość, naciśnij i przytrzymaj ją, a następnie dotknij \"Przypnij\"", + "powered-by-paraswap": "Obsługiwane przez Paraswap", + "preference": "Preferencje", + "preview-privacy": "Podgląd trybu prywatności", + "previewing-may-share-metadata": "Podgląd linków z tych witryn internetowych może spowodować udostępnienie twoich metadanych ich właścicielom", + "price-impact": "Wpływ ceny", + "price-impact-desc": "Szacowany wpływ ceny dla tej transakcji. Jeśli aktualna opłata bazowa za blok przekracza tę wartość, Twoja transakcja zostanie uwzględniona w kolejnym bloku z niższą opłatą bazową.", + "principles": "Zasady", + "priority": "Priorytet", + "privacy": "Prywatność", + "privacy-and-security": "Prywatność i bezpieczeństwo", + "privacy-photos": "Prywatność zdjęcia profilowego", + "privacy-policy": "Polityka prywatności", + "privacy-show-to-warning": "Osoby, które widziały już Twoje zdjęcie profilowe, będą nadal to robić", + "private-key": "Klucz prywatny", + "private-notifications": "Prywatne powiadomienia", + "private-notifications-descr": "Status będzie Cię powiadamiał o nowych wiadomościach. Możesz edytować swoje preferencje dotyczące powiadomień później w ustawieniach.", + "processing": "Momencik", + "product-information": "Informacje o produkcie", + "profile": "Profil", + "profile-deleted-content": "Twój profil został pomyślnie usunięty", + "profile-deleted-keycard": "Możesz teraz przywrócić kolejną parę kluczy na swojej karcie Keycard", + "profile-deleted-title": "Profil usunięty", + "profile-details": "Szczegóły profilu", + "profile-not-found": "Nie znaleziono użytkownika", + "profile-pic-pick": "Wybierz z galerii", + "profile-pic-remove": "Usuń zdjęcie", + "profile-pic-take": "Zrób zdjęcie", + "profile-picture-updated": "Zaktualizowano zdjęcie profilowe", + "public-channel": "Kanał publiczny", + "public-chat": "Czat publiczny", + "public-chat-description": "Dołącz do publicznych czatów dotyczących twoich zainteresowań! Każdy może założyć nowy.", + "public-chats": "Czaty publiczne", + "public-group-status": "Publiczny", + "public-group-topic": "Temat", + "public-key": "Klucz publiczny", + "puk-and-pairing-codes-displayed": "Wyświetlany kod PUK i kody parowania", + "puk-changed": "Zmieniono 12-cyfrowy PUK", + "puk-code": "Kod PUK", + "puk-code-explanation": "Jeśli zapomnisz swojego 6-cyfrowego kodu dostępu lub wprowadzisz go niepoprawnie 3 razy, będziesz potrzebować tego kodu do odblokowania karty.", + "puk-mismatch": "Błędny kod PUK", + "push-failed-transaction": "Twoja transakcja się nie powiodła", + "push-failed-transaction-body": "{{value}} {{currency}} do {{to}}", + "push-inbound-transaction": "Otrzymałeś {{value}} {{currency}}", + "push-inbound-transaction-body": "Od {{from}} do {{to}}", + "push-notifications-server-enabled": "Serwer włączony", + "push-notifications-servers": "Serwery powiadomień Push", + "push-outbound-transaction": "Wysłałeś {{value}} {{currency}}", + "push-outbound-transaction-body": "Od {{from}} do {{to}}", + "quiet-days": "{{quiet-days}} dni", + "quiet-hours": "{{quiet-hours}} godzin", + "re-encrypt-key": "Zaszyfruj ponownie swoje klucze", + "rearrange-categories": "Zmień kolejność kategorii", + "receive": "Otrzymaj", + "receive-transaction": "Otrzymaj transakcję", + "recent": "Najnowsze", + "recent-empty": "Ostatnio używane adresy pojawią się tutaj", + "recent-recipients": "Kontakty", + "recently-used-stickers": "Tutaj pojawią się ostatnio używane naklejki", + "recipient": "Odbiorca", + "recipient-code": "Wprowadź adres odbiorcy", + "recipient-code-placeholder": "0x ... lub nazwa_użytkownika.domena.eth", + "recover": "Odzyskaj", + "recover-key": "Uzyskaj dostęp do istniejących kluczy", + "recover-keycard-multiaccount-not-supported": "Klucze do tego konta już istnieją i nie mogą być dodane ponownie. Jeśli zgubiłeś hasło, kod dostępu lub kartę Keycard, odinstaluj aplikację, zainstaluj ją ponownie i uzyskaj dostęp do kluczy, wprowadzając swoją frazę Seed", + "recover-with-keycard": "Odzyskaj za pomocą karty Keycard", + "recover-with-seed-phrase": "Odzyskaj za pomocą frazy Seed", + "recovering-key": "Uzyskiwanie dostępu do kluczy...", + "recovery-confirm-phrase": "Potwierdź frazę odzyskiwania (Seed)", + "recovery-phrase": "Fraza odzyskiwania (Seed)", + "recovery-success-text": "Będziesz musiał stworzyć nowy kod lub hasło, aby ponownie zaszyfrować swoje klucze", + "recovery-typo-dialog-description": "Zwróć uwagę, że twoja fraza Seed musi posiadać te same słowa i kolejność, w jakiej je otrzymałeś", + "recovery-typo-dialog-title": "Czy fraza odzyskiwania (Seed) jest poprawna?", + "redeem-amount": "Dostępne bonusy: {{quantity}}", + "redeem-now": "Zrealizuj teraz", + "redeem-success": "Skutecznie zrealizowany bonus!", + "reduced-tip": "napiwek priorytetowy zostanie zmniejszony", + "refresh": "Odśwież", + "registered": "zarejestrowany", + "reject-and-delete": "Odrzuć i usuń", + "remember-me": "Zapamiętaj mnie", + "remind-me-later": "Pokaż mi to jeszcze raz", + "remove": "Usuń", + "remove-favourite": "Usuń ulubione", + "remove-from-chat": "Usuń z czatu", + "remove-from-contacts": "Usuń z kontaktów", + "remove-from-contacts-text": "Usuwając użytkownika z listy kontaktów, nie ukrywasz przed nim adresu swojego portfela.", + "remove-group": "Usuń grupę", + "remove-network": "Usuń sieć", + "remove-token": "Usuń token", + "removed": "usunięci", + "repeat-pin": "Powtórz nowy 6-cyfrowy kod dostępu.", + "repeat-puk": "Powtórz nowy 12-cyfrowy PUK", + "replying-to": "Odpowiedź do {{author}}", + "report-bug-email-template": "1. Opis problemu\n {{description}}\n \n\n 2. Kroki do reprodukcji\n {{steps}}\n \n\n 3. Proszę, dołącz zrzuty ekranu, które mogą pokazać problem\n", + "request-access": "Żądanie dostępu", + "request-feature": "Poproś o funkcję", + "request-membership": "Wnioskuj o członkostwo", + "request-pending": "Prośba w toku...", + "request-transaction": "Poproś o transakcję", + "required-field": "Pole wymagane", + "resend-message": "Wyślij ponownie", + "reset-card": "Zresetuj kartę", + "reset-card-description": "Ta operacja zresetuje kartę do stanu początkowego. Spowoduje to usunięcie wszystkich danych karty, w tym kluczy prywatnych. Operacja jest nieodwracalna.", + "reset-database": "Zresetuj bazę danych", + "reset-database-warning": "Usuń czaty, kontakty i ustawienia. Wymagane w przypadku utraty hasła", + "reset-database-warning-keycard": "Usuń czaty, kontakty i ustawienia.", + "reset-password": "Zresetuj hasło", + "restore-defaults": "Przywróć domyślne", + "retry": "Ponów próbę", + "revoke-access": "Odwołaj dostęp", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Skopiuj do schowka", + "rpc-usage-filter": "Metody filtrowania", + "rpc-usage-get-stats": "Odśwież", + "rpc-usage-info": "Statystyki użycia RPC", + "rpc-usage-reset": "Resetuj", + "safe-estimate": "Bezpieczne oszacowanie", + "save": "Zapisz", + "save-password": "Zapisz hasło aż do wylogowania", + "save-password-unavailable": "Ustaw hasło urządzenia, aby zapisać hasło", + "save-password-unavailable-android": "Zapisanie hasła jest niedostępne: Twoje urządzenie może być zrootowane lub nie ma niezbędnych funkcji zabezpieczeń.", + "scan-qr": "Skanuj QR", + "scan-qr-code": "Zeskanuj kod QR z adresem portfela", + "scan-tokens": "Skanuj tokeny", + "search": "Szukaj", + "search-no-chat-found": "Brak wyników wyszukiwania. Czy masz na myśli", + "secret-keys-confirmation-text": "Będziesz ich potrzebować, aby nadal korzystać z karty Keycard na wypadek, w przypadku kiedy utracisz swój telefon.", + "secret-keys-confirmation-title": "Kody zapisane?", + "security": "Bezpieczeństwo", + "see-details": "Zobacz szczegóły", + "see-it-again": "ZOBACZ PONOWNIE", + "see-suggestions": "Zobacz propozycje", + "seed-key-uid-mismatch": "Podana fraza Seed nie pasuje", + "seed-key-uid-mismatch-desc-1": "Wprowadzona fraza Seed nie pasuje do {{multiaccount-name}}.", + "seed-key-uid-mismatch-desc-2": "Aby zarządzać kluczami dla tego konta, zweryfikuj swoją frazę odzyskiwania (Seed) i spróbuj ponownie.", + "seed-phrase-content": "Zestaw łatwych do czytania słów, losowo wybranych ze standardowej listy BIP39 i używanych do odzyskiwania lub uzyskiwania dostępu do konta Ethereum na innych portfelach i urządzeniach. Określany również jako „fraza mnemoniczna”, „fraza odzyskiwania” lub „kopia zapasowa portfela” w całym ekosystemie kryptowalut. Większość aplikacji kryptowalutowych używa tego samego standardu do generowania kont.", + "seed-phrase-placeholder": "Fraza odzyskiwania (Seed)", + "seed-phrase-title": "Fraza odzyskiwania (Seed)", + "select": "Wybierz", + "select-account": "Wybierz konto", + "select-account-dapp": "Wybierz konto, którego chcesz używać ze zdecentralizowanymi aplikacjami", + "select-account-first": "Najpierw wybierz konto", + "select-chat": "Wybierz czat, aby rozpocząć wysyłanie wiadomości", + "select-new-location-for-keys": "Wybierz nową lokalizację do zapisania klucza prywatnego lub kluczy prywatnych", + "select-token-to-receive": "Wybierz token do otrzymania", + "select-token-to-swap": "Wybierz token do zamiany", + "selected": "Wybrany", + "send-logs": "Zgłoś błąd", + "send-logs-to": "Zgłoś błąd do {{email}}", + "send-message": "Wyślij wiadomość", + "send-push-notifications-description": "W przypadku wyłączenia osoba odbierająca twoje wiadomości nie zostanie powiadomiona o ich przybyciu", + "send-request": "Wyślij prośbę transakcji", + "send-request-amount": "Ilość", + "send-request-amount-max-decimals": "Maks. liczba miejsc po przecinku to {{asset-decimals}}", + "send-request-unknown-token": "Nieznany token - {{asset}}", + "send-sending-to": "do {{recipient-name}}", + "send-transaction": "Wyślij transakcję", + "sending": "Wysyłanie", + "sent-at": "Wysłano w", + "server": "Serwer", + "set-a-topic": "Utwórz temat", + "set-currency": "Ustaw walutę", + "set-custom-fee": "Ustaw opłatę niestandardową", + "set-dapp-access-permissions": "Ustaw uprawnienia dostępu zdecentralizowanym aplikacjom", + "set-max": "Ustaw maksymalnie", + "settings": "Ustawienia", + "share": "Udostępnij", + "share-address": "Udostępnij adres", + "share-chat": "Udostępnij czat", + "share-contact-code": "Udostępnij mój klucz czatu", + "share-dapp-text": "Sprawdź tą zdecentralizowaną aplikację, której używam na platformie Status: {{link}}", + "share-link": "Udostępnij link", + "share-logs": "Udostępniaj dzienniki", + "share-my-profile": "Udostępnij mój profil", + "share-profile": "Udostępnij profil", + "share-profile-link": "Udostępnij link do profilu", + "share-public-chat-text": "Sprawdź ten czat publiczny w aplikacji Status: {{link}}", + "shared": "Udostępnione", + "sharing-copied-to-clipboard": "Skopiowane do schowka", + "sharing-copy-to-clipboard": "Skopiuj do schowka", + "sharing-data-desc-1": "Dane są sprawdzane zgodnie z zasadami publicznymi, aby zapewnić, że nie są wysyłane żadne dane wrażliwe. Nie ufaj, zweryfikuj.", + "sharing-data-desc-2": "Dane użytkowania kompleksowo zaszyfrowane są przesyłane przez sieć peer-to-peer Status", + "sharing-data-desc-3": "Zamiast zwykłego klucza czatu używany jest klucz jednorazowy", + "sharing-data-desc-4": "Dane użytkowania nie mogą być powiązane z Twoim adresem IP", + "sharing-data-desc-5": "Zbiorcze dane wszystkich użytkowników są publicznie dostępne", + "sharing-data-desc-6": "Dane są usuwane z telefonu po ich wysłaniu", + "sharing-share": "Udostępnij", + "show-less": "Pokaż mniej", + "show-more": "Pokaż więcej", + "show-notifications": "Pokaż powiadomienia", + "show-profile-pictures": "Zobacz zdjęcia profilowe z", + "show-profile-pictures-to": "Pokaż swoje zdjęcie profilowe dla", + "show-qr": "Pokaż kod QR", + "show-transaction-data": "Pokaż dane transakcji", + "sign-and-send": "Podpisz i wyślij", + "sign-anyway": "Podpisz mimo to", + "sign-in": "Zaloguj się", + "sign-message": "Podpisz wiadomość", + "sign-out": "Wyloguj się", + "sign-request-failed": "Nie można podpisać wiadomości", + "sign-with": "Podpisz się za pomocą", + "sign-with-password": "Podpisz się hasłem", + "sign-you-in": "Logujemy Cię…", + "signing": "Podpisywanie", + "signing-a-message": "Podpisywanie wiadomości", + "signing-phrase": "Fraza podpisująca", + "skip": "Pomiń", + "slippage": "Wahanie", + "slow": "Powolny", + "something-went-wrong": "Coś poszło nie tak", + "soon": "Wkrótce", + "specify-address": "Określ adres", + "specify-name": "Podaj nazwę", + "specify-network-id": "Podaj id sieci", + "specify-rpc-url": "Podaj URL RPC", + "specify-server-public-key": "Wprowadź klucz publiczny serwera", + "specify-symbol": "Określ symbol", + "start-chat": "Rozpocznij czat", + "start-conversation": "Rozpocznij rozmowę", + "start-group-chat": "Rozpocznij czat grupowy", + "start-new-chat": "Rozpocznij nowy czat", + "starter-pack-coming": "Pakiet startowy już w drodze", + "starter-pack-coming-description": "Może to zająć od kilku minut do kilku godzin", + "starter-pack-received": "Otrzymano pakiet startowy", + "starter-pack-received-description": "Oto trochę kryptowalut na dobry początek! Użyj ich, aby kupić naklejki, zmienić nazwę ENS lub korzystać ze zdecentralizowanych aplikacji", + "status": "Status", + "status-always-online": "Zawsze online", + "status-automatic": "Automatycznie", + "status-automatic-subtitle": "Ustaw status automatycznie", + "status-confirmed": "Potwierdzone", + "status-dnd": "Nie przeszkadzać", + "status-dnd-subtitle": "Wycisz wszystkie powiadomienia", + "status-hardwallet": "Portfel sprzętowy Status", + "status-inactive": "Nieaktywny", + "status-inactive-subtitle": "Ukrywa Twój status online", + "status-is-open-source": "Status jest otwartoźródłowy", + "status-keycard": "Karta Keycard aplikacji Status", + "status-mobile-descr": "Status ma tendencję do zużywania dużej ilości danych podczas synchronizowania czatów. Możesz zrezygnować z synchronizacji, gdy korzystasz z sieci komórkowej.", + "status-not-sent-click": "Nie wysłano. Dotknij, aby zobaczyć opcje", + "status-not-sent-tap": "Nie potwierdzona. Dotknij, aby zobaczyć opcje", + "status-pending": "W oczekiwaniu", + "status-sent": "Wysłano", + "status-tx-not-found": "Nie znaleziono TX", + "status-updates-descr": "Tutaj będą pojawiać się aktualizacje statusów. Dodaj profil jako kontakt, aby otrzymywać aktualizacje na swojej osi czasu.", + "statuses-descr": "Dziel się tym, co myślisz, i bądź na bieżąco ze swoimi kontaktami", + "statuses-my-status-descr": "Podziel się tym, czym chcesz. Każdy, kto odwiedzi twój profil, będzie w stanie zobaczyć twój status. Osoby, które dodadzą Cię do swoich kontaktów, będą otrzymywać aktualizacje dotyczące Ciebie na swojej osi czasu.", + "step-i-of-n": "Krok {{step}} z {{number}}", + "sticker": "Naklejka", + "sticker-market": "Rynek naklejek", + "storage": "Przechowywanie", + "submit": "Prześlij", + "submit-bug": "Zgłoś błąd", + "success": "Sukces", + "suggested-min-tip": "Sugerowany min. napiwek", + "suggested-price-limit": "Sugerowany limit ceny", + "swap": "Zamień", + "swap-details": "Szczegóły zamiany", + "switch-to-simple-interface": "Przełącz na prosty interfejs", + "symbol": "Symbol", + "sync-all-devices": "Synchronizuj wszystkie urządzenia", + "sync-in-progress": "Synchronizacja...", + "sync-settings": "Ustawienia synchronizacji", + "sync-synced": "W synchronizacji", + "syncing-devices": "Synchronizuję ...", + "system": "System", + "tabs": "Karty", + "tag-was-lost": "Znacznik został zgubiony", + "tap-card-again": "Przyłóż ponownie kartę do tylnej części telefonu", + "terms-of-service": "Warunki Użytkowania", + "test-networks": "Sieci testowe", + "text-input-disabled": "Proszę poczekać chwilę…", + "thank-you": "Dziękuję", + "this-device": "To urządzenie", + "this-device-desc": "Twoje klucze będą zaszyfrowane i bezpiecznie przechowywane na Twoim urządzeniu", + "this-is-you-signing": "To jest Twoja fraza podpisująca", + "this-will-take-few-seconds": "Zajmie to kilka sekund.", + "three-days": "Trzy dni", + "three-words-description": "Powinieneś zobaczyć te 3 słowa przed podpisaniem każdej transakcji", + "three-words-description-2": "Jeśli zobaczysz inną kombinację, anuluj transakcję i wyloguj się", + "timeline": "Oś czasu", + "tip-cap": "Pułap napiwku", + "to": "Do", + "to-block": "Zablokuj", + "to-enable-biometric": "Aby włączyć {{bio-type-label}}, musisz zapisać swoje hasło na ekranie odblokowania.", + "to-encrypt-enter-password": "Aby zaszyfrować konto, wprowadź swoje hasło", + "to-see-this-message": "Aby zobaczyć tę wiadomość,", + "token": "Token", + "token-auto-validate-decimals-error": "Błędne oznaczenia dziesiętne dla tokena {{symbol}} pod adresem {{address}} - ustawione na {{expected}} ale wykryte jako {{actual}}", + "token-auto-validate-name-error": "Nieprawidłowa nazwa tokena {{symbol}} pod adresem {{address}} - ustawiona na {{expected}}, ale wykryta jako {{actual}}", + "token-auto-validate-symbol-error": "Nieprawidłowa nazwa tokena {{symbol}} pod adresem {{address}} - ustawiona na {{expected}}, ale wykryta jako {{actual}}", + "token-details": "Szczegóły tokena", + "topic-name-error": "Używaj tylko małych liter (od a do z), cyfr i myślników (-). Nie używaj kluczy czatu", + "total-gas": "Całkowity gas", + "transaction": "Transakcja", + "transaction-data": "Dane transakcyjne", + "transaction-declined": "Transakcja odrzucona", + "transaction-description": "Uznaj ją za kompletną po 12 potwierdzeniach w sieci.", + "transaction-details": "Szczegóły transakcji", + "transaction-failed": "Transakcja nieudana", + "transaction-fee": "Opłata transakcyjna", + "transaction-history": "Historia transakcji", + "transaction-request": "Żądanie transakcji", + "transaction-sent": "Transakcja wysłana", + "transaction-signed": "Transakcja została pomyślnie podpisana", + "transactions": "Transakcje", + "transactions-filter-select-all": "Zaznacz wszystko", + "transactions-filter-title": "Filtruj historię", + "transactions-history": "Historia transakcji", + "transactions-history-empty": "Brak transakcji w Twojej historii", + "transactions-history-loading": "Ładowanie historii transakcji. Może to chwilę potrwać.", + "transactions-load-more": "Załaduj więcej", + "transactions-management-enabled": "Zarządzanie transakcjami (alfa)", + "transactions-sign": "Podpisz", + "transfer-ma-unknown-error-desc-1": "Wygląda na to, że Twoje multikonto nie zostało usunięte. Baza danych mogła zostać zresetowana", + "transfer-ma-unknown-error-desc-2": "Sprawdź listę swoich kont i spróbuj ponownie. Jeśli konto nie jest wymienione, przejdź do sekcji 'Dostań się do istniejących kluczy', aby odzyskać je za pomocą frazy odzyskiwania (Seed)", + "transfers-fetching-failure": "Historia przelewów nie może zostać zaktualizowana. Sprawdź swoje połączenie i pociągnij w dół, aby spróbować ponownie", + "tribute-required-by-multiaccount": "{{multiaccount-name}} wymaga SNT do rozpoczęcia czatu.", + "tribute-state-paid": "Danina zapłacona", + "tribute-state-pending": "Danina w toku", + "tribute-state-required": "Wymagana danina w postaci {{snt-amount}} SNT", + "tribute-to-talk": "Danina dla Rozmowy", + "tribute-to-talk-add-friends": "Dodaj znajomych jako kontakt, aby umożliwić czaty bez płacenia daniny.", + "tribute-to-talk-are-you-friends": "Jesteście przyjaciółmi?", + "tribute-to-talk-ask-to-be-added": "Poproś o dodanie jako kontakt", + "tribute-to-talk-contact-received-your-tribute": " otrzymał twoją daninę. Możecie teraz bezpiecznie ze sobą rozmawiać.", + "tribute-to-talk-desc": "Zarabiaj na swojej uwadze, wymagając SNT od nowych osób do rozpoczęcia czatu", + "tribute-to-talk-disabled": "Danina dla Rozmowy wyłączona", + "tribute-to-talk-disabled-note": "Od teraz nowe osoby mogą rozpocząć z Tobą czat bez wysyłania SNT.", + "tribute-to-talk-enabled": "Masz włączoną funkcję Danina dla Rozmowy.", + "tribute-to-talk-finish-desc": "Od tej pory będziesz otrzymywać wiadomości tylko od kontaktów i osób, które zapłaciły", + "tribute-to-talk-learn-more-1": "Twój czas i uwaga są Twoimi najcenniejszymi aktywami. Funkcja 'Danina dla Rozmowy' pozwala Ci ustawić ilość SNT wymaganą dla nowych osób, aby rozpocząć z Tobą czat.", + "tribute-to-talk-learn-more-2": "Każdy, kto nie znajduje się na twojej liście kontaktów, zostanie poproszony o zapłatę, a Ty możesz odpowiedzieć, gdy już to zrobi.", + "tribute-to-talk-learn-more-3": "Zawsze możesz odesłać pieniądze z powrotem, ale aby mieć pewność, że przyjaciele mogą swobodnie do Ciebie dotrzeć, dodaj ich najpierw jako kontakt.", + "tribute-to-talk-paywall-learn-more-1": "Nasz czas i uwaga są naszymi najcenniejszymi aktywami. Danina dla Rozmowy pozwala Ci nawiązać kontakt z innymi ludźmi w zamian za płatność w SNT", + "tribute-to-talk-paywall-learn-more-2": "Aby rozpocząć rozmowę z kimś, kto ma ustawioną daninę, po prostu zapłać wymaganą ilość SNT, a zostaniesz dodany jako kontakt.", + "tribute-to-talk-paywall-learn-more-3": "Jeśli ich znasz, możesz udostępnić swój profil poza aplikacją Status, aby zostać dodanym za darmo.", + "tribute-to-talk-pending": "Danina oczekująca na potwierdzenie", + "tribute-to-talk-pending-note": "Danina oczekuje na potwierdzenie w sieci. Możesz sprawdzić jej stan w historii transakcji", + "tribute-to-talk-removing-note": "Usunięcie opcji Danina dla Rozmowy pozwoli nowym osobom na rozpoczęcie czatu bez wysyłania SNT. Wymaga dokonania transakcji.", + "tribute-to-talk-set-snt-amount": "Ustaw ilość SNT wymaganą dla nowych osób do rozpoczęcia czatu", + "tribute-to-talk-signing": "Oczekiwanie na podpisanie transakcji...", + "tribute-to-talk-transaction-failed-note": "Transakcja nie powiodła się, a Twoje ustawienia Daniny dla Rozmowy nie zostały zmienione", + "tribute-to-talk-tribute-received1": "Danina otrzymana. Ty i", + "tribute-to-talk-tribute-received2": "są teraz kontaktami i mogą bezpiecznie rozmawiać ze sobą.", + "tribute-to-talk-you-require-snt": "Wymagasz SNT dla nowych osób, aby rozpocząć czat.", + "try-again": "Spróbuj ponownie", + "try-keeping-the-card-still": "Spróbuj trzymać kartę nieruchomo", + "turn-nfc-description": "NFC jest wyłączone na Twoim urządzeniu. Możesz je włączyć w ustawieniach", + "turn-nfc-on": "Włącz NFC aby kontynuować", + "two-minutes": "dwie minuty", + "tx-fail-description1": "Ta transakcja prawdopodobnie się nie powiedzie. Podpisuj na własne ryzyko, korzystając z niestandardowej opłaty sieciowej.", + "tx-fail-description2": "Ta transakcja prawdopodobnie się nie powiedzie. Ustaw niestandardową opłatę sieciową, aby podpisać transakcję na własne ryzyko.", + "type": "Rodzaj", + "type-a-message": "Napisz wiadomość", + "ulc-enabled": "ULC włączone", + "unable-to-fetch": "Nie można pobrać historii czatu", + "unable-to-read-this-code": "Nie można odczytać tego kodu", + "unable-to-send-messages": "Nie można wysyłać i odbierać wiadomości", + "unblock": "Odblokuj", + "unblock-contact": "Odblokuj tego użytkownika", + "unknown-status-go-error": "Nieznany błąd status-go", + "unlimited": "Bez ograniczeń", + "unlock": "Odblokuj", + "unmute": "Wyłącz wyciszenie", + "unpair-card": "Odłącz kartę", + "unpair-card-confirmation": "Ta operacja spowoduje odłączenie karty od bieżącego urządzenia. Wymagana autoryzacja 6-cyfrowym kodem dostępu. Czy chcesz kontynuować?", + "unpair-keycard": "Odepnij kartę Keycard od tego telefonu", + "unpair-keycard-warning": "Twój kod parowania\/PUK i PIN pozostają bez zmian", + "unpaired-keycard-text": "Wybrana karta Keycard nie jest powiązana z tym telefonem", + "unpaired-keycard-title": "Wygląda na to, że Twoja karta została odparowana", + "unpin": "Odepnij", + "update": "Aktualizacja", + "update-to-listen-audio": "Zaktualizuj do najnowszej wersji, aby odsłuchać wiadomość audio tutaj!", + "update-to-see-image": "Zaktualizuj do najnowszej wersji, aby zobaczyć tutaj ładny obraz!", + "update-to-see-sticker": "Zaktualizuj do najnowszej wersji, aby zobaczyć tutaj ładną naklejkę!", + "updates-to-tos": "Aktualizacje Warunków Użytkowania", + "updates-to-tos-desc": "Zanim przejdziesz dalej, zapoznaj się z Warunkami Użytkowania i potwierdź, że bierzesz pełną odpowiedzialność za sposób korzystania z aplikacji.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Użyj jako zdjęcie profilowe", + "use-valid-contact-code": "Wprowadź lub zeskanuj prawidłowy klucz czatu, lub nazwę użytkownika", + "validation-amount-invalid-number": "Kwota nie jest prawidłową liczbą", + "validation-amount-is-too-precise": "Kwota jest zbyt dokładna. Maksymalna liczba miejsc po przecinku wynosi {{decimals}}.", + "verified-community": "✓ Zweryfikowana społeczność", + "version": "Wersja aplikacji", + "view": "Zobacz", + "view-cryptokitties": "Zobacz w CryptoKitties", + "view-cryptostrikers": "Zobacz w CryptoStrikers", + "view-data": "Wyświetl dane", + "view-details": "Wyświetl szczegóły", + "view-etheremon": "Zobacz w Etheremon", + "view-gitcoin": "Zobacz w Gitcoin", + "view-on-opensea": "Wyświetl na OpenSea", + "view-profile": "Zobacz profil", + "view-public-dashboard": "Wyświetl publiczny pulpit nawigacyjny", + "view-rules": "Wyświetl zasady", + "view-signing": "Wyświetl frazę podpisującą", + "view-superrare": "Zobacz w SuperRare", + "waiting-for-wifi": "Brak dostępu do sieci Wi-Fi, synchronizacja wiadomości jest wyłączona.", + "waiting-for-wifi-change": "Ustawienia", + "waiting-to-sign": "Oczekiwanie na podpisanie transakcji...", + "waiting-wi-fi": "Czekam na Wi-Fi…", + "waku-bloom-filter-mode": "Tryb filtra Waku Bloom", + "wakuv2-change-nodes": "Czy na pewno chcesz zmienić węzły Waku v2?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Ustawienia Waku v2", + "wallet": "Portfel", + "wallet-address": "Adres portfela", + "wallet-asset": "Aktywo", + "wallet-assets": "Aktywa", + "wallet-backup-recovery-title": "Utwórz kopię zapasową frazy odzyskiwania (Seed)", + "wallet-choose-recipient": "Wybierz Odbiorcę", + "wallet-collectibles": "Artykuły kolekcjonerskie", + "wallet-insufficient-funds": "Niewystarczające środki", + "wallet-insufficient-gas": "Za mało ETH żeby zapłacić za gas", + "wallet-invalid-address": "Błędny adres: \n{{data}}", + "wallet-invalid-address-checksum": "Błąd w adresie:\n {{data}}", + "wallet-invalid-chain-id": "Typ sieci nie pasuje do:\n {{data}}. Aktualny łańcuch to: {{chain}}.", + "wallet-key-content": "64-znakowy adres szesnastkowy oparty na standardzie Ethereum i rozpoczynający się od 0x. Publiczny adres Twojego konta jest udostępniany innym osobom, gdy chcesz otrzymać środki. Nazywany jest również „adresem Ethereum” lub „adresem portfela”.", + "wallet-key-title": "Adres konta", + "wallet-manage-accounts": "Zarządzaj kontami", + "wallet-manage-assets": "Zarządzaj aktywami", + "wallet-request": "Prośba", + "wallet-send": "Wyślij", + "wallet-send-min-units": "Minimum 21000 jednostek", + "wallet-send-min-wei": "Min 1 Gwei", + "wallet-settings": "Ustawienia portfela", + "wallet-total-value": "Całkowita wartość", + "wallet-transaction-total-fee": "Całkowita opłata", + "wants-to-access-profile": "chce uzyskać dostęp do Twojego profilu", + "warning": "Ostrzeżenie", + "warning-message": "Niestety, ograniczamy wysyłanie kilku wiadomości w krótkich odstępach czasu, aby zapobiec spamowi. Spróbuj ponownie za chwilę", + "warning-sending-to-contract-descr": "Podany adres to smart contract, wysyłanie środków na ten adres może skutkować ich utratą. Aby wejść w interakcję ze zdecentralizowaną aplikacją, otwórz ją w przeglądarce Status dApp.", + "watch-only": "Tylko do oglądania", + "wc-brand-guide": "Wskazówki dotyczące używania brandingu, takiego jak znaki towarowe i logo", + "wc-disclaimer": "Zastrzeżenia (w tym dostawcy zewnętrzni), gwarancje i oświadczenia prawne", + "wc-dispute": "Postanowienia dotyczące rozstrzygania sporów", + "wc-how-to-use-status-app": "Jak korzystać z aplikacji Status, w tym zachowanie prywatności i bezpieczeństwa", + "wc-new-tos-based-on-principles-prefix": "Nowe Warunki Użytkowania zaprojektowane w oparciu o nasze", + "web-view-error": "Nie można załadować strony", + "websites": "Strony internetowe", + "webview-camera-permission-requests": "Prośby o pozwolenie na dostęp do kamery internetowej", + "webview-camera-permission-requests-subtitle": "Po włączeniu tej funkcji strony internetowe i zdecentralizowane aplikacje mogą poprosić o użycie kamery.", + "welcome-blank-community-message": "Twoje społeczności pojawią się tutaj.", + "welcome-blank-message": "Twoje czaty pojawią się tutaj. Aby rozpocząć nowe czaty, naciśnij przycisk ⊕", + "welcome-community-blank-message": "Tutaj pojawią się Twoje kanały. Aby utworzyć nowy kanał, kliknij przycisk ⊕ i wybierz \"Utwórz kanał\"", + "welcome-community-blank-message-edit-chats": "Tutaj pojawią się Twoje kanały. Aby utworzyć nowy kanał, wróć do ekranu społeczności, kliknij przycisk ⊕ i wybierz \"Utwórz kanał\"", + "welcome-screen-text": "Skonfiguruj swój portfel, zaproś znajomych na czat\n i przeglądaj popularne zdecentralizowane aplikacje!", + "welcome-to-status": "Witamy w Status!", + "welcome-to-status-description": "Skonfiguruj swój portfel kryptowalutowy, zaproś znajomych do czatu i przeglądaj zdecentralizowane aplikacje", + "what-changed": "Co się zmieniło", + "what-is-shared": "Co jest udostępnione", + "whats-on-your-mind": "Co ci chodzi po głowie...", + "word-count": "Liczba słów", + "word-n": "Słowo #{{number}}", + "word-n-description": "Aby sprawdzić, czy poprawnie zapisałeś kopię zapasową swojej frazy odzyskiwania (Seed), wprowadź słowo #{{number}} powyżej.", + "words-n": { + "one": "jedno", + "few": "kilka", + "many": "wiele", + "other": "inne" + }, + "write-down-and-store-securely": "Zapisz kody\n i przechowuj je bezpiecznie", + "wrong-address": "Nieprawidłowy adres", + "wrong-card": "Zła karta", + "wrong-card-text": "Wybrana karta nie odpowiada wybranym kluczom", + "wrong-contract": "Niewłaściwa kontrakt", + "wrong-keycard-text": "Wybrana karta Keycard nie jest powiązana z tym telefonem", + "wrong-keycard-title": "Wygląda na to, że kliknąłeś \nzłą kartę.", + "wrong-password": "Nieprawidłowe hasło", + "wrong-word": "Złe słowo", + "yes": "Tak", + "you": "ty", + "you-already-have-an-asset": "Masz już aktywo {{value}}", + "you-are-all-set": "Wszystko gotowe!", + "you-are-all-set-description": "Jeśli zgubisz swój telefon, możesz teraz uzyskać dostęp do swoich funduszy i klucza czatu, używając frazy Seed", + "you-can-change-account": "Możesz zmienić nazwę konta i kolor na taki, jaki chcesz.", + "you-can-choose-preview-websites": "Możesz wybrać, które z poniższych serwisów mogą wyświetlać podgląd linków do opisów i zdjęć w czatach", + "you-can-fetch": "Możesz pobrać historię czatu", + "you-dont-have-contacts": "Nie masz jeszcze żadnych kontaktów.", + "you-dont-have-contacts-invite-friends": "Nie masz jeszcze żadnych kontaktów.\nZaproś swoich znajomych do rozpoczęcia czatu", + "you-dont-have-stickers": "Nie masz jeszcze żadnych naklejek", + "you-will-need-this-code": "Będziesz potrzebować tego kodu, aby otworzyć aplikację Status i podpisywać transakcje", + "you-will-start-from-scratch": "Zaczniesz od początku z nowym zestawem kluczy", + "your-card-is-frozen": "Twoja karta Keycard jest zamrożona. Zresetuj dostęp do karty", + "your-contact-code": "Przyznanie dostępu upoważnia tą dAppkę do odzyskania klucza czatu", + "your-data-belongs-to-you": "Jeżeli zgubisz swoją frazę Seed, stracisz swoje dane i środki", + "your-data-belongs-to-you-description": "Jeśli utracisz dostęp, na przykład poprzez zgubienie swojego telefonu, możesz uzyskać dostęp do swoich kluczy tylko za pomocą frazy Seed. Nikt oprócz Ciebie nie ma Twojej frazy Seed. Zapisz ją. Przechowuj ją bezpiecznie", + "your-keys": "Twoje klucze", + "your-price-limit": "Twój limit ceny", + "your-recovery-phrase": "Twoja fraza Seed", + "your-recovery-phrase-description": "To jest Twoja fraza odzyskiwania (Seed). Używasz jej, aby udowodnić, że to Twój portfel. Możesz ją zobaczyć tylko raz! Zapisz ją na papierze i przechowuj w bezpiecznym miejscu. Będzie ona potrzebna, jeśli stracisz lub ponownie zainstalujesz Twój portfel.", + "your-tip-limit": "Twój limit napiwków", + "youre-on-mobile-network": "Korzystasz z sieci komórkowej" +} diff --git a/translations/pt.json b/translations/pt.json new file mode 100644 index 00000000000..8cee347327a --- /dev/null +++ b/translations/pt.json @@ -0,0 +1,1476 @@ +{ + "You": "Você", + "about-app": "Sobre", + "about-key-storage-content": "A Status nunca irá acessar sua chave privada. Não esqueça de salvar a sua frase. Se você perder seu telefone, essa é a única maneira de acessar suas chaves.", + "about-key-storage-title": "Sobre o armazenamento de chaves", + "about-names-content": "Ninguém pode fingir ser você! Você é anônimo por padrão e nunca precisa revelar seu nome real. Você pode registrar um nome personalizado por uma pequena taxa.", + "about-names-title": "Os nomes não podem ser alterados", + "accept": "Aceitar", + "accept-and-share-address": "Aceitar e compartilhar endereço", + "access-existing-keys": "Acessar chaves existentes", + "access-key": "Chave de acesso", + "account-added": "Conta adicionada", + "account-color": "Cor da conta", + "account-content": "Você pode comparar contas na Status com contas bancárias. Como uma conta bancária, uma conta normalmente possui um endereço e um saldo; Você usa essa conta para realizar transações no Ethereum. Você pode ter várias contas na sua carteira. Todas acessadas desbloqueando a Status.", + "account-exists-title": "A conta já existe", + "account-name": "Nome da conta", + "account-settings": "Configurações da conta", + "account-title": "Conta", + "accounts": "Contas", + "actions": "Ações", + "active-online": "Online", + "active-unknown": "Desconhecido", + "add": "Adicionar", + "add-a-watch-account": "Endereço somente leitura", + "add-account": "Adicionar conta", + "add-account-description": "Você pode importar qualquer tipo de conta Ethereum para adicioná-lo à sua carteira Status", + "add-account-incorrect-password": "A senha parece estar incorreta. Digite a senha que você usa para desbloquear o aplicativo.", + "add-an-account": "Adicione uma conta", + "add-bootnode": "Adicionar nó de inicialização", + "add-contact": "Adicionar contato", + "add-custom-token": "Adicionar token personalizado", + "add-favourite": "Adicionar favorito", + "add-mailserver": "Adicionar nó da Status", + "add-members": "Adicionar membros", + "add-network": "Adicionar rede", + "add-new-contact": "Adicionar novo contato", + "add-nickname": "Adicionar um apelido (opcional)", + "add-private-key-account": "Adicionar conta a partir de chave privada", + "add-seed-account": "Adicionar conta com uma frase-semente", + "add-to-contacts": "Adicionar aos contatos", + "add-to-contacts-text": "Ao adicionar um usuário à sua lista de contatos, você compartilha o endereço da sua carteira", + "add-to-favourites": "Adicionar aos favoritos", + "add-watch-account": "Adicionar uma conta somente para exibição", + "address": "Endereço", + "address-or-ens-name": "Endereço ou nome ENS", + "address-received": "Endereço recebido", + "address-request-accepted": "Solicitação de endereço aceita", + "address-requested": "Endereço solicitado", + "advanced": "Avançado", + "advanced-settings": "Configurações avançadas", + "advertiser-description": "Você descobriu a Status graças a um parceiro. Você se importa se a Status verificar seu endereço IP uma vez para que ele seja recompensado? Esta informação não será usada para mais nada e será removida completamente após 7 dias.", + "advertiser-starter-pack-accept": "Aceitar", + "advertiser-starter-pack-decline": "Recusar", + "advertiser-starter-pack-description": "Aqui estão algumas criptografias para você começar! Use-o para obter adesivos, um nome ENS e experimente os dapps", + "advertiser-starter-pack-title": "Pacote Inicial", + "advertiser-title": "Privacidade por padrão", + "agree-by-continuing": "Ao continuar, você concorda \n com nosso", + "all": "Todos", + "allow": "Permitir", + "allow-mention-notifications": "Mostrar @ menções", + "allowing-authorizes-this-dapp": "Permitir que este DApp recupere o endereço da sua carteira e ative o Web3", + "already-have-asset": "Você já tem esse recurso", + "amount": "Quantia", + "appearance": "Aparência", + "apply": "Aplicar", + "are-you-sure": "Você tem certeza?", + "are-you-sure-description": "Você não poderá ver a frase-semente inteira novamente", + "are-you-sure-to-cancel": "Você tem certeza que deseja cancelar?", + "are-you-sure?": "Você tem certeza?", + "ask-in-status": "Faça uma pergunta ou relate um bug", + "at": "em", + "attribution-received": "{{attrib}} de {{max}} bônus recebidos", + "audio": "Áudio", + "audio-recorder": "Gravador", + "audio-recorder-error": "Erro no gravador", + "audio-recorder-max-ms-reached": "Tempo máximo de gravação atingido", + "audio-recorder-permissions-error": "Você precisa dar permissão para enviar mensagens de áudio", + "authorize": "Autorizar", + "available": "Disponível", + "available-participants": { + "one": "Você pode selecionar mais um participante", + "other": "Você pode selecionar mais {{count}} participantes" + }, + "back": "Voltar", + "back-up": "Cópia de segurança", + "back-up-seed-phrase": "Fazer backup da frase-semente", + "back-up-your-seed-phrase": "Fazer backup da frase-semente", + "backup-disabled": "Desativado", + "backup-recovery-phrase": "Cópia de segurança da frase-semente", + "balance": "Saldo", + "begin-set-up": "Iniciar configuração", + "biometric-auth-android-sensor-desc": "Toque no sensor", + "biometric-auth-android-sensor-error-desc": "Falhou", + "biometric-auth-android-title": "Autenticação Necessária", + "biometric-auth-confirm-logout": "Reentrar", + "biometric-auth-confirm-message": "A autenticação biométrica é necessária para continuar, se não for possível, desbloqueie suas chaves com sua senha ou código de acesso", + "biometric-auth-confirm-title": "Você deve autenticar!", + "biometric-auth-confirm-try-again": "Tente novamente", + "biometric-auth-error": "Não foi possível executar a autenticação biométrica ( {{code}} )", + "biometric-auth-login-error-title": "Erro de autenticação biométrica", + "biometric-auth-login-ios-fallback-label": "Digite a senha", + "biometric-auth-reason-login": "Login na Status", + "biometric-auth-reason-verify": "Verificar autenticação", + "biometric-disable-bioauth": "desativar {{bio-type-label}}", + "biometric-disable-password-description": "Se você desativar isso, você também irá ", + "biometric-disable-password-title": "Desativar senha salva", + "biometric-enable": "Se você não quiser inserir sua senha todas às vezes para acessar o aplicativo, ative o início de sessão por {{bio-type-label}}", + "biometric-enable-button": "Ativar {{bio-type-label}}", + "biometric-enable-keycard": "Se você não quiser usar seu Keycard cada vez que acessar o aplicativo, ative {{bio-type-label}} para iniciar a sessão", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Impressão digital", + "biometric-secure-with": "Proteger com {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "blank-keycard-text": "Você pode continuar com o seu depois de gerar as chaves e o nome", + "blank-keycard-title": "Parece que você selecionou\num Keycard em branco.", + "block": "Bloquear ", + "block-contact": "Bloqueie esse usuário", + "block-contact-details": "O bloqueio excluirá as mensagens anteriores deste usuário e impedirá que novas cheguem até você", + "blocked-users": "Usuários bloqueados", + "bootnode-address": "Endereço do nó de inicialização", + "bootnode-details": "Detalhes do nó de inicialização", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Nós de inicialização", + "bootnodes-enabled": "Nós de inicialização ativados", + "bootnodes-settings": "Configurações de nós de inicialização", + "browsed-websites": "O histórico do navegador aparecerá aqui", + "browser": "Navegador", + "browser-not-secure": "A conexão não é segura! Não assine transações nem envie dados pessoais neste site.", + "browser-secure": "A conexão é segura. Confie realmente neste site antes de assinar transações ou inserir dados pessoais.", + "browsers": "Navegadores", + "browsing-cancel": "Cancelar", + "browsing-open-in-android-web-browser": "Abrir no Android", + "browsing-open-in-ios-web-browser": "Abrir no iOS", + "browsing-open-in-status": "Abrir em Status", + "browsing-site-blocked-description1": "Detectamos atividades maliciosas em potencial neste endereço. Para proteger você e sua carteira, estamos impedindo mais navegação. \n\nSe você acha que isso é um erro, informe-nos no", + "browsing-site-blocked-description2": " conversa pública.", + "browsing-site-blocked-go-back": "Voltar", + "browsing-site-blocked-title": "Este site está bloqueado", + "browsing-title": "Buscar", + "bug-report": "Relatar uma falha", + "buy-crypto": "Comprar criptomoedas", + "buy-crypto-choose-a-service": "Escolha um serviço que você gostaria de utilizar para comprar criptomoedas", + "buy-crypto-description": "Encontre um dapp para comprar criptomoedas agora", + "buy-crypto-leaving": "Você está saindo da Status e entrando em um site de terceiros para concluir sua compra", + "buy-crypto-title": "Parece que sua carteira está vazia", + "camera-access-error": "Para conceder a permissão de câmera necessária, vá para as configurações do sistema e verifique se Status > Câmera está selecionado.", + "can-not-add-yourself": "É você, para iniciar um bate-papo, escolha outra pessoa", + "can-send-messages": "Você pode enviar e receber novas mensagens", + "cancel": "Cancelar", + "cancel-keycard-setup": "Cancelar a configuração do Keycard ", + "cancelling": "Cancelando", + "cannot-read-card": "Não é possível ler o cartão. Por favor, segure-o na parte de trás do seu telefone", + "cannot-use-default-pin": "A senha 000000 não é permitida. \nPor favor, use outra senha", + "cant-open-public-chat": "Não é possível abrir este chat público", + "cant-report-bug": "Não é possível relatar um bug", + "card-is-blank": "Este cartão está em branco", + "card-reseted": "O cartão foi redefinido", + "card-unpaired": "Cartão foi desemparelhado do dispositivo atual", + "change-fleet": "Mude a frota para {{fleet}}", + "change-logging-enabled": "Tem certeza de que deseja {{enable}} logs?", + "change-passcode": "Alterar código de acesso", + "change-password": "Alterar senha", + "change-pin": "Alterar senha de 6 dígitos", + "changed-amount-warning": "O valor foi alterado de {{old}} para {{new}}", + "changed-asset-warning": "O ativo foi alterado de {{old}} para {{new}}", + "chaos-mode": "Modo caos", + "chaos-unicorn-day": "Dia do Caos do Unicórnio", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Bate-papo", + "chat-and-transact": "Converse e faça transações privadamente com amigos", + "chat-is-a-contact": "Contato", + "chat-is-not-a-contact": "Não é um contato", + "chat-key": "Chave de bate-papo", + "chat-key-content": "As mensagens no protocolo de bate-papo Status são enviadas e recebidas usando chaves de criptografia. A chave de bate-papo público é uma sequência de caracteres que você compartilha com outras pessoas para que elas possam enviar mensagens para você em Status.", + "chat-key-title": "Chave de bate-papo", + "chat-link-previews": "Pré-visualizações de links de chat", + "chat-name": "Nome do chat", + "chat-name-content": "Três palavras aleatórias, derivadas algoritmicamente da sua chave de bate-papo e usadas como apelido padrão no bate-papo. Os nomes de bate-papo são completamente únicos; nenhum outro usuário pode ter as mesmas três palavras.", + "chat-name-title": "Nome no bate-papo", + "chat-notification-preferences": "Configurações de notificação", + "chat-settings": "Configurações do chat", + "chats": "Chats", + "check-on-opensea": "Confira no opensea", + "check-your-recovery-phrase": "Verifique sua palavra semente", + "choose-actions": "Escolha ações", + "choose-authentication-method": "Escolha um método de autenticação", + "choose-new-location-for-keystore": "Escolha um novo local para salvar seu arquivo de armazenamento de chaves", + "choose-storage": "Escolha o armazenamento", + "clear": "Limpar", + "clear-all": "Limpar tudo", + "clear-history": "Apagar histórico", + "clear-history-action": "Limpar", + "clear-history-confirmation": "Apagar o histórico?", + "clear-history-confirmation-content": "Tem certeza de que deseja limpar este histórico de bate-papo?", + "clear-history-title": "Apagar o histórico?", + "close": "Fechar", + "close-all": "Fechar tudo", + "close-app-button": "Confirmar", + "close-app-content": "O aplicativo irá parar e fechar. Quando você reabri-lo, a rede selecionada será usada", + "close-app-title": "Atenção!", + "command-button-send": "Enviar", + "communities": "Comunidades", + "communities-alpha": "Comunidades (alfa)", + "communities-verified": "✓ Comunidade da Status verificada", + "community-color": "Cor da comunidade", + "community-color-placeholder": "Escolha uma cor", + "community-edit-title": "Editar comunidade", + "community-image-pick": "Escolha uma imagem", + "community-image-remove": "Remover", + "community-image-take": "Tirar foto", + "community-invite-title": "Convidar", + "community-key": "Chave privada da comunidade", + "community-key-placeholder": "Digite a chave privada da sua comunidade", + "community-members": { + "one": "{{count}} membro", + "other": "{{count}} membros" + }, + "community-members-title": "Membros", + "community-private-key": "Chave privada da comunidade", + "community-requests-to-join-title": "Pedidos de participação", + "community-roles": "Funções", + "community-share-title": "Compartilhar", + "community-thumbnail-image": "Imagem em miniatura", + "community-thumbnail-upload": "Upload", + "complete-hardwallet-setup": "Este cartão agora está vinculado. Você precisa dele para assinar transações e desbloquear suas chaves", + "completed": "Concluído", + "confirm": "Confirmar", + "confirm-password-placeholder": "Confirme sua senha…", + "confirmation-request": "Pedido de confirmação", + "confirmations": "Confirmações", + "confirmations-helper-text": "Quando a transação tiver 12 confirmações, você poderá considerá-la liquidada.", + "connect": "Conectar", + "connect-mailserver-content": "Conectar-se a {{name}} ?", + "connect-wallet": "Conectar carteira", + "connected": "Conectado", + "connected-to": "Conectado a", + "connecting": "Conectando...", + "connecting-requires-login": "Conectar-se a outra rede requer login", + "connection-status": "Status de conexão", + "connection-with-the-card-lost": "Conexão com o cartão \n foi perdido", + "connection-with-the-card-lost-setup-text": "Para retomar a configuração, segure o cartão na\n parte de trás do seu telefone e mantenha \n cartão para contato telefônico", + "connection-with-the-card-lost-text": "Para continuar, segure o cartão na parte de trás do seu telefone", + "contact-code": "Chave de contato", + "contact-s": { + "one": "contato", + "other": "contatos" + }, + "contacts": "Contatos", + "contacts-descr": "Seus contatos aparecerão aqui. Você receberá atualizações de status de qualquer pessoa que adicionar como contato", + "contacts-empty": "Contatos com nomes ENS aparecerão aqui", + "continue": "Continuar", + "continue-anyway": "Continuar mesmo assim", + "contract-address": "Endereço do contrato", + "contract-interaction": "Interação contratual", + "copy-info": "Copiar informação", + "copy-qr": "Copiar código", + "copy-to-clipboard": "Copiar", + "copy-transaction-hash": "Copiar ID da transação", + "cost-fee": "Custo\/Taxa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Criar", + "create-a-pin": "Crie uma senha de 6 dígitos", + "create-channel": "Criar um canal", + "create-channel-title": "Novo canal", + "create-community": "Criar uma comunidade", + "create-group-chat": "Criar sala de conversação do grupo", + "create-multiaccount": "Gerar chaves", + "create-new-key": "Obter novas chaves", + "create-pin": "Criar senha de 6 dígitos", + "create-pin-description": "Você precisará do seu cartão + esta senha de 6 dígitos para desbloquear a Status e confirmar transações", + "created-group-chat-description": "Você criou o grupo {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Moeda", + "currency-display-name-aed": "Dirham de los Emiratos Árabes Unidos", + "currency-display-name-afn": "Afeganistão Afegão", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dólar australiano", + "currency-display-name-bbd": "Dólar de Barbados", + "currency-display-name-bdt": "Taka do Bangladesh", + "currency-display-name-bgn": "Lev búlgaro", + "currency-display-name-bhd": "Dinar do Bahrein", + "currency-display-name-bnd": "Dólar de Brunéi", + "currency-display-name-bob": "Boliviano", + "currency-display-name-brl": "Real do Brasil", + "currency-display-name-btn": "Ngultrum butanés", + "currency-display-name-cad": "Dólar canadiense", + "currency-display-name-chf": "Franco suíço", + "currency-display-name-clp": "Peso chileno", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Cólon da Costa Rica", + "currency-display-name-czk": "Corona checa", + "currency-display-name-dkk": "Coroa da Dinamarca", + "currency-display-name-dop": "Peso da República Dominicana", + "currency-display-name-egp": "Libra egipcia", + "currency-display-name-etb": "Birr etíope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Libra esterlina", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Dólar de Hong Kong", + "currency-display-name-hrk": "Kuna da Croácia", + "currency-display-name-huf": "Forint da Hungria", + "currency-display-name-idr": "Rupias indonésias", + "currency-display-name-ils": "Shekel de Israel", + "currency-display-name-inr": "Rupia india", + "currency-display-name-isk": "Coroa da Islândia", + "currency-display-name-jmd": "Dólar jamaiquino", + "currency-display-name-jpy": "Yen japonês", + "currency-display-name-kes": "Chelín keniano", + "currency-display-name-krw": "Won sul-coreano", + "currency-display-name-kwd": "Dinar do Kuwait", + "currency-display-name-kzt": "Tenge kazajo", + "currency-display-name-lkr": "Rupia de Sri Lanka", + "currency-display-name-mad": "Dirham marroquino", + "currency-display-name-mdl": "Leu da Moldávia", + "currency-display-name-mur": "Rúpia das Maurícias", + "currency-display-name-mwk": "Kwacha do Malawi", + "currency-display-name-mxn": "Peso mexicano", + "currency-display-name-myr": "Ringgit malayo", + "currency-display-name-mzn": "Metical mozambiqueño", + "currency-display-name-nad": "Dólar namibio", + "currency-display-name-ngn": "Naira (Nigeria)", + "currency-display-name-nok": "Corona noruega", + "currency-display-name-npr": "Rupia nepalí", + "currency-display-name-nzd": "Dólar da Nova Zelândia", + "currency-display-name-omr": "Rial de Omã", + "currency-display-name-pen": "Sol peruano", + "currency-display-name-pgk": "Kina Papua-Nova Guiné", + "currency-display-name-php": "Peso das Filipinas", + "currency-display-name-pkr": "Rupia pakistaní", + "currency-display-name-pln": "Zloty (Polonia)", + "currency-display-name-pyg": "Guaraní (Paraguay)", + "currency-display-name-qar": "Rial do Qatar", + "currency-display-name-ron": "Leu da Roménia", + "currency-display-name-rsd": "Dinar da Sérvia", + "currency-display-name-rub": "Rublo da Rússia", + "currency-display-name-sar": "Riyal da Arábia Saudita", + "currency-display-name-sek": "Coroa da Suécia", + "currency-display-name-sgd": "Dólar de Singapura", + "currency-display-name-thb": "Baht da Tailândia", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dólar de Trinidad e Tobago", + "currency-display-name-twd": "Dólar Novo de Taiwan", + "currency-display-name-tzs": "Chelín tanzano", + "currency-display-name-uah": "Ucrânia Hryvnia", + "currency-display-name-ugx": "Xelim ugandês", + "currency-display-name-usd": "Dólar dos Estados Unidos", + "currency-display-name-uyu": "Peso uruguayo", + "currency-display-name-vef": "Bolívar venezolano", + "currency-display-name-vnd": "Dong vietnamita", + "currency-display-name-zar": "Rand sul-africano", + "current": "Atual", + "current-network": "Rede atual", + "current-pin": "Digite a senha de 6 dígitos", + "current-pin-description": "Digite sua senha de 6 dígitos para continuar", + "custom": "Personalizado", + "custom-networks": "Redes personalizadas", + "custom-node": "Você está usando um endpoint RPC personalizado. Seu histórico de transferências locais pode estar incompleto.", + "custom-seed-phrase": "Frase-semente inválida", + "custom-seed-phrase-text-1": "Esta frase inicial não corresponde ao nosso dicionário suportado. Verifique se há palavras com erros ortográficos.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Aceitar e Abrir", + "dapp-starter-pack-description": "Aqui estão algumas criptografias para você começar! Use-o para obter adesivos, um nome ENS e experimente os dapps", + "dapp-starter-pack-title": "Pacote Inicial", + "dapp-would-like-to-connect-wallet": "gostaria de se conectar a", + "dapps": "ÐApps", + "dapps-permissions": "Permissões do DApp", + "dark": "Escuro", + "data": "Dados", + "data-syncing": "Sincronização de dados", + "database-reset-warning": "O banco de dados será redefinido. Chats, contatos e configurações serão excluídos", + "datetime-ago": "atrás", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "dia", + "other": "dias" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "hoje", + "datetime-yesterday": "ontem", + "decimals": "Decimais", + "decline": "Recusar", + "decryption-failed-content": "Ocorreu um erro ao descriptografar seus dados. Você pode precisar apagar seus dados antigos e gerar uma nova conta. Toque em “Aplicar” para apagar ou “Cancelar” para tentar novamente", + "default": "Padrão", + "default-assets": "ERC20 e ERC721 padrão", + "delete": "Excluir", + "delete-account": "Remover conta", + "delete-and-leave-group": "Excluir e sair do grupo", + "delete-bootnode": "Excluir nó de inicialização", + "delete-bootnode-are-you-sure": "Tem certeza de que deseja excluir este nó de inicialização?", + "delete-bootnode-title": "Eliminar bootnode", + "close-chat": "Excluir conversa", + "close-chat-confirmation": "Tem certeza de que deseja excluir este bate-papo?", + "delete-confirmation": "Excluir?", + "delete-mailserver": "Excluir nó da Status", + "delete-mailserver-are-you-sure": "Tem certeza de que deseja excluir este nó da Status?", + "delete-mailserver-title": "Excluir nó da Status", + "delete-message": "Apagar mensagem", + "delete-my-account": "Deletar minha conta", + "delete-my-profile": "Excluir meu perfil", + "delete-network-confirmation": "Tem certeza de que deseja excluir esta rede?", + "delete-network-error": "Conecte-se a uma rede diferente antes de exclui-la", + "delete-network-title": "Excluir rede?", + "delete-profile": "Excluir perfil", + "delete-profile-warning": "Aviso: Se você não tiver sua frase semente escrita, você perderá o acesso aos seus fundos depois de excluir seu perfil", + "deny": "Negar", + "derivation-path": "Caminho de derivação", + "description": "Descrição", + "dev-mode": "Modo de desenvolvimento", + "dev-mode-settings": "Configurações do modo de desenvolvimento", + "device-syncing": "Sincronização de dispositivos", + "devices": "Dispositivos", + "disable": "desativar", + "disabled": "Desativado", + "disconnected": "Bate-papo offline", + "discover": "Descobrir", + "dismiss": "Dispensar", + "done": "Concluído", + "dont-ask": "Não me pergunte novamente", + "edit": "Editar", + "edit-chats": "Editar chats", + "edit-community": "Editar comunidade", + "edit-favourite": "Editar favorito", + "edit-group": "Editar grupo", + "edit-profile": "Editar perfil", + "empty-chat-description": "Não há mensagens \n neste bate-papo ainda", + "empty-chat-description-community": "Tem estado quieto aqui nas últimas {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Todas as mensagens que você envia aqui são criptografadas e só podem ser lidas por você e ", + "empty-chat-description-public": "Está quieto aqui nas últimas {{quiet-hours}}. Inicie a conversa ou ", + "empty-chat-description-public-share-this": "compartilhe a sala.", + "empty-keycard-required": "Requer um Keycard vazio", + "empty-pending-invitations-descr": "Pessoas que desejam entrar no grupo \n através de um link de convite aparecerão aqui", + "empty-tab": "Aba vazia", + "enable": "Ativar", + "enable-all": "Habilitar todos", + "enable-link-previews": "Ativar visualizações de link no chat?", + "encrypt-with-password": "Criptografar com senha", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Adicionar nome do usuário ", + "ens-agree-to": "Concordar com", + "ens-chat-settings": "Configurações de bate-papo", + "ens-custom-domain": "Domínio personalizado", + "ens-custom-username-hints": "Digite o nome de usuário inteiro, incluindo o domínio personalizado, como nomedeusuario.domínio.eth", + "ens-custom-username-taken": "O nome de usuário não pertence a você :(", + "ens-deposit": "Depósito", + "ens-dismiss-message": "Clique aqui para fechar", + "ens-displayed-with": "Suas mensagens são exibidas para outras pessoas com", + "ens-get-name": "Obter nome universal", + "ens-got-it": "Ok, entendi.", + "ens-locked": "Nome de usuário bloqueado. Você não poderá liberá-lo até {{date}}", + "ens-name-content": "Apelido personalizado para sua chave de bate-papo que você pode registrar usando o Ethereum Name Service. Os nomes do ENS são nomes de usuário descentralizados.", + "ens-name-not-found": "Não é possível resolver o nome ENS", + "ens-name-title": "Nome ENS", + "ens-network-restriction": "Disponível apenas na Mainnet", + "ens-no-usernames": "Você não tem nenhum nome de usuário conectado", + "ens-powered-by": "Desenvolvido com Ethereum Name Services", + "ens-primary-username": "Nome de usuário principal", + "ens-register": "Registre-se", + "ens-registration-failed": "Para registrar o nome do usuário, tente novamente.", + "ens-registration-failed-title": "Falha na transação", + "ens-registration-failure": "Erro ao registrar", + "ens-registration-in-progress": "Registrando…", + "ens-release-username": "Liberar nome de usuário", + "ens-remove-hints": "A remoção desanexará o nome de usuário da sua chave.", + "ens-remove-username": "Remover nome do usuário", + "ens-saved": " agora está conectado com sua chave de bate-papo e pode ser usado em Status.", + "ens-saved-title": "Nome de usuário adicionado", + "ens-show-username": "Mostrar meu nome de usuário ENS em chats", + "ens-terms-header": "Termos de registro de nome", + "ens-terms-point-1": "Os fundos são depositados por 1 ano. Seu SNT será bloqueado, mas não será gasto.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Registro ENS).", + "ens-terms-point-2": "Após 1 ano, você pode liberar o nome e receber seu depósito de volta ou não tomar nenhuma ação para mantê-lo.", + "ens-terms-point-3": "Se os termos do contrato mudarem — por exemplo, a Status faz atualizações do contrato — o usuário tem o direito de liberar o nome de usuário, independentemente do tempo de espera.", + "ens-terms-point-4": "O controlador do contrato não pode acessar seus fundos depositados. Eles só podem ser movidos de volta para o endereço que os enviou.", + "ens-terms-point-5": "Seus endereços serão publicamente associados ao seu nome no ENS.", + "ens-terms-point-6": "Os nomes de usuários são criados como nós de subdomínio stateofus.eth e estão sujeitos aos termos do contrato inteligente do ENS.", + "ens-terms-point-7": "Você autoriza o contrato a transferir o SNT em seu nome. Isso só pode ocorrer quando você aprovar uma transação para autorizar a transferência.", + "ens-terms-point-8": "Estes termos são garantidos pela lógica do contrato inteligente nos endereços:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Termos de registo do nome.", + "ens-test-message": "Olá", + "ens-transaction-pending": "Transação pendente ...", + "ens-understand": "Entendo que meu endereço de carteira estará publicamente conectado ao meu usuário.", + "ens-username": "Nome de usuário ENS", + "ens-username-already-added": "O nome de usuário já está conectado à sua chave de bate-papo e pode ser usado dentro da Status.", + "ens-username-available": "✓ Nome de usuário disponível!", + "ens-username-connected": "Esse nome de usuário é de sua propriedade e conectado à sua chave de bate-papo.", + "ens-username-connected-continue": "Continue configurando 'Mostrar meu nome de usuário do ENS nos bate-papos'.", + "ens-username-connected-with-different-key": "Continuar exigirá uma transação para conectar o nome de usuário com sua chave de bate-papo atual.", + "ens-username-connection-confirmation": "{{username}} será conectado assim que a transação for concluída.", + "ens-username-hints": "Pelo menos 4 caracteres. Usando letras minúsculas e números.", + "ens-username-invalid": "Apenas letras e números.", + "ens-username-owned": "✓ O nome do usuário é seu.", + "ens-username-owned-continue": "Continuar conectará esse nome de usuário com sua chave de bate-papo.", + "ens-username-registration-confirmation": "Ótimo! Você será o proprietário do {{username}} assim que a transação for concluída.", + "ens-username-taken": "Nome de usuário já utilizado :(", + "ens-username-you-can-follow-progress": "Você pode acompanhar o progresso na seção Histórico de Transações da sua carteira.", + "ens-usernames": "Nomes de usuário ENS", + "ens-usernames-details": "Registre um nome de usuário universal para ser facilmente reconhecido por outros usuários", + "ens-want-custom-domain": "Eu possuo um nome em outro domínio", + "ens-want-domain": "Eu quero um domínio stateofus.eth", + "ens-welcome-hints": "Os nomes do ENS transformam esses endereços malucos em nomes de usuário exclusivos.", + "ens-welcome-point-customize": "Um nome ENS pode substituir seu pseudo-nome aleatório de três palavras no chat. Seja @seunome em vez de {{name}} .", + "ens-welcome-point-customize-title": "Personalize seu nome de bate-papo", + "ens-welcome-point-receive": "Outros podem enviar fundos via chat em uma única etapa.", + "ens-welcome-point-receive-title": "Receba transações no chat", + "ens-welcome-point-register": "Registre-se uma vez para manter o nome para sempre. Após 1 ano, você pode liberar o nome e recuperar seu SNT.", + "ens-welcome-point-register-title": "10 SNT para se registar", + "ens-welcome-point-simplify": "Você pode receber fundos em um nome ENS fácil de compartilhar, em vez do seu endereço hexadecimal (0x ...).", + "ens-welcome-point-simplify-title": "Simplifique seu endereço ETH", + "ens-welcome-point-verify": "Você pode verificar e adicionar qualquer nome de usuário que você possui nos próximos passos.", + "ens-welcome-point-verify-title": "Já possui um nome de usuário?", + "ens-your-username": "Seu nome de usuário", + "ens-your-usernames": "Seus nomes de usuários", + "ens-your-your-name": "Seu nome ENS", + "enter-12-words": "Digite as 12 palavras da sua frase inicial, separadas por espaços únicos", + "enter-a-private-key": "Digite uma chave privada", + "enter-a-seed-phrase": "Digite uma frase-semente", + "enter-address": "Inserir endereço", + "enter-contact-code": "Insira o nome de usuário ENS ou a chave do chat", + "enter-pair-code": "Digite seu código de emparelhamento", + "enter-pair-code-description": "O código de emparelhamento foi exibido durante a configuração do Keycard", + "enter-password": "Digite a senha", + "enter-pin": "Digite a senha de 6 dígitos", + "enter-puk-code": "Digite o código PUK", + "enter-puk-code-description": "A senha de 6 dígitos foi bloqueada. \n Digite o código PUK para desbloquear a senha.", + "enter-recipient-address-or-username": "Digite o endereço ou nome de usuário do destinatário", + "enter-seed-phrase": "Inserir frase-semente", + "enter-url": "Inserir URL", + "enter-user-pk": "Insira a chave pública do usuário", + "enter-watch-account-address": "Digitalize um código QR \nou \ncoloque o endereço para monitorar", + "enter-word": "Digite a palavra", + "enter-your-code": "Digite sua senha de 6 dígitos", + "enter-your-password": "Coloque sua senha", + "error": "Erro", + "error-unable-to-get-balance": "Não foi possível obter o saldo", + "error-unable-to-get-prices": "Erro de conversão de moeda. Atualize sua tela para tentar novamente.", + "error-unable-to-get-token-balance": "Não foi possível obter o saldo do token", + "errors": "Erros", + "eth": "ETH", + "ethereum-account": "Conta Ethereum", + "ethereum-address": "Endereço Ethereum", + "ethereum-node-started-incorrectly-description": "O nó Ethereum foi iniciado com a configuração incorreta; o aplicativo será parado para se recuperar dessa condição. ID de rede configurado = {{network-id}} , real = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Nó Ethereum iniciado incorretamente", + "etherscan-lookup": "Procura no Etherscan", + "everyone": "Todos", + "export-account": "Exportar conta", + "export-key": "Exportar chave privada", + "external-storage-denied": "Acesso ao armazenamento externo negado", + "failed": "Falhou", + "faq": "Perguntas frequentes", + "favourite": "Favoritos", + "favourite-description": "Seus sites favoritos aparecerão aqui", + "favourites": "Favoritos", + "favourites-empty": "Os endereços adicionados aos favoritos aparecerão aqui", + "fetch-messages": "↓ Buscar mensagens", + "fetch-timeline": "↓ Buscar", + "find": "Encontrar", + "finish": "Terminar", + "finishing-card-setup": "Finalizando configurações do cartão", + "fleet": "Frota", + "fleet-settings": "Configurações de frota", + "follow": "Seguir", + "follow-your-interests": "Entre em uma conversa pública e conheça novas pessoas", + "free": "↓ Grátis", + "from": "De", + "gas-limit": "Limite de gás", + "gas-price": "Preço do gás", + "gas-used": "Gás usado", + "generate-a-key": "Gerar chaves", + "generate-a-new-account": "Gerar uma nova conta", + "generate-a-new-key": "Gere uma nova chave", + "generate-account": "Gerar chaves", + "generate-an-account": "Gerar uma nova conta", + "generate-new-key": "Gerar chaves", + "generating-codes-for-pairing": "> Download do software do produto no cartão \n> Gerando códigos de desbloqueio e emparelhamento", + "generating-keys": "Gerando chaves...", + "generating-mnemonic": "Gerando frase-semente", + "get-a-keycard": "Obtenha um Keycard", + "get-started": "Começar", + "get-status-at": "Obter status em http:\/\/status.im", + "get-stickers": "Obter Adesivos", + "give-a-short-description": "Dê uma breve descrição", + "give-a-short-description-community": "Dê uma breve descrição", + "give-permissions-camera": "Dar permissão\npara acessar a câmera", + "glossary": "Glossário", + "go-to-settings": "Vá para as configurações...", + "got-it": "Entendido", + "grant-face-id-permissions": "Para conceder a permissão de Face ID necessária, vá para as configurações do seu sistema e certifique-se de que Status > Face ID está selecionado", + "group-chat": "Conversa em grupo", + "group-chat-admin": "Administrador", + "group-chat-admin-added": "**{{member}}** foi adicionado como administrador", + "group-chat-all-contacts-invited": "Todos os seus contatos já estão no grupo", + "group-chat-created": "**{{member}}** criou o grupo **{{name}}**", + "group-chat-decline-invitation": "Recusar o convite", + "group-chat-member-added": "**{{member}}** foi convidado", + "group-chat-member-joined": "**{{member}}** acessou o grupo", + "group-chat-member-removed": "**{{member}}** saiu do grupo", + "group-chat-members-count": "{{selected}}\/{{max}} membros", + "group-chat-name-changed": "**{{member}}** mudou o nome do grupo para **{{name}}**", + "group-chat-no-contacts": "Você não possui contatos.\nAdicione contatos para iniciar a conversa.", + "group-info": "Informações do grupo", + "group-invite": "Convite para o grupo", + "group-invite-link": "Link de convite do grupo", + "group-membership-request": "Pedido para entrar no grupo", + "gwei": "Gwei", + "has-permissions": "tem permissão para acessar", + "hash": "Hash", + "help": "ajuda", + "help-capitalized": "Ajuda", + "help-center": "Centro de ajuda", + "hide-content-when-switching-apps": "Bloquear capturas de tela", + "hide-content-when-switching-apps-ios": "Ocultar visualização", + "history": "Histórico", + "history-nodes": "Nós de mensagem da Status", + "hold-card": "Segure o cartão na parte de trás \n do seu telefone", + "home": "Início", + "hooks": "Hooks", + "how-it-works": "Como funciona", + "http-gateway-error": "Ops, a solicitação falhou!", + "identifier": "Identificador", + "image": "Imagem", + "image-remove-current": "Remover foto atual", + "image-source-gallery": "Escolher na galeria", + "image-source-make-photo": "Tirar foto", + "image-source-title": "Editar imagem", + "import": "Importar", + "import-community": "Importar uma comunidade", + "import-community-title": "Importar uma comunidade", + "in-contacts": "Em contatos", + "incoming": "Entrada", + "incoming-transaction": "Transação recebida", + "incorrect-code": [ + "str", + "Desculpe, o código estava incorreto. Por favor, digite novamente" + ], + "increase-gas": "Aumentar o gás", + "initialization": "Inicialização", + "install": "Instalar", + "intro-message1": "Bem-vindo à Status\nToque nesta mensagem para definir sua senha e começar!", + "intro-privacy-policy-note1": "A Status não coleta ou lucra com seus dados pessoais. Ao continuar, você concorda com a ", + "intro-privacy-policy-note2": "política de privacidade", + "intro-text": "Status é a sua porta de entrada para a web descentralizada", + "intro-text1": "Converse em uma rede criptografada ponto a ponto, onde as mensagens não podem ser censuradas ou invadidas", + "intro-text2": "Envie e receba ativos digitais em qualquer lugar do mundo - não é necessária uma conta bancária", + "intro-text3": "Explore jogos, trocas e redes sociais onde você é o proprietário dos seus dados", + "intro-title1": "Comunicação verdadeiramente privada", + "intro-title2": "Carteira criptográfica segura", + "intro-title3": "Aplicativos descentralizados", + "intro-wizard-text1": "Um conjunto de chaves controla sua conta. Suas chaves estão no seu telefone, então somente você pode usá-las", + "intro-wizard-text2": "Uma chave é para conversar. Ele vem com um nome legível que não pode ser alterado.", + "intro-wizard-text3": "Se você possui um Keycard, guarde lá as suas chaves para maior segurança.", + "intro-wizard-text4": "Proteja e criptografe suas chaves", + "intro-wizard-text6": "A Status o notificará sobre novas mensagens. Você pode editar suas preferências de notificação posteriormente nas configurações", + "intro-wizard-title-alt4": "Crie uma senha", + "intro-wizard-title-alt5": "Confirme sua senha", + "intro-wizard-title1": "Pegue suas chaves", + "intro-wizard-title2": "Escolha um nome de bate-papo", + "intro-wizard-title3": "Escolha o armazenamento de chaves", + "intro-wizard-title4": "Crie uma senha de 6 dígitos", + "intro-wizard-title5": "Confirme a senha", + "intro-wizard-title6": "Ativar notificações", + "introduce-yourself": "Apresente-se com uma breve mensagem", + "invalid-address-qr-code": "O código QR digitalizado não contém um endereço válido", + "invalid-format": "Formato Inválido \n Deve ser {{format}}", + "invalid-key-confirm": "Aplicar", + "invalid-key-content": "O banco de dados não pode ser criptografado porque um arquivo está corrompido. Seus fundos e a chave de bate-papo estão seguros. Outros dados, como seus chats e contatos, não podem ser restaurados. O botão \"{{erase-multiaccounts-data-button-text}}\" removerá todos os outros dados e permitirá que você acesse seus fundos e envie mensagens", + "invalid-number": "Número inválido", + "invalid-pairing-password": "Senha de emparelhamento inválida", + "invalid-public-chat-topic": "Tópico de chat público inválido", + "invalid-range": "Formato inválido, deve estar entre {{min}} e {{max}}", + "invite": "Convidar", + "invite-button": "Convidar", + "invite-chat-accept": "Aceitar", + "invite-chat-accept-join": "Aceitar e Participar", + "invite-chat-intro": "Você foi indicado por um amigo para juntar-se na Status. Aqui estão algumas criptomoedas para você começar! Use-o para registrar um nome ENS ou comprar um pacote de adesivos", + "invite-chat-name": "Indicação de amigo", + "invite-chat-pending": "Pendente", + "invite-chat-rule": "Aceitar também recompensará o seu amigo com um bônus de indicação criptografado", + "invite-chat-starter-pack": "Pacote Inicial", + "invite-friends": "Convide amigos", + "invite-instruction-fifth": "Você pode optar por resgatar seu bônus de indicação a qualquer momento.", + "invite-instruction-first": "Você envia um link de convite exclusivo para seu amigo fazer o download e entrar na Status", + "invite-instruction-fourth": "Você recebe seu bônus de indicação e seu amigo o Pacote inicial", + "invite-instruction-second": "Seu amigo baixa a Status e cria uma conta (no Android)", + "invite-instruction-third": "É iniciado um bate-papo com seu amigo, onde ele confirma sua indicação", + "invite-people": "Convide pessoas", + "invite-privacy-policy-public": "Você instalou o Status por meio de um link de indicação. Ao entrar neste chat, você atribui ao seu referenciador e concorda com os", + "invite-privacy-policy1": "Ao aceitar você concorda com o programa de indicação", + "invite-privacy-policy2": "Termos e Condições.", + "invite-public-chat-home": "Convite de indicação", + "invite-public-chat-intro": "Aqui estão algumas criptomoedas para você começar! Use-as para registrar um nome ENS ou comprar um pacote de adesivos", + "invite-receive-account": "Conta para receber o seu bónus de indicação", + "invite-reward": "Ganhe criptomoedas para cada amigo que você convidar!", + "invite-reward-friend": "Amigo:", + "invite-reward-friend-description": "Seu amigo receberá um Pacote Inicial que consiste em alguns {{reward}} para começar", + "invite-reward-friend-name": "Pacote Inicial", + "invite-reward-you": "Você: ", + "invite-reward-you-description": "Convide um amigo e receba {{reward}} como um símbolo de nossa gratidão. Utilize para comprar figurinhas, um nome ENS e testar alguns DApps.", + "invite-reward-you-name": "Bónus de indicação", + "invite-select-account": "Selecione uma conta para receber o seu bônus de indicação", + "invite-warning": "Esta promoção é válida apenas para usuários de um dispositivo Android, que não sejam residentes dos EUA. O amigo precisa confirmar a indicação dentro de 7 dias", + "invited": "convidou", + "join": "Junte-se", + "join-a-community": "ou junte-se a uma comunidade", + "join-group-chat": "Acessar grupo", + "join-group-chat-description": "{{username}} convidou você para ingressar no grupo {{group-name}}", + "join-me": "Hey, junte-se a mim na Status: {{url}}", + "join-new-private-chat": "Iniciar uma nova conversa privada", + "join-new-public-chat": "Participar do bate-papo público", + "joined": "Entrou", + "joined-group-chat-description": "Você ingressou no {{group-name}} do convite por {{username}}", + "key": "Chave", + "key-managment": "Gerenciamento de chave", + "key-on-device": "A chave privada está salva neste dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "O acesso ao Keycard foi redefinido", + "keycard-applet-install-instructions": "Para instalar o applet, siga as instruções em https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Tente mover o cartão para encontrar o leitor NFC em seu dispositivo", + "keycard-awaiting-title": "Ainda procurando…", + "keycard-blocked": "O cartão-chave foi bloqueado. \nVocê precisa redefinir o cartão para continuar usando-o.", + "keycard-can-use-with-new-passcode": "Você pode usar este cartão com sua nova senha de acesso", + "keycard-cancel-setup-text": "Isso cancelará a configuração do Keycard. É altamente recomendável concluir a configuração para usar o cartão-chave. Deseja mesmo cancelar?", + "keycard-cancel-setup-title": "Operação perigosa", + "keycard-connected-description": "Tente manter o cartão parado", + "keycard-connected-title": "Conectado", + "keycard-desc": "Tem um Keycard? Guarde as suas chaves nele; vai precisar dele para as transações", + "keycard-dont-ask-card": "Não peça o cartão para entrar", + "keycard-enter-new-passcode": "Digite a nova senha {{step}} \/ 2", + "keycard-error-description": "Conecte o cartão novamente para continuar", + "keycard-error-title": "Conexão perdida", + "keycard-free-pairing-slots": "O Keycard tem {{n}} portas de emparelhamento livres", + "keycard-has-multiaccount-on-it": "Este cartão está cheio. Cada cartão pode conter um par de chaves principal", + "keycard-init-description": "Coloque o cartão na parte de trás do telefone para continuar", + "keycard-init-title": "Procurando por cartões…", + "keycard-is-blocked-details": "Você não pode mais usar este cartão para acessar ou assinar esta conta. Houve muitas tentativas de falhadas de senha e PUK.", + "keycard-is-blocked-instructions": "Para acessar sua conta, reinstale a Status e use um novo Keycard, use uma carteira diferente ou redefina o Keycard manualmente.", + "keycard-is-blocked-title": "O Keycard está bloqueado", + "keycard-is-frozen-details": "Para proteger os seus bens, o seu cartão está congelado. Reinicie o acesso ao cartão para desbloquear chaves e enviar transacções. Crie uma nova senha e digite seu PUK para acessar sua(s) conta(s) neste cartão.", + "keycard-is-frozen-reset": "Redefinir acesso ao cartão", + "keycard-is-frozen-title": "O Keycard está congelado", + "keycard-onboarding-finishing-header": "Finalizando", + "keycard-onboarding-intro-header": "Armazene suas chaves no Keycard", + "keycard-onboarding-intro-text": "Prepare-se, isso pode levar alguns minutos, mas é importante proteger sua conta", + "keycard-onboarding-pairing-header": "Emparelhando o cartão...", + "keycard-onboarding-preparing-header": "Preparando o cartão...", + "keycard-onboarding-puk-code-header": "Anote os códigos e\n guarde de forma segura", + "keycard-onboarding-recovery-phrase-description": "Você precisa dessa frase-smenete para recuperar sua chave. Anote-a. Mantenha-a segura, offline e separado deste dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Fazer backup da frase-semente", + "keycard-onboarding-recovery-phrase-text": "Somente para você ver. Esta é a frase-semente mágica usada para gerar sua chave.", + "keycard-onboarding-start-header": "Segure o cartão na parte de trás \n do seu telefone para começar", + "keycard-onboarding-start-step1": "Crie uma senha", + "keycard-onboarding-start-step1-text": "Em torno de 1 minuto. Crie uma senha de 6 dígitos para criptografar suas chaves", + "keycard-onboarding-start-step2": "Anote o código PUK e o código de emparelhamento", + "keycard-onboarding-start-step2-text": "Em torno de 1 minuto. Você vai precisar de um pedaço de papel e um lápis para isso", + "keycard-onboarding-start-step3": "Faça backup da frase-semente", + "keycard-onboarding-start-step3-text": "Em torno de 1 minuto. Também um pedaço de papel e um lápis são necessários", + "keycard-onboarding-start-text": "E manter o cartão em contato com o telefone\n durante a configuração. A configuração levará cerca de 4 minutos", + "keycard-processing-description": "Tente manter o cartão parado", + "keycard-processing-title": "Processando…", + "keycard-recovery-intro-button-text": "Iniciar a recuperação", + "keycard-recovery-intro-header": "Recuperar chaves armazenadas no Keycard", + "keycard-recovery-intro-text": "Se você gerou chaves usando um Keycard antes e agora quer usar estas chaves neste dispositivo", + "keycard-recovery-no-key-header": "Não há nada para \n recuperar aqui.", + "keycard-recovery-no-key-text": "O seu Keycard não tem nenhuma chave armazenada nele. Para o utilizar, gere uma nova chave e escolha o seu Keycard para guardar a chave", + "keycard-recovery-phrase-confirm-header": "Confirmar frase-semente", + "keycard-recovery-phrase-confirmation-text": "Você não terá uma segunda chance! Se você perder o acesso, por exemplo ao perder seu Keycard, só poderá acessar suas chaves com sua frase-semente. Ninguém, mas você tem sua frase-semente. Anotá-la. Mantenha-o seguro.", + "keycard-recovery-phrase-confirmation-title": "Anotou a frase-semente?", + "keycard-recovery-success-header": "Suas chaves foram \n recuperadas com sucesso", + "keycard-redeem-title": "Resgatar para", + "keycard-redeem-tx": "Resgatar bens", + "keycard-redeem-tx-desc": "Toque no cartão para assinar e receber bens", + "keycard-reset-passcode": "Redefinir senha", + "keycard-success-description": "Você pode remover o cartão agora", + "keycard-success-title": "Sucesso", + "keycard-unauthorized-operation": "Você não está autorizado a realizar esta operação. \n Por favor, toque no cartão válido e tente novamente.", + "keycard-upsell-subtitle": "Sua carteira hardware portátil e fácil de usar", + "language": "Idioma", + "learn-more": "Aprender mais", + "learn-more-about-keycard": "Saiba mais sobre o Keycard ", + "leave": "Sair", + "leave-chat": "Sair da conversa", + "leave-chat-confirmation": "Tem certeza que quer sair da conversa?", + "leave-community": "Deixar a comunidade", + "leave-confirmation": "Sair da conversa", + "leave-group": "Deixar o grupo", + "left": "saiu", + "les-ulc": "LES\/ULC", + "lets-go": "Vamos lá", + "light": "Claro", + "linked-on": "Vinculado em {{date}}", + "load-messages-before": "antes de {{date}}", + "load-more-messages": "↓ Buscar mais mensagens", + "load-more-timeline": "↓ Buscar mais", + "loading": "Carregando...", + "local-notifications": "Notificações locais", + "lock-app-with": "Bloquear aplicativo com", + "log-level": "Nível de registro", + "log-level-settings": "Configurações de nível de registo", + "logging": "Registros", + "logging-enabled": "Registros ativados?", + "login-pin-description": "Digite sua senha de 6 dígitos para desbloquear suas chaves", + "logout": "Sair", + "logout-app-content": "A conta será desconectada. Quando você a desbloquear novamente, a rede selecionada será usada", + "logout-are-you-sure": "Você tem certeza que quer \n sair?", + "logout-title": "Sair?", + "looking-for-cards": "Procurando por cartões…", + "lost-connection": "Conexão perdida", + "mail-should-be-configured": "O cliente de correio deve ser configurado", + "mailserver-address": "Endereço do nó da Status", + "mailserver-automatic": "Seleção automática", + "mailserver-automatic-switch-explanation": "Escolha o nó da Status mais rápido disponível", + "mailserver-connection-error": "Não foi possível conectar ao nó da Status", + "mailserver-content": "Um nó na rede Status que roteia e armazena mensagens por até 30 dias.", + "mailserver-details": "Detalhes do nó da Status", + "mailserver-error-content": "O nó da Status selecionado não pôde ser localizado.", + "mailserver-error-title": "Erro ao conectar ao nó da Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Escolha outro nó da Status", + "mailserver-reconnect": "Não foi possível conectar ao nó da Status. Toque para reconectar", + "mailserver-request-error-content": "O seguinte erro foi retornado pelo nó da Status: {{error}}", + "mailserver-request-error-status": "Um erro ocorreu ao buscar o histórico, verifique os registros para obter detalhes", + "mailserver-request-error-title": "Erro de comunicação com o nó da Status", + "mailserver-request-retry": "Solicitar nova tentativa", + "mailserver-retry": "Tente novamente", + "mailserver-title": "Nó de mensagem da Status", + "main-currency": "Moeda principal", + "main-networks": "Redes principais", + "main-wallet": "Carteira principal", + "mainnet-network": "Rede principal", + "make-admin": "Tornar-se administrador", + "manage-keys-and-storage": "Gerenciar chaves e armazenamento", + "mark-all-read": "Marcar todas como lidas", + "master-account": "Conta mestre", + "maybe-later": "Talvez mais tarde", + "member-kick": "Expulsar membro", + "members": { + "one": "1 membro", + "other": "{{count}} membros" + }, + "members-active": { + "one": "1 membro, 1 ativo", + "other": "{{count}} membros, {{count}} ativo" + }, + "members-active-none": "sem membros", + "members-count": "{{count}} membros", + "members-label": "Membros", + "members-limit-reached": "Limite de membros atingido", + "members-title": "Membros", + "membership-approval": "Exigir aprovação", + "membership-approval-description": "Sua comunidade é livre para participar, mas novos membros são obrigados a ser aprovados pelo criador da comunidade primeiro", + "membership-button": "Requisitos de participação", + "membership-declined": "O pedido de entrada no grupo foi recusado", + "membership-description": "A entrada no grupo exige que você seja aceito pelo administrador do grupo", + "membership-ens": "Exigir nome de usuário ENS", + "membership-ens-description": "Sua comunidade requer um nome de usuário ENS para poder participar", + "membership-free": "Nenhuma exigência", + "membership-free-description": "Sua comunidade é livre para que qualquer pessoa possa participar", + "membership-invite": "Exigir convite de outro membro", + "membership-invite-description": "Sua comunidade só pode ser acessada por convite de membros existentes da comunidade", + "membership-none": "Nenhum", + "membership-none-placeholder": "Você pode exigir que novos membros atendam a certos critérios antes que eles possam participar. Essa configuração pode ser alterada a qualquer momento", + "membership-request-pending": "Pedido de participação pendente", + "membership-requests": "Pedidos de participação", + "membership-title": "Requisitos de participação", + "message": "Mensagem", + "message-not-sent": "Mensagem não enviada", + "message-options-cancel": "Cancelar", + "message-reply": "Responder", + "messages": "Mensagens", + "might-break": "Pode quebrar alguns ÐApps", + "migrations-failed-content": "{{message}} \n versão do esquema: inicial {{initial-version}} , atual {{current-version}} , última {{last-version}} \n\nOcorreu um erro no banco de dados. Seus fundos e chave de bate-papo estão seguros. Outros dados, como bate-papos e contatos, não podem ser restaurados. O {{erase-multiaccounts-data-button-text}} \" {{erase-multiaccounts-data-button-text}} \" irá remover todos os outros dados e permitir que você acesse seus fundos e envie mensagens.", + "mobile-network-ask-me": "Pergunte-me quando usar a rede móvel", + "mobile-network-continue-syncing": "Continuar a sincronizar", + "mobile-network-continue-syncing-details": "Você pode alterá-lo mais tarde nas configurações", + "mobile-network-go-to-settings": "Ir para configurações", + "mobile-network-settings": "Dados móveis", + "mobile-network-sheet-configure": "Você pode configurar a sincronização em mais \ndetalhe em", + "mobile-network-sheet-offline": "Sem Wi-Fi, sincronização de mensagens desativada.", + "mobile-network-sheet-offline-details": "A sincronização com a rede móvel está desativada", + "mobile-network-sheet-remember-choice": "Lembrar a minha escolha", + "mobile-network-sheet-settings": "configurações", + "mobile-network-start-syncing": "Iniciar sincronização", + "mobile-network-stop-syncing": "Parar de sincronizar", + "mobile-network-stop-syncing-details": "Está conectado ao Wi-Fi?", + "mobile-network-use-mobile": "Utilizar dados móveis", + "mobile-network-use-mobile-data": "A Status utiliza bastante dados ao sincronizar os chats e a carteira.", + "mobile-network-use-wifi": "Somente Wi-Fi", + "mobile-syncing-sheet-details": "A Status usa bastante dados ao sincronizar os chats e a carteira.", + "mobile-syncing-sheet-title": "Sincronizar usando dados móveis?", + "more": "mais", + "move-and-reset": "Mover e reiniciar", + "move-keystore-file": "Mover arquivo de armazenamento de chaves", + "move-keystore-file-to-keycard": "Mover arquivo de armazenamento de chaves para o keycard?", + "multiaccount-exists-content": "Já existem chaves para esta conta e não podem ser adicionadas novamente. Se você perdeu sua senha, código de acesso ou cartão-chave, desinstale o aplicativo, reinstale e acesse suas chaves inserindo sua frase-semente", + "multiaccount-exists-title": "Já existem chaves para esta conta", + "multiaccounts-recover-enter-phrase-text": "Digite 12, 15, 18, 21 ou 24 palavras. \nSepare as palavras por um único espaço.", + "multiaccounts-recover-enter-phrase-title": "Digite sua frase-semente", + "mute": "Silenciar", + "my-accounts": "Minhas contas", + "my-accounts-empty": "Suas contas disponíveis aparecerão aqui", + "my-status": "Meu status", + "name": "Nome", + "name-of-token": "O nome do seu símbolo", + "name-optional": "Nome (opcional)", + "name-your-channel": "Dê um nome ao seu canal", + "name-your-channel-placeholder": "Nome do canal", + "name-your-community": "Dê um nome para sua comunidade", + "name-your-community-placeholder": "Um nome atraente", + "need-help": "Precisa de ajuda?", + "network": "Rede", + "network-chain": "Cadeia de rede", + "network-details": "Detalhes da rede", + "network-fee": "Taxa de rede", + "network-id": "ID de rede", + "network-info": "Informações da rede", + "network-invalid-network-id": "O ID da rede especificado não corresponde ao ID da rede pelo URL RPC", + "network-invalid-status-code": "Código de status inválido: {{code}}", + "network-invalid-url": "URL da rede é inválida", + "network-settings": "Configurações de rede", + "new": "Novo", + "new-chat": "Nova conversa", + "new-community-title": "Nova comunidade", + "new-contact": "Novo contato", + "new-contract": "Novo Contrato", + "new-favourite": "Novo favorito", + "new-group": "Novo grupo", + "new-group-chat": "Novo grupo de conversa", + "new-network": "Nova rede", + "new-pin-description": "Digite a nova senha de 6 dígitos", + "new-public-group-chat": "Participar de bate-papo público", + "new-status": "Novo status", + "new-tab": "Nova aba", + "next": "Próximo", + "nickname": "Apelido", + "nickname-description": "Os apelidos ajudam você a identificar as pessoas na Status. \n Só você pode ver os apelidos você criou", + "no": "Não", + "no-collectibles": "Não há colecionáveis disponíveis", + "no-contacts": "Você ainda não tem contatos", + "no-keycard-applet-on-card": "Não há applet Keycard no cartão", + "no-messages": "Nenhuma mensagem", + "no-pairing-slots-available": "Este cartão já está emparelhado com 5 dispositivos e não pode ser emparelhado com este. Use um dos dispositivos emparelhados, faça login com este cartão e libere uma porta de emparelhamento no cartão", + "no-result": "Sem resultados", + "no-tokens-found": "Nenhum token encontrado", + "node-info": "Informação do nó", + "node-version": "Versão do nó", + "nodes-disabled": "Nós da Status desativados", + "non-archival-node": "O endpoint RPC não oferece suporte a solicitações de arquivamento. Seu histórico de transferências locais pode estar incompleto.", + "nonce": "Nonce", + "none": "Nenhum", + "not-applicable": "Não aplicável a transações não assinadas", + "not-connected-nodes": "Não conectado a um nó da Status", + "not-connected-to-peers": "Não conectado a nenhum par", + "not-enough-snt": "SNT insuficiente", + "not-keycard-text": "O cartão que você usou não é um Keycard. Você precisa comprar um Keycard para usá-lo", + "not-keycard-title": "Não é um Keycard", + "not-registered": "não cadastrado", + "notification-settings": "Notificações", + "notifications": "Notificações", + "notifications-non-contacts": "Notificações de não contatos", + "notifications-preferences": "Preferências de notificação", + "notifications-servers": "Servidores de notificação", + "notifications-switch": "Mostrar notificações", + "notifications-transactions": "Transações da carteira", + "notify": "Notificar", + "now": "Agora", + "off": "Desativado", + "off-status-tree": "Fora da árvore da Status", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Ative os nós da Status para buscar mensagens enviadas enquanto o aplicativo está fechado. Quando ativado, um nó de histórico obtém seu endereço IP. Quando desativado, você não receberá mensagens quando o aplicativo for fechado e não as verá quando abrir o app mais tarde.", + "offline-messaging-use-history-nodes": "Usar nós de mensagem da Status", + "ok": "OK", + "ok-continue": "Ok, continuar", + "ok-got-it": "Ok, entendido", + "ok-save-pass": "OK, salvar senha", + "okay": "OK", + "on": "Em", + "on-status-tree": "Na árvore Status", + "once-enabled-share-metadata": "Uma vez habilitados, os links postados no chat podem compartilhar seus metadados com o site", + "open": "Abrir", + "open-chat": "Abrir chat", + "open-dapp": "Abrir ÐApp", + "open-dapp-store": "Descubra ÐApps", + "open-home": "Abrir...", + "open-in-new-tab": "Abrir em nova aba", + "open-membership": "Participação aberta", + "open-nfc-settings": "Abrir configurações do NFC", + "opening-buy-crypto": "Abrindo", + "optional": "Opcional", + "or": "OU", + "outgoing": "Saída", + "outgoing-transaction": "Transação enviada", + "page-camera-request-blocked": "Solicitações de câmera bloqueadas. Para habilitar as solicitações de câmera, vá em Configurações", + "page-would-like-to-use-camera": "gostaria de usar sua câmera", + "pair": "Sincronizar dispositivos", + "pair-card": "Sincronizar para este dispositivo", + "pair-code": "Código de par", + "pair-code-explanation": "Emparelha o cartão com um dispositivo diferente (até 5) para desbloquear as chaves e assinar transações com o mesmo Keycard", + "pair-code-placeholder": "Emparelhar código…", + "pair-this-card": "Emparelhar este cartão", + "pair-this-device": "Anunciar dispositivo", + "pair-this-device-description": "Emparelhe seus dispositivos para sincronizar contatos e bate-papos entre eles", + "paired-devices": "Dispositivos sincronizados", + "pairing": "Emparelhamento", + "pairing-card": "Cartão de emparelhamento", + "pairing-go-to-installation": "Ir para as configurações de sincronização", + "pairing-maximum-number-reached-content": "Desative um dos seus dispositivos antes de ativar um novo.", + "pairing-maximum-number-reached-title": "Número máximo de dispositivos atingidos", + "pairing-new-installation-detected-content": "Um novo dispositivo foi detectado. \nPara usar seus dispositivos corretamente, é importante emparelhá-los e ativá-los antes de usá-los. \nPor favor, vá para a seção de dispositivos em configurações para parear seus dispositivos.", + "pairing-new-installation-detected-title": "Novo dispositivo detectado", + "pairing-no-info": "Sem informações", + "pairing-please-set-a-name": "Por favor, atribua um nome para o seu dispositivo.", + "passphrase": "Frase-semente", + "password": "Senha", + "password-description": "Pelo menos 6 caracteres. Sua senha protege suas chaves. Você precisa desbloquear a Status e fazer transações.", + "password-placeholder": "Senha…", + "password-placeholder2": "Confirme sua senha", + "password_error1": "As senhas não correspondem.", + "paste": "Colar", + "paste-json": "Colar JSON", + "pay-to-chat": "Pagar para conversar", + "peer-content": "Um dispositivo conectado à rede de bate-papo Status. Cada usuário pode representar um ou mais pares, dependendo do número de dispositivos.", + "peer-title": "Par", + "peer-to-peer": "P2P", + "peers": "Pares", + "pending": "Pendente", + "pending-confirmation": "Confirmação pendente...", + "pending-invitations": "Pedidos de entrada pendentes", + "permissions": "Permissões", + "phone-e164": "Internacional 1", + "photos": "Fotos", + "photos-access-error": "Para conceder a permissão de fotos necessária, acesse as configurações do sistema e verifique se Status > Fotos está selecionado.", + "pin-changed": "A senha de 6 dígitos foi alterada", + "pin-code": "Senha de 6 dígitos", + "pin-mismatch": "Senha incorreta", + "pin-one-attempt": "uma tentativa", + "pin-one-attempt-blocked-after": "antes que o seu Keycard seja bloqueado", + "pin-one-attempt-blocked-before": "Cuidado, você só tem", + "pin-one-attempt-frozen-after": "antes que o seu Keycard seja congelado", + "pin-one-attempt-frozen-before": "Cuidado, você só tem", + "pin-retries-left": "{{number}} tentativas restantes", + "preference": "Preferência", + "preview-privacy": "Visualizar modo de privacidade", + "previewing-may-share-metadata": "A visualização de links desses sites pode compartilhar seus metadados com seus proprietários", + "privacy": "Privacidade", + "privacy-and-security": "Privacidade e segurança", + "privacy-policy": "Política de privacidade", + "private-key": "Chave privada", + "private-notifications": "Notificações particulares", + "private-notifications-descr": "A Status notificará sobre novas mensagens. Você pode editar suas preferências de notificação nas configurações.", + "processing": "Apenas um momento", + "product-information": "Informações do produto", + "profile": "Perfil", + "profile-deleted-content": "O seu perfil foi excluído com sucesso", + "profile-deleted-title": "Perfil excluído", + "profile-details": "Detalhes do perfil", + "profile-pic-pick": "Escolher na galeria", + "profile-pic-remove": "Remover foto", + "profile-pic-take": "Tirar foto", + "public-chat": "Conversa pública", + "public-chat-description": "Participe de bate-papos públicos sobre seus interesses! Qualquer um pode começar uma nova sala.", + "public-chats": "Conversas públicas", + "public-group-status": "Público", + "public-group-topic": "Assunto", + "public-key": "Chave pública", + "puk-and-pairing-codes-displayed": "Códigos PUK e de emparelhamento exibidos", + "puk-code": "Código PUK", + "puk-code-explanation": "Se você esquecer sua senha de 6 dígitos ou inseri-la incorretamente três vezes, precisará desse código para desbloquear seu cartão.", + "puk-mismatch": "Código PUK errado", + "push-failed-transaction": "Sua transação falhou", + "push-failed-transaction-body": "{{value}} {{currency}} para {{to}}", + "push-inbound-transaction": "Você recebeu {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} para {{to}}", + "push-notifications-server-enabled": "Servidor habilitado", + "push-notifications-servers": "Servidores de notificação push", + "push-outbound-transaction": "Você enviou {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} para {{to}}", + "quiet-days": "{{quiet-days}} dias", + "quiet-hours": "{{quiet-hours}} horas", + "re-encrypt-key": "Recriptografe suas chaves", + "receive": "Receber", + "receive-transaction": "Receber transação", + "recent": "Recentes", + "recent-empty": "Os endereços usados recentemente aparecerão aqui", + "recent-recipients": "Contatos", + "recently-used-stickers": "Os adesivos usados recentemente aparecerão aqui", + "recipient": "Destinatário", + "recipient-code": "Digite o endereço do destinatário", + "recipient-code-placeholder": "0x… ou nome.dominio.eth", + "recover": "Recuperar", + "recover-key": "Acessar chaves existentes", + "recover-keycard-multiaccount-not-supported": "Já existem chaves para esta conta e não podem ser adicionadas novamente. Se você perdeu sua senha, código de acesso ou cartão-chave, desinstale o aplicativo, reinstale e acesse suas chaves inserindo sua frase-semente", + "recover-with-keycard": "Recuperar com Keycard", + "recover-with-seed-phrase": "Recupere com a frase semente", + "recovering-key": "Acessando chaves…", + "recovery-confirm-phrase": "Confirmar frase-semente", + "recovery-phrase": "Frase-semente", + "recovery-success-text": "Você terá que definir um novo código ou senha para recriptografar suas chaves", + "recovery-typo-dialog-description": "Observe que sua frase-semente deve usar exatamente as mesmas palavras e ordem em que você a recebeu", + "recovery-typo-dialog-title": "A frase-semente está correta?", + "redeem-amount": "{{quantity}} bônus disponíveis", + "redeem-now": "Resgatar agora", + "redeem-success": "Resgate de bônus com sucesso!", + "refresh": "Atualizar", + "registered": "cadastrado", + "remember-me": "Lembrar-me", + "remind-me-later": "Mostrar isso novamente", + "remove": "Remover", + "remove-favourite": "Remover favorito", + "remove-from-chat": "Remover do chat", + "remove-from-contacts": "Remover dos contatos", + "remove-from-contacts-text": "Ao remover um usuário da sua lista de contatos, você não esconde o endereço da sua carteira dele", + "remove-group": "Remover grupo", + "remove-network": "Remover rede", + "remove-token": "Remover token", + "removed": "removeu", + "repeat-pin": "Repita os 6 novos dígitos da senha", + "report-bug-email-template": "1. Descrição da Edição \n (Descreva o recurso que você deseja ou resuma brevemente o bug e o que você fez, o que esperava que acontecesse e o que realmente acontece. Seções abaixo) \n\n\n 2. Passos para reproduzir \n (Descreva como podemos replicar o bug passo a passo.) \n - Abrir Status\n - ... \n - Etapa 3, etc. \n\n\n 3. Comportamento esperado \n (Descreva o que você esperava que acontecesse.) \n\n\n 4. Comportamento real \n (Descreva o que realmente aconteceu.) \n\n\n 5. Por favor, anexe capturas de tela que possam demonstrar o problema \n", + "request-access": "Solicitar acesso", + "request-feature": "Solicitar um recurso", + "request-membership": "Solicitar para entrar", + "request-pending": "Pedido pendente…", + "request-transaction": "Solicitar transação", + "required-field": "Campo obrigatório", + "resend-message": "Reenviar", + "reset-card": "Redefinir cartão", + "reset-card-description": "Esta operação redefinirá o cartão para o estado inicial. Ele apagará todos os dados do cartão, incluindo chaves privadas. A operação não é reversível.", + "reset-database": "Reiniciar base de dados", + "reset-database-warning": "Exclua chats, contatos e configurações. Obrigatório quando você perder sua senha", + "restore-defaults": "Restaurar padrões", + "retry": "Tentar de novo", + "revoke-access": "Recuperar acesso", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Copiar", + "rpc-usage-get-stats": "Atualizar", + "save": "Salvar", + "save-password": "Salvar senha", + "save-password-unavailable": "Defina a senha do dispositivo para salvar a senha", + "save-password-unavailable-android": "Salvar senha não está disponível: seu dispositivo pode estar \"rooteado\" ou não possui os recursos de segurança necessários.", + "scan-qr": "Escanear QR", + "scan-qr-code": "Digitalize um código QR com um endereço de carteira", + "scan-tokens": "Escanear tokens", + "search": "Procurar", + "search-no-chat-found": "Sem resultados. Você quer dizer", + "secret-keys-confirmation-text": "Você vai precisar deles para continuar a usar o seu Keycard no caso de perder o seu celular.", + "secret-keys-confirmation-title": "Já anotou os códigos?", + "security": "Segurança", + "see-details": "Ver detalhes", + "see-it-again": "VEJA NOVAMENTE", + "seed-key-uid-mismatch": "Semente não combina", + "seed-key-uid-mismatch-desc-1": "A frase-semente que você inseriu não corresponde a {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Para gerenciar as chaves para esta conta, verifique sua frase-semente e tente novamente.", + "seed-phrase-content": "Um conjunto de palavras fáceis de ler, selecionadas aleatoriamente na lista padrão BIP39 e usadas para recuperar ou acessar sua conta Ethereum em outras carteiras e dispositivos. Também chamada de \"frase mnemônica\", \"frase de recuperação\" ou \"backup de carteira\" em todo o ecossistema Ethereum. A maioria dos aplicativos de Ethereum usa esse mesmo padrão para gerar contas.", + "seed-phrase-placeholder": "Frase-semente…", + "seed-phrase-title": "Frase semente", + "select": "Selecione", + "select-account": "Selecionar conta", + "select-account-dapp": "Selecione a conta que você deseja usar com Dapps", + "select-account-first": "Selecione uma conta primeiro", + "select-chat": "Selecione bate-papo para iniciar o envio de mensagens", + "select-new-location-for-keys": "Selecione um novo local para salvar sua (s) chave (s) privada (s)", + "selected": "Selecionado", + "send-logs": "Relatar uma falha", + "send-logs-to": "Relatar um falha para {{email}}", + "send-message": "Enviar mensagem", + "send-push-notifications-description": "Quando desativado, a pessoa que recebe suas mensagens não será notificada de suas novas mensagens", + "send-request": "Enviar pedido", + "send-request-amount": "Quantidade", + "send-request-amount-max-decimals": "O número máximo de decimais é {{asset-decimals}}", + "send-request-unknown-token": "Token desconhecido - {{asset}}", + "send-sending-to": "para {{recipient-name}}", + "send-transaction": "Enviar transação", + "sending": "Enviando.", + "sent-at": "Enviado a", + "server": "Servidor", + "set-a-topic": "Criar um tópico", + "set-currency": "Definir moeda", + "set-custom-fee": "Alterar taxa", + "set-dapp-access-permissions": "Definir permissões de acesso do DApp", + "set-max": "Definir máximo", + "settings": "Configurações", + "share": "Compartilhar", + "share-address": "Compartilhar endereço", + "share-chat": "Compartilhar bate-papo", + "share-contact-code": "Compartilhar minha chave de conversa", + "share-dapp-text": "Confira este DApp que estou usando na Status: {{link}}", + "share-link": "Compartilhar link", + "share-my-profile": "Compartilhar meu perfil", + "share-profile": "Compartilhar perfil", + "share-profile-link": "Compartilhar link do perfil", + "share-public-chat-text": "Confira este bate-papo público no app Status: {{link}}", + "shared": "Compartilhado", + "sharing-copied-to-clipboard": "Copiado", + "sharing-copy-to-clipboard": "Copiar", + "sharing-share": "Compartilhar", + "show-less": "Mostre menos", + "show-more": "Mostrar mais", + "show-notifications": "Mostrar notificações", + "show-profile-pictures": "Mostrar fotos de perfil de", + "show-qr": "Mostrar código QR", + "show-transaction-data": "Mostrar dados da transação", + "sign-and-send": "Assinar e enviar", + "sign-anyway": "Assinar mesmo assim", + "sign-in": "Entrar", + "sign-message": "Assinar Mensagem", + "sign-out": "Sair da sessão", + "sign-request-failed": "Não foi possível assinar a mensagem", + "sign-with": "Cadastre-se com", + "sign-with-password": "Entra com a senha", + "sign-you-in": "Iniciando sessão...", + "signing": "Assinatura", + "signing-a-message": "Assinando uma mensagem", + "signing-phrase": "Frase de assinatura", + "something-went-wrong": "Algo deu errado", + "soon": "Em breve", + "specify-address": "Especificar endereço", + "specify-name": "Especifique um nome", + "specify-network-id": "Especifique o ID da rede", + "specify-rpc-url": "Especifique um URL RPC", + "specify-server-public-key": "Digite a chave pública do servidor", + "start-chat": "Iniciar bate-papo", + "start-conversation": "Iniciar conversa", + "start-group-chat": "Novo grupo de conversa", + "start-new-chat": "Iniciar conversa particular", + "starter-pack-coming": "Pacote de iniciante vindo até você", + "starter-pack-coming-description": "Pode levar de alguns minutos a horas", + "starter-pack-received": "Pacote inicial recebido", + "starter-pack-received-description": "Aqui estão algumas criptomoedas para você começar! Use-as para obter stickers, um nome ENS e testar alguns dapps", + "status": "Status", + "status-confirmed": "Confirmado", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Status Keycard", + "status-mobile-descr": "O Status usa muitos dados ao sincronizar as conversas. Você pode optar por não sincronizar quando na rede móvel", + "status-not-sent-click": "Não confirmado. Clique para opções", + "status-not-sent-tap": "Não confirmado. Toque para opções", + "status-pending": "Pendente", + "status-sent": "Enviado", + "status-tx-not-found": "TX não encontrado", + "status-updates-descr": "As atualizações de status aparecerão aqui. Adicione este perfil como um contato para receber atualizações em sua linha do tempo.", + "statuses-descr": "Compartilhe o que você está pensando e fique atualizado com seus contatos", + "statuses-my-status-descr": "Compartilhe o que você está pensando. Qualquer pessoa que visitar seu perfil poderá ver seu status. As pessoas que adicionam você como contato receberão suas atualizações na linha do tempo delas", + "step-i-of-n": "Etapa {{step}} de {{number}}", + "sticker-market": "Mercado de adesivos", + "storage": "Armazenamento", + "submit": "Enviar", + "submit-bug": "Relatar uma falha", + "success": "Sucesso", + "symbol": "Símbolo", + "sync-all-devices": "Sincronizar todos dispositivos", + "sync-in-progress": "Sincronizando...", + "sync-settings": "Configurações de sincronização", + "sync-synced": "Sincronizado", + "syncing-devices": "Sincronizando...", + "system": "Sistema", + "tabs": "Abas", + "tag-was-lost": "A tag foi perdida", + "tap-card-again": "Aproxime o cartão na parte de trás do seu telefone novamente", + "test-networks": "Redes de teste", + "text-input-disabled": "Por favor, espere um momento…", + "this-device": "Este dispositivo", + "this-device-desc": "Suas chaves serão criptografadas e armazenadas com segurança no seu dispositivo", + "this-is-you-signing": "Esta é a sua frase de assinatura", + "this-will-take-few-seconds": "Isso levará alguns segundos", + "three-words-description": "Você deve ver essas três palavras antes de assinar cada transação", + "three-words-description-2": "Se você ver uma combinação diferente, cancele a transação e saia", + "timeline": "Linha do tempo", + "to": "Para", + "to-block": "Bloquear ", + "to-enable-biometric": "Para ativar o {{bio-type-label}}, você deve salvar sua senha na tela de desbloqueio", + "to-encrypt-enter-password": "Para criptografar a conta, digite sua senha", + "to-see-this-message": "Para ver esta mensagem,", + "token-auto-validate-decimals-error": "Decimais incorretos para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-auto-validate-name-error": "Nome incorreto para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-auto-validate-symbol-error": "Símbolo incorreto para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-details": "Detalhes do Token", + "topic-name-error": "Use apenas letras minúsculas (a a z), números e traços (-). Não use teclas de bate-papo", + "transaction": "Transação", + "transaction-data": "Dados da transação", + "transaction-declined": "Transação recusada", + "transaction-description": "Considere-o completo após 12 confirmações na rede.", + "transaction-details": "Detalhes da transação", + "transaction-failed": "Falha na transação", + "transaction-history": "Histórico de transações", + "transaction-request": "Solicitação de transação", + "transaction-sent": "Transação enviada", + "transaction-signed": "A transação foi assinada com sucesso", + "transactions": "Transações", + "transactions-filter-select-all": "Selecionar tudo", + "transactions-filter-title": "Filtrar histórico", + "transactions-history": "Histórico de transações", + "transactions-history-empty": "Ainda não há transações no seu histórico", + "transactions-history-loading": "Carregando histórico de transações. Isso pode demorar um pouco.", + "transactions-load-more": "Carregar mais", + "transactions-sign": "Assinar", + "transfer-ma-unknown-error-desc-1": "Parece que sua conta múltipla não foi excluída. O banco de dados pode ter sido redefinido", + "transfer-ma-unknown-error-desc-2": "Verifique sua lista de contas e tente novamente. Se a conta não estiver listada vá para Acessar as chaves existentes para recuperar com a frase semente", + "transfers-fetching-failure": "O histórico de transferências não pôde ser atualizado. Verifique sua conexão e puxe para baixo para tentar novamente", + "tribute-required-by-multiaccount": "{{multiaccount-name}} precisa de SNT para começar uma conversa.", + "tribute-state-paid": "Tributo pago", + "tribute-state-pending": "Tributo pendente", + "tribute-state-required": "Requer {{snt-amount}} tributos em SNT", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "Adicione amigos como um contato para permitir bate-papos sem pagamento de tributo.", + "tribute-to-talk-are-you-friends": "Vocês são amigos?", + "tribute-to-talk-ask-to-be-added": "Peça para ser adicionado como um contato", + "tribute-to-talk-contact-received-your-tribute": " recebeu seu tributo. Agora vocês podem conversar com segurança entre si.", + "tribute-to-talk-desc": "Monetize sua atenção exigindo pagamento de SNT para novas pessoas iniciem um bate-papo", + "tribute-to-talk-disabled": "Tribute to Talk desativado", + "tribute-to-talk-disabled-note": "A partir de agora, novas pessoas podem iniciar um bate-papo com você sem enviar o SNT.", + "tribute-to-talk-enabled": "Você tem o Tribute to Talk ativado.", + "tribute-to-talk-finish-desc": "A partir de agora, você receberá apenas conversas de contatos, e as pessoas que pagaram ", + "tribute-to-talk-learn-more-1": "Seu tempo e atenção são seus ativos mais valiosos. O Tribute to Talk permite definir uma quantidade de SNT necessária para novas pessoas iniciarem um bate-papo com você.", + "tribute-to-talk-learn-more-2": "Qualquer pessoa que não esteja na sua lista de contatos será solicitada a pagar e você poderá responder assim que tiverem.", + "tribute-to-talk-learn-more-3": "Você sempre pode enviar o dinheiro de volta, mas para garantir que os amigos possam entrar em contato com você livremente, adicione-os primeiro como contato.", + "tribute-to-talk-paywall-learn-more-1": "Nosso tempo e atenção são nossos ativos mais valiosos. O Tribute to Talk permite que você entre em contato com novas pessoas em troca de um pagamento SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para iniciar um bate-papo com alguém que tenha um conjunto de tributo, basta pagar o SNT necessário e você será adicionado como um contato.", + "tribute-to-talk-paywall-learn-more-3": "Se você os conhece, pode compartilhar seu perfil fora da Status para ser adicionado gratuitamente.", + "tribute-to-talk-pending": "Tributo pendente de confirmação", + "tribute-to-talk-pending-note": "A transação de tributo está pendente de confirmação na rede. Você pode verificar seu status no histórico de transações", + "tribute-to-talk-removing-note": "A remoção do Tribute to Talk permitirá que novas pessoas iniciem um bate-papo sem enviar o SNT. Requer que uma transação seja feita.", + "tribute-to-talk-set-snt-amount": "Defina a quantidade de SNT necessária para novas pessoas iniciarem uma conversa", + "tribute-to-talk-signing": "Aguardando para assinar a transação", + "tribute-to-talk-transaction-failed-note": "A transação falhou e as configurações do Tribute to Talk não foram alteradas", + "tribute-to-talk-tribute-received1": "Tributo recebido. Você e", + "tribute-to-talk-tribute-received2": "agora são contatos e podem conversar com segurança.", + "tribute-to-talk-you-require-snt": "Você requer SNT para novas pessoas para iniciar um bate-papo.", + "try-again": "Tente novamente", + "try-keeping-the-card-still": "Tente manter o cartão parado", + "turn-nfc-description": "NFC está desativado no seu dispositivo. Você pode habilitá-lo nas configurações", + "turn-nfc-on": "Ligue o NFC para continuar", + "tx-fail-description1": "É provável que esta transação falhe. Assine por sua conta em risco usando uma taxa de rede personalizada.", + "tx-fail-description2": "É provável que esta transação falhe. Defina uma taxa de rede maior para assinar por sua conta em risco.", + "type": "Tipo", + "type-a-message": "Mensagem", + "ulc-enabled": "ULC ativado", + "unable-to-fetch": "Não foi possível obter o histórico do chat", + "unable-to-read-this-code": "Não foi possível ler este código", + "unable-to-send-messages": "Incapaz de enviar e receber mensagens", + "unblock": "Desbloquear", + "unblock-contact": "Desbloquear este usuário", + "unknown-status-go-error": "Erro desconhecido de status-go", + "unlock": "Desbloquear", + "unmute": "Ativar som", + "unpair-card": "Desemparelhar cartão", + "unpair-card-confirmation": "Esta operação desemparelhará o cartão do dispositivo atual. Requer autorização de senha de 6 dígitos. Você quer prosseguir?", + "unpaired-keycard-text": "O cartão-chave que você selecionou não está associado a este telefone ", + "unpaired-keycard-title": "Parece que seu cartão não foi pareado.", + "update": "Atualizar", + "update-to-listen-audio": "Atualize para a versão mais recente para ouvir uma mensagem de áudio aqui!", + "update-to-see-image": "Atualize para a versão mais recente para ver uma imagem aqui!", + "update-to-see-sticker": "Atualize para a versão mais recente para ver um belo adesivo aqui!", + "url": "URL", + "usd-currency": "USD", + "use-valid-contact-code": "Digite ou verifique uma chave de bate-papo ou nome de usuário válidos", + "validation-amount-invalid-number": "Quantidade não é um número válido", + "validation-amount-is-too-precise": "O valor é muito preciso. O número máximo de casas decimais é {{decimals}} .", + "version": "Versão do aplicativo", + "view": "Visualizar", + "view-cryptokitties": "Ver em CryptoKitties", + "view-cryptostrikers": "Ver em CryptoStrikers", + "view-details": "Ver Detalhes", + "view-etheremon": "Ver no Etheremon", + "view-gitcoin": "Ver no Gitcoin", + "view-profile": "Ver perfil", + "view-signing": "Ver frase de assinatura", + "view-superrare": "Ver no SuperRare", + "waiting-for-wifi": "Sem Wi-Fi, sincronização de mensagens desativada.", + "waiting-for-wifi-change": "Configurações", + "waiting-to-sign": "Aguardando para assinar a transação", + "waiting-wi-fi": "Aguardando Wi-Fi", + "waku-bloom-filter-mode": "Modo de filtro Waku bloom", + "wallet": "Carteira", + "wallet-address": "Endereço da carteira", + "wallet-asset": "Ativo", + "wallet-assets": "Ativos", + "wallet-backup-recovery-title": "Faça uma cópia de segurança da sua frase-semente", + "wallet-choose-recipient": "Escolher destinatário", + "wallet-collectibles": "Colecionáveis", + "wallet-insufficient-funds": "Fundos insuficientes", + "wallet-insufficient-gas": "Não há ETH suficiente para o gás", + "wallet-invalid-address": "Endereço inválido: \n {{data}}", + "wallet-invalid-address-checksum": "Erro no endereço:{{data}}", + "wallet-invalid-chain-id": "A rede não corresponde: \n {{data}} mas a cadeia atual é {{chain}}", + "wallet-key-content": "Um endereço hexadecimal de 64 caracteres baseado no padrão Ethereum e começando com 0x. Para o público, o endereço da sua conta é compartilhado com outras pessoas quando você deseja receber fundos. Também chamado de \"endereço Ethereum\" ou \"endereço da carteira\".", + "wallet-key-title": "Endereço da conta", + "wallet-manage-assets": "Gerenciar ativos", + "wallet-request": "Solicitação", + "wallet-send": "Enviar", + "wallet-send-min-units": "Mínimo 21000 unidades", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Configurações da carteira", + "wallet-total-value": "Valor total", + "wallet-transaction-total-fee": "Taxa total", + "wants-to-access-profile": "quer acessar seu perfil", + "warning": "Atenção", + "warning-message": "Desculpe, limitamos o envio de várias mensagens em rápida sucessão para evitar spam. Por favor, tente novamente daqui a pouco", + "warning-sending-to-contract-descr": "O endereço que você inseriu é um contrato inteligente. O envio de fundos para este endereço pode resultar em perda de fundos. Para interagir com um DApp, abra o DApp no navegador da Status.", + "watch-only": "Somente exibição", + "web-view-error": "Ops, erro", + "websites": "Websites", + "webview-camera-permission-requests": "Solicitações de permissão de câmera do Webview", + "webview-camera-permission-requests-subtitle": "Quando habilitado, sites e dapps podem pedir para usar sua câmera", + "welcome-blank-community-message": "Suas comunidades aparecerão aqui.", + "welcome-blank-message": "Suas conversas serão exibidas aqui. Para iniciar novos bate-papos, pressione o botão ⊕", + "welcome-community-blank-message": "Suas conversas aparecerão aqui. Para iniciar novos bate-papos clique nos 3 pontos acima e selecione \"Criar um canal\"", + "welcome-screen-text": "Configure sua carteira, convide seus amigos para conversar e navegue pelos populares dapps!", + "welcome-to-status": "Bem-vindo à Status!", + "welcome-to-status-description": "Configure sua carteira criptográfica, convide amigos para conversar e navegar por aplicativos descentralizados", + "whats-on-your-mind": "O que você está pensando...", + "word-count": "Contagem de palavras", + "word-n": "Palavra #{{number}}", + "word-n-description": "Para verificar se você fez o backup da sua frase-semente corretamente, digite a palavra #{{number}} acima.", + "words-n": { + "one": "1 palavra", + "other": "{{count}} palavras" + }, + "write-down-and-store-securely": "Anote os códigos &\n guarde-os de forma segura", + "wrong-address": "Endereço errado", + "wrong-card": "Cartão errado", + "wrong-card-text": "O cartão tocado não corresponde às chaves que você selecionou", + "wrong-contract": "Contrato errado", + "wrong-keycard-text": "O Keycard que você selecionou não está associado a este telefone", + "wrong-keycard-title": "Parece que você selecionou\n um Keycard errado.", + "wrong-password": "Senha incorreta", + "wrong-word": "Palavra errada", + "yes": "Sim", + "you": "você", + "you-already-have-an-asset": "Você já tem um ativo {{value}}", + "you-are-all-set": "Está tudo pronto!", + "you-are-all-set-description": "Se você perder seu telefone, você pode acessar seus fundos e a chave do bate-papo agora usando sua frase-semente", + "you-can-change-account": "Você pode mudar o nome da conta e a cor para o que desejar", + "you-can-choose-preview-websites": "Você pode escolher quais dos seguintes sites podem visualizar o link de descrições e imagens nos bate-papos", + "you-can-fetch": "Você pode buscar o histórico do chat", + "you-dont-have-contacts": "Você ainda não possui contatos.", + "you-dont-have-stickers": "Você ainda não tem nenhum adesivo", + "you-will-need-this-code": "Você precisará desse código para abrir a Status e assinar transações", + "you-will-start-from-scratch": "Você começará do zero com um novo conjunto de chaves", + "your-card-is-frozen": "O seu Keycard está congelado. Redefinir acesso ao cartão", + "your-contact-code": "A concessão de acesso autoriza este DApp a recuperar a sua chave de chat", + "your-data-belongs-to-you": "Se você perder a sua frase-semente, você perde os seus dados e fundos", + "your-data-belongs-to-you-description": "Se perder o acesso, por exemplo, ao perder seu telefone, você só pode acessar suas chaves com sua frase-semente. Somente você tem a sua frase-semente. Escreva-a. Guarde-a em segurança", + "your-keys": "Suas chaves", + "your-recovery-phrase": "Sua frase-semente", + "your-recovery-phrase-description": "Esta é sua frase-semente. Você o usa para provar que esta é sua carteira. Você só pode vê-lo uma vez! Escreva no papel e mantenha em um lugar seguro. Você vai precisar dele se você perder ou reinstalar sua carteira.", + "youre-on-mobile-network": "Você está em uma rede móvel" +} diff --git a/translations/pt_BR.json b/translations/pt_BR.json new file mode 100644 index 00000000000..1df27a8680a --- /dev/null +++ b/translations/pt_BR.json @@ -0,0 +1,1896 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "You": "Você", + "about-app": "Sobre", + "about-key-storage-content": "O Status nunca acessará sua chave privada. Não esqueça de salvar sua frase-semente. Se você perder seu telefone, essa é a única maneira de acessar suas chaves.", + "about-key-storage-title": "Sobre o armazenamento de chaves", + "about-names-content": "Ninguém pode fingir ser você! Você é anônimo por padrão e nunca precisa revelar seu nome real. Você pode cadastrar um nome personalizado por uma pequena taxa.", + "about-names-title": "Os nomes não podem ser alterados", + "about-sharing-data": "Sobre o compartilhamento de dados", + "accept": "Aceitar", + "accept-and-add": "Aceitar e adicionar", + "accept-and-continue": "Aceitar e continuar", + "accept-and-share-address": "Aceitar e compartilhar endereço", + "accept-community-rules": "Eu concordo com as regras da comunidade", + "accept-new-chats-from": "Aceitar novos bate-papos de", + "accept-status-tos-prefix": "Eu aceito o Status", + "accepted": "Aceito", + "access-existing-keys": "Acessar chaves existentes", + "access-key": "Chave de acesso", + "account-added": "Conta adicionada", + "account-color": "Cor da conta", + "account-content": "Você pode comparar contas no Status com contas bancárias. Como uma conta bancária, uma conta normalmente possui um endereço e um saldo. Você usa essa conta para realizar transações no Ethereum. Você pode ter várias contas na sua carteira. Todas acessadas desbloqueando o Status.", + "account-exists-title": "A conta já existe", + "account-is-used": "A conta está sendo usada com os Dapps no navegador.", + "account-name": "Nome da conta", + "account-settings": "Configurações da conta", + "account-title": "Conta", + "accounts": "Contas", + "actions": "Ações", + "active-members": "Membros ativos", + "active-online": "Online", + "active-unknown": "Desconhecido", + "activity": "Atividade", + "add": "Adicionar", + "add-a-watch-account": "Adicione um endereço somente leitura", + "add-account": "Adicione uma conta", + "add-account-description": "Você pode importar qualquer tipo de conta Ethereum para adicioná-lo à sua carteira Status", + "add-account-incorrect-password": "A senha parece estar incorreta. Digite a senha que você usa para desbloquear o aplicativo.", + "add-an-account": "Adicione uma conta", + "add-bootnode": "Adicionar nó de inicialização", + "add-contact": "Adicionar contato", + "add-custom-token": "Adicionar token personalizado", + "add-favourite": "Adicionar favorito", + "add-mailserver": "Adicionar nó do Status", + "add-members": "Adicionar membros", + "add-network": "Adicionar rede", + "add-new-contact": "Adicionar novo contato", + "add-nickname": "Adicionar um apelido (opcional)", + "add-node": "Adicionar nó", + "add-private-key-account": "Adicionar conta a partir de chave privada", + "add-seed-account": "Adicionar conta com uma frase-semente", + "add-text": "Adicionar texto", + "add-to-contacts": "Adicionar aos contatos", + "add-to-contacts-text": "Ao adicionar um usuário à sua lista de contatos, você compartilha o endereço da sua carteira", + "add-to-favourites": "Adicionar aos favoritos", + "add-watch-account": "Adicionar uma conta somente para exibição", + "added": "adicionado", + "address": "Endereço", + "address-or-ens-name": "Endereço ou nome ENS", + "address-received": "Endereço recebido", + "address-request-accepted": "Solicitação de endereço aceita", + "address-requested": "Endereço solicitado", + "admin": "Administrador", + "advanced": "Avançado", + "advanced-settings": "Configurações avançadas", + "advertiser-description": "Você descobriu o Status graças a um parceiro. Você se importa se o Status verificar seu endereço IP uma vez para que ele seja recompensado? Esta informação não será usada para mais nada e será removida completamente após 7 dias.", + "advertiser-starter-pack-accept": "Aceitar", + "advertiser-starter-pack-decline": "Recusar", + "advertiser-starter-pack-description": "Aqui estão algumas criptografias para você começar! Use-as para obter adesivos, um nome ENS e experimentar os dapps", + "advertiser-starter-pack-title": "Pacote Inicial", + "advertiser-title": "Privacidade por padrão", + "agree-by-continuing": "Ao continuar, você concorda \n com nosso", + "all": "Todos", + "all-connections": "Todas as Conexões", + "allow": "Permitir", + "allow-and-send": "Permitir e enviar", + "allow-mention-notifications": "Mostrar @ menções", + "allowing-authorizes-this-dapp": "Permitir que este DApp recupere o endereço da sua carteira e ative o Web3", + "alphabetically": "Alfabeticamente", + "already-have-asset": "Você já tem este ativo", + "amount": "Quantia", + "and": "e", + "anyone": "Qualquer um", + "app-commit": "Commit do aplicativo", + "app-connections": "Conexões de aplicativos", + "appearance": "Aparência", + "apply": "Aplicar", + "approve": "Aprovar", + "approve-limit": "Aprovar limite", + "approve-token": "Aprovar token", + "approve-token-contract-desc": "Aprovar um token com um contrato permite que ele gaste seu saldo de tokens. Se você julgar que um projeto não é confiável, não aprove o token com eles ou aprove apenas o valor que você usará com eles.", + "are-you-sure": "Você tem certeza?", + "are-you-sure-description": "Você não poderá ver toda a frase-semente de novo", + "are-you-sure-to-cancel": "Você tem certeza que deseja cancelar?", + "are-you-sure?": "Você tem certeza?", + "ask-in-status": "Faça uma pergunta ou relate um bug", + "at": "em", + "attribution-received": "{{attrib}} de {{max}} bônus recebidos", + "audio": "Áudio", + "audio-message": "Mensagem de áudio", + "audio-recorder": "Gravador", + "audio-recorder-error": "Erro no gravador", + "audio-recorder-max-ms-reached": "Tempo máximo de gravação atingido", + "audio-recorder-permissions-error": "Você precisa dar permissão para enviar mensagens de áudio", + "authorize": "Autorizar", + "available": "Disponível", + "available-participants": { + "one": "Você pode selecionar mais um participante", + "other": "Você pode selecionar mais {{count}} participantes" + }, + "back": "Voltar", + "back-up": "Cópia de segurança", + "back-up-seed-phrase": "Fazer backup da frase-semente", + "back-up-your-seed-phrase": "Fazer backup da frase-semente", + "backing-up": "Realizando cópia de segurança...", + "backup-disabled": "Desativado", + "backup-enabled": "Habilitado", + "backup-recovery-phrase": "Cópia de segurança da frase-semente", + "backup-settings": "Configurações de cópia de segurança", + "backup-through-waku": "Realizar cópia de segurança através do Waku", + "bad-fees-description": "Sua taxa de prioridade está abaixo de nossos parâmetros sugeridos.", + "balance": "Saldo", + "begin-set-up": "Iniciar configuração", + "below-base-fee": "taxa máxima abaixo da taxa base", + "biometric-auth-android-sensor-desc": "Toque no sensor", + "biometric-auth-android-sensor-error-desc": "Falhou", + "biometric-auth-android-title": "Autenticação necessária", + "biometric-auth-confirm-logout": "Faça login novamente", + "biometric-auth-confirm-message": "É necessária autenticação biométrica para continuar. Se não for possível, desbloqueie suas chaves com sua senha ou código de acesso", + "biometric-auth-confirm-title": "Você deve autenticar!", + "biometric-auth-confirm-try-again": "Tente novamente", + "biometric-auth-error": "Não foi possível executar a autenticação biométrica ({{code}})", + "biometric-auth-login-error-title": "Erro de autenticação biométrica", + "biometric-auth-login-ios-fallback-label": "Digite a senha", + "biometric-auth-reason-login": "Login no Status", + "biometric-auth-reason-verify": "Verificar autenticação", + "biometric-disable-bioauth": "desativar {{bio-type-label}}", + "biometric-disable-password-description": "Se você desativar isso, você também irá ", + "biometric-disable-password-title": "Desativar senha salva", + "biometric-enable": "Se você não quiser inserir sua senha todas as vezes para acessar o aplicativo, ative o início de sessão por {{bio-type-label}}", + "biometric-enable-button": "Ativar {{bio-type-label}}", + "biometric-enable-keycard": "Se você não quiser usar seu Keycard cada vez que acessar o aplicativo, ative {{bio-type-label}} para iniciar a sessão", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Impressão digital", + "biometric-secure-with": "Proteger com {{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "Senha BIP39", + "biu": "BIU", + "blank-contacts-text": "Seus contatos estarão aqui", + "blank-keycard-text": "Você pode continuar com o seu keycard depois de gerar as chaves e o nome", + "blank-keycard-title": "Parece que você utilizou\num Keycard em branco.", + "blank-messages-text": "Suas mensagens estarão aqui", + "block": "Bloquear ", + "block-contact": "Bloquear esse usuário", + "block-contact-details": "O bloqueio excluirá as mensagens anteriores deste usuário e impedirá que novas cheguem até você", + "block-user": "Bloquear Usuário", + "block-user?": "Bloquear Usuário?", + "blocked-users": "Usuários bloqueados", + "bold": "Negrito", + "bootnode-address": "Endereço do nó de inicialização", + "bootnode-details": "Detalhes do nó de inicialização", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Nós de inicialização", + "bootnodes-enabled": "Nós de inicialização ativados", + "bootnodes-settings": "Configurações de nós de inicialização", + "browsed-websites": "O histórico do navegador aparecerá aqui", + "browser": "Navegador", + "browser-not-secure": "A conexão não é segura! Não assine transações nem envie dados pessoais neste site.", + "browser-secure": "A conexão é segura. Certifique-se de confiar neste site antes de assinar transações ou inserir dados pessoais.", + "browsers": "Navegadores", + "browsing-cancel": "Cancelar", + "browsing-open-in-android-web-browser": "Abrir no Android", + "browsing-open-in-ios-web-browser": "Abrir no iOS", + "browsing-open-in-status": "Abrir no Status", + "browsing-site-blocked-description1": "Detectamos atividades maliciosas em potencial neste endereço. Para proteger você e sua carteira, estamos impedindo mais navegação. \n\nSe você acha que isso é um erro, informe-nos no", + "browsing-site-blocked-description2": " conversa pública.", + "browsing-site-blocked-go-back": "Voltar", + "browsing-site-blocked-title": "Este site está bloqueado", + "browsing-title": "Buscar", + "bug-report": "Relatar um bug", + "bug-report-description": "Descrição", + "bug-report-description-placeholder": "Obrigatório, não pode ser vazio", + "bug-report-steps": "Passos para reproduzir", + "bug-report-steps-placeholder": "- abra a app\n- faça algo\n- e então faça outra coisa", + "bug-report-submit-email": "Enviar por e-mail com arquivo de logs", + "bug-report-submit-gh-issue": "Enviar um problema do GitHub sem logs", + "bug-report-too-short-description": "Descrição muito curta", + "build-yourself": "Para usar o aplicativo sem estes Termos de Serviço, você pode construir sua própria versão", + "buy-crypto": "Comprar criptomoedas", + "buy-crypto-choose-a-service": "Escolha um serviço que você gostaria de utilizar para comprar criptomoedas", + "buy-crypto-description": "Encontre um dapp para comprar criptomoedas agora", + "buy-crypto-leaving": "Você está saindo do Status e entrando em um site de terceiros para concluir sua compra", + "buy-crypto-title": "Parece que sua carteira está vazia", + "camera-access-error": "Para conceder a permissão de câmera necessária, vá para as configurações do sistema e verifique se Status > Câmera está selecionado.", + "can-not-add-yourself": "É você. Para iniciar um bate-papo, escolha outra pessoa", + "can-send-messages": "Você pode enviar e receber novas mensagens", + "cancel": "Cancelar", + "cancel-keycard-setup": "Cancelar a configuração do Keycard ", + "cancelling": "Cancelando", + "cannot-pin-desc": "Você pode fixar no máximo 3 mensagens.\n Desafixe pelo menos uma para fixar uma nova.", + "cannot-pin-title": "Você não pode fixar esta mensagem!", + "cannot-read-card": "Não é possível ler o cartão. Por favor, segure-o na parte de trás do seu telefone", + "cannot-use-default-pin": "O código de acesso 000000 não é permitido. \nPor favor, use outro número", + "cant-open-public-chat": "Não é possível abrir este chat público", + "cant-report-bug": "Não é possível relatar um bug", + "card-is-blank": "Este cartão está em branco", + "card-reseted": "O cartão foi redefinido", + "card-unpaired": "O cartão foi desemparelhado do dispositivo atual", + "category": "Categoria", + "category-title": "Nome da categoria", + "change-fleet": "Mude a frota para {{fleet}}", + "change-group-privacy": "Alterar a privacidade do grupo", + "change-logging-enabled": "Tem certeza de que deseja {{enable}} o registro?", + "change-pairing": "Alterar o código de emparelhamento", + "change-pairing-description": "Alterar o código de emparelhamento não afeta os emparelhamentos atuais. No entanto, qualquer novo emparelhamento exigirá o novo código.", + "change-pairing-title": "Criar um novo código de emparelhamento", + "change-passcode": "Alterar código de acesso", + "change-password": "Alterar senha", + "change-pin": "Alterar código de acesso de 6 dígitos", + "change-puk": "Alterar PUK de 12 dígitos", + "change-tip": "Mudar gorjeta", + "changed-amount-warning": "O valor foi alterado de {{old}} para {{new}}", + "changed-asset-warning": "O ativo foi alterado de {{old}} para {{new}}", + "chaos-mode": "Modo caos", + "chaos-unicorn-day": "Dia do Caos do Unicórnio", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Bate-papo", + "chat-and-transact": "Converse e faça transações de forma privada com amigos", + "chat-is-a-contact": "Contato", + "chat-is-not-a-contact": "Não é um contato", + "chat-key": "Chave de bate-papo", + "chat-key-content": "As mensagens no protocolo de bate-papo Status são enviadas e recebidas usando chaves de criptografia. A chave de bate-papo público é uma sequência de caracteres que você compartilha com outras pessoas para que elas possam enviar mensagens para você no Status.", + "chat-key-title": "Chave de bate-papo", + "chat-link-previews": "Visualizações de links de chat", + "chat-name": "Nome do chat", + "chat-name-content": "Três palavras aleatórias, derivadas algoritmicamente da sua chave de bate-papo e usadas como pseudônimo padrão no bate-papo. Os nomes de bate-papo são completamente únicos; nenhum outro usuário pode ter as mesmas três palavras.", + "chat-name-title": "Nome no chat", + "chat-notification-preferences": "Configurações de notificação", + "chat-settings": "Configurações do chat", + "chats": "Chats", + "check-on-block-explorer": "Verifique no explorador de blocos", + "check-on-opensea": "Confira no opensea", + "check-your-recovery-phrase": "Confira sua frase-semente", + "choose-actions": "Escolha ações", + "choose-authentication-method": "Escolha um método de autenticação", + "choose-new-location-for-keystore": "Escolha um novo local para salvar seu arquivo de armazenamento de chaves", + "choose-storage": "Escolha o armazenamento", + "clear": "Apagar", + "clear-all": "Apagar tudo", + "clear-history": "Apagar histórico", + "clear-history-action": "Apagar", + "clear-history-confirmation": "Apagar o histórico?", + "clear-history-confirmation-content": "Tem certeza de que deseja apagar este histórico de bate-papo?", + "clear-history-title": "Apagar o histórico?", + "clear-history?": "Limpar Histórico?", + "cleared-chat-description-public": "Tem estado muito quieto por aqui. Inicie a conversa ou ", + "close": "Fechar", + "close-all": "Fechar tudo", + "close-app-button": "Confirmar", + "close-app-content": "O aplicativo irá parar e fechar. Quando você reabri-lo, a rede selecionada será usada", + "close-app-title": "Atenção!", + "collectibles-leak-metadata": "Você pode exibir seus NFTs aqui. Se você fizer isso, você compartilhará sua carteira e endereço IP", + "command-button-send": "Enviar", + "communities": "Comunidades", + "communities-alpha": "Comunidades (alfa)", + "communities-enabled": "Comunidades habilitadas", + "communities-verified": "✓ Comunidade do Status verificada", + "community": "Comunidade", + "community-channel": "Canal da comunidade", + "community-channel-read-requirements-met": "Requisitos de apenas visualizar atendidos", + "community-channel-read-requirements-not-met": "Requisitos de apenas visualizar não atendidos", + "community-channel-write-requirements-met": "Requisitos de visualização e postagem atendidos", + "community-channel-write-requirements-not-met": "Requisitos de visualização e postagem não atendidos", + "community-color": "Cor da comunidade", + "community-color-placeholder": "Escolha uma cor", + "community-edit-title": "Editar comunidade", + "community-emoji-thumbnail-title": "Thumbnail", + "community-enter-channel-info": "Entrar no canal revelará seus endereços públicos ao proprietário do nó", + "community-image-delete": "Vazio", + "community-image-pick": "Escolha uma imagem", + "community-image-remove": "Remover", + "community-image-take": "Tirar foto", + "community-info": "Informação da comunidade", + "community-info-not-found": "Informação da comunidade não encontrada", + "community-invite-title": "Convidar", + "community-join-requirements-changed": "Os requisitos de token mudaram", + "community-join-requirements-met": "Requisitos de participação atendidos", + "community-join-requirements-not-met": "Requisitos de participação não atendidos", + "community-join-requirements-tokens-lost": "Você não tem mais os tokens necessários", + "community-key": "Chave privada da comunidade", + "community-key-placeholder": "Digite a chave privada da sua comunidade", + "community-link": "Link da comunidade", + "community-members": { + "one": "{{count}} membro", + "other": "{{count}} membros" + }, + "community-members-title": "Membros", + "community-message-preview": "Convite para participar do(a) {{community-name}}", + "community-notification-settings": "Configurações de notificação", + "community-private-key": "Chave privada da comunidade", + "community-requests-to-join-title": "Pedidos de participação", + "community-roles": "Funções", + "community-rules": "Regras da comunidade", + "community-share-title": "Compartilhar", + "community-thumbnail-image": "Imagem em miniatura", + "community-thumbnail-upload": "Carregar", + "complete-hardwallet-setup": "Este cartão agora está vinculado. Você precisa dele para assinar transações e desbloquear suas chaves", + "completed": "Concluído", + "confirm": "Confirmar", + "confirm-new-password": "Confirmar nova senha", + "confirm-pairing-code-placeholder": "Confirme o seu código de emparelhamento...", + "confirm-password-placeholder": "Confirme sua senha…", + "confirmation-request": "Pedido de confirmação", + "confirmations": "Confirmações", + "confirmations-helper-text": "Quando a transação tiver 12 confirmações, você poderá considerá-la liquidada.", + "connect": "Conectar", + "connect-mailserver-content": "Conectar-se a {{name}} ?", + "connect-wallet": "Conectar carteira", + "connected": "Conectado", + "connected-to": "Conectado a", + "connecting": "Conectando...", + "connecting-requires-login": "Conectar-se a outra rede requer login", + "connection-request": "Solicitação de conexão", + "connection-status": "Status de conexão", + "connection-with-the-card-lost": "A conexão com o cartão \n foi perdida", + "connection-with-the-card-lost-setup-text": "Para retomar a configuração, segure o cartão na\n parte de trás do seu telefone e mantenha \n o cartão em contato com o telefone", + "connection-with-the-card-lost-text": "Para continuar, segure o cartão na parte de trás do seu telefone", + "contact-code": "Chave de bate-papo", + "contact-request": "Requisição de contato", + "contact-request-accepted": "Aceito ✓", + "contact-request-declined": "Recusado ⓧ", + "contact-request-header": "👋 Solicitações de contato", + "contact-request-pending": "Pendente...", + "contact-request-sent": "pedido de contato enviado", + "contact-requests": "Solicitações de Contato", + "contact-s": { + "one": "contato", + "other": "contatos" + }, + "contacts": "Contatos", + "contacts-descr": "Seus contatos aparecerão aqui. Você receberá atualizações de status de qualquer pessoa que adicionar como contato", + "contacts-empty": "Contatos com nomes ENS aparecerão aqui", + "continue": "Continuar", + "continue-anyway": "Continuar mesmo assim", + "contract-address": "Endereço do contrato", + "contract-interaction": "Interação contratual", + "contract-isnt-supported": "Contrato não suportado", + "copy-info": "Copiar informação", + "copy-qr": "Copiar código", + "copy-text": "Copiar texto", + "copy-to-clipboard": "Copiar", + "copy-transaction-hash": "Copiar ID da transação", + "cost-fee": "Custo\/Taxa", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Criar", + "create-a-pin": "Crie um código de acesso de 6 dígitos", + "create-a-puk": "Crie um PUK de 12 dígitos", + "create-category": "Criar categoria", + "create-channel": "Criar um canal", + "create-channel-title": "Novo canal", + "create-community": "Criar uma comunidade", + "create-group-chat": "Criar bate-papo do grupo", + "create-multiaccount": "Gerar chaves", + "create-new-key": "Obter novas chaves", + "create-pin": "Criar código de acesso de 6 dígitos", + "create-pin-description": "Você precisará do seu cartão + este código de acesso de 6 dígitos para desbloquear o Status e confirmar transações", + "created-group-chat-description": "Você criou o grupo {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Moeda", + "currency-display-name-aed": "Dirham dos Emiratos Árabes Unidos", + "currency-display-name-afn": "Afegane afegão", + "currency-display-name-ars": "Peso argentino", + "currency-display-name-aud": "Dólar australiano", + "currency-display-name-bbd": "Dólar de Barbados", + "currency-display-name-bdt": "Taka de Bangladesh", + "currency-display-name-bgn": "Lev búlgaro", + "currency-display-name-bhd": "Dinar do Bahrein", + "currency-display-name-bnd": "Dólar de Brunei", + "currency-display-name-bob": "Boliviano", + "currency-display-name-brl": "Real do Brasil", + "currency-display-name-btn": "Ngultrum do Butão", + "currency-display-name-cad": "Dólar canadense", + "currency-display-name-chf": "Franco suíço", + "currency-display-name-clp": "Peso chileno", + "currency-display-name-cny": "Renminbi yaun chinês", + "currency-display-name-cop": "Peso colombiano", + "currency-display-name-crc": "Cólon da Costa Rica", + "currency-display-name-czk": "Coroa checa", + "currency-display-name-dkk": "Coroa dinamarquesa", + "currency-display-name-dop": "Peso da República Dominicana", + "currency-display-name-egp": "Libra egipcia", + "currency-display-name-etb": "Birr etíope", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Libra esterlina", + "currency-display-name-gel": "Lari georgiano", + "currency-display-name-ghs": "Cedi ganês", + "currency-display-name-hkd": "Dólar de Hong Kong", + "currency-display-name-hrk": "Kuna da Croácia", + "currency-display-name-huf": "Florim húngaro", + "currency-display-name-idr": "Rupia indonésia", + "currency-display-name-ils": "Shekel de Israel", + "currency-display-name-inr": "Rupia indiana", + "currency-display-name-isk": "Coroa islandesa", + "currency-display-name-jmd": "Dólar jamaicano", + "currency-display-name-jpy": "Yen japonês", + "currency-display-name-kes": "Xelim queniano", + "currency-display-name-krw": "Won sul-coreano", + "currency-display-name-kwd": "Dinar kuwaitianao", + "currency-display-name-kzt": "Tenge do Cazaquistão", + "currency-display-name-lkr": "Rupia do Sri Lanka", + "currency-display-name-mad": "Dirham marroquino", + "currency-display-name-mdl": "Leu moldávo", + "currency-display-name-mur": "Rúpia mauriciana", + "currency-display-name-mwk": "Kwacha do Malawi", + "currency-display-name-mxn": "Peso mexicano", + "currency-display-name-myr": "Ringgit malaio", + "currency-display-name-mzn": "Metical de Moçambique", + "currency-display-name-nad": "Dólar namibiano", + "currency-display-name-ngn": "Naira da Nigéria", + "currency-display-name-nok": "Coroa norueguesa", + "currency-display-name-npr": "Rupia nepalesa", + "currency-display-name-nzd": "Dólar da Nova Zelândia", + "currency-display-name-omr": "Rial de Omã", + "currency-display-name-pen": "Sol peruano", + "currency-display-name-pgk": "Kina da Papua-Nova Guiné", + "currency-display-name-php": "Peso das Filipinas", + "currency-display-name-pkr": "Rupia paquistanesa", + "currency-display-name-pln": "Zloty polonês", + "currency-display-name-pyg": "Guarani do Paraguai", + "currency-display-name-qar": "Rial do Qatar", + "currency-display-name-ron": "Leu romeno", + "currency-display-name-rsd": "Dinar sérvio", + "currency-display-name-rub": "Rublo russo", + "currency-display-name-sar": "Rial da Arábia Saudita", + "currency-display-name-sek": "Coroa da Suécia", + "currency-display-name-sgd": "Dólar de Singapura", + "currency-display-name-thb": "Baht da Tailândia", + "currency-display-name-try": "Lira turca", + "currency-display-name-ttd": "Dólar de Trinidad e Tobago", + "currency-display-name-twd": "Novo dólar taiwanês", + "currency-display-name-tzs": "Xelim tanzaniano", + "currency-display-name-uah": "Grívnia da Ucrânia", + "currency-display-name-ugx": "Xelim ugandês", + "currency-display-name-usd": "Dólar dos Estados Unidos", + "currency-display-name-uyu": "Peso uruguaio", + "currency-display-name-vef": "Bolívar venezuelano", + "currency-display-name-vnd": "Vietnam Dong", + "currency-display-name-zar": "Rand sul-africano", + "current": "Atual", + "current-average": "Média atual", + "current-average-tip": "Gorjeta média atual", + "current-base": "Base atual", + "current-base-fee": "Taxa base atual", + "current-minimum-tip": "Gorjeta mínima atual", + "current-network": "Rede atual", + "current-password": "Senha atual", + "current-pin": "Digite o código de acesso de 6 dígitos", + "current-pin-description": "Digite seu código de acesso de 6 dígitos para continuar", + "custom": "Personalizado", + "custom-networks": "Redes personalizadas", + "custom-node": "Você está usando um endpoint RPC personalizado. Seu histórico de transferências locais pode estar incompleto.", + "custom-seed-phrase": "Frase-semente inválida", + "custom-seed-phrase-text-1": "Esta frase-semente não é compatível com o nosso dicionário. Verifique se há palavras com erros ortográficos.", + "cut": "Cortar", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Aceitar e Abrir", + "dapp-starter-pack-description": "Aqui estão algumas criptografias para você começar! Use-o para obter adesivos, um nome ENS e experimente os dapps", + "dapp-starter-pack-title": "Pacote Inicial", + "dapp-would-like-to-connect-wallet": "gostaria de se conectar a", + "dapps": "ÐApps", + "dapps-permissions": "Permissões do DApp", + "dark": "Escuro", + "data": "Dados", + "data-collected": "Dados coletados", + "data-collected-subtitle": "A tabela abaixo mostra os dados exatos que estão armazenados e serão enviados. Os dados são validados de acordo com as regras públicas para garantir que nenhum dado sensível seja enviado. Não confie, verifique.", + "data-syncing": "Sincronização de dados", + "database-reset-content": "Conversas, contatos e configurações foram excluídos. Você pode usar sua conta com seu Keycard", + "database-reset-title": "Redefinição do banco de dados", + "database-reset-warning": "O banco de dados será redefinido. Conversas, contatos e configurações serão excluídos", + "datetime-ago": "atrás", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "dia", + "other": "dias" + }, + "datetime-day-short": { + "one": "D", + "other": "D" + }, + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-hour-short": { + "one": "H", + "other": "H" + }, + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "datetime-minute-short": { + "one": "M", + "other": "M" + }, + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "datetime-second-short": { + "one": "S", + "other": "S" + }, + "datetime-today": "hoje", + "datetime-yesterday": "Ontem", + "decimals": "Decimais", + "decline": "Recusar", + "declined": "Recusado", + "decryption-failed-content": "Ocorreu um erro ao descriptografar seus dados. Você pode precisar apagar seus dados antigos e gerar uma nova conta. Toque em “Aplicar” para apagar ou “Cancelar” para tentar novamente", + "default": "Padrão", + "default-assets": "ERC20 e ERC721 padrão", + "default-sync-period": "Histórico de sincronização para", + "delete": "Excluir", + "delete-account": "Remover conta", + "delete-and-leave-group": "Excluir e sair do grupo", + "delete-bootnode": "Excluir nó de inicialização", + "delete-bootnode-are-you-sure": "Tem certeza de que deseja excluir este nó de inicialização?", + "delete-bootnode-title": "Eliminar nó de inicialização", + "delete-category-confirmation": "Tem certeza de que deseja excluir esta categoria?", + "close-chat": "Excluir conversa", + "close-chat-confirmation": "Tem certeza de que deseja excluir este bate-papo?", + "delete-confirmation": "Excluir?", + "delete-for-everyone": "Excluir para todos", + "delete-for-me": "Excluir para mim", + "delete-keys-keycard": "Excluir chaves do Keycard", + "delete-mailserver": "Excluir nó do Status", + "delete-mailserver-are-you-sure": "Tem certeza de que deseja excluir este nó do Status?", + "delete-mailserver-title": "Excluir nó do Status", + "delete-message": "Apagar mensagem", + "delete-my-account": "Excluir minha conta", + "delete-my-profile": "Excluir meu perfil", + "delete-network-confirmation": "Tem certeza de que deseja excluir esta rede?", + "delete-network-error": "Conecte-se a uma rede diferente antes de excluir esta", + "delete-network-title": "Excluir rede?", + "delete-node": "Excluir nó", + "delete-node-are-you-sure": "Você tem certeza que deseja excluir esse nó?", + "delete-node-title": "Excluir nó", + "delete-profile": "Excluir perfil", + "delete-profile-warning": "Aviso: se você não tiver sua frase-semente escrita, você perderá o acesso aos seus fundos depois de excluir seu perfil", + "deny": "Negar", + "derivation-path": "Caminho de derivação", + "describe-channel": "Descreva o canal", + "description": "descrição", + "dev-mode": "Modo de desenvolvimento", + "dev-mode-settings": "Configurações do modo de desenvolvimento", + "device-syncing": "Sincronização de dispositivos", + "devices": "Dispositivos", + "disable": "desativar", + "disable-all": "Desativar todos", + "disable-later-in-settings": "Você pode desativar isso mais tarde nas Configurações", + "disabled": "Desativado", + "disconnect": "Desconectar", + "disconnected": "Bate-papo offline", + "discover": "Descobrir", + "discover-communities": "Descubra Comunidades", + "dismiss": "Ignorar", + "display-collectibles": "Exibir colecionáveis", + "done": "Concluído", + "dont-ask": "Não me pergunte novamente", + "edit": "Editar", + "edit-categories": "Editar categorias", + "edit-channel-title": "Editar canal", + "edit-chats": "Editar bate-papos", + "edit-community": "Editar comunidade", + "edit-favourite": "Editar favorito", + "edit-group": "Editar grupo", + "edit-message": "Editar mensagem", + "edit-name-and-image": "Editar nome e imagem", + "edit-name-image": "Editar nome e imagem", + "edit-nickname": "Editar apelido", + "edit-profile": "Editar perfil", + "edited": "Editado", + "editing-message": "Editando mensagem", + "empty-activity-center": "Suas notificações de bate-papo\n aparecerão aqui", + "empty-chat-description": "Ainda não há mensagens \n neste bate-papo", + "empty-chat-description-community": "Tem estado quieto aqui nas últimas {{quiet-hours}}.", + "empty-chat-description-one-to-one": "Todas as mensagens que você envia aqui são criptografadas e só podem ser lidas por você e ", + "empty-chat-description-public": "Está quieto aqui nas últimas {{quiet-hours}}. Inicie a conversa ou ", + "empty-chat-description-public-share-this": "compartilhe este bate-papo.", + "empty-keycard-required": "Requer um Keycard vazio", + "empty-pending-invitations-descr": "Pessoas que desejam entrar no grupo \n através de um link de convite aparecerão aqui", + "empty-tab": "Aba vazia", + "enable": "habilitar", + "enable-all": "Habilitar todos", + "enable-link-previews": "Ativar visualizações de link no chat?", + "encrypt-with-password": "Criptografar com senha", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Adicionar nome de usuário ", + "ens-agree-to": "Concordo com", + "ens-chat-settings": "Configurações de bate-papo", + "ens-custom-domain": "Domínio personalizado", + "ens-custom-username-hints": "Digite o nome de usuário inteiro, incluindo o domínio personalizado, como nomedeusuario.domínio.eth", + "ens-custom-username-taken": "O nome de usuário não pertence a você :(", + "ens-deposit": "Depósito", + "ens-dismiss-message": "Clique aqui para fechar", + "ens-displayed-with": "Suas mensagens são exibidas para outras pessoas com", + "ens-get-name": "Obter um nome universal", + "ens-got-it": "Ok, entendi.", + "ens-locked": "Nome de usuário bloqueado. Você não poderá liberá-lo até {{date}}", + "ens-name-content": "Pseudônimo personalizado para sua chave de bate-papo que você pode cadastrar usando o Ethereum Name Service. Os nomes do ENS são nomes de usuário descentralizados.", + "ens-name-not-found": "Não é possível resolver o nome ENS", + "ens-name-title": "Nome ENS", + "ens-network-restriction": "Disponível apenas na Mainnet", + "ens-no-usernames": "Você não tem nenhum nome de usuário conectado", + "ens-powered-by": "Desenvolvido com Ethereum Name Services", + "ens-primary-username": "Nome de usuário principal", + "ens-register": "Cadastro", + "ens-registration-failed": "Para cadastrar o nome de usuário, tente novamente.", + "ens-registration-failed-title": "Falha na transação", + "ens-registration-failure": "Erro ao cadastrar", + "ens-registration-in-progress": "Cadastro em andamento…", + "ens-release-username": "Liberar nome de usuário", + "ens-remove-hints": "A remoção desanexará o nome de usuário da sua chave.", + "ens-remove-username": "Remover nome de usuário", + "ens-saved": " agora está conectado com sua chave de bate-papo e pode ser usado no Status.", + "ens-saved-title": "Nome de usuário adicionado", + "ens-show-username": "Mostrar meu nome de usuário ENS em bate-papos", + "ens-terms-header": "Termos de cadastro de nome", + "ens-terms-point-1": "Os fundos são depositados por 1 ano. Seu SNT será bloqueado, mas não será gasto.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Registro ENS).", + "ens-terms-point-2": "Após 1 ano, você pode liberar o nome e receber seu depósito de volta ou não fazer nenhuma ação para manter o nome.", + "ens-terms-point-3": "Se os termos do contrato mudarem — por exemplo, o Status fizer atualizações do contrato — o usuário tem o direito de liberar o nome de usuário, independentemente do tempo de espera.", + "ens-terms-point-4": "O controlador do contrato não pode acessar seus fundos depositados. Eles só podem ser movidos de volta para o endereço que os enviou.", + "ens-terms-point-5": "Seus endereços serão publicamente associados ao seu nome no ENS.", + "ens-terms-point-6": "Os nomes de usuários são criados como nós de subdomínio stateofus.eth e estão sujeitos aos termos do contrato inteligente do ENS.", + "ens-terms-point-7": "Você autoriza o contrato a transferir o SNT em seu nome. Isso só pode ocorrer quando você aprovar uma transação para autorizar a transferência.", + "ens-terms-point-8": "Estes termos são garantidos pela lógica do contrato inteligente nos endereços:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "Termos de cadastro do nome.", + "ens-test-message": "Olá", + "ens-transaction-pending": "Transação pendente ...", + "ens-understand": "Entendo que o endereço da minha carteira estará publicamente conectado ao meu nome de usuário.", + "ens-username": "Nome de usuário ENS", + "ens-username-already-added": "O nome de usuário já está conectado à sua chave de bate-papo e pode ser usado dentro do Status.", + "ens-username-available": "✓ Nome de usuário disponível!", + "ens-username-connected": "Esse nome de usuário é de sua propriedade e conectado à sua chave de bate-papo.", + "ens-username-connected-continue": "Continuar configurando \"Mostrar meu nome de usuário do ENS nos bate-papos\".", + "ens-username-connected-with-different-key": "Continuar exigirá uma transação para conectar o nome de usuário com sua chave de bate-papo atual.", + "ens-username-connection-confirmation": "{{username}} será conectado assim que a transação for concluída.", + "ens-username-hints": "Pelo menos 4 caracteres. Usando letras minúsculas e números.", + "ens-username-invalid": "Apenas letras e números.", + "ens-username-invalid-name-warning": "O processo de registro de um dos seus nomes ens terminou em estado inválido. NÃO USE o nome para transações de carteira e contate nosso suporte em support@status.im", + "ens-username-owned": "✓ O nome de usuário é seu.", + "ens-username-owned-continue": "Continuar conectará esse nome de usuário com sua chave de bate-papo.", + "ens-username-registration-confirmation": "Ótimo! Você será o proprietário do {{username}} assim que a transação for concluída.", + "ens-username-registration-invalid": "Aviso! O processo de registro terminou em estado inválido. NÃO USE o nome para transações de carteira e contate nosso suporte em support@status.im", + "ens-username-taken": "Nome de usuário já utilizado :(", + "ens-username-you-can-follow-progress": "Você pode acompanhar o progresso na seção Histórico de Transações da sua carteira.", + "ens-usernames": "Nomes de usuário ENS", + "ens-usernames-details": "Cadastre um nome de usuário universal para ser facilmente reconhecido por outros usuários", + "ens-want-custom-domain": "Eu possuo um nome em outro domínio", + "ens-want-domain": "Eu quero um domínio stateofus.eth", + "ens-welcome-hints": "Os nomes do ENS transformam esses endereços compridos e malucos em nomes de usuário exclusivos.", + "ens-welcome-point-customize": "Um nome ENS pode substituir seu nome aleatório de três palavras no chat. Seja @seunome em vez de {{name}}.", + "ens-welcome-point-customize-title": "Personalize seu nome de chat", + "ens-welcome-point-receive": "Outras pessoas podem enviar fundos para você pelo chat em um único passo.", + "ens-welcome-point-receive-title": "Receba transações no chat", + "ens-welcome-point-register": "Cadastre-se uma vez para manter o nome para sempre. Após 1 ano, você pode liberar o nome e recuperar seu SNT.", + "ens-welcome-point-register-title": "10 SNT para se cadastrar", + "ens-welcome-point-simplify": "Você pode receber fundos em um nome ENS fácil de compartilhar, em vez do seu endereço hexadecimal (0x ...).", + "ens-welcome-point-simplify-title": "Simplifique seu endereço ETH", + "ens-welcome-point-verify": "Você pode verificar e adicionar qualquer nome de usuário que você possui nos próximos passos.", + "ens-welcome-point-verify-title": "Já possui um nome de usuário?", + "ens-your-username": "Seu nome de usuário", + "ens-your-usernames": "Seus nomes de usuário", + "ens-your-your-name": "Seu nome ENS", + "enter-12-words": "Digite as 12 palavras da sua frase-semente, separadas por um espaço", + "enter-a-private-key": "Digite uma chave privada", + "enter-a-seed-phrase": "Digite uma frase-semente", + "enter-address": "Inserir endereço", + "enter-channel": "Entrar no canal", + "enter-contact-code": "ENS (vitalik94) ou chave de bate-papo (0x04 ...)", + "enter-pair-code": "Digite seu código de emparelhamento", + "enter-pair-code-description": "O código de emparelhamento pode ser definido a partir de um cliente Status já emparelhado", + "enter-password": "Digite a senha", + "enter-password-migration-prompt": "Digite sua senha para mover contatos, bate-papos e configurações com suas chaves", + "enter-pin": "Digite o código de acesso de 6 dígitos", + "enter-puk-code": "Digite o código PUK", + "enter-puk-code-description": "O código de acesso de 6 dígitos foi bloqueado. \n Digite o código PUK para desbloquear o código de acesso.", + "enter-recipient-address-or-username": "Digite o endereço ou nome de usuário do destinatário", + "enter-seed-phrase": "Inserir frase-semente", + "enter-url": "Inserir URL", + "enter-user-pk": "Insira a chave pública do usuário", + "enter-watch-account-address": "Escaneie um código QR \nou \ndigite o endereço para visualizar", + "enter-word": "Digite a palavra", + "enter-your-code": "Digite sua senha de 6 dígitos", + "enter-your-password": "Digite sua senha", + "error": "Erro", + "error-unable-to-get-balance": "Não foi possível obter o saldo", + "error-unable-to-get-prices": "Erro de conversão de moeda. Atualize sua tela para tentar novamente.", + "error-unable-to-get-token-balance": "Não foi possível obter o saldo de token", + "errors": "Erros", + "eth": "ETH", + "ethereum-address": "Endereço Ethereum", + "ethereum-node-started-incorrectly-description": "O nó Ethereum foi iniciado com a configuração incorreta. O aplicativo será interrompido para se recuperar dessa condição. ID de rede configurado = {{network-id}}, real = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Nó Ethereum iniciado incorretamente", + "etherscan-lookup": "Procurar no Etherscan", + "everyone": "Todos", + "expand-all": "Expandir todos", + "export-account": "Exportar conta", + "export-key": "Exportar chave privada", + "external-link": "Link externo", + "external-storage-denied": "Acesso ao armazenamento externo negado", + "failed": "Falhou", + "faq": "Perguntas frequentes", + "fast": "Rápido", + "favourite": "Favoritos", + "favourite-description": "Seus sites favoritos aparecerão aqui", + "favourites": "Favoritos", + "favourites-empty": "Os endereços adicionados aos favoritos aparecerão aqui", + "featured": "Destaque", + "fee-cap": "Limite de taxa", + "fee-explanation": "Preço total máximo para a transação. Se a taxa base do bloco exceder esse valor, ela será incluída em um bloco seguinte com uma taxa base mais baixa.", + "fee-options": "Opções de taxas sugeridas", + "fetch-community": "Buscar comunidade", + "fetch-messages": "↓ Buscar mensagens", + "fetch-timeline": "↓ Buscar", + "fetching-community": "Buscando comunidade…", + "find": "Encontrar", + "finish": "Terminar", + "finishing-card-setup": "Finalizando configurações do cartão", + "fleet": "Frota", + "fleet-settings": "Configurações de frota", + "follow": "Seguir", + "follow-your-interests": "Entre em um bate-papo público e conheça novas pessoas", + "free": "↓ Grátis", + "from": "De", + "gas-amount-limit": "Limite de quantidade de Gas", + "gas-limit": "Limite de gás", + "gas-price": "Preço do gás", + "gas-used": "Gás usado", + "gated": "Fechado", + "generate-a-key": "Gerar chaves", + "generate-a-new-account": "Gerar uma conta", + "generate-a-new-key": "Gere uma nova chave", + "generate-account": "Gerar chaves", + "generate-an-account": "Gerar uma conta", + "generate-new-key": "Gerar chaves", + "generating-codes-for-pairing": "> Download do software do produto no cartão \n> Gerando códigos de desbloqueio e emparelhamento", + "generating-keys": "Gerando chaves...", + "generating-mnemonic": "Gerando frase-semente", + "get-a-keycard": "Obtenha um Keycard", + "get-started": "Começar", + "get-status-at": "Obter o Status em http:\/\/status.im", + "get-stickers": "Obter Adesivos", + "gif": "GIF", + "give-a-short-description": "Dê uma breve descrição", + "give-a-short-description-community": "Dê uma breve descrição", + "give-permissions-camera": "Dar permissão\npara acessar a câmera", + "glossary": "Glossário", + "go-to-settings": "Vá para as configurações...", + "got-it": "Entendido", + "grant-face-id-permissions": "Para conceder a permissão de Face ID necessária, vá para as configurações do seu sistema e certifique-se de que Status > Face ID está selecionado", + "group-chat": "Conversa em grupo", + "group-chat-admin": "Administrador", + "group-chat-admin-added": "**{{member}}** foi adicionado como administrador", + "group-chat-all-contacts-invited": "Todos os seus contatos já estão no grupo", + "group-chat-created": "**{{member}}** criou o grupo **{{name}}**", + "group-chat-decline-invitation": "Recusar o convite", + "group-chat-member-added": "**{{member}}** foi convidado", + "group-chat-member-joined": "**{{member}}** acessou o grupo", + "group-chat-member-removed": "**{{member}}** saiu do grupo", + "group-chat-members-count": "{{selected}}\/{{max}} membros", + "group-chat-name-changed": "**{{member}}** mudou o nome do grupo para **{{name}}**", + "group-chat-no-contacts": "Você ainda não possui nenhum contato.\nConvide seus amigos para começar a conversar.", + "group-details": "Detalhes do grupo", + "group-info": "Informações do grupo", + "group-invite": "Convite para o grupo", + "group-invite-link": "Link de convite do grupo", + "group-membership-request": "Pedido para entrar no grupo", + "groups": "Grupos", + "gwei": "Gwei", + "has-permissions": "tem permissão para acessar", + "hash": "Hash", + "help": "ajuda", + "help-capitalized": "Ajuda", + "help-center": "Centro de ajuda", + "help-improve-status": "Ajude a melhorar o Status", + "hide": "Esconder", + "hide-content-when-switching-apps": "Bloquear capturas de tela", + "hide-content-when-switching-apps-ios": "Ocultar visualização", + "history": "Histórico", + "history-nodes": "Nós de mensagem da Status", + "hold-card": "Segure o cartão na parte de trás \n do seu telefone", + "home": "Início", + "hooks": "Hooks", + "how-it-works": "Como funciona", + "http-gateway-error": "Opa, falha na solicitação!", + "identifier": "Identificador", + "identity-verification": "Verificação de identidade", + "identity-verification-request": "Verificação de identidade", + "identity-verification-request-sent": "pergunta", + "image": "Imagem", + "image-remove-current": "Remover foto atual", + "image-source-gallery": "Escolher na galeria", + "image-source-make-photo": "Tirar foto", + "image-source-title": "Editar imagem", + "import": "Importar", + "import-community": "Importar uma comunidade", + "import-community-title": "Importar uma comunidade", + "in-contacts": "Em contatos", + "include": "Incluir", + "incoming": "Recebidos", + "incoming-transaction": "Transação recebida", + "incorrect-code": [ + "str", + "Desculpe, o código estava incorreto. Por favor, digite novamente" + ], + "increase-gas": "Aumentar o gás", + "initialization": "Inicialização", + "install": "Instalar", + "insufficient-balance-to-cover-fee": "saldo insuficiente para cobrir a taxa de transação", + "intro-message1": "Bem-vindo ao Status\nToque nesta mensagem para definir sua senha e começar!", + "intro-privacy-policy-note1": "O Status não coleta ou lucra com seus dados pessoais. Ao continuar, você concorda com a ", + "intro-privacy-policy-note2": "política de privacidade", + "intro-text": "Status é a sua porta de entrada para a web descentralizada", + "intro-text1": "Converse em uma rede criptografada ponto a ponto, onde as mensagens não podem ser censuradas ou invadidas", + "intro-text2": "Envie e receba ativos digitais em qualquer lugar do mundo - não é necessária uma conta bancária", + "intro-text3": "Explore jogos, trocas e redes sociais onde só você é o proprietário dos seus dados", + "intro-title1": "Comunicação verdadeiramente privada", + "intro-title2": "Carteira criptográfica segura", + "intro-title3": "Aplicativos descentralizados", + "intro-wizard-text1": "Um conjunto de chaves controla sua conta. Suas chaves estão no seu telefone, então somente você pode usá-las", + "intro-wizard-text2": "Uma chave é para o bate-papo. Ela vem com um nome legível que não pode ser alterado.", + "intro-wizard-text3": "Se você possui um Keycard, armazene suas chaves nele para maior segurança.", + "intro-wizard-text4": "Proteja e criptografe suas chaves", + "intro-wizard-text6": "O Status notificará você sobre novas mensagens. Você pode editar suas preferências de notificação mais tarde nas configurações", + "intro-wizard-title-alt4": "Crie uma senha", + "intro-wizard-title-alt5": "Confirme sua senha", + "intro-wizard-title1": "Obtenha suas chaves", + "intro-wizard-title2": "Escolha um nome de bate-papo", + "intro-wizard-title3": "Escolha o armazenamento de chaves", + "intro-wizard-title4": "Crie uma senha de 6 dígitos", + "intro-wizard-title5": "Confirme a senha", + "intro-wizard-title6": "Ativar notificações", + "introduce-yourself": "Apresente-se com uma breve mensagem", + "invalid-address-qr-code": "O código QR escaneado não contém um endereço válido", + "invalid-format": "Formato Inválido \n Deve ser {{format}}", + "invalid-key-confirm": "Aplicar", + "invalid-key-content": "O banco de dados não pode ser criptografado porque um arquivo está corrompido. Seus fundos e a chave de bate-papo estão seguros. Outros dados, como suas conversas e contatos, não podem ser restaurados. O botão \"{{erase-multiaccounts-data-button-text}}\" removerá todos os outros dados e permitirá que você acesse seus fundos e envie mensagens", + "invalid-number": "Número inválido", + "invalid-pairing-password": "Senha de emparelhamento inválida", + "invalid-public-chat-topic": "Tópico de chat público inválido", + "invalid-range": "Formato inválido, deve estar entre {{min}} e {{max}}", + "invalid-username-or-key": "Nome de usuário ou chave de bate-papo inválida", + "invite": "Convidar", + "invite-button": "Convidar", + "invite-chat-accept": "Aceitar", + "invite-chat-accept-join": "Aceitar e participar", + "invite-chat-intro": "Você foi indicado por um amigo para participar do Status. Aqui estão algumas criptomoedas para você começar! Use-as para cadastrar um nome ENS ou comprar um pacote de adesivos", + "invite-chat-name": "Indicação de amigo", + "invite-chat-pending": "Pendente", + "invite-chat-rule": "Aceitar também recompensará o seu amigo com um bônus de criptomoeda pela indicação", + "invite-chat-starter-pack": "Pacote Inicial", + "invite-contacts": "Convidar pessoas da lista de contatos", + "invite-friends": "Convide amigos", + "invite-friends-to-status": "Convidar amigos ao Status", + "invite-instruction-fifth": "Você pode optar por resgatar seu bônus de indicação a qualquer momento.", + "invite-instruction-first": "Você envia um link de convite exclusivo para seu amigo fazer o download e entrar no Status", + "invite-instruction-fourth": "Você recebe seu bônus de indicação e seu amigo recebe o Pacote inicial", + "invite-instruction-second": "Seu amigo baixa o Status e cria uma conta (no Android)", + "invite-instruction-third": "É iniciada uma conversa com seu amigo, onde ele confirma sua indicação", + "invite-people": "Convide pessoas", + "invite-people-from-contacts": "Convidar pessoas da lista de contatos", + "invite-privacy-policy-public": "Você instalou o Status por meio de um link de indicação. Ao entrar nesta conversa, você confirma seu referenciador e concorda com os", + "invite-privacy-policy1": "Ao aceitar você concorda com o programa de indicação", + "invite-privacy-policy2": "Termos e Condições.", + "invite-public-chat-home": "Convite de indicação", + "invite-public-chat-intro": "Aqui estão algumas criptomoedas para você começar! Use-as para registrar um nome ENS ou comprar um pacote de adesivos", + "invite-receive-account": "Conta para receber o seu bônus de indicação", + "invite-reward": "Ganhe criptomoedas para cada amigo que você convidar!", + "invite-reward-friend": "Amigo:", + "invite-reward-friend-description": "Seu amigo receberá um Pacote Inicial que consiste em {{reward}} para começar", + "invite-reward-friend-name": "Pacote Inicial", + "invite-reward-you": "Você: ", + "invite-reward-you-description": "Convide um amigo e receba {{reward}} como bônus pela indicação. Utilize para comprar adesivos, um nome ENS e testar alguns DApps.", + "invite-reward-you-name": "Bônus de indicação", + "invite-select-account": "Selecione uma conta para receber o seu bônus de indicação", + "invite-warning": "Esta promoção é válida apenas para usuários de um dispositivo Android, que não sejam residentes dos EUA. O amigo precisa confirmar a indicação dentro de 7 dias", + "invited": "convidou", + "italic": "Itálico", + "join": "Participar", + "join-a-community": "ou junte-se a uma comunidade", + "join-group-chat": "Acessar grupo", + "join-group-chat-description": "{{username}} convidou você para ingressar no grupo {{group-name}}", + "join-me": "Junte-se a mim no Status: {{url}}", + "join-new-private-chat": "Iniciar uma nova conversa privada", + "join-new-public-chat": "Participar do chat público", + "join-open-community": "Junte-se à Comunidade", + "joined": "Entrou", + "joined-group-chat-description": "Você ingressou no {{group-name}} por convite de {{username}}", + "key": "Chave", + "key-managment": "Gerenciamento de chave", + "key-on-device": "A chave privada está salva neste dispositivo", + "keycard": "Keycard", + "keycard-access-reset": "O acesso ao Keycard foi redefinido", + "keycard-applet-install-instructions": "Para instalar o applet, siga as instruções em https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Tente mover o cartão para encontrar o leitor NFC em seu dispositivo", + "keycard-awaiting-title": "Ainda procurando…", + "keycard-backup": "Crie um Keycard de backup", + "keycard-backup-success-body": "Cartão de backup criado com sucesso. Agora você pode usá-lo com sua conta, assim como o cartão principal.", + "keycard-backup-success-title": "Backup bem-sucedido", + "keycard-blocked": "O keycard foi bloqueado. \nVocê precisa redefinir o cartão para continuar usando.", + "keycard-can-use-with-new-passcode": "Você pode usar este cartão com sua nova senha", + "keycard-cancel-setup-text": "Isso cancelará a configuração do Keycard. É altamente recomendável concluir a configuração para usar o keycard. Deseja mesmo cancelar?", + "keycard-cancel-setup-title": "Operação perigosa", + "keycard-connected-description": "Tente manter o cartão parado", + "keycard-connected-title": "Conectado", + "keycard-desc": "Tem um Keycard? Armazene suas chaves nele. Você precisará delas para as transações", + "keycard-dont-ask-card": "Não peça o cartão para entrar", + "keycard-enter-new-passcode": "Digite a nova senha {{step}} \/ 2", + "keycard-error-description": "Conecte o cartão novamente para continuar", + "keycard-error-title": "Conexão perdida", + "keycard-factory-reset": "Retornar cartão para as configurações de fábrica", + "keycard-factory-reset-text": "Fazer isso excluirá qualquer frase mnemônica armazenada no cartão. Certifique-se de ter um backup da frase mnemônica que está usando com este Keycard.", + "keycard-factory-reset-title": "Tem certeza de que deseja redefinir os padrões de fábrica?", + "keycard-free-pairing-slots": "O Keycard tem {{n}} portas de emparelhamento livres", + "keycard-has-multiaccount-on-it": "Este cartão está cheio. Cada cartão pode conter um par de chaves principal", + "keycard-init-description": "Coloque o cartão na parte de trás do telefone para continuar", + "keycard-init-title": "Procurando cartões…", + "keycard-is-blocked-details": "Você não pode mais usar este cartão para acessar ou assinar esta conta. Houve muitas tentativas falhas de senha e PUK.", + "keycard-is-blocked-instructions": "Para acessar sua conta, você precisará redefinir seu cartão para os padrões de fábrica. Toque no botão abaixo para iniciar o procedimento. Você precisará da sua frase-semente.", + "keycard-is-blocked-title": "O Keycard está bloqueado", + "keycard-is-frozen-details": "Para proteger os seus bens, o seu cartão travou. Redefina o acesso ao cartão para desbloquear e enviar transações. Você pode fazer isso com seu PUK ou seu mnemônico.", + "keycard-is-frozen-factory-reset": "Redefinir com mnemônica", + "keycard-is-frozen-reset": "Reiniciar com o PUK", + "keycard-is-frozen-title": "O Keycard travou", + "keycard-onboarding-finishing-header": "Finalizando", + "keycard-onboarding-intro-header": "Armazene suas chaves no Keycard", + "keycard-onboarding-intro-text": "Prepare-se, isso pode levar alguns minutos, mas é importante proteger sua conta", + "keycard-onboarding-mnemonic-text": "Você também precisará de um pedaço de papel e um lápis para escrever sua frase-semente.", + "keycard-onboarding-pairing-header": "Emparelhando o cartão...", + "keycard-onboarding-pin-text": "Você precisará criar uma senha de 6 dígitos que será usada para proteger o acesso ao seu Keycard.", + "keycard-onboarding-preparing-header": "Preparando o cartão...", + "keycard-onboarding-puk-code-header": "Anote os códigos e\n guarde de forma segura", + "keycard-onboarding-recovery-phrase-description": "Você precisa dessa frase-semente para recuperar sua chave. Anote e mantenha sua frase-semente offline em segurança, separada deste dispositivo.", + "keycard-onboarding-recovery-phrase-header": "Fazer backup da frase-semente", + "keycard-onboarding-recovery-phrase-text": "Somente para você ver. Esta é a frase-semente mágica usada para gerar sua chave.", + "keycard-onboarding-start-header": "Segure o cartão na parte de trás \n do seu telefone para começar", + "keycard-onboarding-start-step1": "Crie uma senha", + "keycard-onboarding-start-step1-text": "Em torno de 1 minuto. Crie uma senha de 6 dígitos para criptografar suas chaves", + "keycard-onboarding-start-step2": "Anote o PUK e o código de emparelhamento", + "keycard-onboarding-start-step2-text": "Em torno de 1 minuto. Você vai precisar de um pedaço de papel e um lápis para isso", + "keycard-onboarding-start-step3": "Faça backup da frase-semente", + "keycard-onboarding-start-step3-text": "Em torno de 1 minuto. Também são necessários um pedaço de papel e um lápis", + "keycard-onboarding-start-text": "E mantenha o cartão em contato com o telefone\n durante a configuração. A configuração levará cerca de 4 minutos", + "keycard-processing-description": "Tente manter o cartão parado", + "keycard-processing-title": "Processando…", + "keycard-recover": "cartão perdido ou travado?", + "keycard-recover-text": "Se você tem sua frase mnemônica, poderá criar um novo Keycard associado a esta conta. Você pode usar um novo Keycard ou redefinir os padrões de fábrica em um cartão travado.", + "keycard-recover-title": "Criar um novo cartão para esta conta?", + "keycard-recovery-intro-button-text": "Iniciar a recuperação", + "keycard-recovery-intro-header": "Recuperar chaves armazenadas no keycard", + "keycard-recovery-intro-text": "Se você gerou chaves usando um keycard antes e agora quer usar estas chaves neste dispositivo", + "keycard-recovery-no-key-header": "Não há nada para \n recuperar aqui.", + "keycard-recovery-no-key-text": "Seu Keycard não tem nenhuma chave armazenada. Para usá-lo, gere uma nova chave e escolha seu Keycard para armazenar a chave", + "keycard-recovery-phrase-confirm-header": "Confirmar frase-semente", + "keycard-recovery-phrase-confirmation-text": "Você não terá uma segunda chance! Se você perder o acesso, por exemplo ao perder seu keycard, só poderá acessar suas chaves com sua frase-semente. Somente você tem sua frase-semente. Anote e mantenha sua frase-semente em segurança.", + "keycard-recovery-phrase-confirmation-title": "Anotou a frase-semente?", + "keycard-recovery-success-header": "Suas chaves foram \n recuperadas com sucesso", + "keycard-redeem-title": "Resgatar para", + "keycard-redeem-tx": "Resgatar bens", + "keycard-redeem-tx-desc": "Toque no cartão para assinar e receber bens", + "keycard-reset-passcode": "Redefinir senha", + "keycard-success-description": "Você pode remover o cartão agora", + "keycard-success-title": "Sucesso", + "keycard-unauthorized-operation": "Você não está autorizado a realizar esta operação. \n Por favor, utilize o cartão válido e tente novamente.", + "keycard-upsell-subtitle": "Maior segurança e facilidade", + "kicked": "Cutucado", + "language": "Idioma", + "last-backup-performed": "Última cópia de segurança executada", + "last-transaction": "Última transação", + "learn-more": "Saiba mais", + "learn-more-about-keycard": "Saiba mais sobre o Keycard ", + "leave": "Sair", + "leave-chat": "Sair da conversa", + "leave-chat-confirmation": "O histórico do chat será removido do seu dispositivo. Depois de voltar você não será capaz de recuperar seu histórico.", + "leave-community": "Deixar a comunidade", + "leave-community-message": "Ficaremos tristes em vê-lo partir, mas lembre-se, você pode voltar a qualquer momento!", + "leave-community?": "Sair da comunidade?", + "leave-confirmation": "Sair de {{chat-name}}", + "leave-group": "Sair do grupo", + "leave-group?": "Deixar o Grupo?", + "left": "saiu", + "les-ulc": "LES\/ULC", + "lets-go": "Vamos lá", + "lifestyle": "Lifestyle", + "light": "Claro", + "limit": "Limite", + "link-to-community": "Link para a comunidade", + "linked-on": "Vinculado em {{date}}", + "load-messages-before": "antes de {{date}}", + "load-more-messages": "↓ Buscar mais mensagens", + "load-more-timeline": "↓ Buscar mais", + "loading": "Carregando...", + "local-notifications": "Notificações locais", + "local-notifications-subtitle": "Ativar serviço em segundo plano", + "lock-app-with": "Bloquear aplicativo com", + "log-level": "Nível de registro", + "log-level-settings": "Configurações de nível de registro", + "logging": "Registro", + "logging-enabled": "Registro ativado?", + "login-pin-description": "Digite seu código de acesso de 6 dígitos para desbloquear suas chaves", + "logout": "Sair", + "logout-app-content": "A conta será desconectada. Quando você a desbloquear novamente, a rede selecionada será usada", + "logout-are-you-sure": "Você tem certeza que quer \n sair?", + "logout-key-management": "Você precisa se desconectar para acessar o gerenciamento de chaves.", + "logout-title": "Sair?", + "looking-for-cards": "Procurando cartões…", + "lost-connection": "Conexão perdida", + "low-tip": "a gorjeta é muito baixa", + "lower-than-average-tip": "gorjeta inferior à média", + "mail-should-be-configured": "O cliente de e-mail deve ser configurado", + "mailserver-address": "Endereço do nó do Status", + "mailserver-automatic": "Seleção automática", + "mailserver-automatic-switch-explanation": "Escolha o nó da Status mais rápido disponível", + "mailserver-connection-error": "Não foi possível conectar ao nó do Status", + "mailserver-content": "Um nó na rede Status que encaminha e armazena mensagens por até 30 dias.", + "mailserver-details": "Detalhes do nó do Status", + "mailserver-error-content": "O nó do Status selecionado não pôde ser localizado.", + "mailserver-error-title": "Erro ao conectar o nó do Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Escolha outro nó do Status", + "mailserver-reconnect": "Não foi possível conectar ao nó do Status. Toque para reconectar", + "mailserver-request-error-content": "O seguinte erro foi retornado pelo nó do Status: {{error}}", + "mailserver-request-error-status": "Um erro ocorreu ao buscar o histórico, verifique os registros para obter detalhes", + "mailserver-request-error-title": "Erro de comunicação com o nó da Status", + "mailserver-request-retry": "Solicitar nova tentativa", + "mailserver-retry": "Tente novamente", + "mailserver-title": "Nó de mensagem Status", + "main-account": "Conta principal", + "main-currency": "Moeda principal", + "main-networks": "Redes principais", + "main-wallet": "Carteira principal", + "mainnet-network": "Rede principal", + "make-admin": "Tornar-se administrador", + "make-moderator": "Tornar moderador", + "manage-connections": "Gerenciar conexões de dentro do Application Connections", + "manage-keys-and-storage": "Gerenciar chaves e armazenamento", + "manage-members": "Gerenciar membros", + "mark-all-read": "Marcar todas como lidas", + "mark-as-read": "Marcar como lido", + "mark-untrustworthy": "Marcar como Não Confiável", + "mark-user-untrustworthy": "Marcar {{username}} como não confiável", + "master-account": "Conta mestre", + "max-fee": "Taxa máxima", + "max-priority-fee": "Taxa máxima de prioridade", + "maximum-fee": "Taxa máxima", + "maximum-fee-desc": "Preço total máximo para a transação. Se a taxa base do bloco atual exceder isso, sua transação será incluída em um bloco seguinte com uma taxa base mais baixa.", + "maybe-later": "Talvez mais tarde", + "member-ban": "Banir membro", + "member-kick": "Expulsar membro", + "members": { + "one": "1 membro", + "other": "{{count}} membros" + }, + "members-active": { + "one": "1 membro", + "other": "{{count}} membros" + }, + "members-active-none": "sem membros", + "members-count": "{{count}} membros", + "members-label": "Membros", + "members-limit-reached": "Limite de membros atingido", + "members-title": "Membros", + "membership": "Adesão", + "membership-approval": "Exigir aprovação", + "membership-approval-description": "Sua comunidade é livre para participar, mas novos membros são obrigados a ser aprovados pelo criador da comunidade primeiro", + "membership-button": "Requisitos de participação", + "membership-declined": "O pedido de entrada no grupo foi recusado", + "membership-description": "A entrada no grupo exige que você seja aceito pelo administrador do grupo", + "membership-ens": "Exigir nome de usuário ENS", + "membership-ens-description": "Sua comunidade requer um nome de usuário ENS para poder participar", + "membership-free": "Nenhuma exigência", + "membership-free-description": "Sua comunidade é livre para que qualquer pessoa possa participar", + "membership-invite": "Exigir convite de outro membro", + "membership-invite-description": "Sua comunidade só pode ser acessada por convite de membros existentes da comunidade", + "membership-none": "Nenhum", + "membership-none-placeholder": "Você pode exigir que novos membros atendam a certos critérios antes que eles possam participar. Isso pode ser alterado a qualquer momento", + "membership-request-denied": "Pedido de participação negado", + "membership-request-pending": "Pedido de participação pendente", + "membership-requests": "Pedidos de participação", + "membership-title": "Requisitos de participação", + "mention": "Menção", + "mentions": "Menções", + "message": "Mensagem", + "message-deleted": "Mensagem apagada", + "message-deleted-for-everyone": "Mensagem apagada para todos", + "message-deleted-for-you": "Mensagem excluída para você", + "message-not-sent": "Mensagem não enviada", + "message-options-cancel": "Cancelar", + "message-reply": "Responder", + "messages": "Mensagens", + "messages-from-contacts-only-subtitle": "Apenas as pessoas que você adicionou como contatos podem iniciar um novo bate-papo com você ou convidá-lo para um grupo", + "messages-gap-warning": "Algumas mensagens podem estar faltando", + "might-break": "Pode quebrar alguns ÐApps", + "migration-successful": "Migração realizada com sucesso", + "migration-successful-text": "Conta migrada com sucesso para o Keycard", + "migrations-failed-content": "{{message}} \n versão do esquema: inicial {{initial-version}} , atual {{current-version}} , última {{last-version}} \n\nOcorreu um erro no banco de dados. Seus fundos e chave de bate-papo estão seguros. Outros dados, como bate-papos e contatos, não podem ser restaurados. O botão \"{{erase-multiaccounts-data-button-text}}\" irá remover todos os outros dados e permitir que você acesse seus fundos e envie mensagens.", + "miners-higher-fee": "Os mineradores provavelmente incluirão sua transação mais cedo se você pagar uma taxa mais alta.", + "minimum-received": "Mínimo recebido", + "mobile-network-ask-me": "Pergunte-me quando estiver na rede móvel", + "mobile-network-continue-syncing": "Continuar a sincronizar", + "mobile-network-continue-syncing-details": "Você pode alterar isso mais tarde nas configurações", + "mobile-network-go-to-settings": "Ir para configurações", + "mobile-network-settings": "Dados móveis", + "mobile-network-sheet-configure": "Você pode configurar a sincronização com mais \ndetalhes em", + "mobile-network-sheet-offline": "Sem Wi-Fi, sincronização de mensagens desativada.", + "mobile-network-sheet-offline-details": "A sincronização usando a rede móvel está desativada", + "mobile-network-sheet-remember-choice": "Lembrar a minha escolha", + "mobile-network-sheet-settings": "configurações", + "mobile-network-start-syncing": "Iniciar sincronização", + "mobile-network-stop-syncing": "Parar de sincronizar", + "mobile-network-stop-syncing-details": "Está conectado ao Wi-Fi?", + "mobile-network-use-mobile": "Utilizar dados móveis", + "mobile-network-use-mobile-data": "O Status usa muitos dados ao sincronizar bate-papos e carteira.", + "mobile-network-use-wifi": "Somente Wi-Fi", + "mobile-syncing-sheet-details": "O Status usa muitos dados ao sincronizar bate-papos e carteira.", + "mobile-syncing-sheet-title": "Sincronizar usando dados móveis?", + "more": "mais", + "move-and-reset": "Mover e reiniciar", + "move-keystore-file": "Mover arquivo de armazenamento de chaves", + "move-keystore-file-to-keycard": "Mover arquivo de armazenamento de chaves para o Keycard?", + "multiaccount-exists-content": "Já existem chaves para esta conta e não podem ser adicionadas novamente. Se você perdeu sua senha, código de acesso ou Keycard, desinstale o aplicativo, reinstale e acesse suas chaves inserindo sua frase-semente", + "multiaccount-exists-title": "Já existem chaves para esta conta", + "multiaccounts-recover-enter-phrase-text": "Digite 12, 15, 18, 21 ou 24 palavras. \nSepare as palavras por um único espaço.", + "multiaccounts-recover-enter-phrase-title": "Digite sua frase-semente", + "music": "Música", + "mutal-contacts": "Contatos mútuos", + "mute": "Silenciar", + "mute-chat": "Silenciar chat", + "mute-community": "Silenciar comunidade", + "mute-group": "Silenciar grupo", + "mutual-contact-requests": "Solicitações de contato mútuo", + "my-accounts": "Minhas contas", + "my-accounts-empty": "Suas contas disponíveis aparecerão aqui", + "my-profile": "Meu perfil", + "my-status": "Meu status", + "n-photos": "{{count}} fotos", + "name": "Nome", + "name-of-token": "O nome do seu token", + "name-optional": "Nome (opcional)", + "name-your-channel": "Dê um nome ao seu canal", + "name-your-channel-placeholder": "Nome do canal", + "name-your-community": "Dê um nome para sua comunidade", + "name-your-community-placeholder": "Um nome atraente", + "need-help": "Precisa de ajuda?", + "negative": "Negativo", + "network": "Rede", + "network-chain": "Cadeia de rede", + "network-details": "Detalhes da rede", + "network-fee": "Taxa de rede", + "network-id": "ID de rede", + "network-info": "Informações da rede", + "network-invalid-network-id": "O ID da rede especificado não corresponde ao ID da rede pelo URL RPC", + "network-invalid-status-code": "Código de status inválido: {{code}}", + "network-invalid-url": "URL da rede é inválida", + "network-settings": "Configurações de rede", + "never": "Nunca", + "new": "Novo", + "new-category": "Nova categoria", + "new-chat": "Nova conversa", + "new-community-title": "Nova comunidade", + "new-contact": "Novo contato", + "new-contract": "Novo Contrato", + "new-favourite": "Novo favorito", + "new-group": "Novo grupo", + "new-group-chat": "Novo grupo de bate-papo", + "new-messages-header": "Novas Mensagens", + "new-network": "Nova rede", + "new-password": "Nova Senha", + "new-pin-description": "Digite o novo código de acesso de 6 dígitos", + "new-public-group-chat": "Participar do bate-papo público", + "new-puk-description": "Insira o novo PUK de 12 dígitos", + "new-status": "Novo status", + "new-tab": "Nova aba", + "new-ui": "Nova UI", + "next": "Próximo", + "nickname": "Apelido", + "nickname-description": "Os apelidos ajudam você a identificar as pessoas no Status. \n Só você pode ver os apelidos que adicionou", + "no": "Não", + "no-collectibles": "Não há colecionáveis disponíveis", + "no-contacts": "Você ainda não tem contatos", + "no-keycard-applet-on-card": "Não há applet Keycard no cartão", + "no-messages": "Nenhuma mensagem", + "no-pairing-slots-available": "Este cartão já está emparelhado com 5 dispositivos e não pode ser emparelhado com este. Use um dos dispositivos emparelhados, faça login com este cartão e libere uma porta de emparelhamento no cartão", + "no-pinned-messages": "Nenhuma mensagem fixada", + "no-pinned-messages-community-desc": "Este canal não tem mensagens fixadas.", + "no-pinned-messages-desc": "Este chat não tem mensagens fixadas.", + "no-result": "Nenhum resultado", + "no-thanks": "Não, obrigado", + "no-tokens-found": "Nenhum token encontrado", + "node-address": "Endereço do nó", + "node-details": "Detalhes do nó", + "node-info": "Informação do nó", + "node-version": "Versão do nó", + "nodes-disabled": "Nós do Status desativados", + "non-archival-node": "O endpoint RPC não oferece suporte a solicitações de arquivamento. Seu histórico de transferências locais pode estar incompleto.", + "non-contacts": "Sem contatos", + "nonce": "Nonce", + "none": "Nenhum", + "normal": "Normal", + "not-applicable": "Não aplicável a transações não assinadas", + "not-connected-nodes": "Não conectado a um nó do Status", + "not-connected-to-peers": "Não conectado a nenhum par", + "not-enough-snt": "SNT insuficiente", + "not-found": "Não encontrado", + "not-keycard-text": "O cartão que você usou não é um Keycard. Você precisa comprar um Keycard para usá-lo", + "not-keycard-title": "Não é um Keycard", + "not-registered": "não cadastrado", + "notification-settings": "Notificações", + "notifications": "Notificações", + "notifications-non-contacts": "Notificações de não contatos", + "notifications-preferences": "Preferências de notificação", + "notifications-servers": "Servidores de notificação", + "notifications-switch": "Mostrar notificações", + "notifications-transactions": "Transações da carteira", + "notify": "Notificar", + "now": "agora", + "off": "Desativado", + "off-status-tree": "Árvore Status desativada", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Ative os nós da Status para buscar mensagens enviadas enquanto o aplicativo está fechado. Quando ativado, um nó de histórico obtém seu endereço IP. Quando desativado, você não receberá mensagens quando o aplicativo for fechado e não as verá quando abrir o app mais tarde.", + "offline-messaging-use-history-nodes": "Usar nós de mensagem da Status", + "ok": "OK", + "ok-continue": "Ok, continuar", + "ok-got-it": "Ok, entendido", + "ok-save-pass": "OK, salvar senha", + "okay": "OK", + "on": "Ativado", + "on-status-tree": "Árvore Status ativada", + "once-enabled-share-metadata": "Uma vez habilitados, os links postados no chat podem compartilhar seus metadados com o site", + "one-day": "Um dia", + "one-month": "Um mês", + "one-week": "Uma semana", + "online": "Online", + "only-mentions": "Apenas @menções", + "open": "Abrir", + "open-chat": "Abrir chat", + "open-dapp": "Abrir ÐApp", + "open-dapp-store": "Descubra ÐApps", + "open-home": "Abrir...", + "open-in-new-tab": "Abrir em nova aba", + "open-membership": "Participação aberta", + "open-nfc-settings": "Abrir configurações do NFC", + "open-on-block-explorer": "Abrir no explorador de blocos", + "opened": "Aberto", + "opening-buy-crypto": "Abrindo {{site}}...", + "optimal": "Ótimo", + "optional": "opcional", + "or": "ou", + "outgoing": "Enviados", + "outgoing-transaction": "Transação enviada", + "owner": "Proprietário", + "page-camera-request-blocked": "Solicitações de câmera bloqueadas. Para habilitar as solicitações de câmera, vá em Configurações", + "page-would-like-to-use-camera": "gostaria de usar sua câmera", + "pair": "Sincronizar dispositivos", + "pair-card": "Sincronizar para este dispositivo", + "pair-code": "Código de par", + "pair-code-explanation": "Emparelha o cartão com um dispositivo diferente (até 5) para desbloquear as chaves e assinar transações com o mesmo Keycard", + "pair-code-placeholder": "Código de emparelhamento…", + "pair-this-card": "Emparelhar este cartão", + "pair-this-device": "Anunciar dispositivo", + "pair-this-device-description": "Emparelhe seus dispositivos para sincronizar contatos e bate-papos entre eles", + "paired-devices": "Dispositivos sincronizados", + "pairing": "Emparelhamento", + "pairing-card": "Cartão de emparelhamento", + "pairing-changed": "Código de emparelhamento foi alterado", + "pairing-code-placeholder": "Código de emparelhamento...", + "pairing-code_error1": "Os códigos de emparelhamento não correspondem.", + "pairing-go-to-installation": "Ir para as configurações de sincronização", + "pairing-maximum-number-reached-content": "Desative um dos seus dispositivos antes de ativar um novo.", + "pairing-maximum-number-reached-title": "Atingido o número máximo de dispositivos", + "pairing-new-installation-detected-content": "Um novo dispositivo foi detectado. \nPara usar seus dispositivos corretamente, é importante emparelhá-los e ativá-los antes de usar. \nAcesse a seção configurações dos dispositivos para parear seus dispositivos.", + "pairing-new-installation-detected-title": "Novo dispositivo detectado", + "pairing-no-info": "Sem informações", + "pairing-please-set-a-name": "Defina um nome para o seu dispositivo.", + "passphrase": "Frase-semente", + "password": "Senha", + "password-description": "Pelo menos 6 caracteres. Sua senha protege suas chaves. Você precisa dela para desbloquear o Status e fazer transações.", + "password-mismatch": "A nova senha e a confirmação não correspondem", + "password-placeholder": "Senha…", + "password-placeholder2": "Confirme sua senha", + "password-reset-in-progress": "Alterando senha...", + "password-reset-success": "Redefinição de senha", + "password-reset-success-message": "Você precisará entrar novamente", + "password_error1": "As senhas não correspondem.", + "paste": "Colar", + "paste-json": "Colar JSON", + "pay-to-chat": "Pagar para conversar", + "peer-content": "Um dispositivo conectado à rede de bate-papo Status. Cada usuário pode representar um ou mais pares, dependendo do número de dispositivos.", + "peer-title": "Par", + "peer-to-peer": "P2P", + "peers": "Pares", + "peers-count": "Contagem de pares", + "peers-stats": "Estatísticas de pares", + "pending": "Pendente", + "pending-confirmation": "Confirmação pendente...", + "pending-invitations": "Pedidos de entrada pendentes", + "pending-requests": "Solicitações pendentes", + "per-gas-price-limit": "Limite de preço por gás", + "per-gas-tip-limit": "Limite de gorjeta\npor gás", + "perform-backup": "Fazer cópia de segurança", + "permissions": "Permissões", + "phone-e164": "Internacional 1", + "photos": "Fotos", + "photos-access-error": "Para conceder a permissão de fotos necessária, acesse as configurações do sistema e verifique se Status > Fotos está selecionado.", + "pin": "Fixar", + "pin-changed": "O código de acesso de 6 dígitos foi alterado", + "pin-code": "Código de acesso de 6 dígitos", + "pin-limit-reached": "Limite de mensagens fixadas atingido. Desafixe uma mensagem anterior primeiro.", + "pin-mismatch": "Código de acesso incorreto", + "pin-one-attempt": "uma tentativa", + "pin-one-attempt-blocked-after": "antes que o seu Keycard seja bloqueado", + "pin-one-attempt-blocked-before": "Cuidado, você só tem", + "pin-one-attempt-frozen-after": "antes que o seu Keycard trave", + "pin-one-attempt-frozen-before": "Cuidado, você só tem", + "pin-retries-left": "{{number}} tentativas restantes", + "pin-to-channel": "Fixar ao canal", + "pin-to-chat": "Fixar na conversa", + "pinned-a-message": "fixou uma mensagem", + "pinned-by": "Fixado por", + "pinned-messages": "Mensagens fixadas", + "pinned-messages-2": "Mensagens\n fixadas", + "pinned-messages-count": { + "one": "1 mensagem fixada", + "other": "{{count}} mensagens fixadas" + }, + "pinned-messages-empty": "As mensagens fixadas aparecerão aqui. Para fixar uma mensagem, pressione e segure e toque em `Fixar`", + "podcasts": "Podcasts", + "positive": "Positivo", + "powered-by-paraswap": "Desenvolvido por Paraswap", + "preference": "Preferência", + "preview-privacy": "Visualizar modo de privacidade", + "previewing-may-share-metadata": "Visualizar links desses sites pode compartilhar seus metadados com os proprietários", + "price-impact": "Impacto do preço", + "price-impact-desc": "Impacto de preço estimado para esta transação. Se a taxa base do bloco atual exceder isso, sua transação será incluída em um bloco seguinte com uma taxa base mais baixa.", + "principles": "Princípios", + "priority": "Prioridade", + "privacy": "Privacidade", + "privacy-and-security": "Privacidade e segurança", + "privacy-photos": "Privacidade da Foto de Perfil", + "privacy-policy": "Política de privacidade", + "privacy-show-to-warning": "As pessoas que já viram sua foto de perfil continuarão vendo", + "private-key": "Chave privada", + "private-notifications": "Notificações privadas", + "private-notifications-descr": "O Status notificará você sobre novas mensagens. Você pode editar suas preferências de notificação nas configurações.", + "processing": "Aguarde um momento", + "product-information": "Informações do produto", + "profile": "Perfil", + "profile-deleted-content": "O seu perfil foi excluído com sucesso", + "profile-deleted-keycard": "Agora você pode restaurar outro par de chaves no seu Keycard", + "profile-deleted-title": "Perfil excluído", + "profile-details": "Detalhes do perfil", + "profile-not-found": "Perfil não encontrado", + "profile-pic-pick": "Escolher na galeria", + "profile-pic-remove": "Remover foto", + "profile-pic-take": "Tirar foto", + "profile-picture-updated": "Foto do perfil atualizada", + "public": "Público", + "public-channel": "Canal público", + "public-chat": "Conversa pública", + "public-chat-description": "Participe de bate-papos públicos sobre seus interesses! Qualquer um pode começar uma nova sala.", + "public-chats": "Conversas públicas", + "public-group-status": "Público", + "public-group-topic": "Assunto", + "public-key": "Chave pública", + "puk-and-pairing-codes-displayed": "Códigos PUK e de emparelhamento exibidos", + "puk-changed": "PUK de 12 dígitos foi alterado", + "puk-code": "Código PUK", + "puk-code-explanation": "Se você esquecer seu código de acesso de 6 dígitos ou inseri-lo incorretamente três vezes, precisará desse código para desbloquear seu cartão.", + "puk-mismatch": "Código PUK errado", + "push-failed-transaction": "Falha na sua transação", + "push-failed-transaction-body": "{{value}} {{currency}} para {{to}}", + "push-inbound-transaction": "Você recebeu {{value}} {{currency}}", + "push-inbound-transaction-body": "De {{from}} para {{to}}", + "push-notifications-server-enabled": "Servidor habilitado", + "push-notifications-servers": "Servidores de notificação push", + "push-outbound-transaction": "Você enviou {{value}} {{currency}}", + "push-outbound-transaction-body": "De {{from}} para {{to}}", + "quiet-days": "{{quiet-days}} dias", + "quiet-hours": "{{quiet-hours}} horas", + "re-encrypt-key": "Recriptografe suas chaves", + "rearrange-categories": "Reorganizar Categorias", + "receive": "Receber", + "receive-transaction": "Receber transação", + "received": "Recebido", + "recent": "Recentes", + "recent-empty": "Os endereços usados recentemente aparecerão aqui", + "recent-recipients": "Contatos", + "recently-used-stickers": "Os adesivos usados recentemente aparecerão aqui", + "recipient": "Destinatário", + "recipient-code": "Digite o endereço do destinatário", + "recipient-code-placeholder": "0x… ou nome.dominio.eth", + "recover": "Recuperar", + "recover-key": "Acessar chaves existentes", + "recover-keycard-multiaccount-not-supported": "Já existem chaves para esta conta e não podem ser adicionadas novamente. Se você perdeu sua senha, código de acesso ou Keycard, desinstale o aplicativo, reinstale e acesse suas chaves inserindo sua frase-semente", + "recover-with-keycard": "Recuperar com Keycard", + "recover-with-seed-phrase": "Recupere com a frase-semente", + "recovering-key": "Acessando chaves…", + "recovery-confirm-phrase": "Confirmar frase-semente", + "recovery-phrase": "Frase-semente", + "recovery-success-text": "Você terá que definir um novo código ou senha para recriptografar suas chaves", + "recovery-typo-dialog-description": "Observe que sua frase-semente deve usar exatamente as mesmas palavras e ordem que você recebeu", + "recovery-typo-dialog-title": "A frase-semente está correta?", + "redeem-amount": "{{quantity}} bônus disponíveis", + "redeem-now": "Resgatar agora", + "redeem-success": "Resgate de bônus com sucesso!", + "reduced-tip": "a gorjeta prioritária será reduzida", + "refresh": "Atualizar", + "registered": "cadastrado", + "reject": "Rejeitar", + "reject-and-delete": "Rejeitar e apagar", + "remember-me": "Lembrar-me", + "remind-me-later": "Mostrar isso novamente", + "remote-notifications": "Notificações remotas", + "remote-notifications-subtitle": "Ativar notificações push do google", + "remove": "Remover", + "remove-favourite": "Remover favorito", + "remove-from-chat": "Remover do chat", + "remove-from-contacts": "Remover dos contatos", + "remove-from-contacts-text": "Ao remover um usuário da sua lista de contatos, você não esconde dele o endereço da sua carteira", + "remove-group": "Remover grupo", + "remove-network": "Remover rede", + "remove-token": "Remover token", + "remove-user-from-group": "Remover {{username}} do grupo", + "removed": "removeu", + "removed-from-contacts": "Removido dos contatos", + "rename": "Renomear", + "repeat-pin": "Repita os 6 novos dígitos do código de acesso", + "repeat-puk": "Repita o novo PUK de 12 dígitos", + "replied": "Respondeu", + "replies": "Respostas", + "replying-to": "Respondendo a {{author}}", + "report-bug-email-template": "1. Descrição do problema \n (Descreva o recurso que você deseja ou resuma brevemente o bug e o que você fez, o que esperava que acontecesse e o que realmente acontece. Seções abaixo) \n\n\n 2. Passos para reproduzir \n (Descreva como podemos replicar o bug passo a passo.) \n - Abrir Status\n - ... \n - Etapa 3, etc. \n\n\n 3. Comportamento esperado \n (Descreva o que você esperava que acontecesse.) \n\n\n 4. Comportamento real \n (Descreva o que realmente aconteceu.) \n\n\n 5. Por favor, anexe capturas de tela que possam demonstrar o problema", + "request-access": "Solicitar acesso", + "request-feature": "Solicitar um recurso", + "request-membership": "Solicitar para entrar", + "request-pending": "Pedido pendente…", + "request-to-join": "Solicitar para participar", + "request-transaction": "Solicitar transação", + "required-field": "Campo obrigatório", + "resend-message": "Reenviar", + "reset-card": "Redefinir cartão", + "reset-card-description": "Esta operação redefinirá o cartão para o estado inicial. Ele apagará todos os dados do cartão, incluindo chaves privadas. A operação não é reversível.", + "reset-database": "Reiniciar base de dados", + "reset-database-warning": "Excluir conversas, contatos e configurações. Obrigatório quando você perder sua senha", + "reset-database-warning-keycard": "Excluir conversas, contatos e configurações.", + "reset-password": "Redefinir senha", + "restore-defaults": "Restaurar padrões", + "retry": "Tentar de novo", + "revoke-access": "Recuperar acesso", + "rpc-url": "RPC URL", + "rpc-usage-copy": "Copiar", + "rpc-usage-filter": "Métodos de filtro", + "rpc-usage-filter-methods": "Métodos de filtro", + "rpc-usage-filtered-total": "{{filtered-total}} de {{total}}", + "rpc-usage-get-stats": "Atualizar", + "rpc-usage-info": "Estatísticas de uso de RPC", + "rpc-usage-reset": "Redefinir", + "rpc-usage-total": "Total", + "safe-estimate": "Estimativa segura", + "save": "Salvar", + "save-image-library": "Salvar imagem na biblioteca", + "save-password": "Salvar senha", + "save-password-unavailable": "Defina o código de acesso do dispositivo para salvar a senha", + "save-password-unavailable-android": "Salvar senha não está disponível: seu dispositivo pode estar \"rooteado\" ou não possui os recursos de segurança necessários.", + "say-hi": "Diga oi", + "scan-qr": "Escanear código QR", + "scan-qr-code": "Escaneie um código QR com um endereço de carteira", + "scan-tokens": "Escanear tokens", + "search": "Procurar", + "search-contacts": "Buscar contatos", + "search-discover-communities": "Pesquisar comunidades ou categorias", + "search-no-chat-found": "Sem resultados. Você quer dizer", + "secret-keys-confirmation-text": "Você vai precisar deles para continuar a usar o seu Keycard no caso de perder o seu celular.", + "secret-keys-confirmation-title": "Já anotou os códigos?", + "security": "Segurança", + "see-details": "Ver detalhes", + "see-it-again": "VEJA NOVAMENTE", + "see-sticker-set": "Veja o conjunto completo de adesivos", + "see-suggestions": "Veja sugestões", + "seed-key-uid-mismatch": "Semente não corresponde", + "seed-key-uid-mismatch-desc-1": "A frase-semente que você inseriu não corresponde a {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Para gerenciar as chaves para esta conta, verifique sua frase-semente e tente novamente.", + "seed-phrase-content": "Um conjunto de palavras fáceis de ler, selecionadas aleatoriamente na lista padrão BIP39 e usadas para recuperar ou acessar sua conta Ethereum em outras carteiras e dispositivos. Também chamada de \"frase mnemônica\", \"frase de recuperação\" ou \"backup de carteira\" em todo o ecossistema de criptomoeda. A maioria dos aplicativos de criptomoeda usa esse mesmo padrão para gerar contas.", + "seed-phrase-placeholder": "Frase-semente…", + "seed-phrase-title": "Frase-semente", + "select": "Selecionar", + "select-account": "Selecionar conta", + "select-account-dapp": "Selecione a conta que você deseja usar com Dapps", + "select-account-first": "Selecione uma conta primeiro", + "select-chat": "Selecionar bate-papo para iniciar o envio de mensagens", + "select-new-location-for-keys": "Selecione um novo local para salvar sua(s) chave(s) privada(s)", + "select-token-to-receive": "Selecione o token para receber", + "select-token-to-swap": "Selecione o token para trocar", + "selected": "Selecionado", + "send": "Enviar", + "send-contact-request-message": "Para iniciar um chat, você precisa se tornar um contato", + "send-logs": "Relatar um bug", + "send-logs-to": "Relatar um bug para {{email}}", + "send-message": "Enviar mensagem", + "send-push-notifications": "Enviar Notificações Push", + "send-push-notifications-description": "Quando desativado, a pessoa que recebe suas mensagens não será notificada de suas novas mensagens", + "send-reply": "Enviar resposta", + "send-request": "Enviar pedido", + "send-request-amount": "Quantidade", + "send-request-amount-max-decimals": "O número máximo de decimais é {{asset-decimals}}", + "send-request-unknown-token": "Token desconhecido - {{asset}}", + "send-sending-to": "para {{recipient-name}}", + "send-transaction": "Enviar transação", + "sending": "Enviando", + "sent": "Enviado", + "sent-at": "Enviado em", + "server": "Servidor", + "set-a-topic": "Criar um tópico", + "set-currency": "Definir moeda", + "set-custom-fee": "Definir taxa personalizada", + "set-dapp-access-permissions": "Definir permissões de acesso do DApp", + "set-max": "Definir máximo", + "settings": "Configurações", + "share": "Compartilhar", + "share-address": "Compartilhar endereço", + "share-chat": "Compartilhar bate-papo", + "share-community": "Compartilhar comunidade", + "share-contact-code": "Compartilhar minha chave de bate-papo", + "share-dapp-text": "Confira este DApp que estou usando no Status: {{link}}", + "share-image": "Compartilhar imagem", + "share-invite-link": "Compartilhar um link de convite", + "share-link": "Compartilhar link", + "share-logs": "Compartilhar logs", + "share-my-profile": "Compartilhar meu perfil", + "share-profile": "Compartilhar perfil", + "share-profile-link": "Compartilhar link do perfil", + "share-public-chat-text": "Confira este bate-papo público no app Status: {{link}}", + "shared": "Compartilhado", + "sharing-copied-to-clipboard": "Copiado", + "sharing-copy-to-clipboard": "Copiar", + "sharing-data-desc-1": "Os dados são validados de acordo com as regras públicas para garantir que nenhum dado sensível seja enviado. Não confie, verifique.", + "sharing-data-desc-2": "Os dados de uso são enviados criptografados de ponta a ponta pela rede ponto a ponto (P2P) do Status", + "sharing-data-desc-3": "Em vez de sua chave de bate-papo normal, uma chave de uso único é utilizada", + "sharing-data-desc-4": "Os dados de uso não podem ser associados ao seu endereço IP", + "sharing-data-desc-5": "Os dados acumulados de todos os usuários estão disponíveis publicamente", + "sharing-data-desc-6": "Os dados são removidos do seu telefone após serem enviados", + "sharing-share": "Compartilhar", + "shell-placeholder-subtitle": "Abra abas de suas comunidades, mensagens,\n conta da carteira e janelas do navegador", + "shell-placeholder-title": "Seus aplicativos serão executados aqui", + "show-less": "Mostre menos", + "show-more": "Mostrar mais", + "show-notifications": "Mostrar notificações", + "show-profile-pictures": "Mostrar fotos de perfil de", + "show-profile-pictures-to": "Mostre sua foto de perfil para", + "show-qr": "Mostrar código QR", + "show-transaction-data": "Mostrar dados da transação", + "sign-and-send": "Assinar e enviar", + "sign-anyway": "Assinar mesmo assim", + "sign-in": "Entrar", + "sign-message": "Assinar Mensagem", + "sign-out": "Sair da sessão", + "sign-request-failed": "Não foi possível assinar a mensagem", + "sign-with": "Assinar com", + "sign-with-password": "Assinar com senha", + "sign-you-in": "Iniciando sessão...", + "signing": "Assinatura", + "signing-a-message": "Assinando uma mensagem", + "signing-phrase": "Frase de assinatura", + "skip": "Pular", + "slippage": "Derrapagem", + "slow": "Lento", + "something-went-wrong": "Algo deu errado", + "soon": "Em breve", + "sort-communities": "Classificar comunidades", + "specify-address": "Especificar endereço", + "specify-name": "Especifique um nome", + "specify-network-id": "Especifique o ID da rede", + "specify-rpc-url": "Especifique um URL RPC", + "specify-server-public-key": "Digite a chave pública do servidor", + "specify-symbol": "Especifique um símbolo", + "start-chat": "Iniciar bate-papo", + "start-conversation": "Iniciar conversa", + "start-group-chat": "Iniciar conversa em grupo", + "start-new-chat": "Iniciar nova conversa", + "starter-pack-coming": "Pacote de iniciante vindo até você", + "starter-pack-coming-description": "Pode levar de alguns minutos a horas", + "starter-pack-received": "Pacote inicial recebido", + "starter-pack-received-description": "Aqui estão algumas criptomoedas para você começar! Use-as para obter adesivos, um nome ENS e testar alguns dapps", + "status": "Status", + "status-always-online": "Sempre Online", + "status-automatic": "Automático", + "status-automatic-subtitle": "Definir status automaticamente", + "status-confirmed": "Confirmado", + "status-dnd": "Não perturbe", + "status-dnd-subtitle": "Silencia todas as notificações", + "status-hardwallet": "Hardwallet Status", + "status-inactive": "Inativo", + "status-inactive-subtitle": "Oculta seu status online", + "status-is-open-source": "O status é de código aberto", + "status-keycard": "Keycard Status", + "status-mobile-descr": "O Status usa muitos dados ao sincronizar conversas. Você pode optar por não sincronizar quando na rede móvel", + "status-not-sent-click": "Não confirmado. Clique para opções", + "status-not-sent-tap": "Não confirmado. Toque para opções", + "status-pending": "Pendente", + "status-sent": "Enviado", + "status-tx-not-found": "TX não encontrado", + "status-updates-descr": "As atualizações de status aparecerão aqui. Adicione este perfil como um contato para receber atualizações em sua linha do tempo.", + "statuses-descr": "Compartilhe o que você está pensando e fique atualizado com seus contatos", + "statuses-my-status-descr": "Compartilhe o que você está pensando. Qualquer pessoa que visitar seu perfil poderá ver seu status. As pessoas que adicionam você como contato receberão suas atualizações na linha do tempo delas", + "step-i-of-n": "Etapa {{step}} de {{number}}", + "sticker": "Sticker", + "sticker-market": "Mercado de adesivos", + "storage": "Armazenamento", + "strikethrough": "Riscado", + "submit": "Enviar", + "submit-bug": "Relatar um bug", + "success": "Sucesso", + "successful-connection": "Conexão Bem-sucedida", + "suggested-min-tip": "Gorjeta mínima sugerida", + "suggested-price-limit": "Limite de preço sugerido", + "swap": "Troca", + "swap-details": "Trocar detalhes", + "switch-to-simple-interface": "Mudar para interface simples", + "symbol": "Símbolo", + "sync-all-devices": "Sincronizar todos dispositivos", + "sync-in-progress": "Sincronizando...", + "sync-settings": "Configurações de sincronização", + "sync-synced": "Sincronizado", + "syncing-devices": "Sincronizando...", + "system": "Sistema", + "tabs": "Abas", + "tag-was-lost": "A tag foi perdida", + "tap-card-again": "Aproxime o cartão na parte de trás do seu telefone novamente", + "terms-of-service": "Termos de uso", + "test-networks": "Redes de teste", + "text-input-disabled": "Aguarde um momento…", + "thank-you": "Obrigado", + "this-device": "Este dispositivo", + "this-device-desc": "Suas chaves serão criptografadas e armazenadas com segurança no seu dispositivo", + "this-is-you-signing": "Esta é a sua frase de assinatura", + "this-will-take-few-seconds": "Isso levará alguns segundos", + "three-days": "Três dias", + "three-words-description": "Você deve ver essas três palavras antes de assinar cada transação", + "three-words-description-2": "Se você ver uma combinação diferente, cancele a transação e finalize a sessão", + "timeline": "Linha do tempo", + "tip-cap": "Limite de gorjeta", + "to": "Para", + "to-block": "Bloquear ", + "to-enable-biometric": "Para ativar o {{bio-type-label}}, você deve salvar sua senha na tela de desbloqueio", + "to-encrypt-enter-password": "Para criptografar a conta, digite sua senha", + "to-see-this-message": "Para ver esta mensagem,", + "token": "Token", + "token-auto-validate-decimals-error": "Decimais incorretos para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-auto-validate-name-error": "Nome incorreto para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-auto-validate-symbol-error": "Símbolo incorreto para o token {{symbol}} no endereço {{address}} - definido como {{expected}} mas detectado como {{actual}}", + "token-details": "Detalhes do Token", + "token-price": "Preço do Token", + "topic-name-error": "Use apenas letras minúsculas (a a z), números e traços (-). Não use teclas de bate-papo", + "total-gas": "Gas total", + "total-members": "Total de membros", + "transaction": "Transação", + "transaction-data": "Dados da transação", + "transaction-declined": "Transação recusada", + "transaction-description": "Considere-o completo após 12 confirmações na rede.", + "transaction-details": "Detalhes da transação", + "transaction-failed": "Falha na transação", + "transaction-fee": "Taxa de transação", + "transaction-history": "Histórico de transações", + "transaction-request": "Solicitação de transação", + "transaction-sent": "Transação enviada", + "transaction-signed": "A transação foi assinada com sucesso", + "transactions": "Transações", + "transactions-filter-select-all": "Selecionar tudo", + "transactions-filter-title": "Filtrar histórico", + "transactions-history": "Histórico de transações", + "transactions-history-empty": "Ainda não há transações no seu histórico", + "transactions-history-loading": "Carregando histórico de transações. Isso pode demorar um pouco.", + "transactions-load-more": "Carregar mais", + "transactions-management-enabled": "Gerenciamento de transações (alfa)", + "transactions-sign": "Assinar", + "transfer-ma-unknown-error-desc-1": "Parece que sua conta múltipla não foi excluída. O banco de dados pode ter sido redefinido", + "transfer-ma-unknown-error-desc-2": "Verifique sua lista de contas e tente novamente. Se a conta não estiver listada, vá para Acessar as chaves existentes para recuperar com a frase-semente", + "transfers-fetching-failure": "O histórico de transferências não pôde ser atualizado. Verifique sua conexão e puxe para baixo para tentar novamente", + "tribute-required-by-multiaccount": "{{multiaccount-name}} precisa de SNT para começar uma conversa.", + "tribute-state-paid": "Tributo pago", + "tribute-state-pending": "Tributo pendente", + "tribute-state-required": "Requer {{snt-amount}} tributos em SNT", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "Adicione amigos como um contato para permitir bate-papos sem pagamento de tributo.", + "tribute-to-talk-are-you-friends": "Vocês são amigos?", + "tribute-to-talk-ask-to-be-added": "Peça para ser adicionado como um contato", + "tribute-to-talk-contact-received-your-tribute": " recebeu seu tributo. Agora vocês podem conversar com segurança.", + "tribute-to-talk-desc": "Monetize sua atenção exigindo pagamento de SNT para novas pessoas iniciem um bate-papo", + "tribute-to-talk-disabled": "Tribute to Talk desativado", + "tribute-to-talk-disabled-note": "A partir de agora, novas pessoas podem iniciar um bate-papo com você sem enviar o SNT.", + "tribute-to-talk-enabled": "Você tem o Tribute to Talk ativado.", + "tribute-to-talk-finish-desc": "A partir de agora, você receberá apenas conversas de contatos e pessoas que pagaram ", + "tribute-to-talk-learn-more-1": "Seu tempo e atenção são seus ativos mais valiosos. O Tribute to Talk permite definir uma quantidade de SNT necessária para novas pessoas iniciarem um bate-papo com você.", + "tribute-to-talk-learn-more-2": "Qualquer pessoa que não esteja na sua lista de contatos será solicitada a pagar e você pode responder assim que ela efetuar o pagamento.", + "tribute-to-talk-learn-more-3": "Você sempre pode enviar o dinheiro de volta, mas para garantir que os amigos possam entrar em contato com você gratuitamente, adicione-os primeiro como contato.", + "tribute-to-talk-paywall-learn-more-1": "Nosso tempo e atenção são nossos ativos mais valiosos. O Tribute to Talk permite que você entre em contato com novas pessoas em troca de um pagamento SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para iniciar um bate-papo com alguém que tenha um conjunto de tributos, basta pagar o SNT necessário e você será adicionado como um contato.", + "tribute-to-talk-paywall-learn-more-3": "Se você os conhece, pode compartilhar seu perfil fora do Status para ser adicionado gratuitamente.", + "tribute-to-talk-pending": "Tributo pendente de confirmação", + "tribute-to-talk-pending-note": "A transação de tributo está pendente de confirmação na rede. Você pode verificar seu status no histórico de transações", + "tribute-to-talk-removing-note": "A remoção do Tribute to Talk permitirá que novas pessoas iniciem um bate-papo sem enviar o SNT. Requer que uma transação seja feita.", + "tribute-to-talk-set-snt-amount": "Defina a quantidade de SNT necessária para novas pessoas iniciarem um bate-papo", + "tribute-to-talk-signing": "Aguardando para assinar a transação", + "tribute-to-talk-transaction-failed-note": "A transação falhou e as configurações do Tribute to Talk não foram alteradas", + "tribute-to-talk-tribute-received1": "Tributo recebido. Você e", + "tribute-to-talk-tribute-received2": "agora são contatos e podem conversar com segurança.", + "tribute-to-talk-you-require-snt": "Você requer SNT para novas pessoas iniciarem um bate-papo.", + "try-again": "Tente novamente", + "try-keeping-the-card-still": "Tente manter o cartão parado", + "turn-nfc-description": "NFC está desativado no seu dispositivo. Você pode habilitá-lo nas configurações", + "turn-nfc-on": "Ative a NFC para continuar", + "two-minutes": "dois minutos", + "tx-fail-description1": "É provável que esta transação falhe. Assine por sua conta e risco usando uma taxa de rede personalizada.", + "tx-fail-description2": "É provável que esta transação falhe. Defina uma taxa de rede personalizada para assinar por sua conta e risco.", + "type": "Tipo", + "type-a-message": "Mensagem", + "type-something": "Digite algo", + "ulc-enabled": "ULC ativado", + "unable-to-fetch": "Não foi possível obter o histórico de conversas", + "unable-to-read-this-code": "Não foi possível ler este código", + "unable-to-send-messages": "Incapaz de enviar e receber mensagens", + "unblock": "Desbloquear", + "unblock-contact": "Desbloquear este usuário", + "undo": "Desfazer", + "unknown-status-go-error": "Erro desconhecido de status-go", + "unlimited": "Ilimitado", + "unlock": "Desbloquear", + "unmute": "Ativar som", + "unmute-chat": "Ativar som do chat", + "unmute-community": "Ativar o som da comunidade", + "unmute-group": "Ativar som do grupo", + "unpair-card": "Desemparelhar cartão", + "unpair-card-confirmation": "Esta operação desemparelhará o cartão do dispositivo atual. Requer autorização de código de acesso de 6 dígitos. Deseja continuar?", + "unpair-keycard": "Desparear o Keycard deste telefone", + "unpair-keycard-warning": "Seu código de emparelhamento\/PUK & PIN permanecem inalterados", + "unpaired-keycard-text": "O Keycard que você utilizou não está associado a este telefone", + "unpaired-keycard-title": "Parece que seu cartão não foi pareado.", + "unpin": "Desafixar", + "unpin-from-channel": "Desafixar do canal", + "unpin-from-chat": "Desafixar da conversa", + "untrustworthy": "Não Confiável", + "update": "Atualizar", + "update-to-listen-audio": "Atualize para a versão mais recente para ouvir uma mensagem de áudio aqui!", + "update-to-see-image": "Atualize para a versão mais recente para ver uma bela imagem aqui!", + "update-to-see-sticker": "Atualize para a versão mais recente para ver um belo adesivo aqui!", + "updates-to-tos": "Atualizações nos Termos de Serviço", + "updates-to-tos-desc": "Antes de continuar, leia os Termos de Serviço e confirme se você assume total responsabilidade pelo modo como usa o aplicativo.", + "url": "URL", + "usd-currency": "USD", + "use-as-profile-picture": "Usar como foto de perfil", + "use-valid-contact-code": "Digite ou escaneie uma chave de bate-papo ou nome de usuário válidos", + "validation-amount-invalid-number": "A quantidade não é um número válido", + "validation-amount-is-too-precise": "O valor é muito preciso. O número máximo de casas decimais é {{decimals}} .", + "verified-community": "✓ Comunidade verificada", + "version": "Versão do aplicativo", + "view": "Visualizar", + "view-community-rules": "Ver Regras da Comunidade", + "view-cryptokitties": "Ver em CryptoKitties", + "view-cryptostrikers": "Ver no CryptoStrikers", + "view-data": "Ver dados", + "view-details": "Ver Detalhes", + "view-etheremon": "Ver no Etheremon", + "view-gitcoin": "Ver no Gitcoin", + "view-members": "Ver membros", + "view-on-opensea": "Ver no OpenSea", + "view-pinned-messages": "Ver mensagens fixadas", + "view-profile": "Ver perfil", + "view-public-dashboard": "Ver painel de controle público", + "view-rules": "Ver regras", + "view-signing": "Ver frase de assinatura", + "view-superrare": "Ver no SuperRare", + "vote-to-feature": "Votar para destacar esta comunidade", + "waiting-for-wifi": "Sem Wi-Fi, sincronização de mensagens desativada.", + "waiting-for-wifi-change": "Configurações", + "waiting-to-sign": "Aguardando para assinar a transação...", + "waiting-wi-fi": "Aguardando Wi-Fi...", + "waku-bloom-filter-mode": "Modo de filtro Waku bloom", + "wakuv2-change-nodes": "Tem certeza de que deseja modificar os nós do Wakuv2?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Configurações Waku v2", + "wallet": "Carteira", + "wallet-address": "Endereço da carteira", + "wallet-asset": "Ativo", + "wallet-assets": "Ativos", + "wallet-backup-recovery-title": "Faça backup da sua frase-semente", + "wallet-choose-recipient": "Escolher destinatário", + "wallet-collectibles": "Colecionáveis", + "wallet-connect": "Wallet Connect", + "wallet-connect-2.0": "Wallet Connect 2.0", + "wallet-connect-app-connected": "está conectado", + "wallet-connect-go-back": "Volte para o seu navegador ou dapp", + "wallet-connect-proposal-description": "Ao conectar você permite que {{name}} recupere o endereço da sua conta e ative o Web3", + "wallet-connect-proposal-title": "Gostaria de se conectar com sua carteira", + "wallet-insufficient-funds": "Fundos insuficientes", + "wallet-insufficient-gas": "Não há ETH suficiente para o gás", + "wallet-invalid-address": "Endereço inválido: \n {{data}}", + "wallet-invalid-address-checksum": "Erro no endereço:{{data}}", + "wallet-invalid-chain-id": "A rede não corresponde: \n {{data}} mas a cadeia atual é {{chain}}", + "wallet-key-content": "Um endereço hexadecimal de 64 caracteres baseado no padrão Ethereum e começando com 0x. Para o público, o endereço da sua conta é compartilhado com outras pessoas quando você deseja receber fundos. Também chamado de \"endereço Ethereum\" ou \"endereço da carteira\".", + "wallet-key-title": "Endereço da conta", + "wallet-manage-accounts": "Gerenciar contas", + "wallet-manage-app-connections": "Gerenciar conexões de aplicativos", + "wallet-manage-assets": "Gerenciar ativos", + "wallet-request": "Solicitação", + "wallet-send": "Enviar", + "wallet-send-min-units": "Mínimo 21000 unidades", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Configurações da carteira", + "wallet-total-value": "Valor total", + "wallet-transaction-total-fee": "Taxa total", + "wants-to-access-profile": "quer acessar seu perfil", + "warning": "Atenção", + "warning-message": "Desculpe, limitamos o envio de várias mensagens em rápida sucessão para evitar spam. Por favor, tente novamente daqui a pouco", + "warning-sending-to-contract-descr": "O endereço que você inseriu é um contrato inteligente. O envio de fundos para este endereço pode resultar em perda de fundos. Para interagir com um DApp, abra o DApp no navegador da Status.", + "watch-only": "Somente exibição", + "wc-brand-guide": "Orientação sobre o uso de marcas, como marcas registradas e logotipos", + "wc-disclaimer": "Exonerações de responsabilidade (incluindo fornecedores terceirizados), garantias e liberações legais", + "wc-dispute": "Disposições de resolução de disputas", + "wc-how-to-use-status-app": "Como usar o aplicativo Status, incluindo privacidade e segurança", + "wc-new-tos-based-on-principles-prefix": "Novos Termos de Serviço desenvolvidos com base em nossos", + "web-view-error": "Não foi possível carregar a página", + "websites": "Sites", + "webview-camera-permission-requests": "Solicitações de permissão de câmera do Webview", + "webview-camera-permission-requests-subtitle": "Quando habilitado, sites e dapps podem pedir para usar sua câmera", + "welcome-blank-community-message": "Suas comunidades aparecerão aqui.", + "welcome-blank-message": "Suas conversas serão exibidas aqui. Para iniciar novos bate-papos, pressione o botão ⊕", + "welcome-community-blank-message": "Seus canais aparecerão aqui. Para criar um novo canal, clique no botão ⊕ e selecione \"Criar um canal\"", + "welcome-community-blank-message-edit-chats": "Seus canais aparecerão aqui. Para criar um novo canal, volte para a tela da comunidade, clique no botão ⊕ e selecione \"Criar um canal\"", + "welcome-screen-text": "Configure sua carteira, convide seus amigos para bater papo e navegue pelos dapps mais usados!", + "welcome-to-status": "Bem-vindo ao Status!", + "welcome-to-status-description": "Configure sua carteira criptográfica, convide amigos para conversar e navegue por aplicativos descentralizados", + "what-changed": "O que mudou", + "what-is-shared": "O que é compartilhado", + "whats-on-your-mind": "O que você está pensando...", + "whats-trending": "Veja o que está em alta", + "word-count": "Contagem de palavras", + "word-n": "Palavra #{{number}}", + "word-n-description": "Para verificar se você fez o backup da sua frase-semente corretamente, digite a palavra #{{number}} acima.", + "words-n": { + "one": "1 palavra", + "other": "{{count}} palavras" + }, + "write-down-and-store-securely": "Anote os códigos e\n guarde-os de forma segura", + "wrong-address": "Endereço errado", + "wrong-card": "Cartão errado", + "wrong-card-text": "O cartão utilizado não corresponde às chaves que você selecionou", + "wrong-contract": "Contrato errado", + "wrong-keycard-text": "O Keycard que você utilizou não está associado a este telefone", + "wrong-keycard-title": "Parece que você utilizou\n um Keycard errado.", + "wrong-password": "Senha incorreta", + "wrong-word": "Palavra errada", + "yes": "Sim", + "you": "você", + "you-already-have-an-asset": "Você já tem um ativo {{value}}", + "you-are-all-set": "Está tudo pronto!", + "you-are-all-set-description": "Se você perder seu telefone, agora você pode acessar seus fundos e a chave de bate-papo usando sua frase-semente", + "you-can-change-account": "Você pode mudar o nome da conta e a cor para o que desejar", + "you-can-choose-preview-websites": "Você pode escolher quais dos seguintes sites podem visualizar o link de descrições e imagens nas conversas", + "you-can-fetch": "Você pode obter o histórico de conversas", + "you-dont-have-contacts": "Você ainda não possui contatos.", + "you-dont-have-contacts-invite-friends": "Você ainda não tem contatos.\n Convide seus amigos para começar a conversar.", + "you-dont-have-stickers": "Você ainda não tem nenhum adesivo", + "you-must-always-hold": "Você deve sempre segurar:", + "you-must-hold": "Você deve segurar:", + "you-must-now-hold": "Agora você deve segurar:", + "you-will-need-this-code": "Você precisará desse código para abrir o Status e assinar transações", + "you-will-start-from-scratch": "Você começará do zero com um novo conjunto de chaves", + "your-answer": "Sua resposta", + "your-card-is-frozen": "Seu Keycard travou. Redefinir acesso ao cartão", + "your-contact-code": "A concessão de acesso autoriza este DApp a recuperar sua chave de bate-papo", + "your-data-belongs-to-you": "Se você perder a sua frase-semente, você perde seus dados e fundos", + "your-data-belongs-to-you-description": "Se perder o acesso, por exemplo, ao perder seu telefone, você só pode acessar suas chaves com sua frase-semente. Só você tem a sua frase-semente. Anote e mantenha sua frase-semente em segurança", + "your-keys": "Suas chaves", + "your-price-limit": "Seu limite de preço", + "your-recovery-phrase": "Sua frase-semente", + "your-recovery-phrase-description": "Esta é sua frase-semente. Você a usa para provar que esta é sua carteira. Você só pode vê-la uma vez! Escreva no papel e mantenha em um lugar seguro. Você vai precisar dela se perder ou reinstalar sua carteira.", + "your-tip-limit": "Seu limite de gorjeta", + "youre-on-mobile-network": "Você está em uma rede móvel" +} diff --git a/translations/pt_pt.json b/translations/pt_pt.json new file mode 100644 index 00000000000..448e5cef647 --- /dev/null +++ b/translations/pt_pt.json @@ -0,0 +1,127 @@ +{ + "confirm": "Confirmar", + "amount": "Montante", + "members-active": { + "one": "1 membro, 1 ativo", + "other": "{{count}} membros, {{count}} ativos", + "zero": "sem membros" + }, + "chat-name": "Nome no chat", + "phew-here-is-your-passphrase": "*Ufa* foi complicado, aqui está a sua frase-chave, *anote-a e mantenha-a em segurança!* Vai precisar dela para recuperar a sua conta.", + "public-group-topic": "Tema", + "chat-settings": "Definições de chat", + "offline": "Offline", + "invited": "convidado", + "address": "Endereço", + "new-public-group-chat": "Juntar-se ao chat público", + "datetime-hour": { + "one": "hora", + "other": "horas" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Remover", + "add-members": "Adicionar Membros", + "done": "Concluído", + "close-chat": "Eliminar o chat", + "new-group-chat": "Novo chat em grupo", + "sign-in": "Entrar", + "datetime-yesterday": "ontem", + "create-new-account": "Criar nova conta", + "datetime-ago": "atrás", + "contacts": "Contactos", + "got-it": "Entendido", + "active-online": "Online", + "password": "Palavra-passe", + "browsing-title": "Procurar", + "discover": "Descoberta", + "browsing-cancel": "Cancelar", + "intro-status": "Fale comigo para configurar a sua conta e alterar as suas definições!", + "name": "Nome", + "show-qr": "Mostrar QR", + "connect": "Ligar", + "edit": "Editar", + "account-generation-message": "Dê-me um segundo, tenho de fazer alguns cálculos doidos para gerar a sua conta!", + "no-messages": "Sem mensagens", + "passphrase": "Frase-chave", + "recipient": "Destinatário", + "members-title": "Membros", + "new-group": "Novo grupo", + "phone-e164": "Internacional 1", + "settings": "Definições", + "chats": "Chats", + "transaction": "Transação", + "public-group-status": "Público", + "image-source-make-photo": "Capturar", + "start-conversation": "Iniciar a conversa", + "save": "Guardar", + "sharing-copy-to-clipboard": "Copiar para a área de transferência", + "sync-in-progress": "A sincronizar...", + "send-transaction": "Enviar a transação", + "incorrect-code": [ + "str", + "Desculpe, o código estava incorreto. Por favor, volte a digitar" + ], + "image-source-gallery": "Selecionar a partir da galeria", + "sync-synced": "Em sincronização", + "status-pending": "Pendente", + "datetime-day": { + "one": "dia", + "other": "dias" + }, + "scan-qr": "Digitalizar QR", + "contact-s": { + "one": "contacto", + "other": "Contactos" + }, + "next": "Próximo", + "recent": "Recente", + "status": "Estado", + "from": "De", + "wrong-password": "Palavra-passe errada", + "in-contacts": "Nos contactos", + "sharing-share": "Partilhar...", + "type-a-message": "Digitar uma mensagem...", + "clear-history": "Limpar o histórico", + "no-contacts": "Ainda sem contactos", + "datetime-today": "hoje", + "web-view-error": "ups, erro", + "error": "Erro", + "more": "mais", + "cancel": "Cancelar", + "can-not-add-yourself": "Não pode adicionar-se a si mesmo", + "add-to-contacts": "Adicionar aos contactos", + "available": "Disponível", + "You": "Você", + "main-wallet": "Carteira Principal", + "members": { + "one": "1 membro", + "other": "{{count}} membros", + "zero": "sem membros" + }, + "intro-message1": "Bem-vindo ao Status\nToque nesta mensagem para definir a sua palavra-passe e começar!", + "new-contact": "Novo Contacto", + "datetime-second": { + "one": "segundo", + "other": "segundos" + }, + "recover": "Recuperar", + "datetime-minute": { + "one": "minuto", + "other": "minutos" + }, + "browsing-open-in-android-web-browser": "Abrir no navegador Web", + "browsing-open-in-ios-web-browser": "Abrir no navegador Web", + "edit-profile": "Editar perfil", + "active-unknown": "Desconhecido", + "public-key": "Chave Pública", + "profile": "Perfil", + "none": "Nenhum", + "removed": "removido", + "message": "Mensagem", + "here-is-your-passphrase": "Aqui está a sua frase-chave, *anote-a e mantenha-a em segurança!* Vai precisar dela para recuperar a sua conta.", + "image-source-title": "Imagem de perfil", + "left": "saiu", + "to": "Para", + "status-sent": "Enviado", + "data": "Dados" +} diff --git a/translations/ro.json b/translations/ro.json new file mode 100644 index 00000000000..b222c063e7d --- /dev/null +++ b/translations/ro.json @@ -0,0 +1,127 @@ +{ + "confirm": "Confirmare", + "amount": "Sumă", + "members-active": { + "one": "1 membru, 1 activ", + "other": "{{count}} membri, {{count}} activi", + "zero": "nici un membru" + }, + "chat-name": "Nume chat", + "phew-here-is-your-passphrase": "*Pfui* a fost greu, iată fraza ta de acces, *noteaz-o și păstreaz-o în siguranță!* Vei avea nevoie de ea pentru a-ți redobândi accesul la cont.", + "public-group-topic": "Subiect", + "chat-settings": "Setări chat", + "offline": "Offline", + "invited": "invitat", + "address": "Adresă", + "new-public-group-chat": "Alăturați-vă chat-ului public", + "datetime-hour": { + "one": "oră", + "other": "ore" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Elimină", + "add-members": "Adăugare membri", + "done": "Gata", + "close-chat": "Ștergere chat", + "new-group-chat": "Grup nou de chat", + "sign-in": "Conectare", + "datetime-yesterday": "ieri", + "create-new-account": "Creați un cont nou", + "datetime-ago": "în urmă", + "contacts": "Contacte", + "got-it": "Am înțeles", + "active-online": "Online", + "password": "Parolă", + "browsing-title": "Navigare", + "discover": "Descoperire", + "browsing-cancel": "Anulare", + "intro-status": "Hai să vorbim pe chat pentru a-ți seta contul și modifica setările!", + "name": "Nume", + "show-qr": "Afișează QR", + "connect": "Conectare", + "edit": "Editare", + "account-generation-message": "O secundă, trebuie să fac niște calcule complicate ca să-ți generez contul!", + "no-messages": "Nici un mesaj", + "passphrase": "Fraza de acces", + "recipient": "Beneficiar", + "members-title": "Membri", + "new-group": "Grup nou", + "phone-e164": "Internațional 1", + "settings": "Setări", + "chats": "Discuții pe chat", + "transaction": "Tranzacție", + "public-group-status": "Public", + "image-source-make-photo": "Captează", + "start-conversation": "Începeți o conversație", + "save": "Salvează", + "sharing-copy-to-clipboard": "Copiere în clipboard", + "sync-in-progress": "Se sincronizează…", + "send-transaction": "Trimitere tranzacție", + "incorrect-code": [ + "str", + "Ne pare rău, dar codul este greșit, te rugăm să-l introduci încă o dată" + ], + "image-source-gallery": "Selectează din galerie", + "sync-synced": "Sincronizat", + "status-pending": "În așteptare", + "datetime-day": { + "one": "zi", + "other": "zile" + }, + "scan-qr": "Scanează QR", + "contact-s": { + "one": "contact", + "other": "contacte" + }, + "next": "Mai departe", + "recent": "Recente", + "status": "Status", + "from": "De la", + "wrong-password": "Parola greșită", + "in-contacts": "În contacte", + "sharing-share": "Partajare...", + "type-a-message": "Tastați un mesaj...", + "clear-history": "Șterge istoricul", + "no-contacts": "Nici un contact deocamdată", + "datetime-today": "azi", + "web-view-error": "ups, eroare", + "error": "Eroare", + "more": "mai mult", + "cancel": "Anulare", + "can-not-add-yourself": "Nu te poți adăuga pe tine", + "add-to-contacts": "Adaugă la contacte", + "available": "Disponibil", + "You": "Tu", + "main-wallet": "Portofelul principal", + "members": { + "one": "1 membru", + "other": "{{count}} membri", + "zero": "nici un membru" + }, + "intro-message1": "Bine ai vent în Status\nApasă pe acest mesaj pentru a-ți seta parola și a începe!", + "new-contact": "Contact nou", + "datetime-second": { + "one": "secundă", + "other": "secunde" + }, + "recover": "Recuperează", + "datetime-minute": { + "one": "minut", + "other": "minute" + }, + "browsing-open-in-android-web-browser": "Deschide în browser web", + "browsing-open-in-ios-web-browser": "Deschide în browser web", + "edit-profile": "Editare profil", + "active-unknown": "Necunoscut", + "public-key": "Cheie publică", + "profile": "Profil", + "none": "Niciuna", + "removed": "eliminat", + "message": "Mesaj", + "here-is-your-passphrase": "Iată fraza ta de acces, *noteaz-o și păstreaz-o în siguranță!* Vei avea nevoie de ea pentru a-ți redobândi accesul la cont.", + "image-source-title": "Imagine de profil", + "left": "a plecat", + "to": "Către", + "status-sent": "Trimis", + "data": "Date" +} diff --git a/translations/ru.json b/translations/ru.json new file mode 100644 index 00000000000..165ba5946a6 --- /dev/null +++ b/translations/ru.json @@ -0,0 +1,1820 @@ +{ + "K": "К", + "M": "М", + "NFT": "НФТ", + "You": "Вы", + "about-app": "О приложении", + "about-key-storage-content": "У Status никогда не будет доступа к вашему приватному ключу. Обязательно сделайте резервную копию своей сид-фразы. Если вы потеряете телефон, сид-фраза — единственный способ получить доступ к своим ключам.", + "about-key-storage-title": "О хранилище ключей", + "about-names-content": "Никто не сможет выдать себя за вас! По умолчанию вы анонимны, и вам никогда не нужно раскрывать свое настоящее имя. За небольшую плату вы можете зарегистрировать пользовательское имя.", + "about-names-title": "Имена нельзя изменить", + "about-sharing-data": "Об обмене данными", + "accept": "Принять", + "accept-and-add": "Принять и добавить", + "accept-and-continue": "Принять и продолжить", + "accept-and-share-address": "Принять и поделиться адресом", + "accept-new-chats-from": "Принимать новые чаты от", + "accept-status-tos-prefix": "Я принимаю Status", + "accepted": "Принято", + "access-existing-keys": "Доступ к существующим ключам", + "access-key": "Ключ доступа", + "account-added": "Аккаунт добавлен", + "account-color": "Цвет аккаунта", + "account-content": "Аккаунт Status подобен банковскому счету — у аккаунта есть адрес и баланс, аккаунт можно использовать для совершения транзакций в блокчейне Ethereum. В рамках одного кошелька вы можете использовать несколько аккаунтов. Эти функции доступны при разблокировании приложения.", + "account-exists-title": "Аккаунт уже существует", + "account-is-used": "Учетная запись используется в Dapps в браузере.", + "account-name": "Название аккаунта", + "account-settings": "Настройки аккаунта", + "account-title": "Аккаунт", + "accounts": "Аккаунты", + "actions": "Действия", + "active-members": "Активные участники", + "active-online": "В сети", + "active-unknown": "Неизвестно", + "activity": "Активность", + "add": "Добавить", + "add-a-watch-account": "Добавить адрес только для просмотра", + "add-account": "Добавить аккаунт", + "add-account-description": "Вы можете импортировать любой тип аккаунта сети Ethereum, чтобы добавить его в свой кошелек Status.", + "add-account-incorrect-password": "Неверный пароль. Введите пароль, который вы используете для разблокировки приложения.", + "add-an-account": "Добавить аккаунт", + "add-bootnode": "Добавить bootnode", + "add-contact": "Добавить контакт", + "add-custom-token": "Добавить пользовательский токен", + "add-favourite": "Добавить в избранное", + "add-mailserver": "Добавить ноду Status", + "add-members": "Добавить участников", + "add-network": "Добавить сеть", + "add-new-contact": "Добавить новый контакт", + "add-nickname": "Добавить псевдоним (необязательно)", + "add-node": "Добавить ноду", + "add-private-key-account": "Добавить аккаунт из приватного ключа", + "add-seed-account": "Добавить аккаунт с сид-фразой", + "add-to-contacts": "Добавить в контакты", + "add-to-contacts-text": "Добавляя пользователя в список контактов, вы делитесь адресом своего кошелька", + "add-to-favourites": "Добавить в избранное", + "add-watch-account": "Добавить аккаунт только для просмотра", + "address": "Адрес", + "address-or-ens-name": "Адрес или ENS-имя", + "address-received": "Адрес получен", + "address-request-accepted": "Запрос адреса принят", + "address-requested": "Адрес запрошен", + "advanced": "Расширенные настройки", + "advanced-settings": "Расширенные настройки", + "advertiser-description": "Вы узнали о Status благодаря другу. Вы не возражаете, если Status проверит ваш IP-адрес один раз, чтобы друг получил вознаграждение? Эта информация не будет использоваться ни для чего другого и будет полностью удалена через 7 дней.", + "advertiser-starter-pack-accept": "Принять", + "advertiser-starter-pack-decline": "Отклонить", + "advertiser-starter-pack-description": "Вот немного криптовалюты для старта! Используйте её, чтобы получить ENS-имя, стикеры и доступ к децентрализованным приложениям", + "advertiser-starter-pack-title": "Стартовый набор", + "advertiser-title": "Конфиденциальность по умолчанию", + "agree-by-continuing": "Продолжая, вы соглашаетесь \nс нашими ", + "all": "Все", + "all-connections": "Все подключения", + "allow": "Разрешить", + "allow-and-send": "Разрешить и отправить", + "allow-mention-notifications": "Отображать упоминания с @", + "allowing-authorizes-this-dapp": "Соглашаясь, вы разрешаете DApp получить адрес вашего кошелька и включить Web3", + "alphabetically": "В алфавитном порядке", + "already-have-asset": "У вас есть актив с таким адресом", + "amount": "Сумма", + "anyone": "Любой", + "app-commit": "Фиксация приложения", + "app-connections": "Подключения приложений", + "appearance": "Внешний вид", + "apply": "Применить", + "approve": "Одобрить", + "approve-limit": "Одобрить лимит", + "approve-token": "Одобрить токен", + "approve-token-contract-desc": "Утверждение токена с контрактом позволяет ему потратить ваш баланс токена. Если вы чувствуете, что проект не заслуживает доверия, не одобряйте токен с ними или одобряйте только ту сумму, которую вы будете использовать с ними.", + "are-you-sure": "Вы уверены?", + "are-you-sure-description": "Вы не сможете увидеть всю сид-фразу снова", + "are-you-sure-to-cancel": "Вы точно хотите отменить?", + "are-you-sure?": "Вы уверены?", + "ask-in-status": "Задайте вопрос или сообщите об ошибке", + "at": "в", + "attribution-received": "Получено бонусов: {{attrib}} из {{max}}", + "audio": "Аудио", + "audio-recorder": "Запись", + "audio-recorder-error": "Ошибка записи", + "audio-recorder-max-ms-reached": "Достигнуто максимальное время записи", + "audio-recorder-permissions-error": "Вы должны дать разрешение на отправку голосовых сообщений", + "authorize": "Разрешить", + "available": "Доступно", + "available-participants": { + "zero": "Вы больше не можете выбирать участников", + "one": "Вы можете выбрать еще одного участника", + "few": "Вы можете выбрать еще несколько участников", + "many": "Вы можете выбрать еще много участников", + "other": "Доступное для выбора количество участников: {{count}}" + }, + "back": "Назад", + "back-up": "Резервная копия", + "back-up-seed-phrase": "Резервное копирование сид-фразы", + "back-up-your-seed-phrase": "Резервное копирование сид-фразы", + "backing-up": "Резервное копирование...", + "backup-disabled": "Отключен", + "backup-enabled": "Включено", + "backup-recovery-phrase": "Резервное копирование сид-фразы", + "backup-settings": "Настройки резервного копирования", + "backup-through-waku": "Резервное копирование через waku", + "bad-fees-description": "Ваш приоритет по комиссии ниже рекомендуемых нами параметров.", + "balance": "Баланс", + "begin-set-up": "Начать настройку", + "below-base-fee": "максимальная комиссия ниже базовой ставки", + "biometric-auth-android-sensor-desc": "Коснитесь сканера отпечатков пальцев", + "biometric-auth-android-sensor-error-desc": "Ошибка", + "biometric-auth-android-title": "Требуется аутентификация", + "biometric-auth-confirm-logout": "Повторный вход", + "biometric-auth-confirm-message": "Для продолжения необходима биометрическая аутентификация, если это невозможно, разблокируйте ваши ключи с помощью пароля или кода доступа", + "biometric-auth-confirm-title": "Вы должны пройти аутентификацию!", + "biometric-auth-confirm-try-again": "Попробуйте снова", + "biometric-auth-error": "Невозможно выполнить биометрическую аутентификацию ({{code}})", + "biometric-auth-login-error-title": "Ошибка биометрической аутентификации", + "biometric-auth-login-ios-fallback-label": "Введите пароль", + "biometric-auth-reason-login": "Войти в Status", + "biometric-auth-reason-verify": "Проверка аутентификации", + "biometric-disable-bioauth": "отключить {{bio-type-label}}", + "biometric-disable-password-description": "Если вы отключите это, вы также ", + "biometric-disable-password-title": "Отключить сохранение пароля", + "biometric-enable": "Если вы не хотите каждый раз вводить пароль для доступа к приложению, включите функцию «{{bio-type-label}}»", + "biometric-enable-button": "Включить функцию «{{bio-type-label}}»", + "biometric-enable-keycard": "Если вы не хотите каждый раз для доступа к приложению использовать свой Keycard, включите функцию «{{bio-type-label}}» для каждого входа", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Отпечаток пальца", + "biometric-secure-with": "Повысить безопасность с помощью функции «{{bio-type-label}}»", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "Пароль BIP39", + "blank-keycard-text": "Вы можете приступить к работе с Keycard после того, как будут сгенерированы ключи и имя", + "blank-keycard-title": "Похоже, вы используете \nпустой Keycard", + "block": "Блокировать", + "block-contact": "Заблокировать этого пользователя", + "block-contact-details": "Блокировка удалит предыдущие сообщения этого пользователя и заблокирует новые сообщения", + "blocked-users": "Заблокированные пользователи", + "bootnode-address": "Адрес bootnode", + "bootnode-details": "Детали Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes включены", + "bootnodes-settings": "Настройки bootnode", + "browsed-websites": "Просмотренные сайты появятся здесь", + "browser": "Браузер", + "browser-not-secure": "Соединение не защищено! Не подписывайте транзакции на этом сайте и не отправляйте с него личные данные.", + "browser-secure": "Соединение безопасно. Убедитесь в том, что вы доверяете этому сайту перед подписанием транзакций или вводом личных данных.", + "browsers": "Браузеры", + "browsing-cancel": "Отменить", + "browsing-open-in-android-web-browser": "Открыть в Android", + "browsing-open-in-ios-web-browser": "Открыть в iOS", + "browsing-open-in-status": "Открыть в Status", + "browsing-site-blocked-description1": "Мы обнаружили потенциальную вредоносную активность по этому адресу. Чтобы защитить вас и ваш кошелек, мы предотвращаем дальнейшую навигацию.\n\nЕсли вы считаете, что это ошибка, сообщите нам об этом в ", + "browsing-site-blocked-description2": " публичном чате.", + "browsing-site-blocked-go-back": "Назад", + "browsing-site-blocked-title": "Этот сайт заблокирован", + "browsing-title": "Просмотреть", + "bug-report": "Сообщить об ошибке", + "bug-report-description": "* Описание", + "bug-report-description-placeholder": "Требуется, не может быть пустым", + "bug-report-steps": "Действия по воспроизведению", + "bug-report-steps-placeholder": "- открыть приложение\n- сделать что-нибудь\n- а потом еще что-то...", + "bug-report-submit-email": "Отправить по электронной почте с архивом логов", + "bug-report-submit-gh-issue": "Отправить сообщение о проблеме на GitHub без логов", + "bug-report-too-short-description": "Описание слишком короткое", + "build-yourself": "Чтобы использовать приложение без этих Условий использования, вы можете создать свою собственную версию", + "buy-crypto": "Купить криптовалюту", + "buy-crypto-choose-a-service": "Выберите сервис, который вы хотели бы использовать для покупки криптовалюты", + "buy-crypto-description": "Найти децентрализованное приложение для покупки криптовалюты", + "buy-crypto-leaving": "Вы покидаете Status и перенаправляетесь на сторонний сайт для завершения покупки", + "buy-crypto-title": "Похоже, ваш кошелек пуст", + "camera-access-error": "Чтобы предоставить необходимое разрешение для камеры, перейдите в настройки системы и убедитесь, что выбрана опция Status > Камера.", + "can-not-add-yourself": "Это вы, чтобы начать чат, выберите собеседника", + "can-send-messages": "Вы можете отправлять и получать новые сообщения", + "cancel": "Отменить", + "cancel-keycard-setup": "Отменить настройку Keycard", + "cancelling": "Отмена", + "cannot-read-card": "Невозможно прочитать карту. \nПрислоните карту к задней панели телефона", + "cannot-use-default-pin": "Код доступа 000000 запрещен. \nИспользуйте другой набор символов", + "cant-open-public-chat": "Не удается открыть публичный чат", + "cant-report-bug": "Не удается сообщить об ошибке", + "card-is-blank": "Эта карта пуста", + "card-reseted": "Настройки карты были сброшены", + "card-unpaired": "Сопряжение карты с текущим устройством отменено", + "category": "Категория", + "category-title": "Название категории", + "change-fleet": "Изменение fleet на {{fleet}}", + "change-logging-enabled": "В точно хотите {{enable}} ведение журнала?", + "change-pairing": "Изменение кода сопряжения", + "change-pairing-description": "Изменение кода сопряжения не влияет на текущие сопряжения. Однако для любого нового сопряжения потребуется новый код.", + "change-pairing-title": "Создайте новый код сопряжения", + "change-passcode": "Изменить код доступа", + "change-password": "Изменить пароль", + "change-pin": "Изменить 6-значный код доступа", + "change-puk": "Изменить 12-значный PUK", + "change-tip": "Изменить чаевые", + "changed-amount-warning": "Сумма была изменена с {{old}} на {{new}}", + "changed-asset-warning": "Актив был изменен с {{old}} на {{new}}", + "chaos-mode": "Режим хаоса", + "chaos-unicorn-day": "День единорога хаоса", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Чат", + "chat-and-transact": "Полная приватность переписки и осуществляемых транзакций", + "chat-is-a-contact": "Есть в контактах", + "chat-is-not-a-contact": "Отсутствует в контактах", + "chat-key": "Код контакта", + "chat-key-content": "Протокол работы чатов приложения Status формирует прием и отправку сообщений с использованием ключей шифрования. Публичный код контакта – это строка символов, которой вы делитесь с другими пользователями, чтобы они имели возможность отправить вам сообщение в приложении.", + "chat-key-title": "Ключ чата", + "chat-link-previews": "Предварительный просмотр ссылок в чате", + "chat-name": "Имя чата", + "chat-name-content": "Набор из трех случайных слов, генерируется алгоритмическим путем на основе вашего кода контакта. Полученное имя используется по умолчанию в качестве псевдонима. Имена полностью уникальны и не могут состоять из трех одинаковых слов.", + "chat-name-title": "Имя в чате", + "chat-notification-preferences": "Настройки уведомлений", + "chat-settings": "Настройки чата", + "chats": "Чаты", + "check-on-block-explorer": "Проверьте в обозревателе блоков", + "check-on-opensea": "Проверить на OpenSea", + "check-your-recovery-phrase": "Проверьте свою сид-фразу", + "choose-actions": "Выбор действия", + "choose-authentication-method": "Выберите метод аутентификации", + "choose-new-location-for-keystore": "Выберите новое место для размещения файла хранилища ключей", + "choose-storage": "Выбор хранилища", + "clear": "Очистить", + "clear-all": "Очистить все", + "clear-history": "Очистить историю", + "clear-history-action": "Очистить", + "clear-history-confirmation": "Очистить историю?", + "clear-history-confirmation-content": "Вы действительно хотите удалить историю этого чата?", + "clear-history-title": "Очистить историю?", + "cleared-chat-description-public": "Здесь было тихо. Начать разговор или", + "close": "Закрыть", + "close-all": "Закрыть все", + "close-app-button": "Подтвердить", + "close-app-content": "Приложение остановится и закроется. При повторном открытии будет использоваться выбранная сеть", + "close-app-title": "Предупреждение!", + "collectibles-leak-metadata": "Здесь вы можете показать свои НФТ. Если вы это сделаете, то покажете также свой кошелек и IP адрес", + "command-button-send": "Отправить", + "communities": "Сообщества", + "communities-alpha": "Сообщества (альфа-версия)", + "communities-enabled": "Сообщества включены", + "communities-verified": "✓ Верифицированное сообщество", + "community": "Сообщество", + "community-color": "Цвет сообщества", + "community-color-placeholder": "Выберите цвет", + "community-edit-title": "Изменение сообщества", + "community-emoji-thumbnail-title": "Черновик", + "community-image-delete": "Пустой", + "community-image-pick": "Выберите изображение", + "community-image-remove": "Удалить", + "community-image-take": "Сделать фото", + "community-info": "Информация о сообществе", + "community-info-not-found": "Информация о сообществе не найдена", + "community-invite-title": "Пригласить", + "community-key": "Приватный ключ сообщества", + "community-key-placeholder": "Введите приватный ключ вашего сообщества", + "community-link": "Ссылка на сообщество", + "community-members": { + "zero": "{{count}} участников", + "one": "{{count}} участник", + "few": "{{count}} участника", + "many": "{{count}} участников", + "other": "Участников: {{count}}" + }, + "community-members-title": "Участники", + "community-message-preview": "Приглашение присоединиться к сообществу {{community-name}}", + "community-private-key": "Приватный ключ сообщества", + "community-requests-to-join-title": "Запросы на участие", + "community-roles": "Роли", + "community-share-title": "Поделиться", + "community-thumbnail-image": "Уменьшенное изображение", + "community-thumbnail-upload": "Загрузить", + "complete-hardwallet-setup": "Теперь эта карта привязана. Она нужна для подписания транзакций и разблокировки ключей.", + "completed": "Завершено", + "confirm": "Подтвердить", + "confirm-new-password": "Подтвердите новый пароль", + "confirm-pairing-code-placeholder": "Подтвердите код сопряжения...", + "confirm-password-placeholder": "Подтвердите пароль...", + "confirmation-request": "Запрос подтверждения", + "confirmations": "Подтверждения", + "confirmations-helper-text": "После получения 12 подтверждений транзакция считается завершенной.", + "connect": "Подключиться", + "connect-mailserver-content": "Подключиться к {{name}}?", + "connect-wallet": "Подключить кошелек", + "connected": "Подключен", + "connected-to": "Установлено подключение к", + "connecting": "Подключение...", + "connecting-requires-login": "Подключение к другой сети требует входа в систему", + "connection-request": "Запрос на подключение", + "connection-status": "Состояние подключения", + "connection-with-the-card-lost": "Соединение с картой потеряно", + "connection-with-the-card-lost-setup-text": "Для возобновления настройки приложите \nкарту к задней панели телефона и удерживайте \nее в таком состоянии", + "connection-with-the-card-lost-text": "Чтобы продолжить, приложите карту к задней панели телефона.", + "contact-code": "Код контакта", + "contact-request": "Запрос контакта", + "contact-request-accepted": "Принято", + "contact-request-declined": "Отклонено ⓧ", + "contact-request-header": "👋 Запросы на контакты", + "contact-request-pending": "В ожидании", + "contact-s": { + "zero": "контактов", + "one": "контакт", + "few": "контакта", + "many": "контактов", + "other": "контактов" + }, + "contacts": "Контакты", + "contacts-descr": "Ваши контакты появятся здесь. Вы будете получать обновления статуса от всех, кого добавите в контакты.", + "contacts-empty": "Контакты с ENS-именами появятся здесь", + "continue": "Продолжить", + "continue-anyway": "Продолжить в любом случае", + "contract-address": "Адрес контракта", + "contract-interaction": "Взаимодействие с контрактом", + "contract-isnt-supported": "Контракт не поддерживается", + "copy-info": "Скопировать информацию", + "copy-qr": "Копировать код", + "copy-to-clipboard": "Копировать", + "copy-transaction-hash": "Копировать ID транзакции", + "cost-fee": "Стоимость\/Комиссия", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Создать", + "create-a-pin": "Создать 6-значный код доступа", + "create-a-puk": "Создать 12-значный PUK", + "create-category": "Создать категорию", + "create-channel": "Создать канал", + "create-channel-title": "Новый канал", + "create-community": "Создать сообщество", + "create-group-chat": "Создать групповой чат", + "create-multiaccount": "Сгенерировать ключи", + "create-new-key": "Получить новые ключи", + "create-pin": "Создать 6-значный код доступа", + "create-pin-description": "Для разблокировки Status и подтверждения транзакций вам понадобится ваша карта + этот 6-значный код доступа", + "created-group-chat-description": "Вы создали группу {{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Валюта", + "currency-display-name-aed": "Дирхам ОАЭ", + "currency-display-name-afn": "Афганистанский афгани", + "currency-display-name-ars": "Аргентинское песо", + "currency-display-name-aud": "Австралийский доллар", + "currency-display-name-bbd": "Барбадосский доллар", + "currency-display-name-bdt": "Бангладешская така", + "currency-display-name-bgn": "Болгарский лев", + "currency-display-name-bhd": "Бахрейнский динар", + "currency-display-name-bnd": "Брунейский доллар", + "currency-display-name-bob": "Боливийский боливиано", + "currency-display-name-brl": "Бразильский реал", + "currency-display-name-btn": "Бутанский нгултрум", + "currency-display-name-cad": "Канадский доллар", + "currency-display-name-chf": "Швейцарский франк", + "currency-display-name-clp": "Чилийское песо", + "currency-display-name-cny": "Китайский юань рэнминби", + "currency-display-name-cop": "Колумбийское песо", + "currency-display-name-crc": "Коста-риканский колон", + "currency-display-name-czk": "Чешская крона", + "currency-display-name-dkk": "Датская крона", + "currency-display-name-dop": "Доминиканское песо", + "currency-display-name-egp": "Египетский фунт", + "currency-display-name-etb": "Эфиопский быр", + "currency-display-name-eur": "Евро", + "currency-display-name-gbp": "Британский фунт", + "currency-display-name-gel": "Грузинский лари", + "currency-display-name-ghs": "Ганский седи", + "currency-display-name-hkd": "Гонконгский доллар", + "currency-display-name-hrk": "Хорватская куна", + "currency-display-name-huf": "Венгерский форинт", + "currency-display-name-idr": "Индонезийская рупия", + "currency-display-name-ils": "Израильский шекель", + "currency-display-name-inr": "Индийская рупия", + "currency-display-name-isk": "Исландская крона", + "currency-display-name-jmd": "Ямайский доллар", + "currency-display-name-jpy": "Японская иена", + "currency-display-name-kes": "Кенийский шиллинг", + "currency-display-name-krw": "Южнокорейская вона", + "currency-display-name-kwd": "Кувейтский динар", + "currency-display-name-kzt": "Казахстанский тенге", + "currency-display-name-lkr": "Шри–ланкийская рупия", + "currency-display-name-mad": "Марокканский дирхам", + "currency-display-name-mdl": "Молдавский лей", + "currency-display-name-mur": "Маврикийская рупия", + "currency-display-name-mwk": "Малавийская квача", + "currency-display-name-mxn": "Мексиканское песо", + "currency-display-name-myr": "Малайзийский ринггит", + "currency-display-name-mzn": "Мозамбикский метикал", + "currency-display-name-nad": "Намибийский доллар", + "currency-display-name-ngn": "Нигерийская найра", + "currency-display-name-nok": "Норвежская крона", + "currency-display-name-npr": "Непальская рупия", + "currency-display-name-nzd": "Новозеландский доллар", + "currency-display-name-omr": "Оманский риал", + "currency-display-name-pen": "Перуанский соль", + "currency-display-name-pgk": "Кина Папуа – Новой Гвинеи", + "currency-display-name-php": "Филиппинское песо", + "currency-display-name-pkr": "Пакистанская рупия", + "currency-display-name-pln": "Польский злотый", + "currency-display-name-pyg": "Парагвайский гуарани", + "currency-display-name-qar": "Катарский риал", + "currency-display-name-ron": "Румынский лей", + "currency-display-name-rsd": "Сербский динар", + "currency-display-name-rub": "Российский рубль", + "currency-display-name-sar": "Саудовский риял", + "currency-display-name-sek": "Шведская крона", + "currency-display-name-sgd": "Сингапурский доллар", + "currency-display-name-thb": "Тайский бат", + "currency-display-name-try": "Турецкая лира", + "currency-display-name-ttd": "Доллар Тринидада и Тобаго", + "currency-display-name-twd": "Новый Тайваньский доллар", + "currency-display-name-tzs": "Танзанийский шиллинг", + "currency-display-name-uah": "Украинская гривна", + "currency-display-name-ugx": "Угандийский шиллинг", + "currency-display-name-usd": "Доллар США", + "currency-display-name-uyu": "Уругвайское песо", + "currency-display-name-vef": "Венесуэльский боливар", + "currency-display-name-vnd": "Вьетнамский донг", + "currency-display-name-zar": "Южноафриканский рэнд", + "current": "Текущее", + "current-average": "Текущее среднее", + "current-average-tip": "Текущие средние чаевые", + "current-base": "Текущая база", + "current-base-fee": "Текущая базовая комиссия", + "current-minimum-tip": "Текущие минимальные чаевые", + "current-network": "Текущая сеть", + "current-password": "Текущий пароль", + "current-pin": "Введите 6-значный код доступа", + "current-pin-description": "Для продолжения введите 6-значный код доступа", + "custom": "Пользовательские", + "custom-networks": "Пользовательские сети", + "custom-node": "Вы используете пользовательскую конечную точку RPC. История ваших локальных переводов может быть неполной.", + "custom-seed-phrase": "Неверная сид-фраза", + "custom-seed-phrase-text-1": "Данная сид-фраза не соответствует поддерживаемому словарю. Проверьте введенные вами слова.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Принять и открыть", + "dapp-starter-pack-description": "Вот немного криптовалюты для старта! Используйте её, чтобы получить ENS-имя, стикеры и доступ к децентрализованным приложениям", + "dapp-starter-pack-title": "Стартовый набор", + "dapp-would-like-to-connect-wallet": "хочет подключиться к", + "dapps": "ÐApps", + "dapps-permissions": "Разрешения DApp", + "dark": "Темная", + "data": "Данные", + "data-collected": "Собранные данные", + "data-collected-subtitle": "В приведенной ниже таблице указаны точные данные, которые хранятся и будут отправлены. Данные проверяются на соответствие общедоступным правилам, чтобы гарантировать, что конфиденциальные данные не будут отправлены. Не доверяйте, проверяйте.", + "data-syncing": "Синхронизация данных", + "database-reset-content": "Чаты, контакты и настройки были удалены. Вы можете использовать аккаунт со своим Keycard.", + "database-reset-title": "Очистить базы данных", + "database-reset-warning": "База данных будет очищена. Чаты, контакты и настройки будут удалены.", + "datetime-ago": "назад", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "zero": "дней", + "one": "день", + "few": "дня", + "many": "дней", + "other": "дн." + }, + "datetime-day-short": { + "zero": "дн.", + "one": "дн.", + "few": "дн.", + "many": "дн.", + "other": "дн." + }, + "datetime-hour": { + "zero": "часов", + "one": "час", + "few": "часа", + "many": "часов", + "other": "ч." + }, + "datetime-hour-short": { + "zero": "ч.", + "one": "ч.", + "few": "ч.", + "many": "ч.", + "other": "ч." + }, + "datetime-minute": { + "zero": "минут", + "one": "минута", + "few": "минуты", + "many": "минут", + "other": "мин." + }, + "datetime-minute-short": { + "zero": "мин.", + "one": "мин.", + "few": "мин.", + "many": "мин.", + "other": "мин." + }, + "datetime-second": { + "zero": "секунд", + "one": "секунда", + "few": "секунды", + "many": "секунд", + "other": "сек." + }, + "datetime-second-short": { + "zero": "сек.", + "one": "сек.", + "few": "сек.", + "many": "сек.", + "other": "сек." + }, + "datetime-today": "сегодня", + "datetime-yesterday": "вчера", + "decimals": "Количество знаков после запятой", + "decline": "Отклонить", + "declined": "Отклонено", + "decryption-failed-content": "При расшифровке ваших данных произошла ошибка. Возможно, вам потребуется стереть старые данные и создать новый аккаунт. Нажмите «Применить» для удаления или «Отмена» для повторной попытки.", + "default": "По умолчанию", + "default-assets": "Стандарты токенов ERC20 и ERC721", + "default-sync-period": "Синхронизировать историю за", + "delete": "Удалить", + "delete-account": "Удалить аккаунт", + "delete-and-leave-group": "Удалить и выйти из группы", + "delete-bootnode": "Удалить bootnode", + "delete-bootnode-are-you-sure": "Вы действительно хотите удалить этот bootnode?", + "delete-bootnode-title": "Удалить bootnode", + "delete-category-confirmation": "Вы уверены, что хотите удалить эту категорию?", + "close-chat": "Удалить чат", + "close-chat-confirmation": "Вы точно хотите удалить этот чат?", + "delete-confirmation": "Удалить?", + "delete-keys-keycard": "Удалить ключи с Keycard", + "delete-mailserver": "Удалить ноду Status", + "delete-mailserver-are-you-sure": "Вы действительно хотите удалить эту ноду Status?", + "delete-mailserver-title": "Удалить ноду Status", + "delete-message": "Удалить сообщение", + "delete-my-account": "Удалить мой аккаунт", + "delete-my-profile": "Удалить мой профиль", + "delete-network-confirmation": "Вы действительно хотите удалить эту сеть?", + "delete-network-error": "Подключитесь к другой сети перед удалением этой", + "delete-network-title": "Удалить сеть?", + "delete-node": "Удалить ноду", + "delete-node-are-you-sure": "Вы уверены, что хотите удалить эту ноду?", + "delete-node-title": "Удалить ноду", + "delete-profile": "Удалить профиль", + "delete-profile-warning": "Внимание: если вы не записали сид-фразу, то потеряете доступ к своим средствам сразу после удаления профиля.", + "deny": "Отказать", + "derivation-path": "Путь вывода", + "describe-channel": "Опишите канал", + "description": "описание", + "dev-mode": "Режим разработки", + "dev-mode-settings": "Настройки режима разработки", + "device-syncing": "Синхронизация устройств", + "devices": "Устройства", + "disable": "отключить", + "disable-all": "Отключить все", + "disable-later-in-settings": "Вы сможете отключить это потом в Настройках ", + "disabled": "Отключен", + "disconnect": "Отключить", + "disconnected": "Чат не в сети", + "discover": "Откройте для себя", + "discover-communities": "Откройте для себя сообщества", + "dismiss": "Отклонить", + "display-collectibles": "Показать коллекции", + "done": "Готово", + "dont-ask": "Больше не спрашивать", + "edit": "Изменить", + "edit-categories": "Изменить категории", + "edit-channel-title": "Редактировать канал", + "edit-chats": "Редактировать чаты", + "edit-community": "Редактировать сообщество", + "edit-favourite": "Редактировать избранное", + "edit-group": "Изменить группу", + "edit-profile": "Редактировать профиль", + "edited": "Отредактировано", + "editing-message": "Редактирование сообщения", + "empty-activity-center": "Ваши уведомления в чате\nбудут появляться здесь", + "empty-chat-description": "В этом чате пока \nнет сообщений", + "empty-chat-description-community": "Здесь было тихо уже в течение {{quiet-hours}}", + "empty-chat-description-one-to-one": "Вся переписка в этом чате зашифрована и может быть прочитаны только вами и ", + "empty-chat-description-public": "Здесь было тихо уже в течение {{quiet-hours}}. Начать разговор или ", + "empty-chat-description-public-share-this": "поделиться этим чатом.", + "empty-keycard-required": "Требуется пустая карта Keycard", + "empty-pending-invitations-descr": "Все желающие вступить в группу\nчерез ссылку приглашения появятся здесь", + "empty-tab": "Пустая вкладка", + "enable": "включить", + "enable-all": "Разрешить все", + "enable-link-previews": "Разрешить предварительный просмотр ссылок в чате?", + "encrypt-with-password": "Зашифровать с помощью пароля", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Добавить имя пользователя", + "ens-agree-to": "Согласиться с ", + "ens-chat-settings": "Настройки чата", + "ens-custom-domain": "Пользовательский домен", + "ens-custom-username-hints": "Введите полное имя пользователя, включая пользовательский домен, например username.domain.eth", + "ens-custom-username-taken": "Имя пользователя вам не принадлежит :(", + "ens-deposit": "Депозит", + "ens-dismiss-message": "Нажмите здесь, чтобы отклонить", + "ens-displayed-with": "Ваши сообщения отображаются для других с", + "ens-get-name": "Получить универсальное имя пользователя", + "ens-got-it": "Понятно", + "ens-locked": "Имя пользователя заблокировано. Вы не сможете разблокировать его до {{date}}", + "ens-name-content": "Псевдоним пользователя для вашего кода контакта. Вы можете зарегистрировать псевдоним с помощью Ethereum Name Service. ENS-имя – это уникальное децентрализованное имя пользователя.", + "ens-name-not-found": "Невозможно определить ENS-имя", + "ens-name-title": "ENS-имя", + "ens-network-restriction": "Доступно только на Mainnet", + "ens-no-usernames": "У вас нет присоединенного имени пользователя", + "ens-powered-by": "При поддержке Ethereum Name Services", + "ens-primary-username": "Основное имя пользователя", + "ens-register": "Зарегистрировать", + "ens-registration-failed": "Повторите попытку регистрации имя пользователя.", + "ens-registration-failed-title": "Не удалось выполнить транзакцию", + "ens-registration-failure": "Сбой регистрации", + "ens-registration-in-progress": "Регистрация в процессе...", + "ens-release-username": "Освободить имя пользователя", + "ens-remove-hints": "Удаление имени пользователя отсоединит его от вашего ключа.", + "ens-remove-username": "Удалить имя пользователя", + "ens-saved": " теперь связано с вашим кодом контакта и может быть использовано в Status.", + "ens-saved-title": "Имя пользователя добавлено", + "ens-show-username": "Показывать мое ENS-имя в чатах", + "ens-terms-header": "Условия регистрации имени", + "ens-terms-point-1": "Средства вносятся на 1 год. Ваши SNT будут заблокированы, но не потрачены.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS-регистр).", + "ens-terms-point-2": "Через 1 год вы можете освободить имя и получить свой депозит обратно или ничего не делать и тогда имя останется вашим.", + "ens-terms-point-3": "Если условия контракта меняются (например, Status обновляет контракт), то пользователь имеет право освободить имя пользователя без учета времени, прошедшего с момента его регистрации.", + "ens-terms-point-4": "Контролер контракта не может получить доступ к внесенным вами средствам. Их можно переместить обратно только на тот адрес, с которого они были отправлены.", + "ens-terms-point-5": "Ваш(и) адрес(а) будет(ут) публично связан(ы) с вашим ENS-именем.", + "ens-terms-point-6": "Имена пользователей создаются в качестве нод субдоменов stateofus.eth и подчиняются условиям смарт-контракта ENS.", + "ens-terms-point-7": "Вы даете разрешение контракту перевести SNT от вашего имени. Это может произойти только если вы одобрите транзакцию для авторизации перевода.", + "ens-terms-point-8": "Эти условия гарантируются смарт-контрактом по адресам:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ", + "ens-terms-registration": "Условия регистрации имени.", + "ens-test-message": "Привет", + "ens-transaction-pending": "Транзакция в ожидании подтверждения...", + "ens-understand": "Я понимаю, что мой адрес кошелька будет публично связан с моим именем пользователя.", + "ens-username": "ENS-имя", + "ens-username-already-added": "Имя пользователя уже связано с вашим кодом контакта и может быть использовано в Status.", + "ens-username-available": "✓ Имя пользователя доступно!", + "ens-username-connected": "Это имя пользователя принадлежит вам и связано с вашим кодом контакта.", + "ens-username-connected-continue": "Продолжить настройку: «Показывать мое ENS-имя в чатах».", + "ens-username-connected-with-different-key": "Для продолжения потребуется транзакция, чтобы связать имя пользователя с текущим кодом контакта.", + "ens-username-connection-confirmation": "{{username}} будет подключено, как только транзакция будет завершена.", + "ens-username-hints": "Как минимум 4 символа. Только латинские буквы, цифры и строчные буквы.", + "ens-username-invalid": "Только буквы и цифры.", + "ens-username-invalid-name-warning": "Процесс регистрации одного из ваших имен ens завершился в недействительном состоянии. НЕ ИСПОЛЬЗУЙТЕ это имя для операций с кошельком и обратитесь в нашу службу поддержки по адресу support@status.im.", + "ens-username-owned": "✓ Имя пользователя принадлежит вам.", + "ens-username-owned-continue": "Если вы продолжите, это имя пользователя будет привязано к вашему коду контакта.", + "ens-username-registration-confirmation": "Отлично! Вы станете владельцем {{username}}, как только транзакция будет завершена.", + "ens-username-registration-invalid": "Внимание! Процесс регистрации завершился в недействительном состоянии. НЕ ИСПОЛЬЗУЙТЕ это имя для операций с кошельком и обратитесь в нашу службу поддержки по адресу support@status.im.", + "ens-username-taken": "Это имя пользователя уже занято :(", + "ens-username-you-can-follow-progress": "Вы можете следить за ходом выполнения в разделе вашего кошелька «История транзакций».", + "ens-usernames": "ENS-имена", + "ens-usernames-details": "Зарегистрируйте уникальное имя пользователя для лучшей узнаваемости", + "ens-want-custom-domain": "У меня есть имя на другом домене", + "ens-want-domain": "Я хочу имя на домене stateofus.eth", + "ens-welcome-hints": "ENS-имена преобразуют эти невероятно длинные адреса в уникальные имена пользователей", + "ens-welcome-point-customize": "ENS-имя может заменить в чате ваше случайно сгенерированное имя из трех слов. Будьте @yourname вместо {{name}}.", + "ens-welcome-point-customize-title": "Настройте свое имя в чате", + "ens-welcome-point-receive": "Вам могут отправлять средства через чат одним простым действием.", + "ens-welcome-point-receive-title": "Получайте транзакции в чате", + "ens-welcome-point-register": "Зарегистрировавшись один раз, вы получаете имя навсегда. Через год вы можете освободить имя и вернуть свои токены SNT.", + "ens-welcome-point-register-title": "10 SNT за регистрацию", + "ens-welcome-point-simplify": "Получайте средства, используя свое ENS-имя вместо публичного адреса (0x...)", + "ens-welcome-point-simplify-title": "Упростите свой адрес ETH", + "ens-welcome-point-verify": "Далее вы можете проверить любое имя пользователя и зарегистрировать его, если оно свободно.", + "ens-welcome-point-verify-title": "Уже есть имя пользователя?", + "ens-your-username": "Ваше имя пользователя", + "ens-your-usernames": "Ваши имена пользователей", + "ens-your-your-name": "Ваше ENS-имя", + "enter-12-words": "Введите 12 слов своей сид-фразы через одиночные пробелы", + "enter-a-private-key": "Введите приватный ключ", + "enter-a-seed-phrase": "Введите сид-фразу", + "enter-address": "Введите адрес", + "enter-contact-code": "ENS (vitalik94) или код контакта (0x04...)", + "enter-pair-code": "Введите код сопряжения", + "enter-pair-code-description": "Можно использовать код сопряжения с уже подключенного клиента Status", + "enter-password": "Введите пароль", + "enter-password-migration-prompt": "Введите свой пароль для перемещения контактов, чатов и настроек вместе с ключами", + "enter-pin": "Введите 6-значный код доступа", + "enter-puk-code": "Введите код PUK", + "enter-puk-code-description": "6-значный код доступа был заблокирован. \n Введите код PUK, чтобы разблокировать код доступа.", + "enter-recipient-address-or-username": "Введите адрес или имя пользователя получателя", + "enter-seed-phrase": "Введите сид-фразу", + "enter-url": "Введите URL-адрес", + "enter-user-pk": "Введите публичный ключ пользователя", + "enter-watch-account-address": "Отсканируйте QR-код\nили\nвведите адрес для просмотра", + "enter-word": "Введите слово", + "enter-your-code": "Введите свой 6-значный код доступа", + "enter-your-password": "Введите свой пароль", + "error": "Ошибка", + "error-unable-to-get-balance": "Не удалось получить баланс", + "error-unable-to-get-prices": "Ошибка при конвертации валюты. Обновите содержимое экрана, чтобы повторить попытку.", + "error-unable-to-get-token-balance": "Не удалось получить баланс токенов", + "errors": "Ошибки", + "eth": "ETH", + "ethereum-address": "Адрес Ethereum", + "ethereum-node-started-incorrectly-description": "Нода Ethereum была запущена с неверной конфигурацией, приложение будет остановлено для восстановления после этого состояния. Сконфигурированный идентификатор сети = {{network-id}}, фактический = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Нода Ethereum была запущена неправильно", + "etherscan-lookup": "Посмотреть на Etherscan", + "everyone": "Все", + "expand-all": "Развернуть все", + "export-account": "Экспортировать аккаунт", + "export-key": "Экспортировать приватный ключ", + "external-storage-denied": "Доступ к внешнему накопителю запрещен", + "failed": "Не удалось", + "faq": "Часто задаваемые вопросы", + "fast": "Быстрый", + "favourite": "Избранное", + "favourite-description": "Здесь будут находиться сайты, добавленные в избранное", + "favourites": "Избранное", + "favourites-empty": "Здесь будут отображены адреса, добавленные в избранное.", + "featured": "Избранное", + "fee-cap": "Максимальный размер комиссии", + "fee-explanation": "Максимальная общая цена сделки. Если базовая плата за блок превышает это значение, она будет включена в следующий блок с более низкой базовой комиссией.", + "fee-options": "Предлагаемые варианты оплаты", + "fetch-community": "Найденные сообщества", + "fetch-messages": "↓ Получить сообщения", + "fetch-timeline": "↓ Обновить", + "fetching-community": "Поиск сообщества...", + "find": "Найти", + "finish": "Завершить", + "finishing-card-setup": "Завершение настройки карты", + "fleet": "Fleet", + "fleet-settings": "Настройки fleet", + "follow": "Следите за", + "follow-your-interests": "Присоединяйтесь к публичному чату и знакомьтесь с новыми людьми", + "free": "↓ Бесплатно", + "from": "От", + "gas-amount-limit": "Лимит газа", + "gas-limit": "Лимит газа", + "gas-price": "Цена на газ", + "gas-used": "Использованный газ", + "gated": "Pакрытый", + "generate-a-key": "Сгенерировать ключи", + "generate-a-new-account": "Создать аккаунт", + "generate-a-new-key": "Создать новый ключ", + "generate-account": "Сгенерировать ключи", + "generate-an-account": "Создать аккаунт", + "generate-new-key": "Сгенерировать ключи", + "generating-codes-for-pairing": "> Скачивание программного обеспечения на карту\n> Генерация кодов разблокирования и привязки", + "generating-keys": "Создание ключей...", + "generating-mnemonic": "Генерация сид-фразы", + "get-a-keycard": "Получить Keycard", + "get-started": "Начать", + "get-status-at": "Получить Status по адресу http:\/\/status.im", + "get-stickers": "Получить стикеры", + "give-a-short-description": "Дайте краткое описание", + "give-a-short-description-community": "Дайте краткое описание", + "give-permissions-camera": "Предоставьте разрешение для\nдоступа к камере", + "glossary": "Глоссарий", + "go-to-settings": "Перейти в настройки...", + "got-it": "Понятно", + "grant-face-id-permissions": "Чтобы предоставить необходимое разрешение для Face ID, перейдите в настройки системы и убедитесь, что выбрана опция Status > Face ID.", + "group-chat": "Групповой чат", + "group-chat-admin": "Администратор", + "group-chat-admin-added": "**{{member}}** присвоена роль администратора", + "group-chat-all-contacts-invited": "Все ваши контакты уже в группе", + "group-chat-created": "Пользователь **{{member}}** создал группу **{{name}}**", + "group-chat-decline-invitation": "Отказаться от приглашения", + "group-chat-member-added": "Пользователя **{{member}}** пригласили в группу", + "group-chat-member-joined": "Пользователь **{{member}}** присоединился к группе", + "group-chat-member-removed": "Пользователь **{{member}}** покинул группу", + "group-chat-members-count": "{{selected}}\/{{max}} участников", + "group-chat-name-changed": "Пользователь **{{member}}** изменил имя группы на **{{name}}**", + "group-chat-no-contacts": "У вас еще нет контактов.\nПригласите своих друзей для общения.", + "group-info": "Информация о группе", + "group-invite": "Приглашение в группу", + "group-invite-link": "Ссылка на приглашение в группу", + "group-membership-request": "Запрос на вступление в группу", + "gwei": "Gwei", + "has-permissions": "имеет разрешение на доступ", + "hash": "Хеш", + "help": "помощь", + "help-capitalized": "Помощь", + "help-center": "Справочный центр", + "help-improve-status": "Помогите улучшить Status", + "hide": "Скрыть", + "hide-content-when-switching-apps": "Блокировать снимки экрана", + "hide-content-when-switching-apps-ios": "Скрыть предпросмотр", + "history": "История", + "history-nodes": "Ноды Status", + "hold-card": "Приложите карту к\nзадней панели телефона", + "home": "Главная", + "hooks": "Перехватчики", + "how-it-works": "Как это работает", + "http-gateway-error": "К сожалению, не удалось выполнить запрос.", + "identifier": "Идентификатор", + "image": "Изображение", + "image-remove-current": "Удалить текущее фото", + "image-source-gallery": "Выбрать из галереи", + "image-source-make-photo": "Сделать снимок", + "image-source-title": "Изменить изображение", + "import": "Импорт", + "import-community": "Импортировать сообщество", + "import-community-title": "Импортировать сообщество", + "in-contacts": "В контактах", + "include": "Включает", + "incoming": "Входящие", + "incoming-transaction": "Входящая транзакция", + "incorrect-code": [ + "str", + "Вы ввели неверный код. Попробуйте еще раз." + ], + "increase-gas": "Увеличить газ", + "initialization": "Инициализация", + "install": "↓ Установить", + "insufficient-balance-to-cover-fee": "недостаточно средств для покрытия комиссии за транзакцию", + "intro-message1": "Добро пожаловать в Status!\nНажмите на это сообщение, чтобы задать пароль и начать.", + "intro-privacy-policy-note1": "Status не собирает ваши личные данные и не извлекает из них выгоду . Продолжая, вы соглашаетесь с", + "intro-privacy-policy-note2": " нашей политикой конфиденциальности", + "intro-text": "Status – это ваш пропуск в децентрализованный Интернет", + "intro-text1": "Общайтесь через одноранговую зашифрованную сеть, где сообщения не могут быть подвергнуты цензуре или взлому", + "intro-text2": "Отправляйте и получайте цифровые активы в любой точке мира, без необходимости использовать банковский счет.", + "intro-text3": "Откройте для себя мир игр, бирж и социальных сетей, в которых все ваши данные принадлежат только вам", + "intro-title1": "Действительно приватное общение", + "intro-title2": "Безопасный криптокошелек", + "intro-title3": "Децентрализованные приложения", + "intro-wizard-text1": "Управление вашим аккаунтом осуществляется на основе сгенерированных ключей. Эти ключи хранятся на вашем устройстве, поэтому только вы имеете к ним доступ.", + "intro-wizard-text2": "Один из ключей — это ваш код контакта. Он генерируется вместе с базовым неизменным именем.", + "intro-wizard-text3": "Если у вас есть Keycard, мы рекомендуем хранить ключи только на данном аппаратном кошельке в целях повышения безопасности.", + "intro-wizard-text4": "Защитите и зашифруйте свои ключи", + "intro-wizard-text6": "Приложение Status будет отправлять вам уведомления о новых сообщениях. Вы можете изменить параметры уведомлений в настройках.", + "intro-wizard-title-alt4": "Создайте пароль", + "intro-wizard-title-alt5": "Подтвердите пароль", + "intro-wizard-title1": "Сгенерируйте свои ключи", + "intro-wizard-title2": "Выберите имя в чате", + "intro-wizard-title3": "Выберите хранилище ключей", + "intro-wizard-title4": "Создайте 6-значный код доступа", + "intro-wizard-title5": "Подтвердите код доступа", + "intro-wizard-title6": "Включите уведомления", + "introduce-yourself": "Представьтесь и коротко расскажите о себе", + "invalid-address-qr-code": "Отсканированный QR-код не содержит действительный адрес", + "invalid-format": "Недопустимый формат \nДолжно быть {{format}}", + "invalid-key-confirm": "Применить", + "invalid-key-content": "База данных не может быть зашифрована, так как файл поврежден. Ваши средства и код контакта в безопасности. Другие данные, например, информацию о ваших чатах и контактах, нельзя восстановить. Кнопка «{{erase-multiaccounts-data-button-text}}» удалит все остальные данные и позволит вам получить доступ к своим средствам, а также отправлять сообщения", + "invalid-number": "Недействительный номер", + "invalid-pairing-password": "Неверный пароль сопряжения", + "invalid-public-chat-topic": "Неправильная тема публичного чата", + "invalid-range": "Неверный формат, должно быть от {{min}} и до {{max}}", + "invalid-username-or-key": "Неверное имя пользователя или код контакта", + "invite": "Пригласить", + "invite-button": "Пригласить", + "invite-chat-accept": "Принять", + "invite-chat-accept-join": "Принять и присоединиться", + "invite-chat-intro": "Ваш друг пригласил вас присоединиться к Status. Вот немного криптовалюты для старта! Используй ее, чтобы зарегистрировать ENS-имя или купить набор стикеров.", + "invite-chat-name": "Реферал", + "invite-chat-pending": "В ожидании", + "invite-chat-rule": "Если вы примете приглашение, ваш друг получит реферальный бонус в криптовалюте", + "invite-chat-starter-pack": "Стартовый набор", + "invite-friends": "Пригласить друзей", + "invite-instruction-fifth": "Вы можете использовать свой реферальный бонус в любое время.", + "invite-instruction-first": "Вы отправляете своему другу уникальную ссылку-приглашение, с помощью которой можно скачать Status и присоединиться к нашему сообществу.", + "invite-instruction-fourth": "Вы получите реферальный бонус, а ваш друг – стартовый набор.", + "invite-instruction-second": "Ваш друг скачивает приложение Status для Android и создаёт аккаунт.", + "invite-instruction-third": "Создается чат с вашим другом, в котором он подтверждает приглашение.", + "invite-people": "Пригласить друзей", + "invite-privacy-policy-public": "Вы установили приложение Status по реферальной ссылке. Присоединяясь к этому чату, вы указываете того, кто вас пригласил и соглашаетесь с", + "invite-privacy-policy1": "Принимая стартовый набор, вы соглашаетесь с", + "invite-privacy-policy2": "правилами и положениями реферальной программы.", + "invite-public-chat-home": "Приглашение реферала", + "invite-public-chat-intro": "Вот немного криптовалюты для старта! Используйте её, чтобы зарегистрировать ENS-имя или купить набор стикеров", + "invite-receive-account": "Аккаунт для получения вашего реферального бонуса", + "invite-reward": "Зарабатывайте криптовалюту за каждого приглашенного друга!", + "invite-reward-friend": "Друг: ", + "invite-reward-friend-description": "Ваш друг получит стартовый набор, состоящий из {{reward}}", + "invite-reward-friend-name": "Стартовый набор", + "invite-reward-you": "Вы: ", + "invite-reward-you-description": "Пригласите друга и получите {{reward}} в качестве реферального бонуса. Используйте награду, чтобы получить ENS-имя, стикеры или доступ к децентрализованным приложениям", + "invite-reward-you-name": "Реферальный бонус", + "invite-select-account": "Выберите аккаунт для получения вашего реферального бонуса", + "invite-warning": "Данное предложение актуально только для пользователей Android-устройств, не являющихся резидентами США. В течение 7 дней друг должен подтвердить, что получил приглашение от вас.", + "invited": "приглашен(а)", + "join": "Присоединиться", + "join-a-community": "или присоединиться к сообществу", + "join-group-chat": "Вступить в группу", + "join-group-chat-description": "Пользователь {{username}} пригласил вас присоединиться к группе {{group-name}}", + "join-me": "Привет! Присоединяйтесь ко мне в Status: {{url}}", + "join-new-private-chat": "Создать новый приватный чат", + "join-new-public-chat": "Присоединиться к публичному чату", + "joined": "В группе", + "joined-group-chat-description": "Вы присоединились к {{group-name}} по приглашению {{username}}", + "key": "Ключ", + "key-managment": "Управление ключами", + "key-on-device": "Приватный ключ сохраняется на этом устройстве", + "keycard": "Keycard", + "keycard-access-reset": "Доступ к Keycard был сброшен", + "keycard-applet-install-instructions": "Чтобы установить апплет, следуйте инструкциям на https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Попробуйте переместить карту в диапазон действия NFC-сканера вашего устройства", + "keycard-awaiting-title": "Идет поиск...", + "keycard-backup": "Создать резервную копию Keycard", + "keycard-backup-success-body": "Резервная карта создана успешно. Теперь вы можете использовать ее со своим аккаунтом так же, как и основную карту.", + "keycard-backup-success-title": "Резервное копирование успешно", + "keycard-blocked": "Кошелек Keycard заблокирован. \nЧтобы возобновить его работу, необходимо сбросить настройки карты.", + "keycard-can-use-with-new-passcode": "Вы можете использовать эту карту с вашим новым кодом доступа", + "keycard-cancel-setup-text": "Это отменит настройку Keycard. Настоятельно рекомендуем завершить настройку карты, чтобы ее можно было использовать в дальнейшем. Вы действительно хотите отменить?", + "keycard-cancel-setup-title": "Опасная операция", + "keycard-connected-description": "Держите карту неподвижно", + "keycard-connected-title": "Подключен", + "keycard-desc": "Владеете Keycard? Храните безопасно свои ключи на Keycard, а также подписывайте транзакции с использованием данного аппаратного кошелька", + "keycard-dont-ask-card": "Не спрашивать карту для входа", + "keycard-enter-new-passcode": "Введите новый код доступа {{step}}\/2", + "keycard-error-description": "Подключите карту еще раз, чтобы продолжить", + "keycard-error-title": "Соединение потеряно", + "keycard-factory-reset": "Возврат карты к заводским настройкам", + "keycard-factory-reset-text": "Это приведет к удалению всех мнемонических фраз, хранящихся на карте. Убедитесь, что у вас есть резервная копия мнемонической фразы, которую вы использовали с этим кошельком Keycard.", + "keycard-factory-reset-title": "Вы точно хотите выполнить сброс параметров?", + "keycard-free-pairing-slots": "У Keycard есть свободные слоты ({{n}}) для сопряжения", + "keycard-has-multiaccount-on-it": "Эта карта заполнена. Каждая карта может содержать одну основную пару ключей", + "keycard-init-description": "Приложите карту к задней панели телефона, чтобы продолжить", + "keycard-init-title": "Ищем карту...", + "keycard-is-blocked-details": "Вы больше не можете использовать эту карту для доступа к вашему аккаунту или подписи. Было сделано слишком много неудачных попыток ввода кода доступа и PUK-кода.", + "keycard-is-blocked-instructions": "Чтобы получить доступ к своему аккаунту, необходимо выполнить сброс карты. Нажмите кнопку ниже, чтобы начать процедуру, вам понадобится мнемоника.", + "keycard-is-blocked-title": "Keycard заблокирован", + "keycard-is-frozen-details": "В целях защиты активов ваша карта заморожена. Сбросьте параметры карты, чтобы разморозить ее и получить возможность осуществлять транзакции. Сброс можно выполнить с помощью кода PUK или мнемоники.", + "keycard-is-frozen-factory-reset": "Сброс с мнемоникой", + "keycard-is-frozen-reset": "Сброс c PUK", + "keycard-is-frozen-title": "Keycard заморожен", + "keycard-onboarding-finishing-header": "Завершение", + "keycard-onboarding-intro-header": "Храните ваши ключи на Keycard", + "keycard-onboarding-intro-text": "Это займет несколько минут. Помните: данные действия нужны для защиты вашего аккаунта", + "keycard-onboarding-mnemonic-text": "Вам также понадобятся лист бумаги и ручка, чтобы записать кодовую фразу.", + "keycard-onboarding-pairing-header": "Привязка карты...", + "keycard-onboarding-pin-text": "Вам нужно будет создать 6-значный пароль, который будет использоваться для защиты доступа к вашей карточке-ключу.", + "keycard-onboarding-preparing-header": "Подготовка карты ...", + "keycard-onboarding-puk-code-header": "Запишите коды\nи храните их в надежном месте", + "keycard-onboarding-recovery-phrase-description": "Сид-фраза необходима для того, чтобы вернуть доступ к своим ключам. Запишите ее и храните в надежном и безопасном месте (не рекомендуется хранить слова на мобильных устройствах и документах, размещенных в сети Интернет).", + "keycard-onboarding-recovery-phrase-header": "Резервное копирование сид-фразы", + "keycard-onboarding-recovery-phrase-text": "Только для вашего приватного ознакомления. Эти волшебные слова используются для создания ваших ключей.", + "keycard-onboarding-start-header": "Приложите карту к задней \nпанели телефона, чтобы начать", + "keycard-onboarding-start-step1": "Создать код доступа", + "keycard-onboarding-start-step1-text": "Это займет около минуты. Создайте 6-значный код доступа для шифрования своих ключей", + "keycard-onboarding-start-step2": "Запишите PUK и код сопряжения", + "keycard-onboarding-start-step2-text": "Это займет около минуты. Вам понадобится лист бумаги и ручка", + "keycard-onboarding-start-step3": "Сделайте резервную копию сид-фразы", + "keycard-onboarding-start-step3-text": "Это займет около минуты. Вам также понадобится лист бумаги и карандаш", + "keycard-onboarding-start-text": "Удерживайте карту плотно прижатой к телефону\n во время установки. Она займет около 4-x минут", + "keycard-processing-description": "Держите карту неподвижно", + "keycard-processing-title": "Обработка...", + "keycard-recover": "потерянная или замороженная карта?", + "keycard-recover-text": "Если у вас есть ваша мнемоническая фраза, вы можете создать новый кошелек Keycard, связанный с этим аккаунтом. Можно использовать либо новый Keycard, либо выполнить сброс параметров для замороженного Keycard.", + "keycard-recover-title": "Создать новую карту для этого аккаунта?", + "keycard-recovery-intro-button-text": "Восстановить", + "keycard-recovery-intro-header": "Восстановить ключи, \nхранящиеся на Keycard", + "keycard-recovery-intro-text": "Если ранее вы создали ключи с помощью Keycard и теперь хотите использовать их на своем устройстве", + "keycard-recovery-no-key-header": "Отсутствует информация\nдля восстановления", + "keycard-recovery-no-key-text": "На вашем Keycard отсутствует ключ. Чтобы использовать аппаратный кошелек, сгенерируйте новый ключ и выберите Keycard в качестве хранилища ключей", + "keycard-recovery-phrase-confirm-header": "Подтвердить сид-фразу", + "keycard-recovery-phrase-confirmation-text": "У вас не будет второго шанса! Например, потеряв свой Keycard, вы сможете восстановить доступ к своим ключам только с помощью сид-фразы. Никто, кроме вас, не должен иметь доступ к вашей сид-фразе. Запишите ее и храните в надежном месте.", + "keycard-recovery-phrase-confirmation-title": "Записали свою сид-фразу?", + "keycard-recovery-success-header": "Ваши ключи\nуспешно восстановлены", + "keycard-redeem-title": "Отправить", + "keycard-redeem-tx": "Использовать активы", + "keycard-redeem-tx-desc": "Коснитесь карты для подтверждения вашей подписи, чтобы получить активы", + "keycard-reset-passcode": "Сброс кода доступа", + "keycard-success-description": "Теперь карту можно убрать", + "keycard-success-title": "Успешно", + "keycard-unauthorized-operation": "Вы не авторизованы для выполнения этой операции. \nИспользуйте действительную карту и попробуйте снова.", + "keycard-upsell-subtitle": "Повышенная безопасность и удобство", + "language": "Язык", + "last-backup-performed": "Последнее резервное копирование было выполнено:", + "last-transaction": "Последняя транзакция", + "learn-more": "Узнать больше", + "learn-more-about-keycard": "Узнайте больше о Keycard", + "leave": "Выйти", + "leave-chat": "Выйти из чата", + "leave-chat-confirmation": "История чата будет удалена с вашего устройства. После повторного присоединения вы не сможете восстановить свою историю.", + "leave-community": "Покинуть сообщество", + "leave-confirmation": "Выйти из чата", + "leave-group": "Покинуть группу", + "left": "осталось", + "les-ulc": "LES\/ULC", + "lets-go": "Начать", + "lifestyle": "Образ жизни", + "light": "Светлая", + "limit": "Ограничение", + "linked-on": "Привязано {{date}}", + "load-messages-before": "до {{date}}", + "load-more-messages": "↓ Открыть больше сообщений", + "load-more-timeline": "↓ Показать больше", + "loading": "Загрузка...", + "local-notifications": "Местные уведомления", + "local-notifications-subtitle": "Включить фоновые службы", + "lock-app-with": "Блокировать приложение с помощью", + "log-level": "Уровень ведения журнала", + "log-level-settings": "Настройки уровня ведения журнала", + "logging": "Ведение журнала", + "logging-enabled": "Ведение журнала включено?", + "login-pin-description": "Введите 6-значный код доступа для разблокировки ваших ключей", + "logout": "Выйти", + "logout-app-content": "Вы выйдете из системы. При повторной разблокировке будет использоваться выбранная сеть.", + "logout-are-you-sure": "Вы действительно \nхотите выйти?", + "logout-key-management": "Для доступа к управлению ключами необходимо выйти из системы.", + "logout-title": "Выйти из системы?", + "looking-for-cards": "Ищем карту...", + "lost-connection": "Соединение прервано", + "low-tip": "чаевые слишком маленькие", + "lower-than-average-tip": "чаевые ниже среднего уровня", + "mail-should-be-configured": "Необходимо настроить почтовый клиент", + "mailserver-address": "Адрес ноды Status", + "mailserver-automatic": "Автоматический выбор", + "mailserver-automatic-switch-explanation": "Выберите самую быструю ноду Status среди доступных", + "mailserver-connection-error": "Не удалось подключиться к ноде Status", + "mailserver-content": "Нода в сети Status отвечает за маршрутизацию и хранение сообщений сроком до 30 дней.", + "mailserver-details": "Сведения о ноде Status", + "mailserver-error-content": "Выбранная вами нода Status недоступна.", + "mailserver-error-title": "Ошибка подключения к ноде Status", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Выберите другую ноду Status", + "mailserver-reconnect": "Не удалось подключиться к ноде Status. Нажмите для повторного подключения.", + "mailserver-request-error-content": "Нода Status вернула следующую ошибку: {{error}}", + "mailserver-request-error-status": "При получении истории произошла ошибка, проверьте подробности в журналах", + "mailserver-request-error-title": "Ошибка запроса к ноде Status", + "mailserver-request-retry": "Повторить запрос", + "mailserver-retry": "Повторить", + "mailserver-title": "Нода Status", + "main-account": "Основной аккаунт", + "main-currency": "Основная валюта", + "main-networks": "Основные сети", + "main-wallet": "Основной кошелек", + "mainnet-network": "Основная сеть", + "make-admin": "Сделать администратором", + "manage-connections": "Управление подключениями из приложений", + "manage-keys-and-storage": "Управление ключами и хранилищем", + "mark-all-read": "Отметить всё как прочитанное", + "master-account": "Главный аккаунт", + "max-fee": "Максимальная комиссия", + "max-priority-fee": "Максимальная приоритетная комиссия", + "maximum-fee": "Максимальная комиссия", + "maximum-fee-desc": "Максимальная общая цена сделки. Если текущая базовая комиссия за блок превышает это значение, ваша транзакция будет включена в следующий блок с более низкой базовой комиссией.", + "maybe-later": "Возможно, позже", + "member-ban": "Забанить участника", + "member-kick": "Удалить участника", + "members": { + "zero": "участников", + "one": "1 участник", + "few": "{{count}} участника", + "many": "{{count}} участников", + "other": "Участников: {{count}}" + }, + "members-active": { + "zero": "участников", + "one": "1 участник", + "few": "{{count}} участника", + "many": "{{count}} участников", + "other": "Участников: {{count}}" + }, + "members-active-none": "нет участников", + "members-count": "Участников: {{count}}", + "members-label": "Участники", + "members-limit-reached": "Достигнут лимит участников", + "members-title": "Участники", + "membership-approval": "Требуется одобрение", + "membership-approval-description": "Сообщество открытое, но новые участники должны быть одобрены создателем сообщества", + "membership-button": "Требование к участию", + "membership-declined": "Заявка на вступление в группу была отклонена", + "membership-description": "Для вступления в группу ваша заявка должна быть одобрена администратором", + "membership-ens": "Требуется ENS-имя", + "membership-ens-description": "Для присоединения к сообществу требуется ENS-имя", + "membership-free": "Не требуется", + "membership-free-description": "Сообщество открыто для всех желающих", + "membership-invite": "Требуется приглашение от другого участника", + "membership-invite-description": "К сообществу можно присоединиться только по приглашению существующих членов сообщества", + "membership-none": "Нет", + "membership-none-placeholder": "Вы можете потребовать, чтобы новые участники соответствовали определенным критериям. Это условие можно изменить в любое время", + "membership-request-pending": "Запрос на участие находится на рассмотрении", + "membership-requests": "Запросы на участие", + "membership-title": "Требование к участию", + "message": "Сообщение", + "message-not-sent": "Сообщение не отправлено", + "message-options-cancel": "Отменить", + "message-reply": "Ответить", + "messages": "Сообщения", + "messages-from-contacts-only-subtitle": "Только люди, которых вы добавили в свои контакты, могут начать с вами новый чат или пригласить в группу", + "might-break": "Некоторые ÐApp станут недоступными", + "migration-successful": "Перенос прошел успешно", + "migration-successful-text": "Аккаунт успешно перенесен на Keycard", + "migrations-failed-content": "{{message}}\nверсия схемы: начальная {{initial-version}}, текущая {{current-version}}, последняя {{last-version}}\n\nПроизошла ошибка базы данных. Ваши средства и код контакта в безопасности. Другие данные, например, информацию о ваших чатах и контактах, нельзя восстановить. Кнопка «{{erase-multiaccounts-data-button-text}}» удалит все остальные данные и позволит вам получить доступ к своим средствам, а также отправлять сообщения.", + "miners-higher-fee": "Майнеры, скорее всего, проведут вашу транзакцию раньше, если вы заплатите более высокую комиссию.", + "minimum-received": "Полученный минимум", + "mobile-network-ask-me": "Спросить меня при использовании мобильной сети", + "mobile-network-continue-syncing": "Продолжить синхронизацию", + "mobile-network-continue-syncing-details": "Вы можете изменить это позже в настройках", + "mobile-network-go-to-settings": "Перейти в настройки", + "mobile-network-settings": "Мобильные данные", + "mobile-network-sheet-configure": "Вы можете настроить синхронизацию\nболее подробно в", + "mobile-network-sheet-offline": "Wi-Fi не подключен, синхронизация сообщений отключена.", + "mobile-network-sheet-offline-details": "Синхронизация с использованием мобильной сети отключена", + "mobile-network-sheet-remember-choice": "Запомнить мой выбор", + "mobile-network-sheet-settings": "настройках", + "mobile-network-start-syncing": "Начать синхронизацию", + "mobile-network-stop-syncing": "Прервать синхронизацию", + "mobile-network-stop-syncing-details": "До подключения к Wi-Fi?", + "mobile-network-use-mobile": "Использовать мобильные данные", + "mobile-network-use-mobile-data": "Status может быстро расходовать мобильный трафик при синхронизации чатов и кошелька.", + "mobile-network-use-wifi": "Только Wi-Fi", + "mobile-syncing-sheet-details": "Status может быстро расходовать мобильный трафик при синхронизации чатов и кошелька.", + "mobile-syncing-sheet-title": "Синхронизация с использованием мобильных данных?", + "more": "больше", + "move-and-reset": "Переместить и сбросить", + "move-keystore-file": "Переместить файл хранилища ключей", + "move-keystore-file-to-keycard": "Переместить файл хранилища ключей на Keycard?", + "multiaccount-exists-content": "Ключи для этого аккаунта уже существуют, и их нельзя добавить повторно. Если вы потеряли пароль, код доступа или Keycard, удалите приложение, переустановите его и восстановите доступ к ключам, введя сид-фразу.", + "multiaccount-exists-title": "Ключи для этого аккаунта уже существуют", + "multiaccounts-recover-enter-phrase-text": "Введите 12, 15, 18, 21 или 24 слова. \nРазделяйте слова одним пробелом.", + "multiaccounts-recover-enter-phrase-title": "Введите свою сид-фразу", + "music": "Музыка", + "mutal-contacts": "Взаимные контакты", + "mute": "Без звука", + "mutual-contact-requests": "Запросы на взаимные контакты", + "my-accounts": "Мои аккаунты", + "my-accounts-empty": "Доступные аккаунты появятся здесь", + "my-profile": "Мой профиль", + "my-status": "Мой статус", + "name": "Имя", + "name-of-token": "Название вашего токена", + "name-optional": "Имя (необязательно)", + "name-your-channel": "Назовите свой канал", + "name-your-channel-placeholder": "Название канала", + "name-your-community": "Назовите ваше сообщество", + "name-your-community-placeholder": "Запоминающееся имя", + "need-help": "Нужна помощь?", + "negative": "Отрицательный", + "network": "Сеть", + "network-chain": "Тип сети", + "network-details": "Сведения о сети", + "network-fee": "Комиссия сети", + "network-id": "Идентификатор сети", + "network-info": "Сведения о сети", + "network-invalid-network-id": "Указанный идентификатор сети не соответствует идентификатору сети по URL-адресу RPC", + "network-invalid-status-code": "Неверный код состояния: {{code}}", + "network-invalid-url": "Сетевой URL недействителен", + "network-settings": "Настройки сети", + "never": "Никогда", + "new": "Новый", + "new-category": "Новая категория", + "new-chat": "Новый чат", + "new-community-title": "Новое сообщество", + "new-contact": "Новый контакт", + "new-contract": "Новый контракт", + "new-favourite": "Новый фаворит", + "new-group": "Новая группа", + "new-group-chat": "Новый групповой чат", + "new-network": "Новая сеть", + "new-password": "Новый пароль", + "new-pin-description": "Введите новый 6-значный код доступа", + "new-public-group-chat": "Присоединиться к публичному чату", + "new-puk-description": "Введите новый 12-значный PUK", + "new-status": "Новый статус", + "new-tab": "Новая вкладка", + "new-ui": "Новый интерфейс", + "next": "Далее", + "nickname": "Псевдоним", + "nickname-description": "Псевдонимы помогут вам идентифицировать других в Status.\nТолько вы можете видеть псевдонимы, добавленные вами.", + "no": "Нет", + "no-collectibles": "Нет доступных коллекций", + "no-contacts": "Пока нет контактов", + "no-keycard-applet-on-card": "На карте не установлен апплет Keycard", + "no-messages": "Нет сообщений", + "no-pairing-slots-available": "Карта уже привязана к 5-ти устройствам, и ее нельзя привязать к ещё одному. Используйте одно из привязанных устройств, войдите с помощью этой карты и освободите слоты привязки.", + "no-pinned-messages": "Нет закрепленных сообщений", + "no-result": "Нет результатов", + "no-thanks": "Нет, спасибо", + "no-tokens-found": "Токены не найдены", + "node-address": "Адрес ноды", + "node-details": "Сведения о ноде", + "node-info": "Информация о ноде", + "node-version": "Версия ноды", + "nodes-disabled": "Ноды Status отключены", + "non-archival-node": "Конечная точка RPC не поддерживает запросы архивации. История ваших локальных переводов может быть неполной.", + "non-contacts": "Нет контактов", + "nonce": "Nonce", + "none": "Нет", + "normal": "Обычный", + "not-applicable": "Неприменимо для неподписанных транзакций", + "not-connected-nodes": "Нет подключения к ноде Status", + "not-connected-to-peers": "Нет подключения к узлам", + "not-enough-snt": "Недостаточно SNT", + "not-found": "Не найдено", + "not-keycard-text": "Карта, которую вы использовали, не является Keycard. Вам нужно купить Keycard, чтобы пользоваться данной функцией", + "not-keycard-title": "Это не Keycard", + "not-registered": "не зарегистрированный", + "notification-settings": "Уведомления", + "notifications": "Уведомления", + "notifications-non-contacts": "Уведомления от тех, кого нет в ваших контактах", + "notifications-preferences": "Параметры уведомлений", + "notifications-servers": "Серверы уведомлений", + "notifications-switch": "Просмотр уведомлений", + "notifications-transactions": "Операции с кошельком", + "notify": "Уведомлять", + "now": "сейчас", + "off": "Выкл.", + "off-status-tree": "Выключить дерево Status", + "offline": "Не в сети", + "offline-messaging-use-history-explanation": "Включите ноды Status для получения сообщений, которые отправляются вам при закрытом приложении. Если эта функция включена, нода Status получает ваш IP-адрес. В противном случае вы не будете получать сообщения, когда приложение закрыто, и не увидите их при последующем открытии приложения.", + "offline-messaging-use-history-nodes": "Использовать ноды Status", + "ok": "OK", + "ok-continue": "Хорошо, продолжить", + "ok-got-it": "Понятно", + "ok-save-pass": "Хорошо, сохранить пароль", + "okay": "Хорошо", + "on": "Вкл.", + "on-status-tree": "Включить дерево Status", + "once-enabled-share-metadata": "Если эта функция включена, ссылки, размещенные в чате, могут передавать ваши метаданные сайту", + "one-day": "Один день", + "one-month": "Один месяц", + "one-week": "Одну неделю", + "open": "Открыть", + "open-chat": "Создать чат", + "open-dapp": "Открыть ÐApp", + "open-dapp-store": "Откройте для себя мир ÐApp-приложений", + "open-home": "Открыть...", + "open-in-new-tab": "Открыть в новой вкладке", + "open-membership": "Открытое участие", + "open-nfc-settings": "Открыть настройки NFC", + "open-on-block-explorer": "Открыть в обозревателе блоков", + "opened": "Открытый", + "opening-buy-crypto": "Открытие {{site}}...", + "optimal": "Оптимальный", + "optional": "опционально", + "or": "или", + "outgoing": "Исходящие", + "outgoing-transaction": "Исходящая транзакция", + "page-camera-request-blocked": "Доступ к камере отклонен. Для включения камеры необходимо изменить настройки доступа на вашем устройстве.", + "page-would-like-to-use-camera": "хотите использовать камеру?", + "pair": "Связать устройства", + "pair-card": "Установить сопряжение с этим устройством", + "pair-code": "Код сопряжения", + "pair-code-explanation": "Устанавливает сопряжение карты с другим устройством (до 5) для разблокировки ключей и подписания транзакций с помощью одного и того же Keycard", + "pair-code-placeholder": "Код сопряжения...", + "pair-this-card": "Привязать эту карту", + "pair-this-device": "Установить сопряжение", + "pair-this-device-description": "Свяжите устройства для синхронизации контактов и чатов между ними", + "paired-devices": "Связанные устройства", + "pairing": "Сопряжение", + "pairing-card": "Привязка карты", + "pairing-changed": "Код сопряжения был изменен", + "pairing-code-placeholder": "Код сопряжения...", + "pairing-code_error1": "Коды сопряжения не совпадают.", + "pairing-go-to-installation": "Перейти к параметрам сопряжения", + "pairing-maximum-number-reached-content": "Отвяжите одно из своих устройств перед добавлением нового.", + "pairing-maximum-number-reached-title": "Достигнуто максимальное количество устройств", + "pairing-new-installation-detected-content": "Обнаружено новое устройство.\nДля того, чтобы правильно использовать устройства, важно выполнить сопряжение и включить их перед использованием.\nДля сопряжения устройств перейдите в раздел «Устройства» в настройках.", + "pairing-new-installation-detected-title": "Обнаружено новое устройство", + "pairing-no-info": "Нет информации", + "pairing-please-set-a-name": "Задайте название вашего устройства.", + "passphrase": "Сид-фраза", + "password": "Пароль", + "password-description": "Введите не менее 6 символов. Данный пароль оберегает ваши ключи. Он нужен для разблокировки приложения и совершения транзакций.", + "password-mismatch": "Новый пароль и его подтверждение не совпадают", + "password-placeholder": "Пароль...", + "password-placeholder2": "Подтвердите пароль", + "password-reset-in-progress": "Изменение пароля...", + "password-reset-success": "Пароль изменен", + "password-reset-success-message": "Вам нужно будет снова войти в систему", + "password_error1": "Пароли не совпадают.", + "paste": "Вставить", + "paste-json": "Вставить JSON", + "pay-to-chat": "Оплатить для чата", + "peer-content": "Устройство, подключенное к сети чатов приложения Status. Каждый пользователь может представлять один или несколько одноранговых узлов, в зависимости от количества устройств.", + "peer-title": "Одноранговый узел", + "peer-to-peer": "Одноранговая сеть", + "peers": "Одноранговые узлы", + "pending": "В ожидании", + "pending-confirmation": "Ожидание подтверждения...", + "pending-invitations": "Нерассмотренные заявки на вступление", + "per-gas-price-limit": "Предел цены за газ", + "per-gas-tip-limit": "Предел чаевых за газ", + "perform-backup": "Сделать резервную копию", + "permissions": "Разрешения", + "phone-e164": "Международный 1", + "photos": "Фотографии", + "photos-access-error": "Чтобы предоставить необходимое разрешение для фото, перейдите в настройки системы и убедитесь, что выбрана опция Status > Фотографии.", + "pin": "Закрепить", + "pin-changed": "6-значный код доступа был изменен", + "pin-code": "6-значный код доступа", + "pin-limit-reached": "Лимит закрепленных сообщений достигнут. Сначала открепите предыдущее сообщение.", + "pin-mismatch": "Неверный код доступа", + "pin-one-attempt": " одна попытка ", + "pin-one-attempt-blocked-after": "до того, как ваш Keycard будет заблокирован", + "pin-one-attempt-blocked-before": "Будьте осторожны, у вас есть только", + "pin-one-attempt-frozen-after": "до того, как ваш Keycard будет заморожен", + "pin-one-attempt-frozen-before": "Будьте осторожны, у вас есть только", + "pin-retries-left": "Осталось попыток: {{number}}", + "pinned-by": "Закреплено", + "pinned-messages": "Закрепленные сообщения", + "pinned-messages-count": { + "zero": "ноль", + "one": "одно", + "few": "несколько", + "many": "много", + "other": "другое" + }, + "pinned-messages-empty": "Закрепленные сообщения появятся здесь. Чтобы закрепить сообщение, нажмите и удерживайте его, а затем нажмите «Закрепить».", + "podcasts": "Подкасты", + "positive": "Положительный", + "powered-by-paraswap": "При поддержке Paraswap", + "preference": "Темы", + "preview-privacy": "Предпросмотр в приватном режиме", + "previewing-may-share-metadata": "При предварительном просмотре ссылок с этих сайтов ваши метаданные могут предоставляться владельцам сайтов", + "price-impact": "Влияние цены", + "price-impact-desc": "Предполагаемое влияние цены на эту транзакцию. Если текущая базовая комиссия за блок превышает это значение, ваша транзакция будет включена в следующий блок с более низкой базовой комиссией.", + "principles": "Наши принципы", + "priority": "Приоритет", + "privacy": "Конфиденциальность", + "privacy-and-security": "Конфиденциальность и безопасность", + "privacy-photos": "Конфиденциальность фото профиля", + "privacy-policy": "Политика конфиденциальности", + "privacy-show-to-warning": "Люди, которые уже видели ваше изображение профиля, будут продолжать его видеть", + "private-key": "Приватный ключ", + "private-notifications": "Приватные уведомления", + "private-notifications-descr": "Приложение Status будет отправлять вам уведомления о новых сообщениях. Вы можете изменить параметры уведомлений в настройках.", + "processing": "Минутку...", + "product-information": "Информация о продукте", + "profile": "Профиль", + "profile-deleted-content": "Ваш профиль был успешно удалён", + "profile-deleted-keycard": "Теперь вы можете восстановить другую пару ключей на вашем Keycard", + "profile-deleted-title": "Профиль удален", + "profile-details": "Детали профиля", + "profile-not-found": "Профиль не найден", + "profile-pic-pick": "Выбрать из галереи", + "profile-pic-remove": "Удалить фото", + "profile-pic-take": "Сделать фото", + "profile-picture-updated": "Фото профиля обновлено", + "public": "Публичный", + "public-channel": "Публичный канал", + "public-chat": "Публичный чат", + "public-chat-description": "Присоединяйтесь к публичным чатам по интересам. Любой пользователь может создать новый чат.", + "public-chats": "Публичные чаты", + "public-group-status": "Публичный", + "public-group-topic": "Тема", + "public-key": "Публичный ключ", + "puk-and-pairing-codes-displayed": "Показаны PUK и код сопряжения", + "puk-changed": "12-значный PUK был изменен", + "puk-code": "PUK-код", + "puk-code-explanation": "Если вы забыли 6-значный код доступа или ввели его неправильно 3 раза, то вам понадобится этот PUK-код для разблокировки карты.", + "puk-mismatch": "Неверный PUK-код", + "push-failed-transaction": "Сбой транзакции", + "push-failed-transaction-body": "{{value}}{{currency}} на {{to}}", + "push-inbound-transaction": "Вы получили {{value}} {{currency}}", + "push-inbound-transaction-body": "От {{from}} на {{to}}", + "push-notifications-server-enabled": "Сервер подключен", + "push-notifications-servers": "Серверы push-уведомлений", + "push-outbound-transaction": "Вы отправили {{value}}{{currency}}", + "push-outbound-transaction-body": "От {{from}} на {{to}}", + "quiet-days": "{{quiet-days}} дн.", + "quiet-hours": "{{quiet-hours}} ч.", + "re-encrypt-key": "Зашифруйте свои ключи повторно", + "rearrange-categories": "Изменение порядка категорий", + "receive": "Получить", + "receive-transaction": "Получить транзакцию", + "recent": "Последние", + "recent-empty": "Недавно использованные адреса появятся здесь", + "recent-recipients": "Контакты", + "recently-used-stickers": "Недавно использованные стикеры появятся здесь", + "recipient": "Получатель", + "recipient-code": "Введите адрес получателя", + "recipient-code-placeholder": "0x... или username.domain.eth", + "recover": "Восстановить", + "recover-key": "Доступ к существующим ключам", + "recover-keycard-multiaccount-not-supported": "Ключи для этого аккаунта уже существуют, и их нельзя добавить повторно. Если вы потеряли пароль, 6-значный код доступа или Keycard, удалите приложение, переустановите его и восстановите доступ к ключам, введя сид-фразу.", + "recover-with-keycard": "Восстановить с помощью Keycard", + "recover-with-seed-phrase": "Восстановить с помощью сид-фразы", + "recovering-key": "Доступ к ключам...", + "recovery-confirm-phrase": "Подтвердите сид-фразу", + "recovery-phrase": "Сид-фраза", + "recovery-success-text": "Вам нужно будет создать новый код или пароль, чтобы повторно зашифровать свои ключи", + "recovery-typo-dialog-description": "Обратите внимание: в сид-фразе должны использоваться те же слова и в том же порядке, в котором вы их получили", + "recovery-typo-dialog-title": "Эта сид-фраза верна?", + "redeem-amount": "Доступных бонусов: {{quantity}}", + "redeem-now": "Использовать сейчас", + "redeem-success": "Бонус успешно получен!", + "reduced-tip": "приоритет чаевых будет уменьшен", + "refresh": "Обновить", + "registered": "зарегистрированный", + "reject": "Отклонить", + "reject-and-delete": "Отклонить и удалить", + "remember-me": "Запомнить меня", + "remind-me-later": "Показать еще раз", + "remote-notifications": "Удаленные уведомления", + "remote-notifications-subtitle": "Включите push-уведомления Google", + "remove": "Удалить", + "remove-favourite": "Удалить из избранного", + "remove-from-chat": "Удалить из чата", + "remove-from-contacts": "Удалить из контактов", + "remove-from-contacts-text": "Удаляя пользователя из списка контактов, вы не скрываете от него адрес своего кошелька", + "remove-group": "Удалить группу", + "remove-network": "Удалить сеть", + "remove-token": "Удалить токен", + "removed": "удалено", + "removed-from-contacts": "Удалено из контактов", + "repeat-pin": "Повторите новый 6-значный код доступа", + "repeat-puk": "Повторите новый 12-значный PUK", + "replying-to": "Ответ {{author}}", + "report-bug-email-template": "1. Описание проблемы \n(Опишите функцию, которую вы хотели бы иметь, или кратко опишите ошибку: ваши действия, ожидания и полученный результат, изложив информацию в соответствующих разделах ниже)\n\n\n2. Действия для повторения ошибки:\n(Опишите, как мы можем повторить ошибку шаг за шагом) \nНапример:\n- Открыть Status \n- ... \n- Шаг 3 и т. д.\n\n\n3. Ожидаемый результат:\n(Опишите, что вы ожидали получить в результате своих действий) \n\n\n4. Фактический результат:\n(Опишите, что произошло на самом деле) \n\n\n5. Приложите скриншоты, на которых видно проблему.\n", + "request-access": "Запрос доступа", + "request-feature": "Запросить новую функцию", + "request-membership": "Отправить запрос на участие", + "request-pending": "На рассмотрении...", + "request-transaction": "Запросить транзакцию", + "required-field": "Обязательное поле", + "resend-message": "Отправить повторно", + "reset-card": "Сбросить параметры карты", + "reset-card-description": "Эта операция вернет карту в начальное состояние. Все данные, включая приватные ключи, будут уничтожены. Операция необратима.", + "reset-database": "Очистить базу данных", + "reset-database-warning": "Будут удалены чаты, контакты и настройки. Требуется при потере пароля.", + "reset-database-warning-keycard": "Будут удалены чаты, контакты и настройки.", + "reset-password": "Сброс пароля", + "restore-defaults": "Восстановить настройки по умолчанию", + "retry": "Повторить", + "revoke-access": "Отменить доступ", + "rpc-url": "URL-адрес RPC", + "rpc-usage-copy": "Копировать", + "rpc-usage-filter": "Методы фильтрации", + "rpc-usage-filter-methods": "Методы фильтрации", + "rpc-usage-filtered-total": "{{filtered-total}} из {{total}}", + "rpc-usage-get-stats": "Обновить", + "rpc-usage-info": "Статистика использования RPC", + "rpc-usage-reset": "Сброс", + "rpc-usage-total": "Всего", + "safe-estimate": "Безопасная оценка", + "save": "Сохранить", + "save-password": "Сохранить пароль", + "save-password-unavailable": "Установите код доступа на ваше устройство, чтобы сохранить пароль", + "save-password-unavailable-android": "Сохранить пароль невозможно: устройство было подвергнуто рутингу (rooting) или не имеет необходимых функций безопасности.", + "say-hi": "Поздороваться", + "scan-qr": "Сканировать QR-код", + "scan-qr-code": "Сканировать QR-код с адресом кошелька", + "scan-tokens": "Сканировать токены", + "search": "Поиск", + "search-no-chat-found": "По вашему запросу ничего не найдено. Возможно, вы имели в виду:", + "secret-keys-confirmation-text": "Они понадобятся вам, чтобы продолжать использовать Keycard в случае утери телефона.", + "secret-keys-confirmation-title": "Вы записали эти коды?", + "security": "Безопасность", + "see-details": "Смотрите подробности", + "see-it-again": "ПОСМОТРЕТЬ ЕЩЕ РАЗ", + "see-suggestions": "Посмотреть предложения", + "seed-key-uid-mismatch": "Сид-фраза введена неправильно", + "seed-key-uid-mismatch-desc-1": "Введенная вами сид-фраза не соответствует фразе для {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Для управления ключами этого аккаунта проверьте сид-фразу и попробуйте снова.", + "seed-phrase-content": "Фраза из удобочитаемых слов, выбранных случайным образом из списка стандарта BIP39. Сид-фраза используется для восстановления аккаунта Ethereum или предоставления доступа к нему на других кошельках и устройствах. Встречаются также другие названия сид-фразы: «мнемоническая фраза», «фраза восстановления» или «резервная копия кошелька». Большинство криптоприложений используют этот же стандарт при генерации новых аккаунтов.", + "seed-phrase-placeholder": "Сид-фраза...", + "seed-phrase-title": "Сид-фраза", + "select": "Выбрать", + "select-account": "Выберите аккаунт", + "select-account-dapp": "Выберите аккаунт, который хотите использовать с Dapps", + "select-account-first": "Сначала выберите аккаунт", + "select-chat": "Выберите чат, чтобы начать общение", + "select-new-location-for-keys": "Выберите новое хранилище для приватных ключей", + "select-token-to-receive": "Выберите токен для получения", + "select-token-to-swap": "Выберите токен для обмена", + "selected": "Выбранные", + "send-contact-request-message": "Для начала чата вам нужно стать контактами", + "send-logs": "Сообщить об ошибке", + "send-logs-to": "Сообщить об ошибке по адресу электронной почты {{email}}", + "send-message": "Отправить сообщение", + "send-push-notifications": "Отправлять push-уведомления", + "send-push-notifications-description": "Если данная функция отключена, пользователь не получит уведомление о новом сообщении.", + "send-request": "Послать запрос", + "send-request-amount": "Сумма", + "send-request-amount-max-decimals": "Максимальное количество знаков после запятой — {{asset-decimals}}", + "send-request-unknown-token": "Неизвестный токен — {{asset}}", + "send-sending-to": "Получатель: {{recipient-name}}", + "send-transaction": "Отправить транзакцию", + "sending": "Отправка", + "sent-at": "Отправлено", + "server": "Сервер", + "set-a-topic": "Создать тему", + "set-currency": "Установить валюту", + "set-custom-fee": "Установить комиссию", + "set-dapp-access-permissions": "Установить права доступа к DApp", + "set-max": "Установить максимум", + "settings": "Настройки", + "share": "Поделиться", + "share-address": "Поделиться адресом", + "share-chat": "Поделиться чатом", + "share-contact-code": "Поделиться своим кодом контакта", + "share-dapp-text": "Попробуйте это DApp, которое я использую в приложении Status: {{link}}", + "share-link": "Поделиться ссылкой", + "share-logs": "Поделиться логами", + "share-my-profile": "Поделиться моим профилем", + "share-profile": "Поделиться профилем", + "share-profile-link": "Поделиться ссылкой на профиль", + "share-public-chat-text": "Присоединяйтесь к публичному чату в приложении Status: {{link}}", + "shared": "Общий", + "sharing-copied-to-clipboard": "Скопировано", + "sharing-copy-to-clipboard": "Копировать", + "sharing-data-desc-1": "Данные проверяются на соответствие общедоступным правилам, чтобы исключить отправку конфиденциальных данных. Не доверяйте, проверяйте.", + "sharing-data-desc-2": "Данные об использовании отправляются сквозным шифрованием по одноранговой сети Status", + "sharing-data-desc-3": "Вместо обычного ключа чата используется одноразовый ключ.", + "sharing-data-desc-4": "Данные об использовании не могут быть связаны с вашим IP-адресом", + "sharing-data-desc-5": "Совокупные данные всех пользователей общедоступны", + "sharing-data-desc-6": "Данные удаляются с вашего телефона после их отправки", + "sharing-share": "Поделиться", + "show-less": "Скрыть", + "show-more": "Показать больше", + "show-notifications": "Просмотр уведомлений", + "show-profile-pictures": "Показывать фотографии профиля", + "show-profile-pictures-to": "Показать ваше фото профиля", + "show-qr": "Показать QR-код", + "show-transaction-data": "Показать детали транзакции", + "sign-and-send": "Подписать и отправить", + "sign-anyway": "Подписать в любом случае", + "sign-in": "Войти", + "sign-message": "Подписать сообщение", + "sign-out": "Выход", + "sign-request-failed": "Не удалось подписать сообщение", + "sign-with": "Подписать с помощью", + "sign-with-password": "Подписать с паролем", + "sign-you-in": "Выполняется вход...", + "signing": "Подписание", + "signing-a-message": "Подписание сообщения", + "signing-phrase": "Фраза для подписи", + "skip": "Пропустить", + "slippage": "Проскальзывание", + "slow": "Медленный", + "something-went-wrong": "Что-то пошло не так", + "soon": "Скоро", + "sort-communities": "Сортировать сообщества", + "specify-address": "Укажите адрес", + "specify-name": "Укажите имя", + "specify-network-id": "Укажите идентификатор сети", + "specify-rpc-url": "Укажите URL-адрес RPC", + "specify-server-public-key": "Введите публичный ключ сервера", + "specify-symbol": "Укажите символ", + "start-chat": "Начать общение в чате", + "start-conversation": "Начать разговор", + "start-group-chat": "Начать общение в групповом чате", + "start-new-chat": "Новый чат", + "starter-pack-coming": "Стартовый набор скоро будет у вас", + "starter-pack-coming-description": "Время ожидания: от нескольких минут до нескольких часов", + "starter-pack-received": "Стартовый набор получен", + "starter-pack-received-description": "Вот немного криптовалюты для старта! Используйте её, чтобы получить ENS-имя, стикеры и доступ к децентрализованным приложениям", + "status": "Status", + "status-always-online": "Всегда онлайн", + "status-automatic": "Автоматический", + "status-automatic-subtitle": "Установить статус автоматически", + "status-confirmed": "Подтверждено", + "status-dnd": "Не беспокоить", + "status-dnd-subtitle": "Отключить все уведомления", + "status-hardwallet": "Status hardwallet", + "status-inactive": "Неактивен", + "status-inactive-subtitle": "Скрыть ваш онлайн статус", + "status-is-open-source": "Статус - проект с открытым исходным кодом", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status задействует большой объем данных при синхронизации чатов. Вы можете отказаться от синхронизации, если используется мобильный трафик.", + "status-not-sent-click": "Не подтверждено. Нажмите для просмотра параметров.", + "status-not-sent-tap": "Не подтверждено. Нажмите для просмотра параметров.", + "status-pending": "В ожидании", + "status-sent": "Отправлено", + "status-tx-not-found": "Транзакция не найдена", + "status-updates-descr": "Обновления статуса будут отображаться здесь. Добавьте профиль в контакты для получения обновлений с привязкой ко времени.", + "statuses-descr": "Делитесь тем, что у вас на уме, и будьте в курсе последних изменений у ваших контактов", + "statuses-my-status-descr": "Делитесь тем, что у вас на уме. Любой, кто посетит вашу страницу, сможет увидеть ваш статус. Люди, добавившие вас в свои контакты, будут получать изменения вашего статуса с привязкой ко времени.", + "step-i-of-n": "Шаг {{step}} из {{number}}", + "sticker": "Стикер", + "sticker-market": "Магазин стикеров", + "storage": "Хранилище", + "submit": "Подтвердить", + "submit-bug": "Сообщить об ошибке", + "success": "Успешно", + "successful-connection": "Успешное подключение", + "suggested-min-tip": "Рекомендуемые минимальные чаевые", + "suggested-price-limit": "Рекомендуемый ценовой лимит", + "swap": "Обмен", + "swap-details": "Поменять детали", + "switch-to-simple-interface": "Переключиться на простой интерфейс", + "symbol": "Символ", + "sync-all-devices": "Синхронизировать все устройства", + "sync-in-progress": "Синхронизация...", + "sync-settings": "Настройки синхронизации", + "sync-synced": "Синхронизируется", + "syncing-devices": "Синхронизация...", + "system": "Системная", + "tabs": "Вкладки", + "tag-was-lost": "Тег потерян", + "tap-card-again": "Приложите карту к задней стороне телефона еще раз", + "terms-of-service": "Условия использования", + "test-networks": "Тестовые сети", + "text-input-disabled": "Подождите...", + "thank-you": "Спасибо", + "this-device": "Это устройство", + "this-device-desc": "Ключи будут зашифрованы и безопасно сохранены на вашем устройстве", + "this-is-you-signing": "Это ваша фраза для подписи транзакций", + "this-will-take-few-seconds": "Это займет несколько секунд", + "three-days": "Три дня", + "three-words-description": "Вы должны увидеть эти 3 слова перед подписанием каждой транзакции", + "three-words-description-2": "Если вы видите другую комбинацию слов, отмените транзакцию и выйдите из системы", + "timeline": "Временная шкала", + "tip-cap": "Максимальный размер чаевых", + "to": "Кому", + "to-block": "Блокировать", + "to-enable-biometric": "Чтобы включить {{bio-type-label}}, необходимо сохранить пароль экрана разблокировки.", + "to-encrypt-enter-password": "Чтобы зашифровать аккаунт, введите свой пароль", + "to-see-this-message": "Чтобы увидеть это сообщение,", + "token": "Токен", + "token-auto-validate-decimals-error": "Неверное количество знаков после запятой для токена {{symbol}} по адресу {{address}} — указано как {{expected}}, но обнаружено как {{actual}}", + "token-auto-validate-name-error": "Неправильное имя токена {{symbol}} по адресу {{address}} — указано как {{expected}}, но обнаружено как {{actual}}", + "token-auto-validate-symbol-error": "Неправильный символ токена {{symbol}} по адресу {{address}} — указан как {{expected}}, но обнаружен как {{actual}}", + "token-details": "Детали токена", + "token-price": "Цена токена", + "topic-name-error": "Используйте только строчные латинские буквы (от a до z), цифры и тире (-). Не используйте коды контактов", + "total-gas": "Общий газ", + "total-members": "Всего участников", + "transaction": "Транзакция", + "transaction-data": "Детали транзакции", + "transaction-declined": "Транзакция отклонена", + "transaction-description": "Транзакция считается завершенной после получения 12 подтверждений в сети.", + "transaction-details": "Детали транзакции", + "transaction-failed": "Не удалось выполнить транзакцию", + "transaction-fee": "Транзакционный сбор", + "transaction-history": "История транзакций", + "transaction-request": "Запрос транзакции", + "transaction-sent": "Транзакция отправлена", + "transaction-signed": "Транзакция успешно подписана", + "transactions": "Транзакции", + "transactions-filter-select-all": "Выбрать все", + "transactions-filter-title": "Фильтр истории", + "transactions-history": "История транзакций", + "transactions-history-empty": "В вашей истории еще нет транзакций", + "transactions-history-loading": "Идет загрузка истории транзакций. Это может занять некоторое время.", + "transactions-load-more": "Загрузить больше", + "transactions-management-enabled": "Управление транзакциями (альфа-версия)", + "transactions-sign": "Подписать", + "transfer-ma-unknown-error-desc-1": "Похоже, что ваш мультиаккаунт не был удален. Возможно, база данных была очищена.", + "transfer-ma-unknown-error-desc-2": "Проверьте свой список аккаунтов и попробуйте еще раз. Если аккаунта нет в списке, перейдите в раздел «Доступ к существующим ключам для восстановления с помощью сид-фразы».", + "transfers-fetching-failure": "Не удалось обновить историю переводов. Проверьте подключение к Интернету и потяните вниз, чтобы повторить попытку.", + "tribute-required-by-multiaccount": "Для начала общения с {{multiaccount-name}} требуются SNT.", + "tribute-state-paid": "«Дань уважения» оплачена", + "tribute-state-pending": "Ожидается оплата «дани уважения»", + "tribute-state-required": "Требуется {{snt-amount}} SNT для оплаты «дани уважения»", + "tribute-to-talk": "Дань уважения", + "tribute-to-talk-add-friends": "Добавьте друзей в список контактов, чтобы разрешить чаты без оплаты «дани уважения».", + "tribute-to-talk-are-you-friends": "Вы друзья?", + "tribute-to-talk-ask-to-be-added": "Попросите добавить вас в список контактов", + "tribute-to-talk-contact-received-your-tribute": " получил(-а) от вас «дань уважения». Теперь вы можете безопасно общаться друг с другом.", + "tribute-to-talk-desc": "Поставьте спам-фильтр на основе криптовалюты, запрашивая SNT от новых людей для начала общения", + "tribute-to-talk-disabled": "Функция «Дань уважения» отключена", + "tribute-to-talk-disabled-note": "С этого момента новые люди смогут начать общаться с вами в чате, не отправляя SNT.", + "tribute-to-talk-enabled": "Функция «Дань уважения» включена.", + "tribute-to-talk-finish-desc": "Теперь вы будете получать запросы на общение только от людей, которые заплатили ", + "tribute-to-talk-learn-more-1": "Время и внимание — это самые ценные ваши активы. Функция «Дань уважения» позволяет установить количество SNT, которое пользователи должны заплатить для начала общения с вами.", + "tribute-to-talk-learn-more-2": "Всем, кого нет в вашем списке контактов, попросят заплатить, и вы сможете ответить им, как только оплата будет получена.", + "tribute-to-talk-learn-more-3": "Вы всегда сможете вернуть деньги отправителю, но чтобы друзья могли беспрепятственно с вами связаться, добавьте их в список контактов.", + "tribute-to-talk-paywall-learn-more-1": "Время и внимание – это самые ценные активы. Функция «Дань уважения» предоставляет возможность связываться с новыми людьми в обмен на оплату в SNT.", + "tribute-to-talk-paywall-learn-more-2": "Чтобы начать чат с пользователем, у которого включена функция «Дань уважения», просто оплатите необходимую сумму в SNT, и вы будете добавлены в качестве контакта.", + "tribute-to-talk-paywall-learn-more-3": "Если вы знаете того, с кем хотите начать общение, поделиться своим профилем за пределами Status, чтобы вас добавили в список контактов бесплатно.", + "tribute-to-talk-pending": "Оплата «дани уважения» ожидает подтверждения", + "tribute-to-talk-pending-note": "Транзакция «дань уважения» ожидает подтверждения в сети. Вы сможете проверить её статус в истории транзакций.", + "tribute-to-talk-removing-note": "Отключение функции «Дань уважения» позволит новым людям начинать общение, не посылая SNT. Для этого нужно осуществить транзакцию.", + "tribute-to-talk-set-snt-amount": "Установите количество SNT, которое новые люди должны заплатить для начала общения с вами", + "tribute-to-talk-signing": "Ожидание подписания транзакции", + "tribute-to-talk-transaction-failed-note": "Сбой транзакции. Параметры функции «Дань уважения» не были изменены", + "tribute-to-talk-tribute-received1": "«Дань уважения» получена. Вы и ", + "tribute-to-talk-tribute-received2": " теперь в списках контактов друг друга и можете безопасно начать общение.", + "tribute-to-talk-you-require-snt": "Новые люди должны будут перевести SNT, чтобы начать общение с вами.", + "try-again": "Попробуйте снова", + "try-keeping-the-card-still": "Держите карту неподвижно", + "turn-nfc-description": "Функция NFC на вашем устройстве отключена. Вы можете активировать ее в настройках.", + "turn-nfc-on": "Для продолжения включите NFC", + "two-minutes": "две минуты", + "tx-fail-description1": "Скорее всего, эта транзакция не получит подтверждения. Установите другую комиссию за использование сети для подписания транзакции.", + "tx-fail-description2": "Скорее всего, эта транзакция не получит подтверждения. Установите другую комиссию за использование сети для подписания транзакции.", + "type": "Тип", + "type-a-message": "Сообщение", + "ulc-enabled": "ULC включен", + "unable-to-fetch": "Не удалось получить историю чата", + "unable-to-read-this-code": "Не удалось прочитать этот код", + "unable-to-send-messages": "Не удается отправлять и получать сообщения", + "unblock": "Разблокировать", + "unblock-contact": "Разблокировать этого пользователя", + "unknown-status-go-error": "Неизвестная ошибка status-go", + "unlimited": "Неограниченный", + "unlock": "Разблокировать", + "unmute": "Включить звук", + "unpair-card": "Отменить привязку карты", + "unpair-card-confirmation": "Эта операция отменит сопряжение карты с текущим устройством. Для авторизации требуется 6-значный код доступа. Вы хотите продолжить?", + "unpair-keycard": "Отменить сопряжение Keycard с этим телефоном", + "unpair-keycard-warning": "Ваш код сопряжения, PUK и PIN остаются неизменными.", + "unpaired-keycard-text": "Keycard, который вы только что использовали, не привязан к этому телефону", + "unpaired-keycard-title": "Похоже, сопряжение с вашей картой было потеряно", + "unpin": "Открепить", + "update": "Обновить", + "update-to-listen-audio": "Обновитесь до последней версии, чтобы прослушать здесь звуковое сообщение!", + "update-to-see-image": "Обновитесь до последней версии, чтобы увидеть здесь красивое изображение!", + "update-to-see-sticker": "Обновитесь до последней версии, чтобы увидеть здесь красивый стикер!", + "updates-to-tos": "Обновление Условий использования", + "updates-to-tos-desc": "Прежде чем продолжить, пожалуйста, ознакомьтесь с Условиями использования и подтвердите, что вы берете на себя полную ответственность за использование приложения.", + "url": "URL-адрес", + "usd-currency": "USD", + "use-as-profile-picture": "Использовать как фото профиля", + "use-valid-contact-code": "Введите или отсканируйте действительный код контакта или имя пользователя", + "validation-amount-invalid-number": "Сумма не является допустимым числом", + "validation-amount-is-too-precise": "Слишком много чисел после запятой. Максимально допустимое количество знаков после запятой — {{decimals}}.", + "verified-community": "✓ Проверенное сообщество", + "version": "Версия приложения", + "view": "Посмотреть", + "view-cryptokitties": "Посмотреть в CryptoKitties", + "view-cryptostrikers": "Посмотреть в CryptoStrikers", + "view-data": "Просмотреть данные", + "view-details": "Посмотреть детали", + "view-etheremon": "Посмотреть в Etheremon", + "view-gitcoin": "Посмотреть в Gitcoin", + "view-on-opensea": "Посмотреть на OpenSea", + "view-profile": "Просмотреть профиль", + "view-public-dashboard": "Посмотреть общедоступную панель управления", + "view-rules": "Посмотреть правила", + "view-signing": "Посмотреть фразу для подписи", + "view-superrare": "Посмотреть в SuperRare", + "waiting-for-wifi": "Wi-Fi не подключен, синхронизация сообщений отключена.", + "waiting-for-wifi-change": "Настройки", + "waiting-to-sign": "Ожидание подписания транзакции...", + "waiting-wi-fi": "В ожидании Wi-Fi...", + "waku-bloom-filter-mode": "Режим фильтра Waku bloom", + "wakuv2-change-nodes": "Вы уверены, что хотите поменять ноды Wakuv2?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Настройки Waku v2", + "wallet": "Кошелек", + "wallet-address": "Адрес кошелька", + "wallet-asset": "Актив", + "wallet-assets": "Активы", + "wallet-backup-recovery-title": "Сделайте резервную копию вашей сид-фразы", + "wallet-choose-recipient": "Выбрать получателя", + "wallet-collectibles": "Коллекции", + "wallet-connect": "Подключить кошелек", + "wallet-connect-2.0": "Подключить кошелек 2.0", + "wallet-connect-app-connected": "подключено", + "wallet-connect-go-back": "Вернитесь в свой браузер или децентрализованное приложение", + "wallet-connect-proposal-description": "Подключившись, вы позволяете {{name}} получить адрес вашей учетной записи и включить Web3.", + "wallet-connect-proposal-title": "Хочу подключиться к вашему кошельку", + "wallet-insufficient-funds": "Недостаточно средств", + "wallet-insufficient-gas": "Недостаточно ETH, чтобы заплатить за газ", + "wallet-invalid-address": "Недействительный адрес: \n {{data}}", + "wallet-invalid-address-checksum": "Ошибка в адресе: \n {{data}}", + "wallet-invalid-chain-id": "Несоответствующая сеть: \n {{data}}, в то время как текущая цепочка — {{chain}}", + "wallet-key-content": "Шестнадцатеричный адрес из 64 знаков, начинающийся с «0x». Данный тип адресов основывается на блокчейне Ethereum. Это общедоступный адрес вашего аккаунта, который вы можете сообщать другим пользователям, чтобы получать от них средства в криптовалюте, функционирующей на аналогичном блокчейне. Альтернативные наименования: «адрес Ethereum» и «адрес кошелька ERC-20».", + "wallet-key-title": "Адрес аккаунта", + "wallet-manage-accounts": "Управлять аккаунтами", + "wallet-manage-app-connections": "Управление подключениями приложений", + "wallet-manage-assets": "Управлять активами", + "wallet-request": "Запрос", + "wallet-send": "Отправить", + "wallet-send-min-units": "Мин. 21000 единиц", + "wallet-send-min-wei": "Мин. 1 Gwei", + "wallet-settings": "Настройки кошелька", + "wallet-total-value": "Общая сумма", + "wallet-transaction-total-fee": "Итоговая комиссия", + "wants-to-access-profile": "хочет получить доступ к вашему профилю", + "warning": "Предупреждение", + "warning-message": "Извините, мы ограничиваем быструю отправку нескольких сообщений друг за другом для предотвращения спама. Попробуйте снова через пару секунд.", + "warning-sending-to-contract-descr": "Введенный вами адрес является смарт-контрактом. Отправка средств на этот адрес может привести к их потере. Для взаимодействия с DApp откройте его в DApp-браузере Status.", + "watch-only": "Только для просмотра", + "wc-brand-guide": "Руководство по использованию брендинга, такого как торговые марки и логотипы", + "wc-disclaimer": "Отказ от ответственности (включая сторонних поставщиков), гарантии и юридические релизы", + "wc-dispute": "Положения о разрешении споров", + "wc-how-to-use-status-app": "Как использовать приложение Status, включая конфиденциальность и безопасность", + "wc-new-tos-based-on-principles-prefix": "Новые Условия использования, разработанные на основе наших", + "web-view-error": "Не удалось загрузить страницу", + "websites": "Веб-сайты", + "webview-camera-permission-requests": "Запросы на доступ к камере", + "webview-camera-permission-requests-subtitle": "Если эта функция включена, сайты и децентрализованные приложения могут запрашивать доступ к камере устройства.", + "welcome-blank-community-message": "Ваши сообщества появятся здесь.", + "welcome-blank-message": "Ваши чаты появятся здесь. Чтобы создать новые чаты, нажмите кнопку ⊕", + "welcome-community-blank-message": "Ваши каналы появятся здесь. Чтобы создать новый канал, нажмите кнопку ⊕ и выберите «Создать канал».", + "welcome-community-blank-message-edit-chats": "Ваши каналы появятся здесь. Чтобы создать новый канал, вернитесь на экран сообщества, нажмите кнопку ⊕ и выберите «Создать канал».", + "welcome-screen-text": "Настройте кошелек, приглаcите друзей общаться в чатах \nи пользуйтесь популярными dapps!", + "welcome-to-status": "Добро пожаловать в Status!", + "welcome-to-status-description": "Настройте криптокошелек, пригласите друзей в чаты и знакомьтесь с возможностями децентрализованных приложений", + "what-changed": "Изменения", + "what-is-shared": "Что является общим", + "whats-on-your-mind": "О чём вы думаете...", + "whats-trending": "Узнайте, что сейчас в тренде", + "word-count": "Количество слов", + "word-n": "Слово №{{number}}", + "word-n-description": "Чтобы проверить, правильно ли вы создали резервную копию сид-фразы, введите слово № {{number}} выше.", + "words-n": { + "zero": "слов", + "one": "1 слово", + "few": "{{count}} слова", + "many": "{{count}} слов", + "other": "Слов: {{count}}" + }, + "write-down-and-store-securely": "Запишите коды\n и храните их в надежном месте.", + "wrong-address": "Неправильный адрес", + "wrong-card": "Неправильная карта", + "wrong-card-text": "Используемая карта не соответствует выбранным вами ключам", + "wrong-contract": "Неправильный контракт", + "wrong-keycard-text": "Keycard, который вы использовали, не привязан к этому телефону", + "wrong-keycard-title": "Похоже, вы используете \nнеправильный Keycard", + "wrong-password": "Неверный пароль", + "wrong-word": "Неверное слово", + "yes": "Да", + "you": "вы", + "you-already-have-an-asset": "У вас уже есть актив {{value}}", + "you-are-all-set": "Готово!", + "you-are-all-set-description": "При потере телефона вы сможете получить доступ к своим средствам и коду контакта с помощью сид-фразы", + "you-can-change-account": "Вы можете изменить имя и цвет аккаунта по своему усмотрению", + "you-can-choose-preview-websites": "Вы можете выбрать, для каких из следующих сайтов будет работать предварительный просмотр ссылок и изображений в чатах", + "you-can-fetch": "Вы можете получить историю чата", + "you-dont-have-contacts": "У вас пока нет контактов.", + "you-dont-have-contacts-invite-friends": "У вас еще нет контактов.\nПригласите своих друзей для общения.", + "you-dont-have-stickers": "У вас еще нет стикеров", + "you-will-need-this-code": "Вам понадобится этот код, чтобы открывать Status и подписывать транзакции", + "you-will-start-from-scratch": "Вы начнете с начала с новым набором ключей", + "your-card-is-frozen": "Ваш Keycard заморожен. Сбросьте настройки карты для новой активации.", + "your-contact-code": "Предоставление доступа разрешает этому DApp получать ваш код контакта", + "your-data-belongs-to-you": "Если вы потеряете сид-фразу, то уже не сможете получить доступ к данным и средствам на этом аккаунте", + "your-data-belongs-to-you-description": "В случае, если вы потеряете свой ключ или пароль от аккаунта, вы сможете восстановить доступ к нему только с помощью сид-фразы, закрепленной за данным аккаунтом. Никто, кроме вас не должен иметь доступ к вашей сид-фразе. Запишите ее и храните в надежном месте.", + "your-keys": "Ваши ключи", + "your-price-limit": "Ваш ценовой лимит", + "your-recovery-phrase": "Ваша сид-фраза", + "your-recovery-phrase-description": "Это ваша сид-фраза. Она используется для доказательства владения кошельком. Вы увидите ее только один раз! Запишите ее на бумаге и храните в надежном месте. Она понадобится вам, если вы потеряете или переустановите кошелек.", + "your-tip-limit": "Ваш лимит чаевых", + "youre-on-mobile-network": "Вы используете мобильную сеть" +} diff --git a/translations/sl.json b/translations/sl.json new file mode 100644 index 00000000000..4d40f75b139 --- /dev/null +++ b/translations/sl.json @@ -0,0 +1,127 @@ +{ + "confirm": "Potrdi", + "amount": "Vsota", + "members-active": { + "one": "1 član, 1 aktiven", + "other": "{{count}} članov, {{count}} aktivnih", + "zero": "ni članov" + }, + "chat-name": "Ime za klepet", + "phew-here-is-your-passphrase": "*Pfuu* to pa je bilo težko, tukaj je tvoje šifrirno geslo, *zapiši si ga in shrani na varno mesto!* Potreboval/-a ga boš, da obnoviš svoj račun.", + "public-group-topic": "Tema", + "chat-settings": "Nastavitve klepeta", + "offline": "Nedosegljiv/-a", + "invited": "povabil/-a", + "address": "Naslov", + "new-public-group-chat": "Pridruži se javnemu klepetu", + "datetime-hour": { + "one": "ura", + "other": "ur" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "Odstrani", + "add-members": "Dodaj člane", + "done": "Končano", + "close-chat": "Izbriši klepet", + "new-group-chat": "Nov skupinski klepet", + "sign-in": "Prijava", + "datetime-yesterday": "včeraj", + "create-new-account": "Ustvari nov račun", + "datetime-ago": "nazaj", + "contacts": "Stiki", + "got-it": "Razumem", + "active-online": "Dosegljiv/-a", + "password": "Geslo", + "browsing-title": "Brskaj", + "discover": "Odkrivanje", + "browsing-cancel": "Prekliči", + "intro-status": "Klepetaj z mano in nastavi svoj račun ter spremeni svoje nastavitve!", + "name": "Ime", + "show-qr": "Prikaži QR", + "connect": "Poveži", + "edit": "Uredi", + "account-generation-message": "Počakaj sekundo, opraviti moram noro računico, da ustvarim tvoj račun!", + "no-messages": "Ni sporočil", + "passphrase": "Šifrirno geslo", + "recipient": "Prejemnik", + "members-title": "Člani", + "new-group": "Nova skupina", + "phone-e164": "Mednarodno 1", + "settings": "Nastavitve", + "chats": "Klepeti", + "transaction": "Transakcija", + "public-group-status": "Javno", + "image-source-make-photo": "Zajemi", + "start-conversation": "Začni pogovor", + "save": "Shrani", + "sharing-copy-to-clipboard": "Kopiraj v odložišče", + "sync-in-progress": "Sinhronizacija...", + "send-transaction": "Pošlji transakcijo", + "incorrect-code": [ + "str", + "Koda na žalost ni bila pravilna, prosimo, da jo ponovno vneseš" + ], + "image-source-gallery": "Izberi iz galerije", + "sync-synced": "Sinhronizirano", + "status-pending": "V teku", + "datetime-day": { + "one": "dan", + "other": "dni" + }, + "scan-qr": "Skeniraj QR", + "contact-s": { + "one": "stik", + "other": "stiki" + }, + "next": "Naprej", + "recent": "Nedavno", + "status": "Status", + "from": "Od", + "wrong-password": "Napačno geslo", + "in-contacts": "Med stiki", + "sharing-share": "Deli...", + "type-a-message": "Napiši sporočilo...", + "clear-history": "Počisti zgodovino", + "no-contacts": "Zaenkrat še ni stikov", + "datetime-today": "danes", + "web-view-error": "ups, napaka", + "error": "Napaka", + "more": "več", + "cancel": "Prekliči", + "can-not-add-yourself": "Sebe ni mogoče dodati", + "add-to-contacts": "Dodaj med stike", + "available": "Na voljo", + "You": "Ti", + "main-wallet": "Glavna denarnica", + "members": { + "one": "1 član", + "other": "{{count}} članov", + "zero": "ni članov" + }, + "intro-message1": "Dobrodošel/-la v status\nPritisni to sporočilo in nastavi svoje geslo ter začni!", + "new-contact": "Nov stik", + "datetime-second": { + "one": "sekunda", + "other": "sekund" + }, + "recover": "Povrni", + "datetime-minute": { + "one": "minuta", + "other": "minut" + }, + "browsing-open-in-android-web-browser": "Odpri v spletnem brskalniku", + "browsing-open-in-ios-web-browser": "Odpri v spletnem brskalniku", + "edit-profile": "Uredi profil", + "active-unknown": "Neznano", + "public-key": "Javni ključ", + "profile": "Profil", + "none": "Brez", + "removed": "odstranil/-a", + "message": "Sporočilo", + "here-is-your-passphrase": "Tukaj je tvoje geslo, *zapiši si ga in shrani na varno mesto!* Potreboval/-a ga boš, da obnoviš svoj račun.", + "image-source-title": "Fotografija profila", + "left": "preostane", + "to": "Za", + "status-sent": "Poslano", + "data": "Podatki" +} diff --git a/translations/sr_rs_cyrl.json b/translations/sr_rs_cyrl.json new file mode 100644 index 00000000000..e7ce04e8fe8 --- /dev/null +++ b/translations/sr_rs_cyrl.json @@ -0,0 +1,195 @@ +{ + "validation-amount-invalid-number": "Износ није исправан број", + "transaction-details": "Детаљи трансакције", + "confirm": "Потврди", + "description": "Опис", + "amount": "Износ", + "open": "Отвори", + "close-app-title": "Упозорење!", + "members-active": { + "one": "1 члан", + "other": "{{count}} чланови", + "zero": "нема чланова" + }, + "chat-name": "Назив разговора", + "phew-here-is-your-passphrase": "Уф, то је било тешко. Ово је ваша лозинка, *запишите је и чувајте на сигурном!* Требаће вам за обнову налога.", + "public-group-topic": "Тема", + "chat-settings": "Подешавања разговора", + "offline": "Ван мреже", + "invited": "позвани", + "address": "Адреса", + "new-public-group-chat": "Придружите се јавном разговору", + "datetime-hour": { + "one": "сат", + "other": "сати" + }, + "wallet-settings": "Подешавања новчаника", + "datetime-ago-format": "{{ago}} {{number}} {{time-intervals}}", + "close-app-button": "Потврди", + "block": "Блокирај", + "camera-access-error": "Да би сте дозволили приступ камери, молимо вас да у системским подешавањима селектујете Статус > Камера.", + "wallet-invalid-address": "Неисправна адреса: \n {{data}}", + "remove": "Уклони", + "add-members": "Додај чланове", + "yes": "Да", + "dapps": "ÐApps", + "network-settings": "Подешавања мреже", + "photos-access-error": "Да би сте дозволили приступ фотографијама, молимо вас у системским подешаванјима селектујете Статус > Албум.", + "hash": "Hash", + "done": "Урађено", + "close-chat": "Обришите разговор", + "new-group-chat": "Нова група за разговор", + "wallet": "Новчаник", + "wallet-request": "Захтев", + "sign-in": "Улогујте се", + "datetime-yesterday": "јуче", + "create-new-account": "Направи нови налог", + "datetime-ago": "пре", + "contacts": "Контакти", + "got-it": "ОК", + "public-chats": "Јавни разговори", + "not-applicable": "Није примењиво за непотписане трансакције", + "active-online": "На мрежи", + "password": "Лозинка", + "send-request": "Пошаљите захтев", + "paste-json": "Налепи JSON", + "browsing-title": "Претражи", + "transactions-history-empty": "Још увек немате трансакције у историји", + "discover": "Открића", + "browsing-cancel": "Одустани", + "intro-status": "Разговарајте са мном да бисте подесили свој налог.", + "name": "Име", + "gas-price": "Цена гаса", + "validation-amount-is-too-precise": "Износ има превише децимала. Најмања јединица коју можете послати је 1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "Копирај hash трансакције", + "show-qr": "Прикажи QR code", + "connect": "Повежи", + "edit": "Уреди", + "account-generation-message": "Само тренутак, одрађујем неку жешћу математику око креирања вашег налога!", + "remove-network": "Уклони мрежу", + "no-messages": "Нема порука", + "passphrase": "Тајна фраза", + "recipient": "Прималац", + "members-title": "Чланови", + "new-group": "Нова група", + "phone-e164": "Међународни 1", + "connected": "Повезано", + "rpc-url": "RPC URL", + "settings": "Подешавања", + "specify-rpc-url": "Дефиниши RPC URL", + "gas-limit": "Лимит гаса", + "delete": "Обриши", + "chats": "Разговори", + "transaction-sent": "Трансакција послата", + "transaction": "Трансакција", + "public-group-status": "Јавно", + "image-source-make-photo": "Сликај", + "chat": "Разговор", + "start-conversation": "Започни разговор", + "save": "Сачувај", + "all": "Све", + "confirmations-helper-text": "Молимо вас сачекајте најмање 12 потврда како бисте били сигурни да је ваша трансакција безбедно обрађена", + "sharing-copy-to-clipboard": "Копирај", + "sync-in-progress": "Синхронизација...", + "enter-password": "Унесите лозинку", + "send-transaction": "Пошаљи трансакцију", + "confirmations": "Потврде", + "incorrect-code": [ + "str", + "Жао нам је код је неисправан, молимо вас покушајте поново." + ], + "image-source-gallery": "Изабери из галерије", + "sync-synced": "Синхронизовано", + "currency": "Валута", + "status-pending": "Обрађује се", + "connecting-requires-login": "Повезивање на другу мрежу захтева да се поново улогујете", + "datetime-day": { + "one": "дан", + "other": "дана" + }, + "request-transaction": "Захтевајте трансакцију", + "wallet-send": "Пошаљи", + "scan-qr": "Скенирај QR код", + "contact-s": { + "one": "контакт", + "other": "контаката" + }, + "gas-used": "Искоришћени гас", + "type": "Тип", + "next": "Следећи", + "recent": "Нови статуси", + "open-on-etherscan": "Отвори Etherscan.io", + "share": "Подели", + "status": "Статус", + "from": "Од", + "wrong-password": "Погрешна лозинка", + "in-contacts": "У контактима", + "transactions-sign": "Додели", + "sharing-share": "Подели...", + "type-a-message": "Укуцајте поруку...", + "usd-currency": "USD", + "url": "УРЛ", + "add-network": "Додај мрежу", + "unknown-status-go-error": "Непозната status-go грешка", + "clear-history": "Очисти историју", + "no-contacts": "Још увек без контаката", + "soon": "Ускоро", + "close-app-content": "Ова апликација ће да буде рестартована. Када је поново отворите, биће коришћена изабрана мрежа", + "datetime-today": "данас", + "web-view-error": "упс, грешка", + "error": "Грешка", + "more": "још", + "cancel": "Откажи", + "can-not-add-yourself": "Не можете да додате самог себе", + "transaction-description": "Молимо вас сачекајте најмање 12 потврда да бисте потврдили да је ваша трансакција успешно обрађена", + "add-to-contacts": "Додај у контакте", + "available": "Доступан", + "You": "Ви", + "main-wallet": "Главни новчаник", + "transactions": "Трансакције", + "members": { + "one": "1 члан", + "other": "{{count}} чланова", + "zero": "нема чланова" + }, + "intro-message1": "Добродошли у Статус!\nЗа почетак кликните на ову поруку да поставите своју шифру.", + "eth": "ETH", + "transactions-history": "Историја", + "new-contact": "Нови контакт", + "datetime-second": { + "one": "секунда", + "other": "секунди" + }, + "recover": "Обнова налога", + "wallet-total-value": "Укупна вредност", + "nonce": "Nonce", + "new-network": "Нова мрежа", + "datetime-minute": { + "one": "минут", + "other": "минута" + }, + "browsing-open-in-android-web-browser": "Отвори у интернет претраживачу", + "browsing-open-in-ios-web-browser": "Отвори у интернет претраживачу", + "wallet-insufficient-funds": "Недовољно средстава", + "edit-profile": "Ажурирајте профил", + "active-unknown": "Непознат", + "transaction-failed": "Неуспела трансакција", + "public-key": "Јавни кључ", + "profile": "Профил", + "wallet-choose-recipient": "Изабери примаоца", + "none": "Ништа", + "removed": "уклоњени", + "no": "Нe", + "transactions-filter-select-all": "Изабери све", + "transactions-filter-title": "Филтрирај историју", + "message": "Порука", + "here-is-your-passphrase": "Ово је ваша лозинка, *Запишите је и чувајте на сигурном!* Требаће вам за обнову налога.", + "wallet-assets": "Средства", + "image-source-title": "Профилна слика", + "current-network": "Тренутна мрежа", + "left": "остати", + "to": "Коме", + "data": "Подаци", + "status-sent": "Послато", + "cost-fee": "Цена" +} diff --git a/translations/sr_rs_latn.json b/translations/sr_rs_latn.json new file mode 100644 index 00000000000..5800db81eea --- /dev/null +++ b/translations/sr_rs_latn.json @@ -0,0 +1,192 @@ +{ + "validation-amount-invalid-number": "Iznos nije ispravan broj", + "transaction-details": "Detalji transakcije", + "confirm": "Potvrdi", + "description": "Opis", + "amount": "Iznos", + "open": "Otvori", + "close-app-title": "Upozorenje!", + "members-active": { + "one": "1 član", + "other": "{{count}} članovi", + "zero": "nema članova" + }, + "chat-name": "Naziv razgovora", + "phew-here-is-your-passphrase": "Uf, to je bilo teško. Ovo je vaša lozinka, *zapišite je i čuvajte na sigurnom!* Trebaće vam za obnovu naloga.", + "public-group-topic": "Tema", + "chat-settings": "Podešavanja razgovora", + "offline": "Van mreže", + "invited": "pozvani", + "address": "Adresa", + "new-public-group-chat": "Pridružite se javnom razgovoru", + "datetime-hour": { + "one": "sat", + "other": "sati" + }, + "wallet-settings": "Podešavanja novčanika", + "datetime-ago-format": "{{ago}} {{number}} {{time-intervals}}", + "close-app-button": "Potvrdi", + "block": "Blokiraj", + "camera-access-error": "Da bi ste dozvolili pristup kameri, molimo vas da u sistemskim podešavanjima selektujete Status > Kamera.", + "wallet-invalid-address": "Neispravna adresa: \n {{data}}", + "remove": "Ukloni", + "add-members": "Dodaj članove", + "yes": "Da", + "dapps": "ÐApps", + "network-settings": "Podešavanja mreže", + "photos-access-error": "Da bi ste dozvolili pristup fotografijama, molimo vas u sistemskim podešavanjima selektujete Status > Album.", + "hash": "Hash", + "done": "Urađeno", + "close-chat": "Obrišite razgovor", + "new-group-chat": "Nova grupa za razgovor", + "wallet": "Novčanik", + "wallet-request": "Zahtev", + "sign-in": "Ulogujte se", + "datetime-yesterday": "juče", + "create-new-account": "Napravi novi nalog", + "datetime-ago": "pre", + "contacts": "Kontakti", + "got-it": "OK", + "public-chats": "Javni razgovori", + "not-applicable": "Nije primenjivo za nepotpisane transakcije", + "active-online": "Na mreži", + "password": "Lozinka", + "send-request": "Pošaljite zahtev", + "paste-json": "Nalepi JSON", + "browsing-title": "Pretraži", + "transactions-history-empty": "Još uvek nemate transakcije u istoriji", + "discover": "Otkrića", + "browsing-cancel": "Odustani", + "intro-status": "Razgovarajte sa mnom da biste podesili svoj nalog.", + "name": "Ime", + "gas-price": "Cena gasa", + "validation-amount-is-too-precise": "Iznos ima previše decimala. Najmanja jedinica koju možete poslati je 1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "Kopiraj hash transakcije", + "show-qr": "Prikaži QR code", + "connect": "Poveži", + "edit": "Uredi", + "account-generation-message": "Samo trenutak, odrađujem neku žešću matematiku oko kreiranja vašeg naloga!", + "remove-network": "Ukloni mrežu", + "no-messages": "Nema poruka", + "passphrase": "Tajna fraza", + "recipient": "Primalac", + "members-title": "Članovi", + "new-group": "Nova grupa", + "phone-e164": "Međunarodni 1", + "connected": "Povezano", + "rpc-url": "RPC URL", + "settings": "Podešavanja", + "specify-rpc-url": "Definiši RPC URL", + "gas-limit": "Limit gasa", + "delete": "Obriši", + "chats": "Razgovori", + "transaction-sent": "Transakcija poslata", + "transaction": "Transakcija", + "public-group-status": "Javno", + "image-source-make-photo": "Slikaj", + "chat": "Razgovor", + "start-conversation": "Započni razgovor", + "save": "Sačuvaj", + "all": "Sve", + "confirmations-helper-text": "Molimo vas sačekajte najmanje 12 potvrda kako biste bili sigurni da je vaša transakcija bezbedno obrađena", + "sharing-copy-to-clipboard": "Kopiraj", + "sync-in-progress": "Sinhronizacija...", + "enter-password": "Unesite lozinku", + "send-transaction": "Pošalji transakciju", + "confirmations": "Potvrde", + "incorrect-code": null, + "image-source-gallery": "Izaberi iz galerije", + "sync-synced": "Sinhronizovano", + "currency": "Valuta", + "status-pending": "Obrađuje se", + "connecting-requires-login": "Povezivanje na drugu mrežu zahteva da se ponovo ulogujete", + "datetime-day": { + "one": "dan", + "other": "dana" + }, + "request-transaction": "Zahtevajte transakciju", + "wallet-send": "Pošalji", + "scan-qr": "Skeniraj QR kod", + "contact-s": { + "one": "kontakt", + "other": "kontakata" + }, + "gas-used": "Iskorišćeni gas", + "type": "Tip", + "next": "Sledeći", + "recent": "Novi statusi", + "open-on-etherscan": "Otvori Etherscan.io", + "share": "Podeli", + "status": "Status", + "from": "Od", + "wrong-password": "Pogrešna lozinka", + "in-contacts": "U kontaktima", + "transactions-sign": "Dodeli", + "sharing-share": "Podeli...", + "type-a-message": "Ukucajte poruku...", + "usd-currency": "USD", + "url": "URL", + "add-network": "Dodaj mrežu", + "unknown-status-go-error": "Nepoznata status-go greška", + "clear-history": "Očisti istoriju", + "no-contacts": "Još uvek bez kontakata", + "soon": "Uskoro", + "close-app-content": "Ova aplikacija će da bude restartovana. Kada je ponovo otvorite, biće korišćena izabrana mreža", + "datetime-today": "danas", + "web-view-error": "ups, greška", + "error": "Greška", + "more": "još", + "cancel": "Otkaži", + "can-not-add-yourself": "Ne možete da dodate samog sebe", + "transaction-description": "Molimo vas sačekajte najmanje 12 potvrda da biste potvrdili da je vaša transakcija uspešno obrađena", + "add-to-contacts": "Dodaj u kontakte", + "available": "Dostupan", + "You": "Vi", + "main-wallet": "Glavni novčanik", + "transactions": "Transakcije", + "members": { + "one": "1 član", + "other": "{{count}} članova", + "zero": "nema članova" + }, + "intro-message1": "Dobrodošli u Status!\nZa početak kliknite na ovu poruku da postavite svoju šifru.", + "eth": "ETH", + "transactions-history": "Istorija", + "new-contact": "Novi kontakt", + "datetime-second": { + "one": "sekunda", + "other": "sekundi" + }, + "recover": "Obnova naloga", + "wallet-total-value": "Ukupna vrednost", + "nonce": "Nonce", + "new-network": "Nova mreža", + "datetime-minute": { + "one": "minut", + "other": "minuta" + }, + "browsing-open-in-android-web-browser": "Otvori u internet pretraživaču", + "browsing-open-in-ios-web-browser": "Otvori u internet pretraživaču", + "wallet-insufficient-funds": "Nedovoljno sredstava", + "edit-profile": "Ažurirajte profil", + "active-unknown": "Nepoznat", + "transaction-failed": "Neuspela transakcija", + "public-key": "Javni ključ", + "profile": "Profil", + "wallet-choose-recipient": "Izaberi primaoca", + "none": "Ništa", + "removed": "uklonjeni", + "no": "Ne", + "transactions-filter-select-all": "Izaberi sve", + "transactions-filter-title": "Filtriraj istoriju", + "message": "Poruka", + "here-is-your-passphrase": "Ovo je vaša lozinka, *Zapišite je i čuvajte na sigurnom!* Trebaće vam za obnovu naloga.", + "wallet-assets": "Sredstva", + "image-source-title": "Profilna slika", + "current-network": "Trenutna mreža", + "left": "ostati", + "to": "Kome", + "data": "Podaci", + "status-sent": "Poslato", + "cost-fee": "Cena" +} diff --git a/translations/sv.json b/translations/sv.json new file mode 100644 index 00000000000..095414e18d4 --- /dev/null +++ b/translations/sv.json @@ -0,0 +1,200 @@ +{ + "validation-amount-invalid-number": "Beloppet är inte ett giltigt tal", + "transaction-details": "Transaktiondetaljer", + "confirm": "Bekräfta", + "description": "Beskrivning", + "amount": "Belopp", + "open": "Öppna", + "close-app-title": "Varning!", + "members-active": { + "one": "1 medlem", + "other": "{{count}} medlemmar", + "zero": "inga medlemmar" + }, + "chat-name": "Chattnamn", + "phew-here-is-your-passphrase": "*Pust* det var svårt, här är din lösenordsfras, *skriv ner den och förvara den säkert!* Du kommer att behöva den för att återställa ditt konto.", + "public-group-topic": "Rubrik", + "chat-settings": "Chattinställningar", + "offline": "Offline", + "invited": "inbjudna", + "address": "Adress", + "new-public-group-chat": "Gå med i offentlig chatt", + "datetime-hour": { + "one": "timma", + "other": "timmar" + }, + "wallet-settings": "Plånboksinställningar", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "Bekräfta", + "block": "Block", + "camera-access-error": "För att bevilja nödvändinga kamerarättigheter, gå till systeminställningarna och kontrollera att Status > Kamera är vald.", + "wallet-invalid-address": "Ogiltig address: \n {{data}}", + "remove": "Ta bort", + "add-members": "Lägg till medlemmar", + "yes": "Ja", + "dapps": "ÐApps", + "network-settings": "Nätverksinställningar", + "photos-access-error": "För att bevilja nödvändinga fotorättigheter, gå till systeminställiningarna och kontrollera att Status > Foton är vald.", + "hash": "Hash", + "done": "Klar", + "close-chat": "Ta bort chatt", + "new-group-chat": "Ny gruppchatt", + "wallet": "Plånbok", + "wallet-request": "Begär", + "sign-in": "Logga in", + "datetime-yesterday": "igår", + "create-new-account": "Skapa nytt konto", + "datetime-ago": "sedan", + "contacts": "Kontakter", + "got-it": "OK", + "public-chats": "Offentliga chattar", + "not-applicable": "Otillämplig på ej underskrivna transaktioner", + "active-online": "Online", + "password": "Lösenord", + "send-request": "Skicka begäran", + "paste-json": "Klistra in JSON", + "browsing-title": "Webbläsning", + "transactions-history-empty": "Inga transaktioner i din historik ännu", + "discover": "Upptäck", + "browsing-cancel": "Avbryt", + "intro-status": "Chatta med mig för att konfigurera ditt konto och ändra dina inställningar!", + "name": "Namn", + "gas-price": "Gas pris", + "validation-amount-is-too-precise": "Summan är för precis Den minsta summan du kan skicka är 1 Wei (1x10^-18 ETH)", + "pending": "Pågående", + "copy-transaction-hash": "Kopiera transaktionshash", + "show-qr": "Visa QR kod", + "connect": "Anslut", + "edit": "Redigera", + "account-generation-message": "Vänta ett ögonblick, jag måste göra lite galna beräkningar för att generera ditt konto!", + "remove-network": "Ta bort nätverk", + "no-messages": "Inga meddelanden", + "passphrase": "Lösenordsfras", + "recipient": "Mottagare", + "members-title": "Medlemmar", + "new-group": "Ny grupp", + "phone-e164": "Internationell 1", + "connected": "Ansluten", + "rpc-url": "RPC URL", + "settings": "Inställningar", + "specify-rpc-url": "Ange RPC URL", + "gas-limit": "Gas begränsning", + "delete": "Ta bort", + "chats": "Chattar", + "transaction-sent": "Transaktionen skickad", + "transaction": "Transaktion", + "public-group-status": "Offentlig", + "image-source-make-photo": "Fånga", + "chat": "Chatta", + "start-conversation": "Börja en konversation", + "save": "Spara", + "all": "Alla", + "confirmations-helper-text": "Var god och vänta på minst 12 bekräftelser för att försäkra dig om att transaktionen gått igenom", + "sharing-copy-to-clipboard": "Kopiera till urklipp", + "sync-in-progress": "Synkroniserar...", + "enter-password": "Ge lösenord", + "send-transaction": "Sänd en transaktion", + "confirmations": "Bekräftelser", + "incorrect-code": [ + "str", + "Tyvärr var koden felaktig, var god ange den igen" + ], + "image-source-gallery": "Välj från galleri", + "sync-synced": "Synkroniserad", + "currency": "Valuta", + "status-pending": "Avvaktan", + "connecting-requires-login": "Du måste logga in för att kunna ansluta till ett annat nätverk", + "datetime-day": { + "one": "dag", + "other": "dagar" + }, + "request-transaction": "Begär transaktion", + "wallet-send": "Sänd", + "scan-qr": "Skanna QR kod", + "contact-s": { + "one": "kontakt", + "other": "kontakter" + }, + "gas-used": "Gas använt", + "type": "Typ", + "next": "Nästa", + "recent": "Senaste", + "open-on-etherscan": "Öppna på Etherscan.io", + "share": "Dela", + "status": "Status", + "from": "Från", + "wrong-password": "Fel lösenord", + "in-contacts": "I kontakterna", + "transactions-sign": "Skriv under", + "sharing-share": "Dela...", + "type-a-message": "Skriv ett meddelande...", + "usd-currency": "USD", + "url": "URL", + "add-network": "Lägg till nätverk", + "unknown-status-go-error": "Okänt status-go fel", + "clear-history": "Rensa historik", + "wallet-manage-assets": "Hantera tillgångar", + "no-contacts": "Inga kontakter ännu", + "soon": "Snart", + "close-app-content": "Denna app kommer att avslutas. När du öppnar den på nytt kommer det valda nätverket att användas", + "datetime-today": "idag", + "web-view-error": "hoppsan, fel", + "error": "Ett fel uppstod", + "more": "mer", + "cancel": "Avbryt", + "can-not-add-yourself": "Du kan inte lägga till dig själv", + "transaction-description": "Var god och vänta på minst 12 bekräftelser för att försäkra dig om att transaktionen gått igenom", + "add-to-contacts": "Lägg till i kontakter", + "available": "Tillgänglig", + "You": "Du", + "main-wallet": "Huvudplånbok", + "transactions": "Transaktioner", + "members": { + "one": "1 medlem", + "other": "{{count}} medlemmar", + "zero": "inga medlemmar" + }, + "intro-message1": "Välkommen till Status\nTryck på detta meddelande för att ange ett lösenord och komma igång!", + "eth": "ETH", + "transactions-history": "Historik", + "new-contact": "Ny kontakt", + "datetime-second": { + "one": "sekund", + "other": "sekunder" + }, + "recover": "Återställ", + "wallet-total-value": "Totalt värde", + "nonce": "Nonce", + "new-network": "Nytt nätverk", + "datetime-minute": { + "one": "minut", + "other": "minuter" + }, + "browsing-open-in-android-web-browser": "Öppna in webbläsare", + "browsing-open-in-ios-web-browser": "Öppna in webbläsare", + "wallet-insufficient-funds": "Otillräckligt kapital", + "edit-profile": "Redigera profil", + "active-unknown": "Okänd", + "wallet-invalid-chain-id": "Felaktigt nätverk: \n {{data}}", + "transaction-failed": "Transaktionen misslyckades", + "public-key": "Offentlig nyckel", + "incoming": "Inkommande", + "profile": "Profil", + "wallet-choose-recipient": "Välj mottagare", + "none": "Inga", + "removed": "borttagna", + "no": "Nej", + "transactions-filter-select-all": "Välj alla", + "transactions-filter-title": "Filtrera historik", + "message": "Meddelande", + "here-is-your-passphrase": "Här är din lösenordsfras, *skriv ner den och förvara den säkert!* Du kommer att behöva den för att återställa ditt konto.", + "wallet-assets": "Tillgångar", + "image-source-title": "Profilbild", + "current-network": "Nuvarande nätverk", + "outgoing": "Utgående", + "left": "lämnade", + "to": "Till", + "data": "Data", + "status-sent": "Skickad", + "cost-fee": "Kostnad/Avgift" +} diff --git a/translations/sw.json b/translations/sw.json new file mode 100644 index 00000000000..180a6eca47c --- /dev/null +++ b/translations/sw.json @@ -0,0 +1,95 @@ +{ + "amount": "Kiasi", + "members-active": { + "one": "Mwanachama 1, Aliyewajibika 1", + "other": "{{count}} wanachama, {{count}} waliowajibika", + "zero": "hakuna wanachama" + }, + "chat-name": "Jina la gumzo", + "phew-here-is-your-passphrase": "*Phew* hiyo ilikuwa ngumu, hapa ni kaulisiri yako, *iandike na uiweke salama!* Utaihitaji kwa ajili ya kufufua akaunti yako.", + "chat-settings": "Mipangilio ya gumzo", + "offline": "Nje ya mtandao", + "invited": "ulialikwa", + "address": "Anwani", + "datetime-hour": { + "one": "saa", + "other": "masaa" + }, + "remove": "Ondoa", + "add-members": "Ongeza wanachama", + "done": "Imefanyika", + "new-group-chat": "Gumzo mpya ya kikundi", + "datetime-yesterday": "jana", + "datetime-ago": "iliyopita", + "contacts": "Mawasiliano", + "active-online": "Mtandaoni", + "password": "Nenosiri", + "discover": "Ugunduzi", + "intro-status": "Ongea nami kuanzisha akaunti yako na kubadilisha mipangilio yako!", + "name": "Jina", + "show-qr": "Onyesha QR", + "connect": "Unganisha", + "edit": "Hariri", + "account-generation-message": "Nipe sekunde, naenda kufanya baadhi ya hisabati kutengeneza akaunti yako!", + "no-messages": "Hakuna ujumbe", + "passphrase": "Kaulisiri", + "recipient": "Mpokeaji", + "members-title": "Wanachama", + "settings": "Mipangilio", + "chats": "Gumzo", + "image-source-make-photo": "Chukua picha", + "save": "Hifadhi", + "sharing-copy-to-clipboard": "Kopiera", + "sync-in-progress": "Kulandanisha...", + "incorrect-code": [ + "str", + "Samahani kificho hakikuwa sahihi, tafadhali ingiza tena" + ], + "image-source-gallery": "Chagua kutoka nyumba ya sanaa", + "sync-synced": "Katika ulandanishaji", + "status-pending": "Inasubiri", + "datetime-day": { + "one": "siku", + "other": "siku" + }, + "scan-qr": "Piga picha QR", + "recent": "Hivi karibuni", + "status": "Hali", + "wrong-password": "Nenosiri sio halali", + "sharing-share": "Dela...", + "clear-history": "Futa historia", + "no-contacts": "Bado hakuna mawasiliano", + "datetime-today": "leo", + "web-view-error": "nadhani, hitilafu", + "can-not-add-yourself": "Huwezi kujiongeza mwenyewe", + "add-to-contacts": "Ongeza kwa mawasiliano", + "available": "Wanapatikana", + "You": "Wewe", + "main-wallet": "Mkoba Mkuu", + "members": { + "one": "Mwanachama 1", + "other": "{{count}} wanachama", + "zero": "hakuna wanachama" + }, + "intro-message1": "Karibu kwa Hali na Ubofye ujumbe huu ili kuweka nenosiri lako na uanze!", + "new-contact": "Mawasiliano mapya", + "datetime-second": { + "one": "sekunde", + "other": "sekunde" + }, + "recover": "Okoa", + "datetime-minute": { + "one": "dakika", + "other": "dakika" + }, + "active-unknown": "Hawajulikani", + "public-key": "Ufunguo wa Umma", + "profile": "Profaili", + "none": "Hakuna", + "removed": "uliondolewa", + "message": "Ujumbe", + "here-is-your-passphrase": "Hapa ni kaulisiri yako, *iandike na uiweke salama!* Utaihitaji kwa ajili ya kufufua akaunti yako.", + "image-source-title": "Picha ya profaili", + "status-sent": "Tuma", + "left": "uliondoka" +} diff --git a/translations/th.json b/translations/th.json new file mode 100644 index 00000000000..00d577c0d8f --- /dev/null +++ b/translations/th.json @@ -0,0 +1,108 @@ +{ + "accept-and-share-address": "ยอมรับและแชร์ Address", + "account-exists-title": "บัญชีมีอยู่แล้ว", + "add-private-key-account": "เพิ่มบัญชีจาก Private key", + "add-seed-account": "เพิ่มบัญชีด้วย Seed phrase", + "address-received": "Address ผู้รับ", + "balance": "คงเหลือ", + "biometric-disable-bioauth": "ปิดการใช้งาน {{bio-type-label}}", + "biometric-disable-password-title": "ปิดใช้งานการบันทึกรหัสผ่าน", + "cant-report-bug": "ไม่สามารถรายงานข้อผิดพลาดได้", + "check-on-etherscan": "ตรวจสอบใน etherscan", + "clear-all": "ลบทั้งหมด", + "decimals": "ทศนิยม", + "decline": "ยกเลิก", + "default": "ค่าเริ่มต้น", + "delete-account": "สร้างบัญชี", + "delete-and-leave-group": "ลบและออกจากกลุ่ม", + "delete-my-account": "ลบบัญชีของฉัน", + "dev-mode-settings": "การตั้งค่าโหมดการพัฒนา", + "ens-10-SNT": "10 SNT", + "ens-add-username": "เพิ่มชื่อผู้ใช้", + "ens-custom-username-taken": "ชื่อผู้ใช้ไม่ได้เป็นของคุณ :(", + "ens-deposit": "เงินฝาก", + "ens-got-it": "ตกลงเข้าใจแล้ว", + "ens-name-title": "ชื่อ ENS", + "ens-register": "ลงทะเบียน", + "ens-registration-failed-title": "การทำธุรกรรมล้มเหลว", + "ens-remove-username": "ลบชื่อผู้ใช้", + "ens-saved-title": "เพิ่มชื่อผู้ใช้แล้ว", + "ens-test-message": "เฮ้", + "ens-username-owned": "✓ชื่อผู้ใช้เป็นของคุณอยู่แล้ว", + "ens-username-taken": "ชื่อผู้ใช้ถูกใช้ไปแล้ว :(", + "ens-usernames": "ชื่อผู้ใช้ ENS", + "ens-your-username": "ชื่อผู้ใช้ของคุณ", + "ens-your-your-name": "ENS ของคุณ", + "enter-watch-account-address": "สแกน QR code\nหรือ\nป้อน Address เพิ่มดู", + "enter-your-password": "ป้อนรหัสผ่านของคุณ", + "export-account": "ส่งออกบัญชี", + "free": "↓ฟรี", + "generate-an-account": "สร้างบัญชี", + "history": "ประวัติ", + "incoming-transaction": "ธุรกรรมขาเข้า", + "intro-privacy-policy-note2": "นโยบายความเป็นส่วนตัว", + "intro-title3": "Decentralized แอป", + "intro-wizard-text4": "รักษาความปลอดภัยและเข้ารหัสคีย์ของคุณ", + "intro-wizard-text6": "Status จะแจ้งให้คุณทราบเกี่ยวกับข้อความใหม่ คุณสามารถแก้ไขการตั้งค่าการแจ้งเตือนภายหลังในการตั้งค่า", + "intro-wizard-title-alt4": "สร้างรหัสผ่าน", + "intro-wizard-title-alt5": "ยืนยันรหัสผ่านของคุณ", + "intro-wizard-title1": "รับคีย์ของคุณ", + "intro-wizard-title2": "เลือกชื่อแชท", + "intro-wizard-title4": "สร้างรหัสผ่าน 6 หลัก", + "intro-wizard-title5": "ยืนยันรหัสผ่าน", + "intro-wizard-title6": "เปิดใช้งานการแจ้งเตือน", + "key": "คีย์", + "keycard-awaiting-title": "กำลังมองหา...", + "keycard-connected-title": "เชื่อมต่อ", + "keycard-error-description": "เชื่อมต่อบัตรอีกครั้งเพื่อดำเนินการต่อ", + "keycard-error-title": "การเชื่อมต่อล้มเหลว", + "keycard-onboarding-intro-header": "เก็บคีย์ของคุณไว้ใน Keycard", + "keycard-onboarding-start-step1": "สร้างรหัสผ่าน 6 หลัก", + "keycard-processing-title": "กำลังประมวลผล...", + "keycard-success-title": "สำเร็จ", + "language": "ภาษา", + "learn-more-about-keycard": "เรียนรู้เพิ่มเติมเกี่ยวกับ Keycard", + "les-ulc": "LES\/ULC", + "load-messages-before": "ก่อน {{date}}", + "mail-should-be-configured": "ควรกำหนดค่าเมลไคลเอ็นต์", + "mark-all-read": "ทำเครื่องหมายอ่านทั้งหมด", + "mobile-network-go-to-settings": "ไปยังการตั้งค่า", + "mobile-network-sheet-settings": "การตั้งค่า", + "mobile-network-start-syncing": "เริ่มการซิงค์", + "mobile-network-stop-syncing": "หยุดการซิงค์", + "node-version": "เวอร์ชันโหนด", + "ok-save-pass": "ตกลงบันทึกรหัสผ่าน", + "open-nfc-settings": "เปิดการตั้งค่า NFC", + "outgoing-transaction": "ธุรกรรมขาออก", + "paste": "วาง", + "privacy": "ความเป็นส่วนตัว", + "private-key": "Private key", + "processing": "รอสักครู่", + "quiet-days": "{{quiet-days}} วัน", + "quiet-hours": "{{quiet-hours}} ชั่วโมง", + "retry": "ลองใหม่", + "security": "ความปลอดภัย", + "select": "เลือก", + "select-account": "เลือกบัญชี", + "select-account-first": "เลือกบัญชีก่อน", + "set-currency": "ตั้งค่าสกุลเงินเริ่มต้น", + "share-address": "แชร์ Address", + "share-profile": "แชร์โปรไฟล์", + "shared": "แชร์", + "sign-and-send": "ลงชื่อและส่ง", + "sign-out": "ออกจากระบบ", + "sign-with": "ลงชื่อด้วย", + "submit": "ตกลง", + "symbol": "ตัวย่อ", + "sync-settings": "การตั้งค่าการซิงค์", + "this-device": "อุปกรณ์นี้", + "transactions-load-more": "โหลดเพิ่มเติม", + "turn-nfc-description": "NFC ปิดการใช้งานอยู่ คุณสามารถเปิดใช้งานได้ในการตั้งค่า", + "ulc-enabled": "ULC ที่เปิดใช้งาน", + "unlock": "ปลดล็อค", + "user-not-found": "ไม่พบชื่อผู้ใช้", + "waiting-for-wifi-change": "เปลี่ยน", + "watch-only": "ดูอย่างเดียว", + "wrong-address": "Address ไม่ถูกต้อง", + "your-keys": "คีย์ของคุณ" +} diff --git a/translations/tl.json b/translations/tl.json new file mode 100644 index 00000000000..d3d882c2cde --- /dev/null +++ b/translations/tl.json @@ -0,0 +1,1528 @@ +{ + "about-app": "Tungkol sa", + "about-key-storage-content": "Ang Status ay hindi kailanman mai-access ang iyong pribadong key. Siguraduhing i-backup ang iyong seen phrase. Kung nawala mo ang iyong telepono ito ang tanging paraan upang ma-access ang iyong mga keys.", + "about-key-storage-title": "Tungkol sa pangunahing imbakan", + "about-names-content": "Walang sinuman ang maaaring magpanggap na ikaw! Hindi ka nagpapakilala sa pamamagitan ng default at hindi mo kailangang ihayag ang iyong tunay na pangalan. Maaari kang magrehistro ng isang pasadyang pangalan para sa isang maliit na bayad.", + "about-names-title": "Hindi mababago ang mga pangalan", + "accept": "Tanggapin", + "accept-and-share-address": "Tanggapin at ibahagi ang address", + "access-existing-keys": "I-access ang umiiral na mga key", + "access-key": "I-access ang key", + "account-added": "Idinagdag ang account", + "account-color": "Kulay ng account", + "account-content": "Maaari mong ihambing ang mga account sa Status at sa bank accounts. Tulad ng isang account sa bangko, isang account ay karaniwang mayroong address at isang balanse; Ginagamit mo ang account na ito upang mag-transact sa Ethereum. Maaari kang magkaroon ng maraming mga account sa iyong pitaka o wallet. Lahat ng na-access sa pamamagitan ng pag-unlock ng Status.", + "account-exists-title": "Mayroon nang account", + "account-name": "Pangalan ng account", + "account-settings": "Mga setting ng account", + "account-title": "Account", + "accounts": "Accounts", + "actions": "Mga kilos", + "active-online": "Online", + "active-unknown": "Hindi kilala", + "add": "Idagdag", + "add-a-watch-account": "Magdagdag ng isang address na panonood lamang", + "add-account": "Magdagdag ng account", + "add-account-description": "Maaari kang mag-import ng anumang uri ng Ethereum account para ma-idagdag ito para sa iyong Status Wallet", + "add-account-incorrect-password": "Tila hindi tama ang password. Ilagay ang password na iyong ginagamit para mabuksan ang app.", + "add-an-account": "Magdagdag ng isang account", + "add-bootnode": "Idagdag ang bootnode", + "add-contact": "Magdagdag ng contact", + "add-custom-token": "Magdagdag ng custom token", + "add-favourite": "Magdagdag ng paborito", + "add-mailserver": "Magdagdag ng Status node", + "add-members": "Magdagdag ng mga miyembro", + "add-network": "Magdagdag ng network", + "add-new-contact": "Magdagdag ng bagong contact", + "add-nickname": "Magdagdag ng palayaw (opsyonal)", + "add-private-key-account": "Magdagdag ng account mula sa pribadong key", + "add-seed-account": "Magdagdag ng account para sa seed phrase", + "add-to-contacts": "Idagdag sa mga contact", + "add-to-contacts-text": "Sa pamamagitan ng pagdaragdag ng isang user sa iyong listahan ng contact, ibinahagi mo ang iyong wallet address", + "add-to-favourites": "Idagdag sa mga Paborito", + "add-watch-account": "Magdagdag ng isang account na panonood lamang", + "address": "Address", + "address-or-ens-name": "Address o pangalan ng ENS", + "address-received": "Natanggap ang address", + "address-request-accepted": "Tinanggap ang kahilingan sa address", + "address-requested": "Hiniling ang address", + "advanced": "Advanced", + "advanced-settings": "Mga advanced na setting", + "advertiser-description": "Natuklasan mo ang Status salamat sa isang kasosyo. Naisip mo ba kung susuriin ng Status ang iyong IP address nang isang beses para makakuha sila ng gantimpala? Ang impormasyong ito ay hindi gagamitin para sa anumang bagay at ito ay lubos na aalisin pagkatapos ng 7 araw.", + "advertiser-starter-pack-accept": "Tanggapin", + "advertiser-starter-pack-decline": "Tanggihan", + "advertiser-starter-pack-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "advertiser-starter-pack-title": "Starter Pack", + "advertiser-title": "Default sa privacy", + "agree-by-continuing": "Sa pamamagitan ng pagpapatuloy sumasang-ayon ka\nsa aming", + "all": "Lahat", + "allow": "Payagan", + "allow-mention-notifications": "Ipakita @ banggitin", + "allowing-authorizes-this-dapp": "Pinapayagan ang nagpapahintulot sa DApp na ito na makuha ang iyong address ng pitaka at paganahin ang Web3", + "already-have-asset": "Mayroon ka nang asset na ito", + "amount": "Halaga", + "appearance": "Hitsura", + "apply": "Mag-apply", + "are-you-sure-description": "Hindi mo makikita ang kabuuang seed phrase muli", + "are-you-sure-to-cancel": "Sigurado ka bang gusto mong kanselahin?", + "are-you-sure?": "Sigurado ka ba?", + "ask-in-status": "Magtanong ng isang katanungan o mag-ulat ng isang bug", + "at": "sa", + "attribution-received": "{{attrib}} mula sa {{max}} bonus na natanggap", + "audio": "Audio", + "audio-recorder": "Recorder", + "audio-recorder-error": "Error sa recorder", + "audio-recorder-max-ms-reached": "Naabot ang maximum na oras ng pag-record", + "audio-recorder-permissions-error": "Kailangan mong magbigay ng pahintulot upang magpadala ng mga audio message", + "authorize": "Awtorisado", + "available": "Available", + "available-participants": { + "zero": "wala", + "one": "isa", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "back": "Balik", + "back-up": "I-back up", + "back-up-seed-phrase": "Back up ng seed phrase", + "back-up-your-seed-phrase": "I-back up ang iyong seed phrase", + "backup-recovery-phrase": "Back up seed phrase", + "balance": "Balanse", + "begin-set-up": "Simulan ang pag-setup", + "biometric-auth-android-sensor-desc": "Pindutin ang sensor", + "biometric-auth-android-sensor-error-desc": "Nabigo", + "biometric-auth-android-title": "Kinakailangan ang pagpapatunay", + "biometric-auth-confirm-logout": "Relogin", + "biometric-auth-confirm-message": "Kinakailangan ang Biometric authentication para magpatuloy, kung hindi pwede mangyaring i-unlock ang iyong keys gamit ang iyong password or passcode", + "biometric-auth-confirm-title": "Dapat mong patunayan!", + "biometric-auth-confirm-try-again": "Subukan muli", + "biometric-auth-error": "Hindi ma-perform ang pagpapatunay ng biometric ({{code}})", + "biometric-auth-login-error-title": "Error sa authentication ng biometric", + "biometric-auth-login-ios-fallback-label": "Ilagay ang password", + "biometric-auth-reason-login": "Mag-login sa Status", + "biometric-auth-reason-verify": "Patunayan ang pagpapatunay", + "biometric-disable-bioauth": "hindi paganahin{{bio-type-label}}", + "biometric-disable-password-description": "Kung hindi mo paganahin ito, magagawa mo rin", + "biometric-disable-password-title": "Huwag paganahin ang pag-save ng password", + "biometric-enable": "Kung hindi mo nais na ipasok ang iyong password sa bawat oras upang ma-access ang app, paganahin{{bio-type-label}} mag sign-in", + "biometric-enable-button": "Paganahin{{bio-type-label}}", + "biometric-enable-keycard": "Kung ayaw mong gamitin ang iyong Keycard sa bawat oras na ma-access ang app, paganahin{{bio-type-label}}mag-sign in", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Fingerprint", + "biometric-secure-with": "Secure sa{{bio-type-label}}", + "biometric-touchid": "Touch ID", + "blank-keycard-text": "Maaari kang magpatuloy sa iyong keycard kapag nabuo mo ang iyong mga keys at pangalan", + "blank-keycard-title": "Mukhang naka-tap ka ng\nisang blangkong keycard", + "block": "Block", + "block-contact": "I-block ang gumagamit na ito", + "block-contact-details": "Ang pag-block ay tatanggalin ang mga naunang mensahe ng gumagamit na ito at pipigilan ang mga bago na maabot sa iyo.", + "blocked-users": "Na-block ang mga gumagamit", + "bootnode-address": "Bootnode address", + "bootnode-details": "Mga detalye sa Bootnode", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes enabled", + "bootnodes-settings": "Bootnodes settings", + "browsed-websites": "Ang kasaysayan ng browser ay lilitaw dito", + "browser": "Browser", + "browser-not-secure": "Hindi secure ang koneksyon! Huwag mag-sign ng transaksyon o magpadala ng personal na data sa site na ito.", + "browser-secure": "Ang koneksyon ay ligtas. Siguraduhin na talagang pinagkakatiwalaan mo ang site na ito bago mag-sign ng mga transaksyon o pagpasok ng personal na data.", + "browsers": "Mga Browser", + "browsing-cancel": "Pagkansela", + "browsing-open-in-android-web-browser": "Buksan sa Android", + "browsing-open-in-ios-web-browser": "Buksan sa iOS", + "browsing-open-in-status": "Buksan ang Status", + "browsing-site-blocked-description1": "Nakita namin ang mga potensyal na nakakahamak na aktibidad mula sa address na ito. Upang maprotektahan ka at ang iyong pitaka, pinipigilan namin ang karagdagang pag-navigate.\n\nKung sa palagay mo ito ay isang error, ipaalam sa amin sa", + "browsing-site-blocked-description2": "pampublikong chat.", + "browsing-site-blocked-go-back": "Bumalik ka", + "browsing-site-blocked-title": "Na-block ang site na ito", + "browsing-title": "Browse", + "buy-crypto": "Bumili ng crypto", + "buy-crypto-choose-a-service": "Pumili ng serbisyo na nais mong gamitin upang bumili ng crypto", + "buy-crypto-description": "Maghanap ng dapp upang bumili ng crypto ngayon", + "buy-crypto-leaving": "Ikaw ay umaalis sa Status at pumapasok sa isang third party na website upang makumpleto ang iyong pagbili", + "buy-crypto-title": "Mukhang walang laman ang iyong wallet", + "camera-access-error": "Upang bigyan ang kinakailangang pahintulot ng camera, mangyaring pumunta sa iyong mga setting ng system at tiyakin na ang Status > Napili ang camera.", + "can-not-add-yourself": "Ikaw yan, upang magsimula ng isang chat pumili ng ibang tao", + "can-send-messages": "Maaari kang magpadala at makatanggap ng mga bagong mensahe", + "cancel": "kansela", + "cancel-keycard-setup": "Ikansela ang pag-setup ng Keycard", + "cancelling": "Pagkansela", + "cannot-read-card": "Hindi mabasa ang card.\nMangyaring hawakan ito sa likod ng iyong telepono", + "cannot-use-default-pin": "Hindi pinapayagan ang passcode 000000.\nMangyaring gumamit ng iba pang numero", + "cant-open-public-chat": "Hindi mabuksan ang pampublikong chat", + "cant-report-bug": "Hindi maiulat ang isang bug", + "card-is-blank": "Blangko ang card na ito", + "card-reseted": "Natapos na ang card", + "card-unpaired": "Ang card ay walang bayad mula sa kasalukuyang aparato", + "change-fleet": "Baguhin ang fleet sa{{fleet}}", + "change-logging-enabled": "Sigurado ka bang gusto mo{{enable}}logging?", + "change-passcode": "Baguhin ang Passcode", + "change-password": "Palitan ang password", + "change-pin": "Baguhin ang 6-digit na Passcode", + "changed-amount-warning": "Ang halaga ay binago mula sa{{old}} hangang sa{{new}}", + "changed-asset-warning": "Binago si Asset mula sa{{old}} hangang sa{{new}}", + "chaos-mode": "Chaos mode", + "chaos-unicorn-day": "Araw ng Chaos Unicorn", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Chat", + "chat-and-transact": "Makipag-chat at makipag-transaksyon nang pribado sa mga kaibigan", + "chat-is-a-contact": "Makipag-ugnay", + "chat-is-not-a-contact": "Hindi isang contact", + "chat-key": "Chat key", + "chat-key-content": "Mensahe sa Status Chat Protocol ay ipinapadala at natanggap gamit ang mga encryption keys. Mga public chat key ay isang string ng mga character na ibinabahagi mo sa iba upang maaari silang magpadala sa iyo ng mga mensahe sa Status.", + "chat-key-title": "Chat Key", + "chat-link-previews": "Mga preview ng chat link", + "chat-name": "Pangalan ng chat", + "chat-name-content": "Tatlong random na salita, nagmula algorithmically galing sa iyong chat key at gamitin mo ito para sa iyong default na alyas sa chat. Pangalan ng Chat ay ganap na natatangi o kakaiba, walang ibang user ang maaring magkapareho sa tatlong salita.", + "chat-name-title": "Chat Name", + "chat-notification-preferences": "Mga setting ng notification", + "chat-settings": "Mga setting ng chat", + "chats": "Chats", + "check-on-etherscan": "Tingnan sa etherscan", + "check-on-opensea": "Tingnan sa opensea", + "check-your-recovery-phrase": "Suriin ang iyong seed phrase", + "choose-actions": "Pumili ng mga aksyon", + "choose-authentication-method": "Pumili ng isang paraan ng pagpapatunay", + "choose-new-location-for-keystore": "Pumili ng isang bagong lokasyon upang i-save ang iyong keystore file", + "choose-storage": "Pumili ng imbakan", + "clear": "Malinaw", + "clear-all": "Alisin lahat", + "clear-history": "Alisin ang history", + "clear-history-action": "Malinaw", + "clear-history-confirmation": "Alisin ang history?", + "clear-history-confirmation-content": "Sigurado ka bang nais mong limasin ang kasaysayan ng chat na ito?", + "clear-history-title": "Alisin ang history?", + "close": "Isara", + "close-all": "Isara lahat", + "close-app-button": "Kumpirma", + "close-app-content": "Ang app ay titigil at isara. Kapag binuksan mo ito, gagamitin ang napiling network", + "close-app-title": "Babala!", + "command-button-send": "Ipadala", + "communities": "Mga Komunidad", + "communities-alpha": "Mga Komunidad (alpha)", + "communities-verified": "✓ Na-verify na Komunidad ng Status", + "community-color": "Kulay ng pamayanan", + "community-color-placeholder": "Pumili ng kulay", + "community-edit-title": "I-edit ang pamayanan", + "community-image-pick": "Pumili ng imahe", + "community-image-take": "Kunan ng litrato", + "community-invite-title": "Mag-anyaya", + "community-key": "Pribadong key ng komunidad", + "community-key-placeholder": "I-type ang iyong community private key", + "community-members": { + "zero": "sero", + "one": "isa", + "two": "dalawa", + "few": "konti", + "many": "marami", + "other": "iba" + }, + "community-members-title": "Mga kasapi", + "community-private-key": "Pribadong key ng komunidad", + "community-requests-to-join-title": "Mga kahilingan sa pagiging miyembro", + "community-roles": "Mga Tungkulin", + "community-share-title": "Ibahagi", + "community-thumbnail-image": "Thumbnail na imahe", + "community-thumbnail-upload": "I-upload", + "complete-hardwallet-setup": "Ang card na ito ay naka-link ngayon. Kailangan mo ito upang mag-sign ng transaksyon at para ma-unlock ang iyong keys", + "completed": "Nakumpleto", + "confirm": "Kumpirma", + "confirm-password-placeholder": "Kumpirmahin ang iyong password...", + "confirmation-request": "Kahilingan sa Pagkumpirma", + "confirmations": "Pagkumpirma", + "confirmations-helper-text": "Kapag ang transaksyon ay may 12 kumpirmasyon maaari mong isaalang-alang na naayos ito.", + "connect": "Kumonekta", + "connect-mailserver-content": "kumonekta sa {{name}}?", + "connect-wallet": "Ikonekta ang pitaka", + "connected": "Nakakonekta", + "connected-to": "Nakakonekta sa", + "connecting": "Pagkonekta ...", + "connecting-requires-login": "Ang pagkonekta sa isa pang network ay nangangailangan ng pag-login", + "connection-status": "Koneksyon ng Status", + "connection-with-the-card-lost": "Ang iyong koneksyon sa iyong Card ay nawala", + "connection-with-the-card-lost-setup-text": "Para ipagpatuloy ang pag-setup hawakan ang card sa\nlikod ng iyong phone at panatilihin\nang card sa contact sa telepono", + "connection-with-the-card-lost-text": "Para magpatuloy hawakan ang card sa likod ng iyong telepono", + "contact-code": "Chat key", + "contact-s": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "contacts": "Mga contact", + "contacts-descr": "Lilitaw ang iyong mga contact dito. Makakatanggap ka ng mga pag-update ng Status mula sa sinumang idagdag mo bilang isang contact", + "contacts-empty": "komontak gamit ang pangalan ng ENS na lilitaw dito", + "continue": "Magpatuloy", + "continue-anyway": "Magpatuloy pa rin", + "contract-address": "Contract address", + "contract-interaction": "Pakikipag-ugnayan sa kontrata", + "copy-info": "Kopyahin ang impormasyon", + "copy-qr": "Kopyahin ang code", + "copy-to-clipboard": "Kopya", + "copy-transaction-hash": "Kopyahin ang transaksyon ID", + "cost-fee": "Gastos \/ Bayad", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Lumikha", + "create-a-pin": "Gumawa ng 6-digit passcode", + "create-channel": "Lumikha ng channel", + "create-channel-title": "Bagong channel", + "create-community": "Lumikha ng isang pamayanan", + "create-group-chat": "Gumawa ng group chat", + "create-multiaccount": "Lumikha ng Keys", + "create-new-key": "Kumuha ng mga bagong keys", + "create-pin": "Lumikha ng 6-digit na passcode", + "create-pin-description": "kailangan mo ang iyong card + ang 6-digit na passcode na ito upang mai-unlock ang Status at upang kumpirmahin ang mga transaksyon.", + "created-group-chat-description": "Ikaw ay nakagawa ng grupo{{group-name}}", + "cryptokitty-name": "CryptoKitty #{{id}}", + "currency": "Pera", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghanistan Afghani", + "currency-display-name-ars": "Argentine Peso", + "currency-display-name-aud": "Australian Dollar", + "currency-display-name-bbd": "Barbados Dollar", + "currency-display-name-bdt": "Bangladeshi Taka", + "currency-display-name-bgn": "Bulgarian Lev", + "currency-display-name-bhd": "Bahraini Dinar", + "currency-display-name-bnd": "Brunei Darussalam Dollar", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Brazil Real", + "currency-display-name-btn": "Bhutanese Ngultrum", + "currency-display-name-cad": "Canada Dollar", + "currency-display-name-chf": "Switzerland Franc", + "currency-display-name-clp": "Chile Peso", + "currency-display-name-cny": "China Yuan Renminbi", + "currency-display-name-cop": "Colombia Peso", + "currency-display-name-crc": "Costa Rica Colon", + "currency-display-name-czk": "Czech Koruna", + "currency-display-name-dkk": "Denmark Krone", + "currency-display-name-dop": "Dominican Republic Peso", + "currency-display-name-egp": "Egypt Pound", + "currency-display-name-etb": "Ethiopian Birr", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "British Pound", + "currency-display-name-gel": "Georgian Lari", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Hong Kong Dollar", + "currency-display-name-hrk": "Croatia Kuna", + "currency-display-name-huf": "Hungary Forint", + "currency-display-name-idr": "Indonesia Rupiah", + "currency-display-name-ils": "Israel Shekel", + "currency-display-name-inr": "India Rupee", + "currency-display-name-isk": "Iceland Krona", + "currency-display-name-jmd": "Jamaica Dollar", + "currency-display-name-jpy": "Japanese Yen", + "currency-display-name-kes": "Kenyan Shilling", + "currency-display-name-krw": "Korea (South) Won", + "currency-display-name-kwd": "Kuwaiti Dinar", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Sri Lanka Rupee", + "currency-display-name-mad": "Moroccan Dirham", + "currency-display-name-mdl": "Moldovan Leu", + "currency-display-name-mur": "Mauritius Rupee", + "currency-display-name-mwk": "Malawian Kwacha", + "currency-display-name-mxn": "Mexico Peso", + "currency-display-name-myr": "Malaysia Ringgit", + "currency-display-name-mzn": "Mozambique Metical", + "currency-display-name-nad": "Namibia Dollar", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Norway Krone", + "currency-display-name-npr": "Nepal Rupee", + "currency-display-name-nzd": "New Zealand Dollar", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinean Kina", + "currency-display-name-php": "Philippines Peso", + "currency-display-name-pkr": "Pakistan Rupee", + "currency-display-name-pln": "Poland Zloty", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Qatar Riyal", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Serbia Dinar", + "currency-display-name-rub": "Russia Ruble", + "currency-display-name-sar": "Saudi Arabia Riyal", + "currency-display-name-sek": "Sweden Krona", + "currency-display-name-sgd": "Singapore Dollar", + "currency-display-name-thb": "Thailand Baht", + "currency-display-name-try": "Turkish Lira", + "currency-display-name-ttd": "Trinidad at Tobago Dollar", + "currency-display-name-twd": "Taiwan New Dollar", + "currency-display-name-tzs": "Tanzanian Shilling", + "currency-display-name-uah": "walang mga kasapi", + "currency-display-name-ugx": "Ugandan Shilling", + "currency-display-name-usd": "United States Dollar", + "currency-display-name-uyu": "Uruguay Peso", + "currency-display-name-vef": "Venezuela Bolívar", + "currency-display-name-vnd": "Viet Nam Dong", + "currency-display-name-zar": "South Africa Rand", + "current": "Kasalukuyan", + "current-network": "Kasalukuyang network", + "current-pin": "Ilagay ang 6-digit na passcode", + "current-pin-description": "Ilagay ang iyong 6-digit na passcode upang magpatuloy", + "custom": "Pasadyang", + "custom-networks": "Pasadyang mga network", + "custom-node": "Ikaw ay gumagamit ng custom RPC endpoint. Ang iyong lokal na kasaysayan ng paglilipat ay maaring hindi kumpleto", + "custom-seed-phrase": "Hindi wastong seed phrase", + "custom-seed-phrase-text-1": "Ang seed phrase ay hindi tumutugma sa aming suportadong diksyunaryo. Suriin para sa mga maling salita.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Tanggapin at Buksan", + "dapp-starter-pack-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "dapp-starter-pack-title": "Starter Pack", + "dapp-would-like-to-connect-wallet": "nais kumonekta sa", + "dapps": "ÐApps", + "dapps-permissions": "Mga pahintulot ng DApp", + "dark": "Madilim", + "data": "Data", + "data-syncing": "Pag-sync ng data", + "database-reset-warning": "Mare-reset ang database. Ang mga chat, contact at setting ay tatanggalin", + "datetime-ago": "nakaraan", + "datetime-ago-format": "{{number}}{{time-intervals}}{{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "datetime-day-short": { + "zero": "walang araw", + "one": "isang araw", + "two": "dalawang araw", + "few": "ilang araw", + "many": "maraming araw", + "other": "ibang araw" + }, + "datetime-hour": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-hour-short": { + "zero": "walang oras", + "one": "isang oras", + "two": "dalawang oras", + "few": "kaunting oras", + "many": "maraming oras", + "other": "ibang oras" + }, + "datetime-minute": { + "zero": "minuto", + "one": "isang", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-minute-short": { + "zero": "walang minuto", + "one": "isang minuto", + "two": "dalawang minuto", + "few": "ilang minuto", + "many": "maraming minuto", + "other": "ibang minuto" + }, + "datetime-second": { + "zero": "zero", + "one": "isa", + "two": "dalawa", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "datetime-second-short": { + "zero": "walang segundo", + "one": "isang segundo", + "two": "dalawang segundo", + "few": "ilang segundo", + "many": "maraming segundo", + "other": "iba pang mga segundo" + }, + "datetime-today": "ngayon", + "datetime-yesterday": "kahapon", + "decimals": "Decimals", + "decline": "Tanggihan", + "decryption-failed-content": "Isang error na naganap sa pag-decrypting ng iyong data. Maaaring kailanganin mong burahin ang iyong dating data at makabuo ng isang bagong account. Tapikin ang \"Mag-apply\" upang burahin o \"Ikansela\" upang subukang muli", + "default": "Default", + "default-assets": "Default na ERC20 at ERC721", + "delete": "Tanggalin", + "delete-account": "Tanggalin ang account", + "delete-and-leave-group": "Tanggalin at iwanan ang pangkat", + "delete-bootnode": "Tanggalin ang bootnode", + "delete-bootnode-are-you-sure": "Sigurado ka bang gusto mong tanggalin ang bootnode na ito?", + "delete-bootnode-title": "Tanggalin ang bootnode", + "close-chat": "Tanggalin ang chat", + "close-chat-confirmation": "Sigurado ka bang gusto mong tanggalin ang chat na ito?", + "delete-confirmation": "Tanggalin?", + "delete-mailserver": "Tanggalin ang Status node", + "delete-mailserver-are-you-sure": "Sigurado ka bang nais mong burahin ang Status node?", + "delete-mailserver-title": "Burahin ang Status node", + "delete-message": "Tanggalin ang mensahe", + "delete-my-account": "Tanggalin ang aking account", + "delete-my-profile": "Tanggalin ang aking profile", + "delete-network-confirmation": "Sigurado ka bang gusto mong tanggalin ang network na ito?", + "delete-network-error": "Mangyaring kumonekta sa ibang network bago matanggal ang isang ito", + "delete-network-title": "Tanggalin ang network?", + "delete-profile": "Tanggalin ang profile", + "delete-profile-warning": "Babala: Kung hindi mo naisulat ang iyong seed phrase, mawawalan ka ng pag-access sa iyong mga pondo matapos mong tanggalin ang iyong profile", + "deny": "Deny", + "derivation-path": "Landas ng dereksyon", + "description": "Paglalarawan", + "dev-mode": "Mode ng pag-unlad", + "dev-mode-settings": "Pag-unlad ng mga setting ng mode", + "device-syncing": "Pag-sync ng aparato", + "devices": "Aparato", + "disable": "huwag paganahin", + "disabled": "Disabled", + "disconnected": "Chat offline", + "discover": "tuklasin", + "dismiss": "Iwaksi", + "done": "Tapos na", + "dont-ask": "Huwag mo ulit akong tanungin", + "edit": "Edit", + "edit-community": "I-edit ang pamayanan", + "edit-favourite": "baguhin ang mga paborito", + "edit-group": "I-edit ang grupo", + "edit-profile": "Ibahin ang profile", + "empty-chat-description": "Walang mga mensahe\nsa chat na ito", + "empty-chat-description-community": "Tahimik dito sa huling {{quiet-hours}} .", + "empty-chat-description-one-to-one": "Ang anumang mga mensahe na ipinadala mo dito ay naka-encrypt at maaari mo lamang itong basahin at", + "empty-chat-description-public": "Masyadong tahimik dito para sa huling{{quiet-hours}}Simulan ang pag-uusap o", + "empty-chat-description-public-share-this": "ibahagi ang chat na ito.", + "empty-keycard-required": "Nangangailangan ng isang walang laman na Keycard", + "empty-pending-invitations-descr": "Ang mga taong nais sumali sa pangkat \n sa pamamagitan ng isang link ng imbitasyon ay lilitaw dito", + "empty-tab": "Walang laman na tab", + "enable": "Paganahin", + "enable-all": "Paganahin lahat", + "enable-link-previews": "Paganahin ang mga link previews sa chat?", + "encrypt-with-password": "I-encrypt gamit ang password", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Magdagdag ng username", + "ens-agree-to": "Sang-ayon sa", + "ens-chat-settings": "Mga setting ng chat", + "ens-custom-domain": "Custom domain", + "ens-custom-username-hints": "I-type ang buong username kabilang ang pasadyang domain tulad ng username.domain.eth", + "ens-custom-username-taken": "Hindi kabilang sa iyo ang Username :(", + "ens-deposit": "Deposito", + "ens-dismiss-message": "I-click dito upang idespatsa", + "ens-displayed-with": "Ang iyong mga mensahe ay ipinapakita sa iba kasama", + "ens-get-name": "Kumuha ng isang unibersal na username", + "ens-got-it": "Ok, nakuha ito", + "ens-locked": "Naka-lock ang Username. Hindi mo mai-release ito hanggang{{date}}", + "ens-name-content": "Pasadyang alyas para sa iyong susi sa chat na maaari iparehistro gamit ang serbisyong pangalan ng Ethereum. Ang mga pangalan ng ENS ay desentralisado na mga username.", + "ens-name-not-found": "Hindi malutas ang pangalan ng ENS", + "ens-name-title": "Pangalan ng ENS", + "ens-network-restriction": "Magagamit lamang sa Mainnet", + "ens-no-usernames": "Wala kang koneksyon sa anumang username", + "ens-powered-by": "Pinapagana ng Ethereum Name Services", + "ens-primary-username": "Pangunahing username", + "ens-register": "Magrehistro", + "ens-registration-failed": "Para mairehistro ang username, mangyaring subukang muli.", + "ens-registration-failed-title": "Nabigo ang transaksyon", + "ens-registration-failure": "Nabigo ang pagrehistro", + "ens-registration-in-progress": "Pino-progreso ang Rehistro", + "ens-release-username": "Bitawan ang username", + "ens-remove-hints": "Ang pagtanggal ay tatanggalin ang username mula sa iyong key.", + "ens-remove-username": "Alisin ang username", + "ens-saved": "ay konektado ngayon sa iyong chat key at maaaring magamit sa Status.", + "ens-saved-title": "Idinagdag ang username", + "ens-show-username": "Ipakita ang aking pangalan ng ENS sa mga chat", + "ens-terms-header": "Mga tuntunin ng pagpaparehistro ng pangalan", + "ens-terms-point-1": "Ang mga pondo ay idineposito para sa 1 taon. Ang iyong SNT ay mai-lock, ngunit hindi ginugol.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS Registry).", + "ens-terms-point-2": "Matapos ang 1 taon, maaari mong palabasin ang pangalan at ibabalik ang iyong deposito, o walang pagkilos upang mapanatili ang pangalan.", + "ens-terms-point-3": "Kung ang mga termino ng pagbabago sa kontrata - e.g Status gumagawa ng mga pag-upgrade ng kontrata - May karapatan ang gumagamit na palabasin ang username anuman ang gaganapin sa oras.", + "ens-terms-point-4": "Hindi ma-access ng Controller ng kontrata ang iyong mga na-deposito na pondo. Maaari lamang silang ilipat sa address na nagpadala sa kanila.", + "ens-terms-point-5": "Ang iyong address (es) ay maiugnay sa publiko sa iyong pangalan ng ENS.", + "ens-terms-point-6": "Ang mga username ay nilikha bilang mga subdomain node ng stateofus.eth at napapailalim sa ENS smart contract sa mga terms.", + "ens-terms-point-7": "Pinapayagan mo ang kontrata para ilipat ang SNT sa iyong ngalan. Magagawa lamang ito kapag inaprubahan mo ang isang transaksyon upang pahintulutan ang paglipat.", + "ens-terms-point-8": "Ang mga salitang ito ay ginagarantiyahan ng smart contract logic sa address:", + "ens-terms-point-9": "{{address}}(Status UsernameRegistrar)", + "ens-terms-registration": "Mga tuntunin ng pagpaparehistro ng pangalan.", + "ens-test-message": "Hey", + "ens-transaction-pending": "Naka-pending ang transaksyon ...", + "ens-understand": "Naiintindihan ko na ang aking wallet address ay maiugnay sa publiko sa aking username.", + "ens-username": "Username ng ENS", + "ens-username-already-added": "Nakakonekta na ang Username sa iyong chat key at maaaring magamit sa loob ng Status.", + "ens-username-available": "Ang username ay magagamit", + "ens-username-connected": "Ang pangalan ng gumagamit na ito ay pagmamay-ari mo at konektado sa iyong chat key.", + "ens-username-connected-continue": "Ipagpapatuloy na itakda ang aking pangalan sa ENS sa chat.", + "ens-username-connected-with-different-key": "Ang pagpapatuloy ay mangangailangan ng isang transaksyon upang ikonekta ang username sa iyong chat key.", + "ens-username-connection-confirmation": "{{username}} ay konektado sa sandaling kumpleto na ang transaksyon.", + "ens-username-hints": "Hindi bababa sa 4 na character. Mga letrang Latin, numero, at maliit na titik lamang.", + "ens-username-invalid": "Mga letra at mga numero lang.", + "ens-username-owned": "✓ Ang username ay pagmamay-ari mo.", + "ens-username-owned-continue": "Ang pagpapatuloy ay magkakokonekta sa username na ito sa iyong chat key.", + "ens-username-registration-confirmation": "Magaling! Pag-aari mo ang{{username}}sa sandaling kumpleto na ang transaksyon", + "ens-username-taken": "Nakuha na ang username :(", + "ens-username-you-can-follow-progress": "Maaari mong sundin ang pag-unlad sa seksyon ng Kasaysayan ng Transaksyon ng iyong wallet.", + "ens-usernames": "Mga pangalan ng ENS", + "ens-usernames-details": "Magrehistro ng isang unibersal na username upang madaling makilala ng ibang mga gumagamit", + "ens-want-custom-domain": "Nagmamay-ari ako ng isang pangalan sa isa pang domain", + "ens-want-domain": "Gusto ko ng isang stateofus.eth domain", + "ens-welcome-hints": "Binago ni ENS ang mga pangalan na sobrang habang address sa mga natatanging pangalan.", + "ens-welcome-point-customize": "Ang pangalan ng ENS ay maaaring palitan ang iyong 3 random word na pangalan sa chat. Maging @iyongpangalan sa halip na {{name}}.", + "ens-welcome-point-customize-title": "I-customize ang iyong pangalan ng chat", + "ens-welcome-point-receive": "Ang iba ay maaaring magpadala sa iyo ng mga pondo sa pamamagitan ng chat sa isang simpleng hakbang.", + "ens-welcome-point-receive-title": "Tumanggap ng mga transaksyon sa chat", + "ens-welcome-point-register": "Magrehistro ng isang beses upang mapanatili ang pangalan magpakailanman. Matapos ang 1 taon maaari mong pakawalan ang pangalan at maibalik ang iyong SNT.", + "ens-welcome-point-register-title": "10 SNT upang magparehistro", + "ens-welcome-point-simplify": "Maaari kang makatanggap ng mga pondo sa iyong easy-to-share ENS name kaysa sa iyong hexadecimal hash (0x...).", + "ens-welcome-point-simplify-title": "Pasimplehin ang iyong ETH address", + "ens-welcome-point-verify": "Maaari mong i-verify at magdagdag ng anumang mga username na pagmamay-ari mo sa susunod na mga hakbang.", + "ens-welcome-point-verify-title": "Mayroon ka bang isang username?", + "ens-your-username": "Ang iyong username", + "ens-your-usernames": "Ang iyong mga username", + "ens-your-your-name": "Ang iyong pangalan ng ENS", + "enter-12-words": "Ilagay ang 12 words ng iyong seed phrase, pinaghiwalay ng mga solong puwang", + "enter-a-private-key": "Ilagay ang pribadong susi", + "enter-a-seed-phrase": "Ilagay ang seed phrase", + "enter-address": "Ilagay ang address", + "enter-contact-code": "ilagay ang ENS username o chat key", + "enter-pair-code": "ilagay ang iyong pares na code", + "enter-pair-code-description": "Ang ipinares na code ay ipinakita sa iyo sa pag-setup ng Keycard", + "enter-password": "Ilagay ang password", + "enter-pin": "Ilagay ang iyong 6-digit na passcode", + "enter-puk-code": "Ilagay ang PUK code", + "enter-puk-code-description": "Na-block ang 6-digit na passcode.\nMangyaring ilagay ang PUK code upang i-unblock ang passcode.", + "enter-recipient-address-or-username": "Ilagay ang address o username ng tatanggap", + "enter-seed-phrase": "Ilagay ang seed phrase", + "enter-url": "Ilagay ang URL", + "enter-user-pk": "Ilagay ang user public key", + "enter-watch-account-address": "Scan ang QR code o i-enter ang address para makita", + "enter-word": "ilagay ang word", + "enter-your-code": "Ilagay ang iyong 6-digit na passcode", + "enter-your-password": "Ilagay ang iyong password", + "error": "Error", + "error-unable-to-get-balance": "Hindi makakakuha ng balanse", + "error-unable-to-get-prices": "Error sa conversion ng Pera. I-refresh ang iyong screen upang subukang muli.", + "error-unable-to-get-token-balance": "hindi makukuha ang balance ng token", + "errors": "Mga Pagkakamali", + "eth": "ETH", + "ethereum-account": "Ethereum account", + "ethereum-address": "Address ng Ethereum", + "ethereum-node-started-incorrectly-description": "Ang Ethereum node ay sinimulan ng maling pagsasaayos, titigil ang aplikasyon upang mabawi mula sa kondisyong iyon. Na-configure ang network id ={{network-id}}, aktwal ={{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ang Ethereum node ay nagsimula nang hindi wasto", + "etherscan-lookup": "Tumingin sa Etherscan", + "everyone": "Lahat", + "export-account": "I-export ang account", + "export-key": "I-export ang pribadong key", + "external-storage-denied": "Tinanggihan ang pag-access sa external storage", + "failed": "Nabigo", + "faq": "Mga madalas na tinatanong", + "favourite": "Mga Paborito", + "favourite-description": "Lahat ng paboritong website ay lalabas dito", + "favourites": "Mga paborito", + "favourites-empty": "Lilitaw dito ang mga address na idinagdag sa mga paborito", + "fetch-messages": "↓ Kumuha ng mga mensahe", + "fetch-timeline": "↓ Fetch", + "find": "Maghanap", + "finish": "Tapos na", + "finishing-card-setup": "Pag-setup ng card", + "fleet": "Fleet", + "fleet-settings": "Fleet settings", + "follow": "Sundan", + "follow-your-interests": "Sumali sa isang pampublikong chat at makilala ang mga bagong tao", + "free": "↓ Libre", + "from": "Mula sa", + "gas-limit": "Gas limit", + "gas-price": "Presyo ng Gas", + "gas-used": "Ginamit na gas", + "generate-a-key": "Bumuo ng mga keys", + "generate-a-new-account": "Lumikha ng account", + "generate-a-new-key": "Lumikha ng isang bagong key", + "generate-account": "Bumuo ng mga keys", + "generate-an-account": "lumikha ng account", + "generate-new-key": "Lumikha ng bagong keys", + "generating-codes-for-pairing": "> Pag-download ng software ng produkto sa card\n> Bumubuo ng pag-unlock at mga pagpapares code", + "generating-keys": "Lumilikha ng keys", + "generating-mnemonic": "Bumubuo ng seed phrase", + "get-a-keycard": "Kumuha ng isang Keycard", + "get-started": "Magsimula", + "get-status-at": "Kumuha ng Status sa http:\/\/status.im", + "get-stickers": "Kumuha ng Sticker", + "give-a-short-description": "Magbigay ng maikling deskripsyon", + "give-a-short-description-community": "Bigyan ito ng isang maikling paglalarawan", + "give-permissions-camera": "Magbigay ng pahintulot\nupang ma-access ang camera", + "glossary": "Glossary", + "go-to-settings": "Pumunta sa Mga Setting ...", + "got-it": "Nakuha ko", + "grant-face-id-permissions": "Upang mabigyan ang kinakailangang pahintulot ng ID gamit ng iyong mukha, mangyaring pumunta sa iyong mga setting ng system at tiyaking napili ang Status > Face ID", + "group-chat": "Group chat", + "group-chat-admin": "Admin", + "group-chat-admin-added": "**{{member}}** ay ginawang admin", + "group-chat-all-contacts-invited": "Ang lahat ng iyong mga contact ay nasa grupo na", + "group-chat-created": "**{{member}}**nilikha ang pangkat**{{name}}**", + "group-chat-decline-invitation": "Tanggihan ang paanyaya", + "group-chat-member-added": "**{{member}}** ay inimbitahan", + "group-chat-member-joined": "**{{member}}** ay sumali sa group", + "group-chat-member-removed": "**{{member}}** umalis sa group", + "group-chat-members-count": "{{selected}}\/{{max}}miyembro", + "group-chat-name-changed": "**{{member}}** Palitan ang pangalan ng group sa **{{name}}**", + "group-chat-no-contacts": "Wala ka pang mga contact.\nAnyayahan ang iyong mga kaibigan na simulan ang pakikipag-chat", + "group-info": "Impormasyon sa grupo", + "group-invite": "Paanyaya sa pangkat", + "group-invite-link": "Link ng pangkat na anyayahan", + "group-membership-request": "Kahilingan sa pagiging kasapi ng pangkat", + "gwei": "Gwei", + "has-permissions": "ay may pahintulot sa pag access", + "hash": "Hash", + "help": "tumulong", + "help-capitalized": "Tulong", + "help-center": "Sentro ng tulong", + "hide-content-when-switching-apps": "Block screenshots", + "hide-content-when-switching-apps-ios": "Itago ang preview", + "history": "Kasaysayan", + "history-nodes": "Status nodes", + "hold-card": "Hold card sa likod\nng iyong telepono", + "home": "Home", + "hooks": "Hooks", + "http-gateway-error": "Oops, nabigo ang kahilingan!", + "identifier": "Identifier", + "image": "Imahe", + "image-remove-current": "Alisin ang kasalukuyang larawan", + "image-source-gallery": "Pumili mula sa gallery", + "image-source-make-photo": "Kumuha", + "image-source-title": "I-edit ang larawan", + "import": "angkat", + "import-community": "Mag-import ng isang pamayanan", + "import-community-title": "Mag-import ng isang pamayanan", + "in-contacts": "Sa mga contact", + "incoming": "Paparating", + "incoming-transaction": "Papasok na transaksyon", + "incorrect-code": [ + "str", + "Paumanhin hindi tama ang code, mangyaring ilagay muli" + ], + "increase-gas": "Taasan ang Gas", + "initialization": "Pagsisimula", + "install": "↓ Install", + "intro-message1": "Maligayang pagdating sa Status!\nTapikin ang mensaheng ito upang itakda ang iyong password at magsimula.", + "intro-privacy-policy-note1": "Ang Status ay hindi kinukolekta o kumikita sa iyong personal na data. Sa pamamagitan ng pagpapatuloy, sumasang-ayon ka sa", + "intro-privacy-policy-note2": "patakaran sa privacy", + "intro-text": "Status ay ang iyong gateway sa desentralisadong web", + "intro-text1": "Makipag-chat sa isang peer-to-peer, naka-encrypt na network kung saan ang mga mensahe ay hindi mai-censor o mai-hack", + "intro-text2": "Magpadala at tumanggap ng mga digital na assets sa kahit saan sa mundo — walang kinakailangang bank account", + "intro-text3": "Galugarin ang mga laro, palitan at mga social network kung saan nag-iisa kang nagmamay-ari ng iyong data", + "intro-title1": "Tunay na pribadong komunikasyon", + "intro-title2": "Secure ang crypto wallet", + "intro-title3": "Desentralisadong apps", + "intro-wizard-text1": "Kinokontrol ng isang hanay ng mga keys ang iyong account. Nakatira ang iyong mga keys sa iyong telepono, kaya maaari mo lamang itong magamit", + "intro-wizard-text2": "Ang isang key ay para sa chat. Ito ay may nabasang pangalan na hindi mababago.", + "intro-wizard-text3": "Kung nagmamay-ari ka ng isang Keycard, itago ang iyong mga keys doon para sa pinahusay na seguridad.", + "intro-wizard-text4": "I-secure at i-encrypt ang iyong mga keys", + "intro-wizard-text6": "Ang Status ay magbabatid sa iyo tungkol sa mga bagong mensahe. Maaari mong mai-edit ang iyong mga kagustuhan sa abiso mamaya sa mga setting", + "intro-wizard-title-alt4": "Gumawa ng password", + "intro-wizard-title-alt5": "Kumpirmahin ang iyong password", + "intro-wizard-title1": "Kunin ang iyong mga keys", + "intro-wizard-title2": "Pumili ng isang pangalan ng chat", + "intro-wizard-title3": "Piliin ang key storage", + "intro-wizard-title4": "Gumawa ng 6-digit passcode", + "intro-wizard-title5": "Kumpirmahin ang passcode", + "intro-wizard-title6": "Paganahin ang mga notification", + "introduce-yourself": "Ipakilala ang iyong sarili sa isang maikling mensahe", + "invalid-address-qr-code": "Ang naka-scan na QR code ay hindi naglalaman ng isang wastong address", + "invalid-format": "Hindi wastong format\nDapat{{format}}", + "invalid-key-confirm": "Apply", + "invalid-key-content": "Ang Database ay hindi mai-encrypt dahil ang file ay corrupt. Ang iyong funds at chat key ay ligtas. Ang iba pang data, katulad ng iyong chats at contacts, hindi na maibabalik. \"{{erase-multiaccounts-data-button-text}}\" button, aalisin ang lahat ng iba pang data at magpapahintulot sa iyo na ma-access ang iyong mga pondo at magpadala ng mga mensahe.", + "invalid-number": "Di-wastong numero", + "invalid-pairing-password": "Di-wastong pagpapares ng password", + "invalid-public-chat-topic": "Hind wastong pampublikong paksa", + "invalid-range": "Hindi wastong format, dapat nasa pagitan{{min}}at{{max}}", + "invite": "Mag-anyaya", + "invite-button": "Mag-anyaya", + "invite-chat-accept": "Tanggapin", + "invite-chat-accept-join": "Tanggapin at Sumali", + "invite-chat-intro": "Ikaw ay ni-refer ng isang kaibigan na sumali sa Status. Narito ang ilang crypto upang makapagsimula ka! Gamitin ito sa pag reghistro ng pangalan ng ENS o bumili ng sticker pack", + "invite-chat-name": "Referral ng kaibigan", + "invite-chat-pending": "Naghihintay", + "invite-chat-rule": "Ang pagtanggap ay gagantimpalaan din ang iyong kaibigan ng isang crypto referral bonus", + "invite-chat-starter-pack": "Starter Pack", + "invite-friends": "Mag-imbita ng mga kaibigan", + "how-it-works": "Paano ito gumagana", + "invite-instruction-fifth": "Maaari kang pumili para i-redeem ang iyong referral bonus anumang oras.", + "invite-instruction-first": "Nagpadala ka ng isang natatanging link ng imbitasyon sa iyong kaibigan upang i-download at sumali sa Status", + "invite-instruction-fourth": "Ikaw ay makakatanggap ng referral bonus at ang iyong kaibigan ng Starter Pack", + "invite-instruction-second": "Ang iyong kaibigan ay nag download ng Status at gumawa ng account (sa Android)", + "invite-instruction-third": "Sinimulan ang isang chat sa iyong kaibigan, kung saan kumpirmahin ang iyong referral", + "invite-people": "Mag-imbita ng mga tao", + "invite-privacy-policy-public": "Nag-install ka ng Status sa pamamagitan ng isang referral na link. Sa pamamagitan ng pagsali sa chat na ito naiugnay mo ang iyong referrer at sumasang-ayon sa", + "invite-privacy-policy1": "Sa pamamagitan ng pagtanggap sumasang-ayon ka sa programa ng referral", + "invite-privacy-policy2": "Mga Tuntunin at Kondisyon.", + "invite-public-chat-home": "Imbitasyon ng referral", + "invite-public-chat-intro": "Narito ang ilang crypto upang makapagsimula ka! Gamitin ito upang magparehistro ng isang pangalan ng ENS o bumili ng isang sticker pack", + "invite-receive-account": "Account upang matanggap ang iyong referral bonus", + "invite-reward": "Kumita ng crypto sa bawat kaibigan na inaanyayahan mo!", + "invite-reward-friend": "Kaibigan: ", + "invite-reward-friend-description": "Ang iyong kaibigan ay makakatanggap ng Starter Pack na binubuo ng ilang {{reward}} upang makapagsimula", + "invite-reward-friend-name": "Starter Pack", + "invite-reward-you": "Ikaw:", + "invite-reward-you-description": "Mag-imbita ng mga kaibigan at tanggapin ang {{reward}} bilang isang referral bonus. Gamitin ito para sa stickers, pangalan ng ENS at subukan ang iba pang dapps", + "invite-reward-you-name": "Referral bonus", + "invite-select-account": "Pumili ng isang account para matanggap ang iyong referral bonus", + "invite-warning": "Ang promosyon na ito ay may bisa lamang para sa mga gumagamit ng Android device, na hindi residente ng US. Kailangang kumpirmahin ng kaibigan ang referral sa loob ng 7 araw", + "invited": "inimbitahan", + "join": "Sumali", + "join-a-community": "o sumali sa isang pamayanan", + "join-group-chat": "Sumali sa group", + "join-group-chat-description": "{{username}}inanyayahan kang sumali sa grupo{{group-name}}", + "join-me": "Hali ka, samahan mo ako sa Status: {{url}}", + "join-new-private-chat": "Magsimula ng bagong pribadong chat", + "join-new-public-chat": "Sumali sa pampublikong chat", + "joined": "Sumali", + "joined-group-chat-description": "Sumali ka sa{{group-name}}mula sa paanyaya ni{{username}}", + "key": "Key", + "key-managment": "pangunahing pamamahala", + "key-on-device": "Ang pribadong key ay nai-save sa device na ito", + "keycard": "Keycard", + "keycard-access-reset": "Ang pag-access sa Keycard ay naka-reset", + "keycard-applet-install-instructions": "Para mai-install ang applet mangyaring sundin ang mga tagubilin sa https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "subukang galawin ang card paikot para makita ng NFC at mabasa sa iyong aparato.", + "keycard-awaiting-title": "Naghahanap pa rin...", + "keycard-blocked": "Na-block ang Keycard.\nKailangan mong i-reset ang card upang magpatuloy sa paggamit nito.", + "keycard-can-use-with-new-passcode": "Maaari mong gamitin ang card na ito sa iyong bagong passcode", + "keycard-cancel-setup-text": "Kanselahin nito ang pag-setup ng keycard. Ito'y lubos na inirerekumenda na tapusin ang pag-setup upang magamit ang keycard. Nais mo bang kanselahin?", + "keycard-cancel-setup-title": "Mapanganib na operasyon", + "keycard-connected-description": "Subukang panatilihin pa rin ang card", + "keycard-connected-title": "Nakakonekta", + "keycard-desc": "May-ari ng isang Keycard? Itago ang iyong mga keys dito; kakailanganin mo ito para sa mga transaksyon", + "keycard-dont-ask-card": "Huwag humingi ng card upang mag-sign in", + "keycard-enter-new-passcode": "Ilagay ang bagong passcode {{step}}\/2", + "keycard-error-description": "i-konek ang card para makapag simula ulit", + "keycard-error-title": "Nawala ang koneksyon", + "keycard-free-pairing-slots": "Ang Keycard ay mayroong {{n}} libreng pagpapares ng mga puwang", + "keycard-has-multiaccount-on-it": "Ang card na ito ay puno na. Ang bawat card ay maaaring humawak ng isang pangunahing keypair", + "keycard-init-description": "Ilagay ang card sa likod ng iyong telepono upang magpatuloy", + "keycard-init-title": "Naghahanap ng mga kards", + "keycard-is-blocked-details": "Hindi mo na magagamit ang card na ito upang ma-access o mag-sign para sa account na ito. Napakaraming nabigo na passcode at mga pagtatangka ng PUK.", + "keycard-is-blocked-instructions": "Upang ma-access ang iyong account maaring i-reinstall ang Status at gumamit ng bagong Keycard, gumamit ng ibang wallet o i-reset ang keycard ng manu-mano.", + "keycard-is-blocked-title": "Na-block ang Keycard", + "keycard-is-frozen-details": "Upang maprotektahan ang iyong mga assets, ang iyong card ay frozen. I-reset ang access sa card upang i-unlock ang mga key at magpadala ng mga transaksyon. Lumikha ng isang bagong passcode at ipasok ang iyong PUK upang ma-access ang iyong (mga) account sa card na ito.", + "keycard-is-frozen-reset": "I-reset ang pag-access sa card", + "keycard-is-frozen-title": "Ang Keycard ay frozen", + "keycard-onboarding-finishing-header": "Tinatapos na", + "keycard-onboarding-intro-header": "Itago ang iyong mga keys sa Keycard", + "keycard-onboarding-intro-text": "Maghanda, maaaring tumagal ito ng ilang minuto, ngunit mahalaga na ma-secure ang iyong account", + "keycard-onboarding-pairing-header": "Pagpapares ng card ...", + "keycard-onboarding-preparing-header": "Paghahanda ng card....", + "keycard-onboarding-puk-code-header": "Isulat ang mga code\n at itago ang mga ito nang ligtas", + "keycard-onboarding-recovery-phrase-description": "Kailangan mo ang seed phrase para mabalik ang iyong key. Isulat mo. Panatilihing ligtas, offline, at paghiwalayin sa aparatong ito.", + "keycard-onboarding-recovery-phrase-header": "Back up seed phrase", + "keycard-onboarding-recovery-phrase-text": "Para sa iyong mga mata lamang. Ito ang magical seed na ginamit upang makabuo ng iyong key.", + "keycard-onboarding-start-header": "I-hold ang card sa likod\n ng iyong telepono upang magsimula", + "keycard-onboarding-start-step1": "Gumawa ng passcode", + "keycard-onboarding-start-step1-text": "Halos 1 minuto. Lumikha ng isang 6-digit na passcode upang i-encrypt ang iyong mga key", + "keycard-onboarding-start-step2": "Isulat ang PUK at ang pairing code", + "keycard-onboarding-start-step2-text": "Halos 1 minuto. Kakailanganin mo ang isang piraso ng papel at isang lapis para doon", + "keycard-onboarding-start-step3": "I-back up ang seed phrase", + "keycard-onboarding-start-step3-text": "Halos 1 minuto. Gayundin ang isang piraso ng papel at isang lapis ay kinakailangan", + "keycard-onboarding-start-text": "At panatilihin ang card sa contact sa telepono\n sa pag-setup. Ang pag-setup ay aabutin ng halos 4 na minuto", + "keycard-processing-description": "Subukang panatilihin pa rin ang card", + "keycard-processing-title": "Nagproproseso", + "keycard-recovery-intro-button-text": "Simulan ang pagbawi", + "keycard-recovery-intro-header": "Ibalik ang mga key na naka-imbak sa keycard", + "keycard-recovery-intro-text": "Kung ikaw ay bumuo ng mga keys gamit ang keycard nuon at ngayon gusto mo gamitin ang mga keys sa mga aparato.", + "keycard-recovery-no-key-header": "Wala naman\nma recover dito", + "keycard-recovery-no-key-text": "Ang iyong Keycard ay walang nakaimbak na key dito. Upang magamit ito, bumuo ng isang bagong key at piliin ang iyong Keycard upang maiimbak ang key", + "keycard-recovery-phrase-confirm-header": "Kumpirmahin ang seed phrase", + "keycard-recovery-phrase-confirmation-text": "Hindi ka magkakaroon ng pangalawang pagkakataon! Kung nawalan ka ng access, halimbawa sa pagkawala ng iyong keycard, maaari mo lamang ma access ang iyong keys kasama ang iyong seed phrase. Walang sinuman, kundi ikaw ay mayroon ng iyong seed phrase. Isulat mo ito at panatilihing ligtas.", + "keycard-recovery-phrase-confirmation-title": "Isinulat ang seed phrase?", + "keycard-recovery-success-header": "Ang iyong mga keys ay\nmatagumpay na nabawi", + "keycard-redeem-title": "I-Redeem sa", + "keycard-redeem-tx": "Mag Redeem ng Assets", + "keycard-redeem-tx-desc": "Tapikin ang card upang mag-sign at makatanggap ng mga assets", + "keycard-reset-passcode": "Reset passcode", + "keycard-success-description": "maari mo ng alisin ang card ngayon", + "keycard-success-title": "Tagumpay", + "keycard-unauthorized-operation": "Hindi ka awtorisado upang maisagawa ang operasyong ito.\nMangyaring i-tap ang wastong card at subukang muli.", + "keycard-upsell-subtitle": "Ang iyong portable, madaling gamitin na hardware wallet", + "language": "Lengwahe", + "learn-more": "Dagdagan ang nalalaman", + "learn-more-about-keycard": "Matuto nang higit pa tungkol sa Keycard", + "leave": "Umalis", + "leave-chat": "Umalis sa chat", + "leave-chat-confirmation": "Sigurado ka bang nais mong iwanan ang chat?", + "leave-community": "Umalis sa pamayanan", + "leave-confirmation": "aalis sa chat", + "leave-group": "Umalis sa grupo", + "left": "Umalis", + "les-ulc": "LES\/ULC", + "lets-go": "Tara na", + "light": "Mailaw", + "linked-on": "Naka-link {{date}}", + "load-messages-before": "bago ang {{date}}", + "load-more-messages": "↓ Kumuha ng higit pang mga mensahe", + "load-more-timeline": "↓ Dagdagan pa", + "loading": "Loading...", + "local-notifications": "Mga lokal na abiso", + "lock-app-with": "I-lock ang app na may", + "log-level": "Log level", + "log-level-settings": "Mga setting ng antas ng log", + "logging": "Logging", + "logging-enabled": "Paganahin ang logging?", + "login-pin-description": "Ilagay ang 6-digit passcode para ma-unlock ang iyong keys", + "logout": "Log out", + "logout-app-content": "Ang account ay mai-log out. Kapag binuksan mo ulit ito, gagamitin ang napiling network", + "logout-are-you-sure": "Sigurado ka bang gusto mo\nmag-log out?", + "logout-title": "Log out?", + "looking-for-cards": "Naghahanap ng mga cards", + "lost-connection": "Nawala ang koneksyon", + "mail-should-be-configured": "Ang mail client ay dapat isaayos", + "mailserver-address": "Status node address", + "mailserver-automatic": "Awtomatikong pagpili", + "mailserver-automatic-switch-explanation": "Piliin ang pinakamabilis na available sa Status node", + "mailserver-connection-error": "Hindi makakonekta sa Status node", + "mailserver-content": "Ang isang node sa Status network na ruta at nag-iimbak ng mga mensahe, hanggang sa 30 araw.", + "mailserver-details": "Mga detalye ng Status node", + "mailserver-error-content": "Ang pinili mong Status node ay hindi maabot", + "mailserver-error-title": "Error sa pagkonekta sa Status node", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "Pumili ng iba pang Status node", + "mailserver-reconnect": "Hindi makakonekta sa Status node. I-tap upang muling kumonekta", + "mailserver-request-error-content": "Ang sumusunod na error ay naibalik ng Status node: {{error}}", + "mailserver-request-error-status": "Isang error na naganap habang kumukuha ng kasaysayan, suriin ang mga tala para sa mga detalye", + "mailserver-request-error-title": "Ang paghiling ng Status node ay error", + "mailserver-request-retry": "Muling hilingin", + "mailserver-retry": "Ulitin", + "mailserver-title": "Status node", + "main-currency": "Pangunahing pera", + "main-networks": "pangunahing networks", + "main-wallet": "Pangunahing Wallet", + "mainnet-network": "Pangunahing network", + "make-admin": "Gumawa ng admin", + "manage-keys-and-storage": "Pamahalaan ang mga key at imbakan", + "mark-all-read": "Markahan ang lahat ng nabasa", + "master-account": "Master account", + "maybe-later": "Baka mamaya", + "member-kick": "Kick member", + "members": { + "zero": "wala", + "one": "isang", + "two": "dalawang", + "few": "kakaunti", + "many": "marami", + "other": "iba pa" + }, + "members-active": { + "zero": "sero", + "one": "isang", + "two": "dalawang", + "few": "kakaunting", + "many": "maraming", + "other": "iba pang" + }, + "members-active-none": "walang mga miyembro", + "members-count": "{{count}} miyembro", + "members-label": "Mga kasapi", + "members-limit-reached": "Naabot na ang limitasyon ng mga miyembro", + "members-title": "Mga kasapi", + "membership-approval": "Mangangailangan ng pag-apruba", + "membership-approval-description": "Ang iyong komunidad ay malayang sumali, ngunit ang mga bagong kasapi ay kinakailangang maaprubahan muna ng lumikha ng komunidad", + "membership-button": "Kahilingan sa pagiging kasapi ng pangkat", + "membership-declined": "Tinanggihan ang kahilingan sa pagiging miyembro", + "membership-description": "Ang pagiging kasapi ng pangkat ay kinakailangan kang tanggapin ng admin", + "membership-ens": "Kailangan ng ENS username", + "membership-ens-description": "Ang iyong komunidad ay nangangailangan ng isang ENS username upang makasali", + "membership-free": "Walang kinakailangan", + "membership-free-description": "Bukas ang iyong pamayanan para sumali ang sinuman", + "membership-invite": "Humiling ng paanyaya mula sa ibang miyembro", + "membership-invite-description": "Ang iyong komunidad ay maaari lamang sumali sa pamamagitan ng isang paanyaya mula sa existing na miyembro ng komunidad", + "membership-none": "Wala", + "membership-none-placeholder": "Maaari kang mangailangan ng mga bagong kasapi upang matugunan ang ilang mga pamantayan bago sila sumali. Maaari itong mabago anumang oras", + "membership-request-pending": "Nakabinbin ang kahilingan sa pagiging miyembro", + "membership-requests": "Mga kahilingan sa pagiging miyembro", + "membership-title": "Kahilingan sa pagiging kasapi ng pangkat", + "message": "Mensahe", + "message-not-sent": "Hindi ipinadala ang mensahe", + "message-options-cancel": "Pagkansela", + "message-reply": "Sagot", + "messages": "mensahe", + "might-break": "Maaaring masira ang ilang ÐApps", + "migrations-failed-content": "{{message}}\nschema version: paunang{{initial-version}},kasalukuyang{{current-version}},huli{{last-version}}\n\nNagkaroon ng isang error sa database. Ang iyong funds at chat key ay ligtas. Ang iba pang data, kagaya ng iyong chats at mga contacts, ay hindi maibabalik. \"{{erase-multiaccounts-data-button-text}}\" button, aalisin ang lahat ng iba pang data at magpapahintulot sa iyo na ma-access ang iyong mga pondo at magpadala ng mga mensahe.", + "mobile-network-ask-me": "Tanungin mo ako sa mobile network", + "mobile-network-continue-syncing": "Magpatuloy sa pag-sync", + "mobile-network-continue-syncing-details": "Maaari mong baguhin ito sa ibang pagkakataon sa mga setting", + "mobile-network-go-to-settings": "Pumunta sa mga setting", + "mobile-network-settings": "Mobile data", + "mobile-network-sheet-configure": "Maaari mong i-configure ang pag-sync sa higit pang\ndetalye sa", + "mobile-network-sheet-offline": "Walang Wi-fi, hindi pinagana ang pag-sync ng mensahe.", + "mobile-network-sheet-offline-details": "Ang pag-sync gamit ang mobile network ay naka-off", + "mobile-network-sheet-remember-choice": "Tandaan ang aking pinili", + "mobile-network-sheet-settings": "settings", + "mobile-network-start-syncing": "Simulan ang pag-sync", + "mobile-network-stop-syncing": "Itigil ang pag-sync", + "mobile-network-stop-syncing-details": "Hanggang sa konektado sa Wi-Fi?", + "mobile-network-use-mobile": "Gumamit ng mobile data", + "mobile-network-use-mobile-data": "Ang Status ay gumagamit ng maraming data kapag nag-sync sa mga chats at wallet.", + "mobile-network-use-wifi": "Wi-Fi lang", + "mobile-syncing-sheet-details": "Ang Status ay gumagamit ng maraming data kapag nag-syng sa chats at wallet.", + "mobile-syncing-sheet-title": "Pag-sync gamit ang mobile data?", + "more": "higit pa", + "move-and-reset": "Ilipat at I-reset", + "move-keystore-file": "Ilipat ang keystore file", + "move-keystore-file-to-keycard": "Ilipat ang keystore file sa keycard?", + "multiaccount-exists-content": "Ang Keys sa account na ito ay mayroon na at hindi maaaring idagdag muli. Kung nawala ang iyong password, passcode o Keycard, i-uninstall ang app, reinstall at i-access ang iyong key sa pamamagitan ng iyong seed phrase", + "multiaccount-exists-title": "Ang Keys sa account na ito ay mayroon na", + "multiaccounts-recover-enter-phrase-text": "Ilagay ang 12, 15, 18, 21 o 24 na mga salita.\nPaghiwalayin ang mga salita sa pamamagitan ng isang puwang.", + "multiaccounts-recover-enter-phrase-title": "Ilagay ang seed phrase", + "mute": "Mute", + "my-accounts": "Ang aking accounts", + "my-accounts-empty": "Lilitaw dito ang iyong mga magagamit na account", + "my-status": "Ang status ko", + "name": "Pangalan", + "name-of-token": "Ang pangalan ng iyong token", + "name-optional": "Pangalan (opsyonal)", + "name-your-channel": "Pangalanan ang iyong channel", + "name-your-channel-placeholder": "Pangalan ng channel", + "name-your-community": "Pangalanan ang iyong pamayanan", + "name-your-community-placeholder": "Isang kapansin pansin na pangalan", + "need-help": "Kailangan ng tulong?", + "network": "Network", + "network-chain": "Network chain", + "network-details": "Mga detalye ng network", + "network-fee": "Bayad sa network", + "network-id": "Network ID", + "network-info": "Impormasyon sa network", + "network-invalid-network-id": "Ang tinukoy na id ng network ay hindi tumutugma sa id ng network ng RPC url", + "network-invalid-status-code": "Hindi wastong katayuan ng status:{{code}}", + "network-invalid-url": "Hindi wasto ang URL ng Network", + "network-settings": "Mga setting ng network", + "new": "bago", + "new-chat": "Bagong chat", + "new-community-title": "Bagong komunidad", + "new-contact": "Bagong kontak", + "new-contract": "Bagong Kontrata", + "new-favourite": "Bagong paborito", + "new-group": "Bagong grupo", + "new-group-chat": "Panibagong group chat", + "new-network": "Bagong network", + "new-pin-description": "Ilagay ang baong 6-digit na passcode", + "new-public-group-chat": "Sumali sa pampublikong Chat", + "new-status": "Bagong Status", + "new-tab": "Bagong tab", + "next": "Sunod", + "nickname": "Palayaw", + "nickname-description": "Ang mga palayaw ay tinutulungan kang makilala ang iba sa Status. \n Ikaw lang ang makakakita ng mga palayaw na idinagdag mo", + "no": "Hindi", + "no-collectibles": "Walang magagamit na mga koleksyon", + "no-contacts": "Wala pang contact", + "no-keycard-applet-on-card": "Walang applet Keycard sa card", + "no-messages": "Walang mensahe", + "no-pairing-slots-available": "Ang kard na ito ay nakapares na sa 5 na aparato at hindi maaaring ipares sa isang ito. Mangyaring gumamit ng isa sa mga ipinares na aparato, mag-log in gamit ang card na ito at libre ang pagpapares ng mga puwang sa card", + "no-result": "walang resulta", + "no-tokens-found": "Walang nahanap na mga token", + "node-info": "Node info", + "node-version": "Bersyon ng nod", + "nodes-disabled": "Hindi pinapagana ang Status nodes", + "non-archival-node": "Ang RPC endpoint ay hindi suportado ng archival request. Ang iyong lokal na kasaysayan ng paglilipat ay maaring hindi makumpleto.", + "nonce": "Nonce", + "none": "Wala", + "not-applicable": "Hindi naaangkop para sa mga hindi naka -ignign na transaksyon", + "not-connected-nodes": "Hindi nakakonekta sa isang status node", + "not-connected-to-peers": "Hindi konektado sa anumang mga kapantay", + "not-enough-snt": "Hindi sapat ang iyong SNT", + "not-keycard-text": "Ang card na iyong ginamit ay hindi isang Keycard. Kailangan mong bumili ng isang Keycard upang magamit ito.", + "not-keycard-title": "Hindi isang Keycard", + "not-registered": "hindi rehistrado", + "notification-settings": "Mga Abiso", + "notifications": "Mga notification", + "notifications-non-contacts": "Mga notification mula sa mga hindi contact", + "notifications-preferences": "Mga kagustuhan sa abiso", + "notifications-servers": "Notification servers", + "notifications-switch": "Ipakita ang mga notification", + "notifications-transactions": "Mga transaksyon sa wallet", + "notify": "Ipaalam", + "now": "Ngayon", + "off": "Off", + "off-status-tree": "Off Status tree", + "offline": "Offline", + "offline-messaging-use-history-explanation": "Paganahin ang Status node upang kumuha ng mga mensahe na ipinadala habang ang app ay sarado. Kapag pinagana, ang status node ay kukunin ang iyong IP address. Kapag hindi pinagana hindi ka makakatanggap ng mga mensahe kapag ang app ay sarado at hindi makikita ang mga ito kapag binuksan mo ang app sa paglaon.", + "offline-messaging-use-history-nodes": "Gumamit ng Status nodes", + "ok": "OK", + "ok-continue": "Okay, magpatuloy", + "ok-got-it": "Okay, nakuha ko", + "ok-save-pass": "OK, i-save ang password", + "okay": "Okay", + "on": "On", + "on-status-tree": "Sa Puno ng Status", + "once-enabled-share-metadata": "Kapag pinagana, ang mga link na nai-post sa chat ay maaaring ibahagi ang iyong metadata sa site", + "open": "bukas", + "open-chat": "Buksan ang chat", + "open-dapp": "Buksan ang ÐApp", + "open-dapp-store": "Tuklasin ang ÐApps", + "open-home": "Buksan ...", + "open-in-new-tab": "Magbukas ng bagong tab", + "open-membership": "Bukas na miyembro", + "open-nfc-settings": "Buksan ang settings ng NFC", + "open-on-etherscan": "bukas ang Etherscan.io", + "opening-buy-crypto": "Pagbubukas{{site}}", + "optional": "opsyonal", + "or": "O", + "outgoing": "Papalabas", + "outgoing-transaction": "Papalabas na transaksyon", + "page-camera-request-blocked": "hinarangan ang mga kahilingan sa camera. Upang paganahin ang mga kahilingan sa camera pumunta sa Mga Setting", + "page-would-like-to-use-camera": "nais mo bang gamitin ang iyong camera", + "pair": "I-Pares ang aparato", + "pair-card": "Ipares sa aparatong ito", + "pair-code": "Pair codePares ng code", + "pair-code-explanation": "Pagpapares card sa ibang aparato (hanggang sa 5) upang i-unlock ang mga key at mag-sign ng mga transaksyon sa parehong Keycard", + "pair-code-placeholder": "pares ng code", + "pair-this-card": "Ipares ang card na ito", + "pair-this-device": "Mag-advertise ng aparato", + "pair-this-device-description": "Ipares ang iyong mga aparato upang i-sync ang mga contact at chat sa pagitan nila", + "paired-devices": "Mga aparato na ipinares", + "pairing": "Pagpapares", + "pairing-card": "Pagpapares card", + "pairing-go-to-installation": "Pumunta sa mga setting ng pagpapares", + "pairing-maximum-number-reached-content": "Mangyaring huwag paganahin ang isa sa iyong mga aparato bago paganahin ang bago.", + "pairing-maximum-number-reached-title": "Naabot ang maximum na bilang ng mga aparato", + "pairing-new-installation-detected-content": "Ang isang bagong aparato ay napansin.\nUpang magamit nang tama ang iyong mga aparato, mahalaga na ipares at paganahin ang mga ito bago gamitin.\nMangyaring pumunta sa seksyon ng aparato sa ilalim ng mga setting upang ipares ang iyong mga aparato.", + "pairing-new-installation-detected-title": "May nakitang bagong device\/aparato", + "pairing-no-info": "Walang impormasyon", + "pairing-please-set-a-name": "Mangyaring magtakda ng isang pangalan para sa iyong aparato.", + "passphrase": "Passphrase", + "password": "Password", + "password_error1": "Hindi tumutugma ang mga password.", + "password-description": "Ng hindi bababa sa 6 na mga character. Pinoprotektahan ng iyong password ang iyong mga susi. Kailangan mo ito upang i-unlock ang Status at lumipat.", + "password-placeholder": "Password...", + "password-placeholder2": "Kumpirmahin ang iyong password", + "paste": "Paste", + "paste-json": "Idikit JSON", + "pay-to-chat": "Magbayad sa chat", + "peer-content": "Ang isang aparato na konektado sa Status chat network. Ang bawat gumagamit ay maaaring kumatawan sa isa o higit pang mga kapantay depende sa kanilang bilang ng mga aparato.", + "peer-title": "Peer", + "peer-to-peer": "Peer to peer", + "peers": "Peers", + "pending": "Naghihintay", + "pending-confirmation": "Pending na kumpirmasyon ...", + "pending-invitations": "Nakabinbin ang mga kahilingan sa pagiging miyembro", + "permissions": "Pahintulot", + "phone-e164": "International 1", + "photos": "Litrato", + "photos-access-error": "Upang bigyan ang kinakailangang pahintulot ng mga larawan, mangyaring pumunta sa mga setting ng iyong system at tiyakin na ang Status >Napiling mga larawan.", + "pin-changed": "Binago ang 6-digit na passcode", + "pin-code": "6-digit passcode", + "pin-mismatch": "Maling passcode", + "pin-one-attempt": "isang pagtatangka", + "pin-one-attempt-blocked-after": "bago maharang ang iyong Keycard", + "pin-one-attempt-blocked-before": "Mag-ingat, mayroon ka lamang", + "pin-one-attempt-frozen-after": "bago mag-frozen ang iyong Keycard", + "pin-one-attempt-frozen-before": "Mag-ingat, mayroon ka lamang", + "pin-retries-left": "{{number}}para mag retry", + "preference": "Kagustuhan", + "preview-privacy": "I-preview ang mode ng privacy", + "previewing-may-share-metadata": "Ang pag-preview ng mga link mula sa mga website na ito ay maaaring ibahagi ang iyong metadata sa kanilang mga may-ari", + "privacy": "Pagkapribado", + "privacy-and-security": "Pagkapribado at seguridad", + "privacy-policy": "Patakaran sa pagkapribado", + "private-key": "Pribadong key", + "private-notifications": "Pribadong mga abiso", + "private-notifications-descr": "Aabisuhan ka ng Status tungkol sa mga bagong mensahe. Maaari mong mai-edit ang iyong mga kagustuhan sa notification mamaya sa mga setting.", + "processing": "Sandali lang", + "product-information": "Impormasyon sa Produkto", + "profile": "Profile", + "profile-deleted-content": "Matagumpay na tinanggal ang iyong profile", + "profile-deleted-title": "Natanggal ang Profile", + "profile-details": "Mga detalye ng profile", + "profile-pic-pick": "Pumili mula sa gallery", + "profile-pic-remove": "Alisin ang larawan", + "profile-pic-take": "Kunan ng litrato", + "public-chat": "Pampublikong chat", + "public-chat-description": "Sumali sa mga pampublikong chat para sa iyong mga interest! Kahit sino ay maaaring magsimula ng bago.", + "public-chats": "Mga pampublikong chat", + "public-group-status": "Pampubliko", + "public-group-topic": "Paksa", + "public-key": "Public key", + "puk-and-pairing-codes-displayed": "Ipinapakita ang mga PUK at pagpapares ng mga code", + "puk-code": "PUK code", + "puk-code-explanation": "Kung nakalimutan mo ang iyong 6-digit na passcode o hindi tama nang ipinasok nang 3 beses, kakailanganin mo ang code na ito upang i-unlock ang iyong card.", + "puk-mismatch": "Mali ang PUK code", + "push-failed-transaction": "Nabigo ang iyong transaksyon", + "push-failed-transaction-body": "{{value}} {{currency}} hanggang {{to}}", + "push-inbound-transaction": "Nakatanggap ka ng {{value}} {{currency}}", + "push-inbound-transaction-body": "Mula sa {{from}} hanggang sa {{to}}", + "push-notifications-server-enabled": "Pinagana ang server", + "push-notifications-servers": "Push notification servers", + "push-outbound-transaction": "Nagpadala ka ng {{value}} {{currency}}", + "push-outbound-transaction-body": "Mula sa {{from}} hanggang sa {{to}}", + "quiet-days": "{{quiet-days}}araw", + "quiet-hours": "{{quiet-hours}}oras", + "re-encrypt-key": "I-encrypt muli ang iyong mga keys", + "receive": "Tumanggap", + "receive-transaction": "Tumanggap ng transaksyon", + "recent": "Kamakailan", + "recent-empty": "Ang mga nagamit na addresses ay lalabas dito", + "recent-recipients": "Contacts", + "recently-used-stickers": "Ang mga kamakailang ginamit na sticker ay lilitaw dito", + "recipient": "Tagatanggap", + "recipient-code": "ilagay ang address ng tatanggap", + "recipient-code-placeholder": "0x.. o username.domain.eth", + "recover": "Bawiin", + "recover-key": "I-access ang umiiral na mga key", + "recover-keycard-multiaccount-not-supported": "Ang keys sa account na ito ay mayroon na at hindi na maaring idagdag muli. Kung nawala ang iyong password, passcode o Keycard, i-uninstall ang app, reinstall at i-access ang iyong key sa pamamagitan ng iyong seed phrase", + "recover-with-keycard": "I-recover gamit ang Keycard", + "recover-with-seed-phrase": "Bawiin gamit ang seed phrase", + "recovering-key": "Pag-access sa mga key ...", + "recovery-confirm-phrase": "kumpirmahin ang seed phrase", + "recovery-phrase": "Seed phrase", + "recovery-success-text": "Kailangan mong lumikha ng isang bagong code o password upang muling i-encrypt ang iyong mga key", + "recovery-typo-dialog-description": "Paalala, ang iyong seed phrase dapat eksaktong, parehong mga salita at pagkakasunud-sunod habang natanggap mo ito", + "recovery-typo-dialog-title": "ang seed phrase ay tama?", + "redeem-amount": "{{quantity}} makukuhang mga bonus", + "redeem-now": "Kunin ngayon", + "redeem-success": "Kunin ang tagumpay ng bonus!", + "refresh": "Refresh", + "registered": "rehistrado", + "remember-me": "Tandaan mo ako", + "remind-me-later": "Ipakita mo sa akin ito muli", + "remove": "Alisin", + "remove-favourite": "Mag-alis ng paborito", + "remove-from-chat": "Alisin sa chat", + "remove-from-contacts": "Tanggalin sa mga kontak", + "remove-from-contacts-text": "Sa pamamagitan ng pag-alis ng isang user sa iyong listahan ng kontak hindi mo ma itago ang iyong wallet address sa kanila.", + "remove-group": "Alisin ang pangkat", + "remove-network": "Alisin ang network", + "remove-token": "Alisin ang token", + "removed": "alisin", + "repeat-pin": "Ulitin ang bagong 6-digit na passcode", + "report-bug-email-template": "1. Paglalarawan ng Isyu\{{description}}\n\n\n2. Mga hakbang upang makalikha\n {{steps}}\n\n\n3. Ikabit ang mga screenshot na maaaring mag-demo sa problema, kung maaari sana", + "request-access": "Humiling ng pag-access", + "request-feature": "Humiling ng isang tampok", + "request-membership": "Humiling ng pagiging miyembro", + "request-pending": "Nakabinbin ang kahilingan…", + "request-transaction": "Humiling ng transaksyon", + "required-field": "Required field", + "resend-message": "I-resend", + "reset-card": "I-reset ang card", + "reset-card-description": "Ang operasyon na ito ay i-reset ang card sa paunang estado. Tatanggalin nito ang lahat ng data ng kard kasama ang mga pribadong key. Hindi maibabalik ang operasyon.", + "reset-database": "I-reset ang database", + "reset-database-warning": "Tanggalin ang mga chats, contacts at settings. Kinakailangan kapag nawala mo ang iyong password", + "restore-defaults": "Ibalik sa dating ayos", + "retry": "Ulitin", + "revoke-access": "Bawiin ang access", + "rpc-url": "RPC URL", + "save": "I-save", + "save-password": "I-save ang password", + "save-password-unavailable": "Itakda ang passcode ng aparato upang i-save ang password", + "save-password-unavailable-android": "Hindi magagamit ang pag-save ng password: ang iyong aparato ay maaaring ma-root o walang kinakailangang mga tampok ng seguridad.", + "scan-qr": "I-scan ang QR code", + "scan-qr-code": "I-scan ang isang QR code na may isang address ng pitaka", + "scan-tokens": "I-scan ang tokens", + "search": "Paghahanap", + "search-no-chat-found": "Walang resulta. Ang ibig mong sabihin ay", + "secret-keys-confirmation-text": "Kakailanganin mo ang mga ito upang magpatuloy na gamitin ang iyong Keycard kung sakaling mawala mo ang iyong telepono.", + "secret-keys-confirmation-title": "Nasulat mo na ang mga codes?", + "security": "Seguridad", + "see-details": "Tignan ang detalye", + "see-it-again": "Tingnan muli", + "seed-key-uid-mismatch": "Hindi tumutugma ang seed", + "seed-key-uid-mismatch-desc-1": "Ang seed phrase na ipinasok mo ay hindi tumutugma sa {{multiaccount-name}}", + "seed-key-uid-mismatch-desc-2": "Upang maisagawa ang mga keys para sa account na ito, i-verify ang iyong seed phrase at subukang muli.", + "seed-phrase-content": "Isang hanay ng mga friendly-to-read na salita, at sapalarang napili mula sa BIP39 ay karaniwang listahan at ginagamit para ma access ang iyong Ethereum account sa iba pang wallets at devices. Tinukoy din bilang a “mnemonic phrase,” “recovery phrase” o “wallet backup” sa buong crypto ecosystem. Karamihan sa crypto apps ginagamit ang parehong standard to generate accounts.", + "seed-phrase-placeholder": "Seed phrase...", + "seed-phrase-title": "Seed Phrase", + "select": "Piliin", + "select-account": "Piliin ang account", + "select-account-dapp": "Piliin ang account na nais mong gamitin sa mga Dapp", + "select-account-first": "Piliin muna ang isang account", + "select-chat": "Piliin ang chat upang simulan ang pagmemensahe", + "select-new-location-for-keys": "Pumili ng isang bagong lokasyon upang i-save ang iyong (mga) pribadong keys", + "selected": "Napili", + "send-logs": "I-report ang bug", + "send-logs-to": "Mag-ulat ng isang bug sa{{email}}", + "send-message": "Magpadala ng Mensahe", + "send-push-notifications-description": "Kapag naka disabled, ang taong tumatanggap ng iyong mga mensahe ay hindi aabisuhan tungkol sa pagdating nito.", + "send-request": "Magpadala ng kahilingan", + "send-request-amount": "Halaga", + "send-request-amount-max-decimals": "Ang Max Number ng desimal ay{{asset-decimals}}", + "send-request-unknown-token": "Hindi kilalang token -{{asset}}", + "send-sending-to": "para kay{{recipient-name}}", + "send-transaction": "Magpadala ng transaksyon", + "sending": "Nagpapadala", + "sent-at": "Ipinadala sa", + "server": "Server", + "set-a-topic": "gumawa ng topic", + "set-currency": "Itakda ang pera", + "set-custom-fee": "Itakda ang pasadyang bayad", + "set-dapp-access-permissions": "Itakda ang mga pahintulot sa pag-access ng DApp", + "set-max": "Itakda ang max", + "settings": "Settings", + "share": "Ibahagi", + "share-address": "Share address", + "share-chat": "Ibahagi ang chat", + "share-contact-code": "Ibahagi ang aking susi sa chat", + "share-dapp-text": "Tingnan ang DApp na ginagamit ko sa Status:{{link}}", + "share-link": "Ibahagi ang Link", + "share-my-profile": "Ibahagi ang link sa profile", + "share-profile": "Ibahagi ang profile", + "share-profile-link": "Ibahagi ang link sa profile", + "share-public-chat-text": "Tingnan ang pampublikong chat na ito sa Status app:{{link}}", + "shared": "Ibinahagi", + "sharing-copied-to-clipboard": "Kinopya", + "sharing-copy-to-clipboard": "Kopya", + "sharing-share": "Ibahagi", + "show-less": "Magpakita ng mas kaunti", + "show-more": "Magpakita pa", + "show-notifications": "Ipakita ang mga notification", + "show-profile-pictures": "Ipakita ang mga larawan sa profile ng", + "show-qr": "Ipakita ang QR code", + "show-transaction-data": "Ipakita ang data ng transaksyon", + "sign-and-send": "Mag-sign at ipadala", + "sign-anyway": "Mag-sign pa rin", + "sign-in": "mag sign-in", + "sign-message": "Mag-sign Message", + "sign-out": "Mag-sign out", + "sign-request-failed": "Hindi ma-sign na mensahe", + "sign-with": "Mag-sign in", + "sign-with-password": "Mag-sign in gamit ang password", + "sign-you-in": "Nag-sign in ka ...", + "signing": "Pag-sign", + "signing-a-message": "Pag-sign ng isang mensahe", + "signing-phrase": "Pag sign ng phrase", + "something-went-wrong": "May nangyari na mali", + "soon": "Sa lalong madaling panahon", + "specify-address": "Tukuyin ang address", + "specify-name": "Tukuyin ang isang pangalan", + "specify-network-id": "Tukuyin ang id ng network", + "specify-rpc-url": "Tukuyin ang isang URL ng RPC", + "specify-server-public-key": "Ilagay ang server public key", + "start-chat": "Simulan ang chat", + "start-conversation": "Simulan ang pag-uusap", + "start-group-chat": "Simulan ang group chat", + "start-new-chat": "Magsimula ng bagong chat", + "starter-pack-coming": "Darating sa inyo ang starter pack", + "starter-pack-coming-description": "Maaaring tumagal ng ilang minuto hanggang oras", + "starter-pack-received": "Natanggap ang Starter Pack", + "starter-pack-received-description": "Narito ang ilang mga crypto upang makapagsimula ka! Gamitin ito upang makakuha ng mga sticker, isang pangalan ng ENS at subukan ang mga dapps", + "status": "Status", + "status-confirmed": "Nakumpirma", + "status-hardwallet": "Status hardwallet", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Ang Status ay may kaugaliang gumamit ng maraming data kapag nagsi-sync ng mga chat. Maaari mong piliing hindi mag-sync kapag nasa mobile network", + "status-not-sent-click": "Hindi kumpirmado. Mag-click para sa mga pagpipilian", + "status-not-sent-tap": "Hindi kumpirmado. I-tap para sa mga pagpipilian", + "status-pending": "Naghihintay", + "status-sent": "Ipinadala", + "status-tx-not-found": "Hindi nahanap ang TX", + "status-updates-descr": "Ang Status updates ay lalabas dito. Idagdag ang profile bilang isang contact upang makatanggap ng mga update sa iyong timeline.", + "statuses-descr": "Ibahagi kung ano ang nasa isip mo at manatiling nai-update sa iyong mga contact", + "statuses-my-status-descr": "Ibahagi kung ano ang nasa isip mo. Ang sinumang bumibisita sa iyong profile ay makakakita ng iyong kalagayan. Ang mga taong in-add ka bilang kanilang contact ay makakatanggap ng iyong mga update sa kanilang timeline", + "step-i-of-n": "gabay{{step}}sa{{number}}", + "sticker-market": "Sticker market", + "storage": "Imbakan", + "submit": "Ipasa", + "submit-bug": "Magsumite ng isang bug", + "success": "Tagumpay", + "symbol": "Simbolo", + "sync-all-devices": "Sync lahat ng aparato", + "sync-in-progress": "Syncing...", + "sync-settings": "Mga setting ng pag-sync", + "sync-synced": "Sa pag-sync", + "syncing-devices": "Syncing...", + "system": "System", + "tabs": "tabs", + "tag-was-lost": "nawala ang tag", + "tap-card-again": "Tapikin muli ang card sa likod ng iyong telepono", + "test-networks": "Mga network ng pagsubok", + "text-input-disabled": "Mangyaring maghintay sandali ...", + "this-device": "Ang aparato na ito", + "this-device-desc": "Ang iyong mga keys ay naka-encrypt at ligtas na nakaimbak sa iyong aparato", + "this-is-you-signing": "Ito ang iyong signing phrase", + "this-will-take-few-seconds": "Ito ay tatagal ng ilang segundo", + "three-words-description": "Dapat mong makita ang mga 3 salita bago mag-sign sa bawat transaksyon", + "three-words-description-2": "Kung nakakita ka ng ibang kombinasyon, kanselahin ang transaksyon at mag-sign out", + "timeline": "Timeline", + "to": "Para kay", + "to-block": "Block", + "to-enable-biometric": "Para paganahin{{bio-type-label}} kailangan mong i-save ang iyong password para sa unlock screen", + "to-encrypt-enter-password": "Para ma encrypt ang account ilagay ang iyong password", + "to-see-this-message": "Upang makita ang mensaheng ito,", + "token-auto-validate-decimals-error": "Maling mga decimals para sa token {{symbol}} sa address {{address}} - itakda sa {{expected}} ngunit nakita bilang {{actual}}", + "token-auto-validate-name-error": "Maling pangalan para sa token {{symbol}} sa address {{address}} - itakda sa {{expected}} ngunit nakita bilang {{actual}}", + "token-auto-validate-symbol-error": "Maling simbolo para sa token{{symbol}}sa address{{address}}- itakda sa{{expected}}ngunit nakita bilang{{actual}}", + "token-details": "detalye ng token", + "topic-name-error": "Gumamit lamang ng mga maliliit na titik (a to z), numbero at dashes (-) Huwag gumamit ng chat keys", + "transaction": "Transaksyon", + "transaction-data": "Data ng transaksyon", + "transaction-declined": "Hindi tinanggap ang transaksyon", + "transaction-description": "Isaalang-alang itong kumpleto pagkatapos ng 12 kumpirmasyon sa network.", + "transaction-details": "Mga detalye ng transaksyon", + "transaction-failed": "Nabigo ang transaksyon", + "transaction-history": "Kasaysayan ng Transaksyon", + "transaction-request": "Kahilingan sa Transaksyon", + "transaction-sent": "Ipinadala ang transaksyon", + "transaction-signed": "Ang transaksyon ay matagumpay na naka-sign", + "transactions": "Transaksyon", + "transactions-filter-select-all": "Piliin lahat", + "transactions-filter-title": "Filter ng kasaysayan", + "transactions-history": "Kasaysayan ng Transaksyon", + "transactions-history-empty": "Wala pang transaksyon sa iyong kasaysayan", + "transactions-history-loading": "Naglo-load ng kasaysayan ng transaksyon. Maaaring tumagal ito ng ilang sandali.", + "transactions-load-more": "Mag-load pa", + "transactions-sign": "Sign", + "transfer-ma-unknown-error-desc-1": "Mukhang hindi tinanggal ang iyong multiaccount. Maaaring na-reset ang database", + "transfer-ma-unknown-error-desc-2": "Mangyaring suriin ang iyong listahan ng account at subukang muli. Kung ang account ay hindi nakalista pumunta sa Access existing keys upang mabawi gamit ang seed phrase", + "transfers-fetching-failure": "Hindi ma-update ang kasaysayan ng paglilipat. Suriin ang iyong koneksyon at hilahin pababa upang subukang muli", + "tribute-required-by-multiaccount": "{{multiaccount-name}}nangangailangan ng SNT para magsimula ng isang chat.", + "tribute-state-paid": "Bayad ang nai-ambag", + "tribute-state-pending": "Pending na tribute", + "tribute-state-required": "Nangangailangan{{snt-amount}}SNT tribute", + "tribute-to-talk": "Tribute to talk", + "tribute-to-talk-add-friends": "Magdagdag ng mga kaibigan bilang isang contact upang payagan ang mga chat nang walang bayad sa pagkilala.", + "tribute-to-talk-are-you-friends": "Magkaibigan ba kayo?", + "tribute-to-talk-ask-to-be-added": "Hilingin na maidagdag bilang isang contact", + "tribute-to-talk-contact-received-your-tribute": "natanggap ang iyong parangal. Maaari ka nang ligtas na makipag-chat sa bawat isa.", + "tribute-to-talk-desc": "I-monetize iyong pansin sa pamamagitan ng pag-uutos sa SNT para sa mga bagong tao upang magsimula ng isang chat", + "tribute-to-talk-disabled": "Ang Tribute to Talk ay di pinagana", + "tribute-to-talk-disabled-note": "Simula ngayon, ang mga baguhan ay maaaring magsimula ng isang chat sa iyo nang hindi nagpapadala ng SNT.", + "tribute-to-talk-enabled": "Pinapagana mo ang Tribute to Talk", + "tribute-to-talk-finish-desc": "Mula ngayon, makakatanggap ka lamang ng mga chat mula sa mga contact, at mga taong nagbayad", + "tribute-to-talk-learn-more-1": "Ang iyong oras at atensyon ay ang iyong pinakamahalagang pag-aari. Hinahayaan ka ng Tribute to Talk na magtakda ka ng isang halaga ng SNT na kinakailangan para sa mga bagong tao upang magsimula ng isang chat sa iyo.", + "tribute-to-talk-learn-more-2": "Ang sinumang wala sa iyong listahan ng contact ay hihilingin na bayaran, at maaari kang tumugon sa sandaling mayroon sila.", + "tribute-to-talk-learn-more-3": "Maaari mong palaging maibalik ang pera, ngunit upang matiyak na ang mga kaibigan ay maaaring maabot mo nang malayang, idagdag ang mga ito bilang isang contact muna.", + "tribute-to-talk-paywall-learn-more-1": "Ang aming oras at pansin ay ang aming pinakamahalagang pag-aari. Hinahayaan ka ng Tribute to Talk na makipag-ugnay sa mga bagong tao kapalit ng pagbabayad sa SNT.", + "tribute-to-talk-paywall-learn-more-2": "Para magsimula ng isang chat sa isang taong may set ng pagkilala, bayaran lamang ang kinakailangang SNT at idadagdag ka bilang isang contact.", + "tribute-to-talk-paywall-learn-more-3": "Kung kilala mo ang mga ito, maaari mong ibahagi ang iyong profile sa labas ng Status na idaragdag nang libre.", + "tribute-to-talk-pending": "nakabinbing kumpirmasyon ng Tribute", + "tribute-to-talk-pending-note": "Tribute transaction ay nakabinbing kumpirmasyon sa network. Maaari mong suriin ito sa Status sa kasaysayan ng transaksyon", + "tribute-to-talk-removing-note": "Ang pag-alis ng Tribute to tak ay papayagan ang mga baguhan na magsimula ng isang chat nang hindi nagpapadala ng SNT. Nangangailangan ng isang transaksyon na gagawin.", + "tribute-to-talk-set-snt-amount": "Itakda ang halaga ng SNT na kinakailangan para sa mga bagong tao upang magsimula ng isang chat", + "tribute-to-talk-signing": "Naghihintay na mag-sign transaksyon", + "tribute-to-talk-transaction-failed-note": "Nabigo ang transaksyon at ang iyong mga setting ng Tribute to Talk ay hindi nabago", + "tribute-to-talk-tribute-received1": "Natanggap ang ambag. Ikaw at", + "tribute-to-talk-tribute-received2": "ngayon ay mga contact at maaaring ligtas na makipag-chat sa bawat isa.", + "tribute-to-talk-you-require-snt": "Kailangan mo ng SNT para sa mga bagong tao na magsimula ng isang chat.", + "try-again": "Subukan muli", + "try-keeping-the-card-still": "Subukang panatilihin pa rin ang card", + "turn-nfc-description": "NFC ay hindi pinagana sa iyong aparato. Maaari mo itong paganahin sa mga setting", + "turn-nfc-on": "I-on ang NFC upang magpatuloy", + "tx-fail-description1": "Ang transaksyon na ito ay malamang na mabigo. Mag-sign sa iyong sariling panganib gamit ang pasadyang bayad sa network.", + "tx-fail-description2": "Ang transaksyon na ito ay malamang na mabigo. Magtakda ng isang pasadyang bayad sa network upang mag-sign sa iyong sariling peligro.", + "type": "Uri", + "type-a-message": "Mensahe", + "ulc-enabled": "Pinapagana ang ULC", + "unable-to-fetch": "Hindi makuha ang kasaysayan ng chat", + "unable-to-read-this-code": "Hindi mabasa ang code na ito", + "unable-to-send-messages": "Hindi makapadala at makatanggap ng mga mensahe", + "unblock": "I-unblock", + "unblock-contact": "I-unblock ang gumagamit na ito", + "unknown-status-go-error": "hindi kinikilala status-go error", + "unlock": "I-unlock", + "unmute": "Unmute", + "unpair-card": "Ang kawalan ng pag-asa card", + "unpair-card-confirmation": "Ang operasyon na ito ay mawawalan ng pag-asa ang card mula sa kasalukuyang aparato. Nangangailangan ng pahintulot ng 6-digit na passcode. Gusto mo bang magpatuloy?", + "unpaired-keycard-text": "Ang Keycard na iyong tinapik ay hindi nauugnay sa teleponong ito", + "unpaired-keycard-title": "Mukhang hindi naipares ang iyong card", + "update": "Update", + "update-to-listen-audio": "I-update sa pinakabagong bersyon upang makinig sa isang audio message dito!", + "update-to-see-image": "I-update sa pinakabagong bersyon upang makita ang isang magandang imahe dito!", + "update-to-see-sticker": "I-update sa pinakabagong bersyon upang makita ang isang magandang sticker dito!", + "url": "URL", + "usd-currency": "USD", + "use-valid-contact-code": "Mangyaring mag-enter o mag-scan ng isang wastong chat key o username", + "user-not-found": "Hindi nahanap ang gumagamit", + "validation-amount-invalid-number": "Ang halaga ay hindi isang wastong numero", + "validation-amount-is-too-precise": "Masyadong tumpak ang halaga. Sobrang bilang ng mga decimals ay{{decimals}}", + "version": "Bersyon ng app", + "view": "Tingnan", + "view-cryptokitties": "Tingnan sa CryptoKitties", + "view-cryptostrikers": "Tingnan sa CryptoStrikers", + "view-details": "Tingnan ang mga detalye", + "view-etheremon": "Tingnan sa Etheremon", + "view-gitcoin": "Tingnan sa Gitcoin", + "view-profile": "Tingnan ang Profile", + "view-signing": "Tingnan ang signing phrase", + "view-superrare": "Tingnan sa SuperRare", + "waiting-for-wifi": "Walang Wi-fi, hindi pinagana ang pag-sync ng mensahe.", + "waiting-for-wifi-change": "Mga settings", + "waiting-to-sign": "Naghihintay na mag-sign ng transaksyon ...", + "waiting-wi-fi": "Naghihintay para sa Wi-Fi…", + "waku-bloom-filter-mode": "Waku Bloom mode ng filter", + "wallet": "Pitaka", + "wallet-address": "Address ng Wallet", + "wallet-asset": "Asset", + "wallet-assets": "Assets", + "wallet-backup-recovery-title": "Back up mo ang seed phrase", + "wallet-choose-recipient": "Piliin ang Tumatanggap", + "wallet-collectibles": "Mga Kolektibo", + "wallet-insufficient-funds": "Hindi sapat na pondo", + "wallet-insufficient-gas": "hindi sapat ang gas ng ETH mo", + "wallet-invalid-address": "Di-wastong address::\n{{data}}", + "wallet-invalid-address-checksum": "Error sa address:\n{{data}}", + "wallet-invalid-chain-id": "Hindi tumutugma ang network:\n{{data}}ngunit ang kasalukuyang chain ay{{chain}}", + "wallet-key-content": "Ang isang 64 character na hex address batay sa pamantayan ng Ethereum at nagsisimula sa 0x. na Humaharap sa publiko, ang iyong account address ay na maibahagi sa iba kung gusto mo matanggap ang pondo. Tinukoy din bilang isang \"Ethereum address\" o \"wallet address.\"", + "wallet-key-title": "Address ng account", + "wallet-manage-assets": "Pamahalaan ang mga assets", + "wallet-request": "Kahilingan", + "wallet-send": "Ipadala", + "wallet-send-min-units": "Min 21000 units", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Settings ng Pitaka", + "wallet-total-value": "Kabuuang halaga", + "wallet-transaction-total-fee": "Kabuuang Bayad", + "wants-to-access-profile": "nais na ma-access sa iyong profile", + "warning": "Warning", + "warning-message": "Paumanhin, nililimitahan namin ang pagpapadala ng maraming mga mensahe nang mabilis na magkakasunod upang maiwasan ang spam. Mangyaring subukang muli sa isang sandali", + "warning-sending-to-contract-descr": "Ang address na iyong pinasok ay isang smart contract, magpadala ng pondo sa address na ito ay pwedeng magresulta ng pagkawala ng mga pondo. Makipag-ugnay sa DApp, bukas ang DApp sa anumang Status DApp Browser.", + "watch-only": "panoorin lamang", + "web-view-error": "Hindi ma-load ang pahina", + "websites": "Websites", + "webview-camera-permission-requests": "Mga kahilingan sa pahintulot sa Webview camera", + "webview-camera-permission-requests-subtitle": "Kapag pinagana, ang mga website at dapps ay maaaring hilingin na gamitin ang iyong camera", + "welcome-blank-community-message": "Lilitaw ang iyong mga komunidad dito.", + "welcome-blank-message": "Ang iyong mga chat ay lilitaw dito. Upang simulan ang mga bagong chat pindutin ang button ⊕", + "welcome-community-blank-message": "Lilitaw ang iyong mga chat dito. Para simulan ang mga bagong pag-chat mag-click sa 3 mga tuldok sa itaas at piliin ang \"Lumikha ng isang channel\"", + "welcome-screen-text": "I-set up ang iyong wallet, anyayahan ang mga kaibigan na mag-chat\nat mag-browse ng mga sikat na dapps!", + "welcome-to-status": "Maligayang pagdating sa Status!", + "welcome-to-status-description": "I-set up ang iyong crypto wallet, anyayahan ang mga kaibigan na mag-chat at mag-browse sa mga desentralisadong apps", + "whats-on-your-mind": "Ano ang nasa isip mo…", + "word-count": "Bilang ng salita", + "word-n": "Word #{{number}}", + "word-n-description": "Upang masuri kung nai-back up ang iyong seed phrase ng tama, ilagay ang word#{{number}}sa itaas.", + "words-n": { + "zero": "", + "one": "Isang salita", + "two": "", + "few": "", + "many": "", + "other": "mga salita" + }, + "write-down-and-store-securely": "Isulat ang mga code\nat itago sila ng ligtas", + "wrong-address": "Maling address", + "wrong-card": "maling card", + "wrong-card-text": "Nag-tap ka ng isang kard na hindi tumutugma sa mga keys na iyong napili", + "wrong-contract": "Maling contract", + "wrong-keycard-text": "Ang Keycard na iyong tinapik ay hindi nauugnay sa teleponong ito", + "wrong-keycard-title": "Mukhang naka-tap ka ng\nisang maling keycard", + "wrong-password": "Maling password", + "wrong-word": "Maling salita", + "yes": "Oo", + "You": "ikaw", + "you": "ikaw", + "you-already-have-an-asset": "Mayroon ka nang isang asset na {{value}}", + "you-are-all-set": "Handa ka na!", + "you-are-all-set-description": "Kung mawala ang iyong telepono, maaari mo na ngayong ma-access ang iyong mga pondo at chat key gamit ang iyong seed phrase", + "you-can-change-account": "Maaari mong baguhin ang pangalan at kulay ng account sa nais mo", + "you-can-choose-preview-websites": "Maaari kang pumili kung alin sa mga sumusunod na website ang maaaring mag-preview ng link ng mga paglalarawan at larawan sa mga chat", + "you-can-fetch": "Maaari mong makuha ang kasaysayan ng chat", + "you-dont-have-contacts": "Wala ka pang mga contact.", + "you-dont-have-stickers": "Wala ka pang sticker", + "you-will-need-this-code": "Kakailanganin mo ang code na ito upang buksan ang Status at mga transaksyon sa pag-sign", + "you-will-start-from-scratch": "Magsisimula ka mula sa simula ng isang bagong hanay", + "your-card-is-frozen": "Ang iyong Keycard ay naka frozen. I-reset ang card access", + "your-contact-code": "Pinapahintulutan ng pagbibigay ng pag-access ang DApp na makuha ang iyong susi sa chat", + "your-data-belongs-to-you": "Kung mawala mo ang iyong seed phrase mawawala mo rin, ang iyong data at pondo", + "your-data-belongs-to-you-description": "Kung nawalan ka ng pag-access, halimbawa sa pagkawala ng iyong telepono, maaari mo lamang ma-access ang iyong mga key gamit ang iyong seed phrase. Walang sinuman dapat nakaalam ng iyong seed phrase kung hindi ikaw lamang, kung mangyaring Isulat mo at Panatilihing ligtas", + "your-keys": "Ang iyong susi", + "your-recovery-phrase": "Ang iyong seed phrase", + "your-recovery-phrase-description": "ito ang iyong seed phrase. Ginagamit mo ito upang patunayan na ito ang iyong pitaka. ikaw lamang makita ito nang isang beses! Isulat ito sa papel at itago ito sa isang ligtas na lugar. Kakailanganin mo ito kung nawala o muling i-install ang iyong pitaka.", + "youre-on-mobile-network": "Ikaw ay nasa mobile network" +} diff --git a/translations/tr.json b/translations/tr.json new file mode 100644 index 00000000000..662b03a5cd6 --- /dev/null +++ b/translations/tr.json @@ -0,0 +1,1688 @@ +{ + "You": "Sen", + "about-app": "Hakkında", + "about-key-storage-content": "Status hiçbir zaman özel anahtarınıza erişmez. Kelime imzanızı yedeklediğinizden emin olun. Telefonunuzu kaybederseniz, anahtarlarınıza erişmenin tek yolu budur.", + "about-key-storage-title": "Anahtar saklama hakkında", + "about-names-content": "Kimse senmişsin gibi davranamaz! Varsayılan olarak anonimsiniz ve asla gerçek adınızı açıklamanız gerekmez. Küçük bir ücret karşılığında özel bir ad kaydedebilirsiniz.", + "about-names-title": "İsimler değiştirilemez", + "about-sharing-data": "Veri paylaşımı hakkında", + "accept": "Kabul et", + "accept-and-add": "Kabul et ve ekle", + "accept-and-continue": "Kabul et ve devam et", + "accept-and-share-address": "Adresi kabul et ve paylaş", + "accept-new-chats-from": "Yeni sohbetleri kabul et", + "accept-status-tos-prefix": "Statusu kabul ediyorum", + "access-existing-keys": "Mevcut anahtarlara erişin", + "access-key": "Erişim anahtarı", + "account-added": "Hesap eklendi", + "account-color": "Hesap rengi", + "account-content": "Status'daki hesapları banka hesaplarıyla karşılaştırabilirsiniz.Bir hesabın genellikle bir adresi ve bir bakiyesi vardır; Bu hesabı Ethereum üzerinde işlem yapmak için kullanırsınız. Cüzdanınızda birden fazla hesabınız olabilir. Tümüne Status kilidini açarak erişebilirsiniz.", + "account-exists-title": "Bu Hesap Zaten Mevcut", + "account-is-used": "Hesap, tarayıcıda Dapps ile kullanılıyor.", + "account-name": "Hesap adı", + "account-settings": "Hesap ayarları", + "account-title": "Hesap", + "accounts": "Hesaplar", + "actions": "Hareketler", + "active-online": "Aktif", + "active-unknown": "Bilinmeyen", + "activity": "Aktivite", + "add": "Ekle", + "add-a-watch-account": "Yalnızca izleme adresi ekleyin", + "add-account": "Bir hesap ekle", + "add-account-description": "Status cüzdanınıza eklemek için herhangi bir Ethereum hesabını içe aktarabilirsiniz.", + "add-account-incorrect-password": "Şifre yanlış görünüyor. Uygulamanın kilidini açmak için kullandığınız şifreyi girin.", + "add-an-account": "Bir hesap ekle", + "add-bootnode": "Bootnode ekle", + "add-contact": "Kişi ekle", + "add-custom-token": "Özel token ekle", + "add-favourite": "Favori ekle", + "add-mailserver": "Status nodesi ekle", + "add-members": "Üye ekle", + "add-network": "Ağ ekle", + "add-new-contact": "Yeni kişi ekle", + "add-nickname": "Bir takma ad ekleyin (isteğe bağlı)", + "add-node": "Node ekle", + "add-private-key-account": "Özel Anahtarı Hesabına Ekle", + "add-seed-account": "Kelime imzasıyla hesap ekle", + "add-to-contacts": "Rehbere ekle", + "add-to-contacts-text": "Kişi listenize bir kullanıcı ekleyerek cüzdan adresinizi paylaşabilirsiniz.", + "add-to-favourites": "Favorilere ekle", + "add-watch-account": "Yalnızca izlenen bir hesap ekleyin", + "address": "Adres", + "address-or-ens-name": "Adres veya ENS adı", + "address-received": "Adres alındı", + "address-request-accepted": "Adres isteği kabul edildi", + "address-requested": "Adrese talep edildi.", + "advanced": "Gelişmiş", + "advanced-settings": "Gelişmiş Ayarlar", + "advertiser-description": "Bir ortak sayesinde Statusu keşfettiniz. Durumun IP adresinizi bir kez kontrol etmesini ve böylece ödüllendirilmelerinin bir sakıncası var mı? Bu bilgiler başka hiçbir amaçla kullanılmayacak ve 7 gün sonra tamamen silinecektir.", + "advertiser-starter-pack-accept": "Kabul et", + "advertiser-starter-pack-decline": "Reddet", + "advertiser-starter-pack-description": "İşte başlamanız için bazı kriptolar! Çıkartmalar, bir ENS adı almak ve dapp'leri denemek için kullanın", + "advertiser-starter-pack-title": "Başlangıç paketi", + "advertiser-title": "Varsayılan olarak gizlilik", + "agree-by-continuing": "Devam ederek kabül etmiş sayılırsınız", + "all": "Hepsi", + "allow": "İzin ver", + "allow-and-send": "İzin ver ve gönder", + "allow-mention-notifications": "@ bahsetmeyi göster", + "allowing-authorizes-this-dapp": "Bu DApp'e cüzdan adresinizi alma ve Web3'ü etkinleştirme yetkisi verin.", + "already-have-asset": "Bu öğeye zaten sahipsiniz", + "amount": "Miktar", + "anyone": "Kimse", + "appearance": "Görünüm", + "apply": "Uygula", + "approve": "Kabul et", + "are-you-sure": "Emin misiniz?", + "are-you-sure-description": "kelime imzanızın tamamını bir daha göremeyeceksiniz", + "are-you-sure-to-cancel": "İptal etmek istediğinden emin misin?", + "are-you-sure?": "Emin misiniz?", + "ask-in-status": "Soru sorun veya hata bildirin", + "at": "üzere", + "attribution-received": "{{attrib}}dışında {{max}}bonuslar alındı.", + "audio": "Ses", + "audio-recorder": "Kaydedici", + "audio-recorder-error": "Kaydedici hatası", + "audio-recorder-max-ms-reached": "Maksimum kayıt süresine ulaşıldı", + "audio-recorder-permissions-error": "Sesli mesaj gönderme izni vermelisiniz", + "authorize": "Yetkilendir", + "available": "Mevcut", + "available-participants": { + "one": "Bir katılımcı daha seçebilirsiniz", + "other": "Daha fazla {{Count}} katılımcı seçebilirsiniz" + }, + "back": "Geri", + "back-up": "Yedekleme", + "back-up-seed-phrase": "Kelime imzanızı yedekleyin", + "back-up-your-seed-phrase": "İmza kelimenizi yedekleyin", + "backing-up": "Yedekleme...", + "backup-disabled": "Devre dışı", + "backup-enabled": "Etkinleştirilmiş", + "backup-recovery-phrase": "Kelime imzalarınızı yedekleyin.", + "backup-settings": "Yedekleme ayarları", + "backup-through-waku": "waku aracılığıyla yedekle", + "bad-fees-description": "Öncelik ücretiniz önerilen parametrelerimizin altındadır.", + "balance": "Bakiye", + "begin-set-up": "Kuruluma başlayın", + "biometric-auth-android-sensor-desc": "Dokunmatik sensörü", + "biometric-auth-android-sensor-error-desc": "Başarısız", + "biometric-auth-android-title": "Kimlik Doğrulaması Gerekiyor", + "biometric-auth-confirm-logout": "Tekrar giriş yapın", + "biometric-auth-confirm-message": "Devam etmek için biyometrik kimlik doğrulaması gerekiyor, eğer mümkün değilse, lütfen şifrenizi kullanarak anahtarlarınızın kilidini açın", + "biometric-auth-confirm-title": "Kimlik doğrulaması yapmalısınız!", + "biometric-auth-confirm-try-again": "Tekrar deneyin", + "biometric-auth-error": "Biyometrik kimlik doğrulaması gerçekleştirilemiyor ( {{code}} )", + "biometric-auth-login-error-title": "Biyometrik kimlik doğrulama hatası", + "biometric-auth-login-ios-fallback-label": "Şifrenizi girin", + "biometric-auth-reason-login": "Status'ta Oturum Aç", + "biometric-auth-reason-verify": "Kimlik doğrulamasını doğrulayın", + "biometric-disable-bioauth": "devre dışı {{bio-type-label}}", + "biometric-disable-password-description": "Bunu devre dışı bırakırsanız", + "biometric-disable-password-title": "Şifre kaydetmeyi devre dışı bırak", + "biometric-enable": "Uygulamayı her hesap açtığınızda şifre girmek istemiyorsanız, {{bio-type-label}} ile oturum açmayı etkinleştirin", + "biometric-enable-button": "{{bio-type-label}} etkinleştir", + "biometric-enable-keycard": "Uygulamaya erişmek için Keycard'ınızı her seferinde kullanmak istemiyorsanız, {{bio-type-label}} oturum açmayı etkinleştirin.", + "biometric-faceid": "Yüz Kimliği", + "biometric-fingerprint": "Parmak izi", + "biometric-secure-with": "{{bio-type-label}} ile güvenli", + "biometric-touchid": "Dokunmatik kimlik", + "bip39-password-placeholder": "BIP39 şifresi", + "blank-keycard-text": "Anahtarlarınızı ve adınızı oluşturduktan sonra Keycard ile devam edebilirsiniz", + "blank-keycard-title": "Dokunduğunuz anlaşılıyor \nBoş bir Keycard", + "block": "Engelle", + "block-contact": "Bu kullanıcıyı engelle", + "block-contact-details": "Engelleme, bu kullanıcının önceki iletilerini siler ve yenilerinin size ulaşmasını engeller", + "blocked-users": "Engellenmiş kullanıcılar", + "bootnode-address": "Bootnode adresi", + "bootnode-details": "Bootnode detayları", + "bootnode-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes etkin", + "bootnodes-settings": "Bootnodes ayarları", + "browsed-websites": "Tarayıcı geçmişiniz burada görüntülenir", + "browser": "Tarayıcı", + "browser-not-secure": "Bağlantı güvenli değil! Bu sitede işlem imzalamayın veya kişisel veri göndermeyin.", + "browser-secure": "Bağlantı güvenli. İşlemleri imzalamadan veya kişisel verilerizi girmeden önce bu siteye gerçekten güvendiğinizden emin olun.", + "browsers": "Tarayıcılar", + "browsing-cancel": "İptal", + "browsing-open-in-android-web-browser": "Android'de aç", + "browsing-open-in-ios-web-browser": "İOS'ta aç", + "browsing-open-in-status": "Statusda aç", + "browsing-site-blocked-description1": "Bu adresten potansiyel kötü amaçlı etkinlik tespit ettik. Sizi ve cüzdanınızı korumak için daha fazla gezinmenizi engelliyoruz. \n\n Bunun bir hata olduğunu düşünüyorsanız,Bize bildirin.", + "browsing-site-blocked-description2": "genel sohbet.", + "browsing-site-blocked-go-back": "Geri dön", + "browsing-site-blocked-title": "Bu site engellendi", + "browsing-title": "Gözat", + "bug-report": "Hata bildirin", + "bug-report-description": "* Açıklama", + "bug-report-description-placeholder": "Gerekli, boş olamaz", + "bug-report-steps": "Yeniden üretme adımları", + "bug-report-steps-placeholder": "- uygulamayı aç\n - bir şeyler yap\n - ve sonra başka bir şey...", + "bug-report-submit-email": "Günlük arşivi e-posta ile gönder", + "bug-report-too-short-description": "Açıklama çok kısa", + "build-yourself": "Uygulamayı bu Hizmet Koşulları olmadan kullanmak için kendi sürümünüzü oluşturabilirsiniz", + "buy-crypto": "Kripto satın alın", + "buy-crypto-choose-a-service": "Kripto satın almak için kullanmak istediğiniz bir hizmet seçin", + "buy-crypto-description": "Şimdi kripto satın almak için bir dapp bulun", + "buy-crypto-leaving": "Status'tan ayrılıyorsunuz ve satın alma işleminizi tamamlamak için üçüncü taraf web sitesine giriyorsunuz", + "buy-crypto-title": "Görünüşe göre cüzdanınız boş", + "camera-access-error": "Gerekli kamera iznini vermek için lütfen sistem ayarlarınıza gidin ve Status > Kamerasının seçili olduğundan emin olun.", + "can-not-add-yourself": "Bu sensin, sohbet başlatmak için başka birini seçin.", + "can-send-messages": "Yeni mesaj gönderebilir ve alabilirsiniz", + "cancel": "İptal", + "cancel-keycard-setup": "Keycard kurulumlarını iptal et", + "cancelling": "İptal", + "cannot-read-card": "Kart okunamıyor. \n Lütfen telefonunuzun arkasına tutun.", + "cannot-use-default-pin": "000000 parolasına izin verilmiyor. \n Lütfen başka bir numara kullanın", + "cant-open-public-chat": "Herkese açık sohbeti açamıyorum", + "cant-report-bug": "Hata bildirilemiyor", + "card-is-blank": "Bu kart boş", + "card-reseted": "Kart sıfırlandı", + "card-unpaired": "Kart mevcut cihazla eşleştirilmedi", + "category": "Kategori", + "category-title": "Kategori başlığı", + "change-fleet": "Fleet'i {{fleet}} olarak değiştir.", + "change-logging-enabled": "Günlüğü {{enable}} günlüğe kaydetmek istediğinizden emin misiniz?", + "change-pairing": "Eşleştirme kodunu değiştir", + "change-pairing-description": "Eşleştirme kodunun değiştirilmesi mevcut eşleştirmeleri etkilemez. Ancak, herhangi bir yeni eşleştirme için yeni kod gerektirir.", + "change-pairing-title": "Yeni bir eşleştirme kodu oluşturun", + "change-passcode": "Parolayı Değiştir", + "change-password": "Şifreni değiştir", + "change-pin": "6 basamaklı şifrenizi değiştirin.", + "change-puk": "12 haneli PUK'u değiştir", + "changed-amount-warning": "Tutar {{old}} den {{new}} olarak değiştirildi.", + "changed-asset-warning": "Varlık{{old}} den {{new}} olarak değiştirildi.", + "chaos-mode": "Kaos Modu", + "chaos-unicorn-day": "Kaos Unicorn Günü", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Sohbet", + "chat-and-transact": "Arkadaşlarınızla özel olarak sohbet edin ve işlem yapın", + "chat-is-a-contact": "İletişim", + "chat-is-not-a-contact": "Ekli Değil", + "chat-key": "Sohbet anahtarı", + "chat-key-content": "Status sohbet protokolündeki mesajlar şifreleme anahtarları kullanılarak gönderilir ve alınır. Genel sohbet anahtarları sizin Status ile mesaj gönderilmesi için başkalarıyla paylaştığınız bir karakter dizisidir.", + "chat-key-title": "Sohbet Anahtarı", + "chat-link-previews": "Sohbet bağlantısı önizlemeleri", + "chat-name": "Sohbet Adı", + "chat-name-content": "Sohbet anahtarınızdan algoritmik olarak türetilen ve sohbette varsayılan takma adınız olarak kullanılan üç rastgele kelimedir. Sohbet adları tamamen benzersizdir; başka hiçbir kullanıcı aynı üç kelimeye sahip olamaz.", + "chat-name-title": "Sohbet Adı", + "chat-notification-preferences": "Bildirim ayarları", + "chat-settings": "Sohbet ayarları", + "chats": "Sohbetler", + "check-on-opensea": "Opensea'yı kontrol edin", + "check-your-recovery-phrase": "Kelime imzalarınızı kontrol edin", + "choose-actions": "Hareketleri seçin", + "choose-authentication-method": "Bir kimlik doğrulama yöntemi seçin.", + "choose-new-location-for-keystore": "Anahtar deposu dosyanızı kaydetmek için yeni bir konum seçin", + "choose-storage": "Depolamayı seçin", + "clear": "Temizle", + "clear-all": "Hepsini temizle", + "clear-history": "Geçmişi temizle", + "clear-history-action": "Temizle", + "clear-history-confirmation": "Geçmiş temizlensin mi?", + "clear-history-confirmation-content": "Bu sohbet geçmişini silmek istediğinizden emin misiniz?", + "clear-history-title": "Geçmiş temizlensin mi?", + "close": "Kapat", + "close-all": "Hepsini kapat", + "close-app-button": "Onayla", + "close-app-content": "Uygulama durur ve kapanır. Yeniden açtığınızda, seçilen ağ kullanılır", + "close-app-title": "Uyarı!", + "collectibles-leak-metadata": "NFT'lerinizi burada görüntüleyebilirsiniz. Bunu yaparsanız, cüzdanınızı ve IP adresinizi paylaşacaksınız.", + "command-button-send": "Gönder", + "communities": "Topluluklar", + "communities-alpha": "Topluluklar (alfa)", + "communities-enabled": "Topluluklar etkinleştirildi", + "communities-verified": "✓ Doğrulanmış Status Topluluğu", + "community": "Topluluk", + "community-color": "Topluluk rengi", + "community-color-placeholder": "Bir renk seçin", + "community-edit-title": "Topluluğu düzenleyin", + "community-emoji-thumbnail-title": "Küçük resim", + "community-image-pick": "Bir resim seçin", + "community-image-remove": "Kaldır", + "community-image-take": "Fotoğraf çek", + "community-info": "Topluluk bilgileri", + "community-info-not-found": "Topluluk bilgileri bulunamadı", + "community-invite-title": "Davet et", + "community-key": "Topluluk özel anahtarı", + "community-key-placeholder": "Topluluk özel anahtarınızı yazın", + "community-link": "Topluluk bağlantısı", + "community-members": { + "one": "Üye", + "other": "Üyeler" + }, + "community-members-title": "Üyeler", + "community-message-preview": "{{community-name}} katılma daveti", + "community-private-key": "Topluluk özel anahtarı", + "community-requests-to-join-title": "Üyelik talepleri", + "community-roles": "Roller", + "community-share-title": "Paylaş", + "community-thumbnail-image": "Küçük resim", + "community-thumbnail-upload": "Yükle", + "complete-hardwallet-setup": "Bu kart şimdi bağlandı. İşlemleri imzalamak ve anahtarlarınızın kilidini açmak için buna ihtiyacınız var", + "completed": "Tamamlandı", + "confirm": "Onayla", + "confirm-new-password": "Yeni şifreyi onayla", + "confirm-pairing-code-placeholder": "Eşleştirme kodunuzu onaylayın...", + "confirm-password-placeholder": "Parolanızı onaylayın...", + "confirmation-request": "Onay talebi", + "confirmations": "Onaylar", + "confirmations-helper-text": "İşlemin 12 onayı olduğunda, işlemin tamamlanmış olduğunu düşünebilirsiniz.", + "connect": "Bağlan", + "connect-mailserver-content": "{{name}}'e bağlan ?", + "connect-wallet": "Cüzdanı bağlayın", + "connected": "Bağlandı", + "connected-to": "Bağlı", + "connecting": "Bağlanıyor...", + "connecting-requires-login": "Başka bir ağa bağlanmak için oturum açmak gerekir", + "connection-request": "Bağlantı İsteği", + "connection-status": "Bağlantı durumu", + "connection-with-the-card-lost": "Kart ile bağlantı \n kayboldu", + "connection-with-the-card-lost-setup-text": "Kuruluma devam etmek için kartı \n telefonunuzun arkasına tutun.Telefon ile iletişime geçecek.", + "connection-with-the-card-lost-text": "Devam etmek için kartı telefonunuzun arkasına tutun", + "contact-code": "Sohbet anahtarı", + "contact-s": { + "one": "Kişi", + "other": "Kişiler" + }, + "contacts": "Kişiler", + "contacts-descr": "Kişileriniz burada görünecek. Kişi olarak eklediğiniz herkesten status güncellemeleri alacaksınız", + "contacts-empty": "ENS adlarına sahip kişiler burada görünecek", + "continue": "Devam et", + "continue-anyway": "Yine de devam edin", + "contract-address": "Sözleşme adresi", + "contract-interaction": "Sözleşme etkileşimi", + "contract-isnt-supported": "Sözleşme desteklenmiyor", + "copy-info": "Kopya bilgisi", + "copy-qr": "Kodu kopyala", + "copy-to-clipboard": "Kopyala", + "copy-transaction-hash": "İşlem kimliğini kopyala", + "cost-fee": "Maliyet \/ Ücret", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Oluştur", + "create-a-pin": "6 haneli bir şifre oluşturun", + "create-a-puk": "12 basamaklı bir PUK oluşturun", + "create-category": "Kategori oluştur", + "create-channel": "Kanal oluştur", + "create-channel-title": "Yeni kanal", + "create-community": "Bir topluluk oluşturun", + "create-group-chat": "Grup sohbeti oluştur", + "create-multiaccount": "Anahtar üret", + "create-new-key": "Yeni anahtarlar edinin", + "create-pin": "6 basamaklı şifre oluştur", + "create-pin-description": "Status kilidini açmak ve işlemleri onaylamak için kartınıza ve bu 6 haneli şifreye ihtiyacınız olacak.", + "created-group-chat-description": "{{group-name}} oluşturdunuz", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Para birimi", + "currency-display-name-aed": "Emirati Dirhemi", + "currency-display-name-afn": "Afganistan Afganisi", + "currency-display-name-ars": "Arjantin Pezosu", + "currency-display-name-aud": "Avustralya Doları", + "currency-display-name-bbd": "Barbados Doları", + "currency-display-name-bdt": "Bangladeş Takası", + "currency-display-name-bgn": "Bulgar Levası", + "currency-display-name-bhd": "Bahreyn Dinarı", + "currency-display-name-bnd": "Brunei Sultanlığı Doları", + "currency-display-name-bob": "Bolivya Bolivianosu", + "currency-display-name-brl": "Brezilya Reali", + "currency-display-name-btn": "Bhutan Ngultrumu", + "currency-display-name-cad": "Kanada Doları", + "currency-display-name-chf": "İsviçre Frangı", + "currency-display-name-clp": "Şili Pezosu", + "currency-display-name-cny": " Çin Yuanı", + "currency-display-name-cop": "Kolombiya Pezosu", + "currency-display-name-crc": "Kosta Rika Kolonu", + "currency-display-name-czk": "Çek Korunası", + "currency-display-name-dkk": "Danimarka Kronu", + "currency-display-name-dop": "Dominik Cumhuriyeti Pezosu", + "currency-display-name-egp": "Mısır Lirası", + "currency-display-name-etb": "Etiyopya Birri", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "İngiliz Sterlini", + "currency-display-name-gel": "Gürcü Larisi", + "currency-display-name-ghs": "Gana Cedi", + "currency-display-name-hkd": "Hong Kong Doları", + "currency-display-name-hrk": "Hırvatistan Kunası", + "currency-display-name-huf": "Macaristan Forinti", + "currency-display-name-idr": "Endonezya Rupiahı", + "currency-display-name-ils": "İsrail Şekeli", + "currency-display-name-inr": "Hindistan Rupisi", + "currency-display-name-isk": "İzlanda Kronu", + "currency-display-name-jmd": "Jamaika Doları", + "currency-display-name-jpy": "Japon Yeni", + "currency-display-name-kes": "Kenya Şilini", + "currency-display-name-krw": "Güney Kore Wonu", + "currency-display-name-kwd": "Küveyt Dinarı", + "currency-display-name-kzt": "Kazakistan Tengesi", + "currency-display-name-lkr": "Sri Lanka Rupisi", + "currency-display-name-mad": "Fas Dirhemi", + "currency-display-name-mdl": "Moldova Leyi", + "currency-display-name-mur": "Mauritius Rupisi", + "currency-display-name-mwk": "Malavi Kvaçası", + "currency-display-name-mxn": "Meksika Pezosu", + "currency-display-name-myr": "Malezya Ringiti", + "currency-display-name-mzn": "Mozambik Metikali", + "currency-display-name-nad": "Namibya Doları", + "currency-display-name-ngn": "Nijerya Nairası", + "currency-display-name-nok": "Norveç Kronu", + "currency-display-name-npr": "Nepal Rupisi", + "currency-display-name-nzd": "Yeni Zellanda Doları", + "currency-display-name-omr": "Umman Riyali", + "currency-display-name-pen": "Peru Solu", + "currency-display-name-pgk": "Papua Yeni Gine Kinası", + "currency-display-name-php": "Filipinler Pezosu", + "currency-display-name-pkr": "Pakistan Rupisi", + "currency-display-name-pln": "Polonya Zlotisi", + "currency-display-name-pyg": "Paraguay Guarani", + "currency-display-name-qar": "Katar Riyali", + "currency-display-name-ron": "Rumen Leyi", + "currency-display-name-rsd": "Sırbistan Dinarı", + "currency-display-name-rub": "Rusya Rublesi", + "currency-display-name-sar": "Suudi Arabistan Riyali", + "currency-display-name-sek": "İsveç Kronu", + "currency-display-name-sgd": "Singapur doları", + "currency-display-name-thb": "Tayland Bahtı", + "currency-display-name-try": "Türk Lirası", + "currency-display-name-ttd": "Trinidad ve Tobago Doları", + "currency-display-name-twd": "Tayvan Yeni Doları", + "currency-display-name-tzs": "Tanzanya Şilini", + "currency-display-name-uah": "Ukrayna Grivnası", + "currency-display-name-ugx": "Uganda Şilini", + "currency-display-name-usd": "Amerikan Doları", + "currency-display-name-uyu": "Uruguay Pezosu", + "currency-display-name-vef": "Venezuela Bolívarı", + "currency-display-name-vnd": "Vietnam Dongu", + "currency-display-name-zar": "Güney Afrika Randı", + "current": "Şu anki", + "current-base": "Mevcut taban ücret", + "current-base-fee": "Mevcut taban ücret", + "current-network": "Mevcut ağ", + "current-password": "Şimdiki Şifre", + "current-pin": "6 haneli şifreyi girin", + "current-pin-description": "Devam etmek için 6 haneli şifrenizi girin", + "custom": "Özel", + "custom-networks": "Özel ağlar", + "custom-node": "Özel RPC uç noktası kullanıyorsunuz. Yerel transfer geçmişiniz eksik olabilir.", + "custom-seed-phrase": "Geçersiz kelime imzası", + "custom-seed-phrase-text-1": "Bu kelime imzası desteklenebilen kelimeler ile eşleşmiyor. Yanlış yazılmış kelimeleri kontrol edin.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Kabul Et ve Aç", + "dapp-starter-pack-description": "İşte başlamanız için bazı kriptolar! Çıkartmalar, bir ENS adı almak ve dapp'leri denemek için kullanın.", + "dapp-starter-pack-title": "Başlangıç paketi", + "dapp-would-like-to-connect-wallet": "bağlanmak istiyor", + "dapps": "ÐApps", + "dapps-permissions": "DApp izinleri", + "dark": "Karanlık", + "data": "Veri", + "data-collected": "Toplanan veri", + "data-collected-subtitle": "Aşağıdaki tablo, saklanan ve gönderilecek olan verileri tam olarak göstermektedir. Hassas verilerin gönderilmediğinden emin olmak için veriler genel kurallara göre doğrulanır. Güvenmeyin, onaylayın.", + "data-syncing": "Veri senkronizasyonu", + "database-reset-content": "Sohbetler, kişiler ve ayarlar silindi. Hesabınızı Keycardınızla kullanabilirsiniz", + "database-reset-title": "Veritabanı sıfırla", + "database-reset-warning": "Veritabanı sıfırlanacak. Sohbetler, kişiler ve ayarlar silinecek", + "datetime-ago": "Önce", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "one": "gün", + "other": "günler" + }, + "datetime-day-short": { + "one": "gün", + "other": "gün" + }, + "datetime-hour": { + "one": "saat", + "other": "saatler" + }, + "datetime-hour-short": { + "one": "saat", + "other": "saat" + }, + "datetime-minute": { + "one": "dakika", + "other": "dakikalar" + }, + "datetime-minute-short": { + "one": "dakika", + "other": "dakika" + }, + "datetime-second": { + "one": "Saniye", + "other": "Saniyeler" + }, + "datetime-second-short": { + "one": "saniye", + "other": "saniye" + }, + "datetime-today": "bugün", + "datetime-yesterday": "Dün", + "decimals": "Basamaklı", + "decline": "Reddet", + "decryption-failed-content": "Verileriniz şifresi çözülürken bir hata oluştu. Eski verilerinizi silmeniz ve yeni bir hesap oluşturmanız gerekebilir. Silmek için \"Uygula\" ya da tekrar denemek için \"İptal\" e hafifçe dokunun.", + "default": "Varsayılan", + "default-assets": "Varsayılan ERC20 ve ERC721", + "default-sync-period": "Senkronizasyon geçmişi", + "delete": "Sil", + "delete-account": "Hesabı sil", + "delete-and-leave-group": "Grubu sil ve gruptan ayrıl", + "delete-bootnode": "Bootnode sil", + "delete-bootnode-are-you-sure": "Bu bootnode silmek istediğinizden emin misiniz?", + "delete-bootnode-title": "Bootnode silme", + "delete-category-confirmation": "Bu kategoriyi silmek istediğinizden emin misiniz?", + "close-chat": "Sohbeti sil", + "close-chat-confirmation": "Bu sohbeti silmek istediğinizden emin misiniz?", + "delete-confirmation": "Sil?", + "delete-keys-keycard": "Keycardından anahtarları sil", + "delete-mailserver": "Geçmiş Status nodesini silin.", + "delete-mailserver-are-you-sure": "Bu Status nodesini silmek istediğinizden emin misiniz?", + "delete-mailserver-title": "Status nodesini silin", + "delete-message": "Mesajı sil", + "delete-my-account": "Hesabımı sil", + "delete-my-profile": "Profilimi sil", + "delete-network-confirmation": "Bu ağı silmek istediğinizden emin misiniz?", + "delete-network-error": "Lütfen bunu silmeden önce farklı bir ağa bağlanın.", + "delete-network-title": "Ağ silinsin mi?", + "delete-node": "Node sil", + "delete-node-are-you-sure": "Bu nodeyi silmek istediğinizden emin misiniz?", + "delete-node-title": "Node sil", + "delete-profile": "Profili sil", + "delete-profile-warning": "Uyarı: Kelime imzanız yazılmamışsa, profilinizi sildikten sonra parasal varlıklarınıza erişiminizi kaybedersiniz", + "deny": "Reddet", + "derivation-path": "Türetme yolu", + "describe-channel": "Kanalı açıklayın", + "description": "Açıklama", + "dev-mode": "Geliştirici Modu", + "dev-mode-settings": "Geliştirme modu ayarları", + "device-syncing": "Cihaz senkronizasyonu", + "devices": "Cihazlar", + "disable": "Devre dışı bırak", + "disable-all": "Hepsini etkisiz hale getir", + "disable-later-in-settings": "Bunu daha sonra ayarlardan değiştirebilirsiniz", + "disabled": "Devre dışı", + "disconnected": "Sohbet Çevrimdışı", + "discover": "Keşfedin", + "dismiss": "Reddet", + "display-collectibles": "Koleksiyon ürünlerini göster", + "done": "Bitti", + "dont-ask": "Bir daha sorma", + "edit": "Düzenle", + "edit-channel-title": "Kanalı düzenle", + "edit-chats": "Sohbetleri düzenle", + "edit-community": "Topluluğu düzenleyin", + "edit-favourite": "Favoriyi düzenle", + "edit-group": "Grubu düzenle", + "edit-profile": "Profili Düzenle", + "edited": "Düzenlendi", + "editing-message": "Mesajı düzenle", + "empty-activity-center": "Sohbet bildirimleriniz\n burada görünecek", + "empty-chat-description": "Bu sohbette henüz hiç mesaj yok.", + "empty-chat-description-community": "Burada son kez sessiz kaldı {{quiet-hours}}", + "empty-chat-description-one-to-one": "Buraya gönderdiğiniz tüm iletiler şifrelenir ve yalnızca sizin tarafınızdan okunabilir.", + "empty-chat-description-public": "Burada son {{quiet-hours}} konuşmaları. Konuşmayı başlatın veya", + "empty-chat-description-public-share-this": "Bu sohbeti paylaş.", + "empty-keycard-required": "Boş bir Keycard gerektirir", + "empty-pending-invitations-descr": "Gruba katılmak isteyenler\n bir davet bağlantısı aracılığıyla burada görünecek", + "empty-tab": "Boş sekme", + "enable": "Etkinleştir", + "enable-all": "Hepsini etkinleştir", + "enable-link-previews": "Sohbette bağlantı önizlemeleri etkinleştirilsin mi?", + "encrypt-with-password": "Şifrenizi şifreleyin.", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Kullanıcı adı ekle", + "ens-agree-to": "İçin kabul", + "ens-chat-settings": "Sohbet ayarları", + "ens-custom-domain": "Özel alan adı", + "ens-custom-username-hints": "Username.domain.eth gibi özel alan adı dahil olmak üzere tüm kullanıcı adınızı yazın", + "ens-custom-username-taken": "Kullanıcı adı size ait değil :(", + "ens-deposit": "Depozito", + "ens-dismiss-message": "Kapatmak için burayı tıklayın", + "ens-displayed-with": "İletileriniz şu kullanıcılara gösterilir.", + "ens-get-name": "Evrensel bir kullanıcı adı edinin", + "ens-got-it": "Tamam anladım", + "ens-locked": "Kullanıcı adınız kilitlendi. {{date}} kadar yayın yapamazsınız.", + "ens-name-content": "Ethereum Name Service'i kullanarak kaydedebileceğiniz sohbet anahtarınız için özel takma ad. ENS isimleri merkezi olmayan kullanıcı isimleridir.", + "ens-name-not-found": "ENS adı çözülemiyor", + "ens-name-title": "ENS Adı", + "ens-network-restriction": "Yalnızca Mainnet'te kullanılabilir", + "ens-no-usernames": "Bağlı kullanıcı adınız yok", + "ens-powered-by": "Powered by Ethereum İsim Hizmetleri", + "ens-primary-username": "Birincil kullanıcı adı", + "ens-register": "Kayıt ol", + "ens-registration-failed": "Kullanıcı adını kaydetmek için lütfen tekrar deneyin.", + "ens-registration-failed-title": "İşlem başarısız oldu", + "ens-registration-failure": "Kayıt başarısız oldu", + "ens-registration-in-progress": "Kayıt devam ediyor ...", + "ens-release-username": "Kullanıcı adınımı yayınla", + "ens-remove-hints": "Kaldırma işlemiyle birlikte, kullanıcı adınınız anahtarınızdan ayıracaktır.", + "ens-remove-username": "Kullanıcı adını kaldırma", + "ens-saved": "Artık sohbet anahtarınızla bağlantılıdır ve Status'da kullanılabilir.", + "ens-saved-title": "Kullanıcı adı eklendi", + "ens-show-username": "Sohbetlerde ENS kullanıcı adımı göster", + "ens-terms-header": "İsim kaydı şartları", + "ens-terms-point-1": "Fonlar 1 yıl süreyle yatırılır. SNT'niz kilitlenecek, ancak harcanmayacak.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (ENS Kaydı).", + "ens-terms-point-2": "1 yıl sonra adınızdan vazgeçebilirsiniz ve depozitonuzu geri alabilirsiniz.Veya isterseniz adınızın kayıtta olması için herhangi bir işlem yapmanıza gerek yok.", + "ens-terms-point-3": "Sözleşme şartları değiştiğinde (örneğin, Status sözleşmede güncellemeler yapıyorsa )Kullanıcı tutulmuş zaman her ne olursa olsun kullanıcı adını serbest bırakmak için hakka sahiptir.", + "ens-terms-point-4": "Sözleşme denetleyicisi yatırdığınız paraya erişemez. Yalnızca onları gönderen adrese geri taşıyabilir.", + "ens-terms-point-5": "Adresleriniz ENS adınızla herkese açık olarak ilişkilendirilecektir.", + "ens-terms-point-6": "Kullanıcı adları stateofus.eth alt etki alanı düğümleri olarak oluşturulur ve ENS akıllı sözleşme koşullarına tabidir.", + "ens-terms-point-7": "Sizin adınıza SNT'yi transfer etmek için sözleşmeye yetki verirsiniz. Bu yalnızca aktarıma yetkilendirmek üzere bir işlemi onayladığınızda oluşabilir.", + "ens-terms-point-8": "Bu koşullar, adreslerdeki akıllı sözleşme mantığı ile garanti edilir:", + "ens-terms-point-9": "{{address}}Status Kullanıcı Adı Kayıtı", + "ens-terms-registration": "İsim kayıt şartları", + "ens-test-message": "Hey", + "ens-transaction-pending": "İşlem bekleniyor ...", + "ens-understand": "Cüzdan adresimin kullanıcı adımla herkese açık olarak bağlanacağını anlıyorum.", + "ens-username": "ENS kullanıcı adı", + "ens-username-already-added": "Kullanıcı adı sohbet anahtarınıza zaten bağlı ve Status içinde kullanılabilir.", + "ens-username-available": "✓ Kullanıcı adı kullanılabilir!", + "ens-username-connected": "Bu kullanıcı adı size aittir ve sohbet anahtarınızla bağlantılıdır.", + "ens-username-connected-continue": "`ENS kullanıcı adımı sohbette göster 'ayarını yapmaya devam edin.", + "ens-username-connected-with-different-key": "Devam etmek için kullanıcı adını mevcut sohbet anahtarınıza bağlamaki çin işlem yapmanız gerekiyor.", + "ens-username-connection-confirmation": "İşlem tamamlandığında {{username}} bağlanacak.", + "ens-username-hints": "En az 4 karakter. Yalnızca Latin harfleri, sayılar ve küçük harfler", + "ens-username-invalid": "Sadece harfler ve rakamlar.", + "ens-username-owned": "✓ Bu kullanıcı adı size ait.", + "ens-username-owned-continue": "Devam ederseniz, bu kullanıcı adı sohbet anahtarınıza bağlanır.", + "ens-username-registration-confirmation": "{{username}}", + "ens-username-taken": "Bu kullanıcı adı daha önce zaten alınmış :(", + "ens-username-you-can-follow-progress": "İlerlemeyi cüzdanınızın '' İşlem Geçmişi '' bölümünden takip edebilirsiniz.", + "ens-usernames": "ENS kullanıcı adlarınız", + "ens-usernames-details": "Diğer kullanıcılar tarafından kolayca tanınabilmesi için evrensel bir kullanıcı adı kaydedin", + "ens-want-custom-domain": "Başka bir alan adında bir isme sahibim ", + "ens-want-domain": "Stateofus.eth alan adı istiyorum", + "ens-welcome-hints": "ENS adları bu çılgın adresleri benzersiz kullanıcı adlarına dönüştürür.", + "ens-welcome-point-customize": "Bir ENS adı, sohbet sırasında rastgele 3 kelimelik adınızın yerini alabilir. {{name}} yerine @ adınız olur.", + "ens-welcome-point-customize-title": "Sohbet adınızı özelleştirin", + "ens-welcome-point-receive": "Diğer herkes size tek bir adımda para gönderebilir.", + "ens-welcome-point-receive-title": "Sohbette işlem alın", + "ens-welcome-point-register": "Sadece bir kez kayıt olun ve o ad sizin olsun.1 yıl sonra isterseniz adınızdan vazgeçebilir ve Sntlerinizi geri alabilirsiniz.", + "ens-welcome-point-register-title": "Kayıt için 10 snt gerekli", + "ens-welcome-point-simplify": "Onaltılık karma (0x ...) yerine paylaşması kolay ENS adınıza para alabilirsiniz.", + "ens-welcome-point-simplify-title": "ETH adresinizi basitleştirin", + "ens-welcome-point-verify": "Sonraki adımlarda sahip olduğunuz kullanıcı adlarınızı doğrulayabilir ve ekleyebilirsiniz.", + "ens-welcome-point-verify-title": "Zaten bir kullanıcı adınız var mı?", + "ens-your-username": "Kullanıcı adınız", + "ens-your-usernames": "Kullanıcı adlarınız", + "ens-your-your-name": "ENS adınız", + "enter-12-words": "Tek boşluk ile ayrılmış kelime imzanızın 12 kelimesini girin", + "enter-a-private-key": "Özel bir anahtar girin", + "enter-a-seed-phrase": "Kelime imzası girin", + "enter-address": "Adresi girin", + "enter-contact-code": "ENS (vitalik94) veya sohbet anahtarı (0x04…)", + "enter-pair-code": "Eşleme kodunuzu girin", + "enter-pair-code-description": "Eşleştirme kodu, önceden eşleştirilmiş bir Status istemcisinden ayarlanabilir", + "enter-password": "Şifre girin", + "enter-password-migration-prompt": "Anahtarlarınızla birlikte kişileri, sohbetleri ve ayarları taşımak için şifrenizi girin", + "enter-pin": "6 haneli şifreyi girin", + "enter-puk-code": "PUK kodunu girin", + "enter-puk-code-description": "6 haneli şifreniz engellendi. \n Şifre engelinizi kaldırmak için lütfen PUK kodunu girin.", + "enter-recipient-address-or-username": "Alıcının adresini veya kullanıcı adını girin", + "enter-seed-phrase": "Kelime imzanızı girin", + "enter-url": "URL girin", + "enter-user-pk": "Kullanıcı genel anahtarını girin", + "enter-watch-account-address": "QR kodunu tarayın \n veya \n izlenecek adresi girin", + "enter-word": "Kelime girin", + "enter-your-code": "6 haneli şifrenizi girin", + "enter-your-password": "Şifrenizi girin", + "error": "Hata", + "error-unable-to-get-balance": "Bakiye alınamıyor.", + "error-unable-to-get-prices": "Para birimi dönüştürme hatası. Tekrar denemek için ekranınızı yenileyin.", + "error-unable-to-get-token-balance": "Token bakiyesi alınamıyor.", + "errors": "Hatalar", + "eth": "ETH", + "ethereum-account": "Ethereum hesabı", + "ethereum-address": "Ethereum adresi", + "ethereum-node-started-incorrectly-description": "Ethereum düğümü yanlış yapılandırmayla başlatıld ve bu durumu düzeltmek için uygulama durdurulur. Yapılandırılmış ağ kimliği = {{network-id}} , gerçek = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Ethereum düğümü yanlış başladı", + "etherscan-lookup": "Etherscan'a bak.", + "everyone": "Herkes", + "expand-all": "Tümünü genişlet", + "export-account": "Hesabı dışa aktar", + "export-key": "Özel anahtarı dışa aktar", + "external-storage-denied": "Harici depolamaya erişim reddedildi", + "failed": "Başarısız", + "faq": "Sıkça Sorulan Sorular", + "fast": "Hızlı", + "favourite": "Favori", + "favourite-description": "Favori web siteleriniz burada görünecek", + "favourites": "Favoriler", + "favourites-empty": "Sık kullanılanlara eklenen adresler burada görünecek", + "fee-cap": "Ücret sınırı", + "fee-explanation": "İşlem için maksimum toplam fiyat. Blok taban ücreti bunu aşarsa, daha düşük taban ücretle bir sonraki bloğa dahil edilir.", + "fee-options": "Önerilen ücret seçenekleri", + "fetch-community": "topluluğu getir", + "fetch-messages": "Mesajları getir", + "fetch-timeline": "↓ Getir", + "fetching-community": "Topluluk getiriliyor...", + "find": "Bul", + "finish": "Bitti", + "finishing-card-setup": "Kart kurulumu tamamlandı", + "fleet": "Fleet", + "fleet-settings": "Fleet ayarları", + "follow": "Takip et", + "follow-your-interests": "Herkese açık bir sohbete katılın ve yeni insanlarla tanışın", + "free": "↓ Ücretsiz", + "from": "Kaynak", + "gas-amount-limit": "Gaz miktarı limiti", + "gas-limit": "Gas limiti", + "gas-price": "Gaz fiyatı", + "gas-used": "Gas kullanılıyor", + "generate-a-key": "Anahtar üret", + "generate-a-new-account": "Bir hesap oluştur", + "generate-a-new-key": "Yeni bir anahtar oluşturun", + "generate-account": "Anahtar üret", + "generate-an-account": "Bir hesap oluşturun", + "generate-new-key": "Anahtar üret", + "generating-codes-for-pairing": "> Ürün yazılımını karta indirme \n > Kilit açma ve eşleme kodları oluşturma", + "generating-keys": "Anahtarlar oluşturuluyor ...", + "generating-mnemonic": "Kelime imzanız oluşturuluyor", + "get-a-keycard": "Keycard alın", + "get-started": "Başlayın", + "get-status-at": "Statusu http:\/\/status.im adresinden edinin.", + "get-stickers": "Çıkartma Al", + "give-a-short-description": "Kısa bir açıklama yapın", + "give-a-short-description-community": "Kısa bir açıklama yapın", + "give-permissions-camera": "Kameraya erişmek için izin verin", + "glossary": "Terimler sözlüğü", + "go-to-settings": "Ayarlar'a gidin...", + "got-it": "Anladım", + "grant-face-id-permissions": "Gerekli Face ID iznini vermek için lütfen sistem ayarlarınıza gidin ve Status > Face ID'nin seçili olduğundan emin olun", + "group-chat": "Grup sohbeti", + "group-chat-admin": "Yönetici", + "group-chat-admin-added": "** {{member}} ** yönetici yapıldı", + "group-chat-all-contacts-invited": "Tüm kişileriniz zaten grupta", + "group-chat-created": "** {{member}} ** grup oluşturdu ** {{name}} **", + "group-chat-decline-invitation": "Daveti reddet", + "group-chat-member-added": "** {{member}} ** davet edildi", + "group-chat-member-joined": "** {{member}} ** gruba katıldı", + "group-chat-member-removed": "** {{member}} ** gruptan ayrıldı", + "group-chat-members-count": "{{selected}} \/ {{max}} üye", + "group-chat-name-changed": "** {{member}} ** grubun adını ** {{name}} ** olarak değiştirdi", + "group-chat-no-contacts": "Henüz hiç kişiniz yok. \n Arkadaşlarınızı sohbete davet edin", + "group-info": "Grup bilgisi", + "group-invite": "Grup daveti", + "group-invite-link": "Grup davet bağlantısı", + "group-membership-request": "Grup üyeliği isteği", + "gwei": "Gwei", + "has-permissions": "erişim izni istiyor", + "hash": "Hash", + "help": "Yardım", + "help-capitalized": "Yardım", + "help-center": "Yardım Merkezi", + "help-improve-status": "Statusu geliştirmeye yardımcı olun", + "hide": "Gizle ", + "hide-content-when-switching-apps": "Ekran görüntüsü alınmasını engelle", + "hide-content-when-switching-apps-ios": "Önizlemeyi gizle", + "history": "Geçmiş", + "history-nodes": "Status nodeleri", + "hold-card": "Kartı telefonunuzun arkasında tutun", + "home": "Ev", + "hooks": "Kancalama", + "how-it-works": "Nasıl çalışır", + "http-gateway-error": "Hay aksi, istek başarısız oldu!", + "identifier": "Tanımlayıcı", + "image": "Resim", + "image-remove-current": "Mevcut fotoğrafı kaldır", + "image-source-gallery": "Galeriden seç", + "image-source-make-photo": "Yakala", + "image-source-title": "Resmi düzenle", + "import": "İçe Aktar", + "import-community": "Bir topluluğu içe aktar", + "import-community-title": "Bir topluluğu içe aktar", + "in-contacts": "Kişilerde", + "include": "Kapsar", + "incoming": "Gelen", + "incoming-transaction": "Gelen işlem", + "incorrect-code": [ + "str", + "Maalesef kod yanlış, lütfen tekrar girin" + ], + "increase-gas": "Gazı Artırın", + "initialization": "Başlatma", + "install": "◊ Yükle", + "intro-message1": "Status'a Hoş Geldiniz! \n Şifrenizi ayarlayabilmeniz için bu mesaja dokunun.", + "intro-privacy-policy-note1": "Status kişisel verilerinizi toplamaz veya bunlardan kar sağlamaz. Devam ederek kabul etmiş sayılırsınız.", + "intro-privacy-policy-note2": "Gizlilik Politikası", + "intro-text": "Status, merkezi olmayan web'e giriş kapısıdır", + "intro-text1": "İletilerin sansürlenemeyeceği veya saldırıya uğratılamadığı şifreli bir ağ üzerinden sohbet edin.", + "intro-text2": "Dijital varlıkları dünyanın herhangi bir yerine gönderin veya alın; banka hesabı gerektirmez.", + "intro-text3": "Yalnızca verilerinizin sahibi olduğunuz oyunları, borsaları ve sosyal ağları keşfedin", + "intro-title1": "Gerçekten özel iletişim", + "intro-title2": "Güvenli kripto cüzdanı", + "intro-title3": "Merkezi olmayan uygulamalar", + "intro-wizard-text1": "Bu anahtarlar hesabınızı kontrol eder. Anahtarlarınız sadece telefonunuzda yayınlanır.Böylece yalnızca siz kullanabilirsiniz", + "intro-wizard-text2": "Bu anahtar sohbet içindir. Değiştirilemeyen ve okunabilir bir adla birlikte gelir.", + "intro-wizard-text3": "Bir Keycard Kartınız var ise, gelişmiş güvenlik için anahtarlarınızı orada saklayın.", + "intro-wizard-text4": "Anahtarlarınızı güvenceye alın ve şifreleyin", + "intro-wizard-text6": "Status yeni mesajlar hakkında sizi bilgilendirir. Bildirim tercihlerinizi daha sonra ayarlardan düzenleyebilirsiniz", + "intro-wizard-title-alt4": "Şifre oluştur", + "intro-wizard-title-alt5": "Parolanızı doğrulayın", + "intro-wizard-title1": "Anahtarlarını al", + "intro-wizard-title2": "Bir sohbet adı seçin", + "intro-wizard-title3": "Anahtar depolama alanını seçin", + "intro-wizard-title4": "6 haneli bir şifre oluşturun", + "intro-wizard-title5": "Parolayı onaylayın", + "intro-wizard-title6": "Bildirimleri etkinleştirin", + "introduce-yourself": "Kendinizi kısa bir mesajla tanıtın", + "invalid-address-qr-code": "Taranan QR kodu geçerli bir adres içermiyor", + "invalid-format": "Geçersiz format \n {{format}} olmalı", + "invalid-key-confirm": "Uygula", + "invalid-key-content": "Bir dosya bozuk olduğundan veritabanı şifrelenemiyor. Paranız ve sohbet anahtarınız güvende. Sohbetleriniz ve kişileriniz gibi diğer veriler geri yüklenemez. “ {{erase-multiaccounts-data-button-text}} ” düğmesi, diğer tüm verileri kaldırır ve paranıza erişmenize ve mesaj göndermenize olanak tanır", + "invalid-number": "Geçersiz numara", + "invalid-pairing-password": "Geçersiz eşleştirme şifresi", + "invalid-public-chat-topic": "Geçersiz genel sohbet konusu", + "invalid-range": "Geçersiz biçim, {{min}} ve {{max}} arasında olmalıdır", + "invalid-username-or-key": "Geçersiz kullanıcı adı veya sohbet anahtarı", + "invite": "Davet et", + "invite-button": "Davet et", + "invite-chat-accept": "Kabul et", + "invite-chat-accept-join": "Kabul Et ve Katıl", + "invite-chat-intro": "Bir arkadaşınız tarafından Statusa katılmanız için yönlendirildiniz. İşte başlamanız için bazı kriptolar! Bir ENS adını kaydetmek veya bir çıkartma paketi satın almak için kullanın", + "invite-chat-name": "Arkadaş tavsiyesi", + "invite-chat-pending": "Bekliyor", + "invite-chat-rule": "Kabul ettiğinizde,arkadaşınızı bir kripto tavsiye bonusu ile de ödüllendirilecek", + "invite-chat-starter-pack": "Başlangıç paketi", + "invite-friends": "Arkadaşlarınızı davet edin", + "invite-instruction-fifth": "Tavsiye bonusunuzu istediğiniz zaman kullanmayı seçebilirsiniz.", + "invite-instruction-first": "Statusu indirmek ve katılmak için arkadaşınıza benzersiz bir davet bağlantısı gönderirsiniz", + "invite-instruction-fourth": "Tavsiye bonusu ve arkadaşınıza Başlangıç Paketini alırsınız", + "invite-instruction-second": "Arkadaşınız Statusu indirir ve bir hesap oluşturur (Android'de)", + "invite-instruction-third": "Arkadaşınızla, tavsiyenizi onayladıkları bir sohbet başlatılır", + "invite-people": "İnsanları davet et", + "invite-privacy-policy-public": "Statusu bir referans bağlantısı aracılığıyla yüklediniz. Bu sohbete katılarak size referans verene atıfta bulunursunuz ve şunu kabul edersiniz:", + "invite-privacy-policy1": "Kabul ederek tavsiye programını kabul etmiş olursunuz", + "invite-privacy-policy2": "Şartlar ve koşullar.", + "invite-public-chat-home": "Referans daveti", + "invite-public-chat-intro": "İşte başlamanız için bazı kriptolar! Bir ENS adını kaydetmek veya bir çıkartma paketi satın almak için kullanın", + "invite-receive-account": "Tavsiye bonusunuzu alacak hesap", + "invite-reward": "Davet ettiğiniz her arkadaşınız için kripto kazanın!", + "invite-reward-friend": "Arkadaş:", + "invite-reward-friend-description": "Arkadaşınız, başlamak için bazı {{reward}} içeren bir Başlangıç Paketi alacak", + "invite-reward-friend-name": "Başlangıç paketi", + "invite-reward-you": "Sen:", + "invite-reward-you-description": "Bir arkadaşınızı davet edin ve tavsiye bonusu olarak {{reward}} kazanın. Çıkartmalar, bir ENS adı almak ve dapp'leri denemek için kullanın", + "invite-reward-you-name": "Tavsiye bonusu", + "invite-select-account": "Tavsiye bonusunuzu almak için bir hesap seçin", + "invite-warning": "Bu promosyon yalnızca ABD'de ikamet etmeyen bir Android cihaz kullanıcıları için geçerlidir. Arkadaşın tavsiyeyi 7 gün içinde onaylaması gerekiyor", + "invited": "davet", + "join": "Katılın", + "join-a-community": "veya bir topluluğa katılın", + "join-group-chat": "Gruba katıl", + "join-group-chat-description": "{{username}} sizi {{group-name}} katılmaya davet etti", + "join-me": "Hey Statusda bana katılın: {{url}}", + "join-new-private-chat": "Yeni bir özel sohbet başlat", + "join-new-public-chat": "Herkese açık bir sohbete katılın", + "joined": "Katıldı", + "joined-group-chat-description": "{{username}} tarafından gönderilen davetiye {{group-name}} {{username}}", + "key": "Anahtar", + "key-managment": "Anahtar yönetimi", + "key-on-device": "Özel anahtar bu cihaza kaydedildi", + "keycard": "Keycard", + "keycard-access-reset": "Keycarda erişim sıfırlandı", + "keycard-applet-install-instructions": "Uygulamayı yüklemek için lütfen https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation adresindeki talimatları izleyin.", + "keycard-awaiting-description": "Cihazınızdaki nfc okuyucuyu bulmak için kartı hareket ettirmeyi deneyin", + "keycard-awaiting-title": "Arıyor...", + "keycard-backup": "Yedek Keycardı oluşturun", + "keycard-backup-success-body": "Yedek kart başarıyla oluşturuldu. Artık bunu tıpkı birincil kart gibi hesabınızla kullanabilirsiniz.", + "keycard-backup-success-title": "Yedekleme başarılı", + "keycard-blocked": "Keycard engellendi. \n Kullanmaya devam etmek için kartı sıfırlamanız gerekir.", + "keycard-can-use-with-new-passcode": "Bu kartı yeni şifrenizle kullanabilirsiniz", + "keycard-cancel-setup-text": "Bu, keycard kurulumunu iptal eder. Keycardı kullanmak için kurulumun tamamlanması önemle tavsiye edilir. Gerçekten iptal etmek istiyor musunuz?", + "keycard-cancel-setup-title": "Tehlikeli operasyon", + "keycard-connected-description": "Kartı sabit tutmayı deneyin", + "keycard-connected-title": "Bağlandı", + "keycard-desc": "Keycardınız mı var? Anahtarlarınızı üzerinde saklayın; işlemler için buna ihtiyacın olacak", + "keycard-dont-ask-card": "Oturum açmak için kart sorma", + "keycard-enter-new-passcode": "Yeni parola girin {{step}}\/2", + "keycard-error-description": "Devam etmek için kartı yeniden bağlayın", + "keycard-error-title": "Bağlantı koptu", + "keycard-factory-reset": "Kartı fabrika ayarlarına döndür", + "keycard-factory-reset-text": "Bunu yapmak, kartta depolanan tüm anımsatıcı ifadeleri siler. Bu Keycard ile kullandığınız anımsatıcı ifadenin bir yedeğine sahip olduğunuzdan emin olun.", + "keycard-factory-reset-title": "Fabrika ayarlarına sıfırlama yapmak istediğinizden emin misiniz?", + "keycard-free-pairing-slots": "Kaycardında {{n}} boş eşleme yuvası var", + "keycard-has-multiaccount-on-it": "Bu kart dolu. Her kart bir ana anahtar çifti tutabilir", + "keycard-init-description": "Devam edebilmeniz için kartı telefonunuzun arkasına koyun", + "keycard-init-title": "Kart aranıyor ...", + "keycard-is-blocked-details": "Artık bu kartı, bu hesaba erişmek veya bu hesapta oturum açmak için kullanamazsınız. Çok fazla başarısız şifre ve PUK denemesi yapıldı.", + "keycard-is-blocked-instructions": "Hesabınıza erişmek için kartınızı fabrika ayarlarına sıfırlamanız gerekir. Prosedürü başlatmak için aşağıdaki düğmeye dokunun, anımsatıcınıza ihtiyacınız olacak.", + "keycard-is-blocked-title": "Keycard Engellendi", + "keycard-is-frozen-details": "Varlıklarınızı korumak için kartınız dondurulur. Çözmek ve işlem gönderebilmek için kartınızı sıfırlayın. Bunu PUK'unuz veya anımsatıcınızla yapabilirsiniz.", + "keycard-is-frozen-factory-reset": "Anımsatıcı ile sıfırla", + "keycard-is-frozen-reset": "PUK ile Sıfırla", + "keycard-is-frozen-title": "Keycard donduruldu", + "keycard-onboarding-finishing-header": "Bitirin", + "keycard-onboarding-intro-header": "Anahtarlarınızı Keycardınızda saklayın.", + "keycard-onboarding-intro-text": "Hazırlanın, bu birkaç dakika sürebilir, ancak hesabınızın güvenliğini sağlamak önemlidir.", + "keycard-onboarding-mnemonic-text": "Ayrıca imza kelimelerinizi yazmak için bir parça kağıda ve bir kaleme ihtiyacınız olacak.", + "keycard-onboarding-pairing-header": "Kart eşleştiriliyor ...", + "keycard-onboarding-pin-text": "Keycardınıza erişimi korumak için kullanılacak 6 haneli bir şifre oluşturmanız gerekecektir.", + "keycard-onboarding-preparing-header": "Kart hazırlanıyor ...", + "keycard-onboarding-puk-code-header": "Kodları yaz \n ve güvenli bir şekilde saklayın", + "keycard-onboarding-recovery-phrase-description": "Anahtarınızı geri almak için bu kelime imzanıza ihtiyacınız var.Güvenli bir yere yazın ve saklayın.", + "keycard-onboarding-recovery-phrase-header": "İmza kelimelerinizi yedekleyin.", + "keycard-onboarding-recovery-phrase-text": "Gözlerinle iyi bak. Bu, anahtarınızı oluşturmak için kullanılan büyülü kelime imzalarınız.", + "keycard-onboarding-start-header": "Başlamak için kartı telefonunuzun arkasında tutun.", + "keycard-onboarding-start-step1": "Parola oluştur", + "keycard-onboarding-start-step1-text": "Yaklaşık 1 dakika. Anahtarlarınızı şifrelemek için 6 haneli bir şifre oluşturun", + "keycard-onboarding-start-step2": "PUK ve eşleme kodunu yazın", + "keycard-onboarding-start-step2-text": "Yaklaşık 1 dakika sürecek.Bir parça kağıda ve kaleme ihtiyacınız olacak", + "keycard-onboarding-start-step3": "İmza kelimelerinizi yedekleyin", + "keycard-onboarding-start-step3-text": "Yaklaşık 1 dakika sürecek. Ayrıca bir parça kağıt ve kalem gereklidir", + "keycard-onboarding-start-text": "Kurulum sırasında kart ile telefon temasını sürdürün.Kurulum yaklaşık 4 dakika sürecek", + "keycard-processing-description": "Kartı sabit tutmayı deneyin", + "keycard-processing-title": "İşleniyor...", + "keycard-recover": "kayıp veya dondurulmuş kart?", + "keycard-recover-text": "Anımsatıcı ifadeniz varsa, bu hesapla ilişkili yeni bir Keycard oluşturabilirsiniz. Yeni bir Keycardı kullanabilir veya donmuş bir Keycardınızda fabrika ayarlarına sıfırlama yapabilirsiniz.", + "keycard-recover-title": "Bu hesap için yeni bir kart oluşturulsun mu?", + "keycard-recovery-intro-button-text": "Kurtarmayı başlat", + "keycard-recovery-intro-header": "Keycardınızda bulunan anahtarlarınızı kurtarın", + "keycard-recovery-intro-text": "Daha önce bir Keycard kullanarak anahtarlar oluşturduysanız ve şimdi bu anahtarları bu cihazda kullanmak mı istiyorsun", + "keycard-recovery-no-key-header": "Yapacak bir şey yok. \nburadan kurtarın", + "keycard-recovery-no-key-text": "Keycardınızda depolanmış bir anahtar yok. Kullanmak için yeni bir anahtar oluşturun ve anahtarı saklamak için Keycardınızı seçin", + "keycard-recovery-phrase-confirm-header": "İmza Kelimesini onaylayın", + "keycard-recovery-phrase-confirmation-text": "İkinci bir şansın olmayacak! Cihazınızı kaybederseniz veya değiştirirseniz, kelime imzalarınız yoksa Keycardınıza veya onunla ilişkili hiç bir şeye erişemezsiniz.Kelime imzanı bir yere yaz.Ve onu güvende tut.", + "keycard-recovery-phrase-confirmation-title": "Kelime imzanızı yazdınız mı?", + "keycard-recovery-success-header": "Anahtarlarınız \n başarıyla kurtarıldı", + "keycard-redeem-title": "Kullan", + "keycard-redeem-tx": "Varlıkları kullanın", + "keycard-redeem-tx-desc": "Varlıkları imzalamak ve almak için karta hafifçe dokunun", + "keycard-reset-passcode": "Parolayı sıfırla", + "keycard-success-description": "Kartı şimdi kaldırabilirsiniz", + "keycard-success-title": "Başarılı", + "keycard-unauthorized-operation": "Bu işlemi gerçekleştirme yetkiniz yok. \n Lütfen geçerli karta hafifçe vurun ve tekrar deneyin.", + "keycard-upsell-subtitle": "Gelişmiş güvenlik ve rahatlık", + "language": "Dil", + "last-backup-performed": "Gerçekleştirilen son yedekleme:", + "last-transaction": "Son islem", + "learn-more": "Daha fazla bilgi edinin", + "learn-more-about-keycard": "Keycard hakkında daha fazla bilgi edinin", + "leave": "Ayrıl", + "leave-chat": "Sohbetten ayrıl", + "leave-chat-confirmation": "Sohbetten ayrılmak istediğinizden emin misiniz?", + "leave-community": "Topluluktan ayrıl", + "leave-confirmation": "Sohbetten ayrıl", + "leave-group": "Gruptan ayrıl", + "left": "ayrıldı", + "les-ulc": "LES \/ ULC", + "lets-go": "Hadi gidelim", + "light": "Aydınlık", + "limit": "Limit", + "linked-on": "bağlandı {{date}}", + "load-messages-before": "{{date}} önce", + "load-more-messages": "Daha fazla mesaj getir", + "load-more-timeline": "↓ Daha fazlasını getir", + "loading": "Yükleniyor...", + "local-notifications": "Yerel bildirimler", + "lock-app-with": "Uygulamayı şununla kilitle:", + "log-level": "Günlük seviyesi", + "log-level-settings": "Günlük seviyesi ayarları", + "logging": "Günlükler", + "logging-enabled": "Günlük kaydı etkin mi?", + "login-pin-description": "Anahtarlarınızın kilidini açmak için 6 haneli şifrenizi girin", + "logout": "Çıkış Yap", + "logout-app-content": "Hesap oturumu kapatılacak. Tekrar kilidini açtığınızda, seçilen ağ kullanılır", + "logout-are-you-sure": "Çıkış yapmak istediğinden emin misin ?", + "logout-key-management": "Anahtar yönetimine erişmek için oturumu kapatmanız gerekir.", + "logout-title": "Çıkış Yap?", + "looking-for-cards": "Kart aranıyor ...", + "lost-connection": "Bağlantı koptu", + "mail-should-be-configured": "Mail istemcisi yapılandırılmalıdır", + "mailserver-address": "Status node adresi", + "mailserver-automatic": "Otomatik seçim", + "mailserver-automatic-switch-explanation": "Mevcut en hızlı Status nodesini seçin", + "mailserver-connection-error": "Status nodesine bağlanılamadı", + "mailserver-content": "Status ağında iletileri 30 güne kadar yönlendiren ve depolayan bir node.", + "mailserver-details": "Status nodesi ayrıntıları", + "mailserver-error-content": "Seçtiğiniz Status nodesine ulaşılamadı.", + "mailserver-error-title": "Status nodesine bağlanırken hata oluştu", + "mailserver-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "mailserver-pick-another": "Başka bir Status nodesi seçin", + "mailserver-reconnect": "Status nodesine bağlanılamadı. Yeniden bağlanmak için dokunun", + "mailserver-request-error-content": "Status nodesi tarafından şu hata oluştu: {{error}}", + "mailserver-request-error-status": "Geçmiş getirilirken bir hata oluştu, ayrıntılar için günlükleri kontrol edin", + "mailserver-request-error-title": "Status node isteği hatası", + "mailserver-request-retry": "İsteği yeniden deneyin", + "mailserver-retry": "Yeniden Dene", + "mailserver-title": "Status nodesi", + "main-currency": "Ana para birimi", + "main-networks": "Ana ağlar", + "main-wallet": "Ana Cüzdan", + "mainnet-network": "Ana ağ", + "make-admin": "Admin yap", + "manage-keys-and-storage": "Anahtarları ve depolamayı yönetin", + "mark-all-read": "Tümünü okundu olarak işaretle", + "master-account": "Ana hesap", + "max-fee": "Maksimum ücret", + "max-priority-fee": "Maksimum öncelik ücreti", + "maximum-fee": "Maksimum ücret", + "maximum-fee-desc": "Bu işlem için maksimum toplam ucret. Mevcut blok taban ücreti bunu aşars işleminiz daha düşük taban ücretle bir sonraki bloğa dahil edilecektir.", + "maybe-later": "Belki sonra", + "member-ban": "Üyeyi yasakla", + "member-kick": "Üyeyi at", + "members": { + "one": "1 üye", + "other": "{{count}} üyeler" + }, + "members-active": { + "one": "Üye", + "other": "{{count}}Üyeler" + }, + "members-active-none": "Üye yok", + "members-count": "{{count}} üyeler", + "members-label": "Üyeler", + "members-limit-reached": "Üye sınırına ulaşıldı", + "members-title": "Üyeler", + "membership-approval": "Onay gerekli", + "membership-approval-description": "Topluluğunuza katılmak ücretsizdir, ancak yeni üyelerin önce topluluk oluşturucu tarafından onaylanması gerekir", + "membership-button": "Üyelik şartı", + "membership-declined": "Üyelik talebi reddedildi", + "membership-description": "Grup üyeliği, grup yöneticisi tarafından kabul edilmenizi gerektirir", + "membership-ens": "ENS kullanıcı adı gerekli", + "membership-ens-description": "Topluluğunuzun katılabilmesi için bir ENS kullanıcı adı gerekiyor", + "membership-free": "Gerek yok", + "membership-free-description": "Topluluğunuz herkesin katılması için ücretsizdir", + "membership-invite": "Başka bir üyeden davet iste", + "membership-invite-description": "Topluluğunuza yalnızca mevcut topluluk üyelerinden gelen bir davetle katılabilir", + "membership-none": "Hiçbiri", + "membership-none-placeholder": "Yeni üyelerin katılmadan önce belirli kriterleri karşılamasını zorunlu kılabilirsiniz. Bu herhangi bir zamanda değiştirilebilir", + "membership-request-pending": "Üyelik talebi beklemede", + "membership-requests": "Üyelik talepleri", + "membership-title": "Üyelik şartı", + "message": "Mesaj", + "message-not-sent": "Mesaj gönderilmedi", + "message-options-cancel": "İptal", + "message-reply": "Cevap", + "messages": "Mesajlar", + "messages-from-contacts-only-subtitle": "Yalnızca kişi olarak eklediğiniz kişiler sizinle yeni bir sohbet başlatabilir veya sizi bir gruba davet edebilir", + "might-break": "Biraz ÐApps'ı kırabilir ", + "migration-successful": "Taşıma başarılı", + "migration-successful-text": "Hesap başarıyla Keycard'a taşındı", + "migrations-failed-content": "{{message}} \n şema sürümü: ilk {{initial-version}} , geçerli {{current-version}} , son {{last-version}} \n\n Bir veritabanı hatası oluştu. Paranız ve sohbet anahtarınız güvende. Sohbetleriniz ve kişileriniz gibi diğer veriler geri yüklenemez. \" {{erase-multiaccounts-data-button-text}} \" \"düğmesi diğer tüm verileri kaldırır ve paranıza erişmenize ve mesaj göndermenize olanak tanır.", + "miners-higher-fee": "Daha yüksek bir ücret öderseniz, madenciler muhtemelen işleminizi daha erkene dahil edeceklerdir.", + "mobile-network-ask-me": "Mobil ağdayken bana sor", + "mobile-network-continue-syncing": "Senkronizasyona devam et", + "mobile-network-continue-syncing-details": "Bunu daha sonra ayarlardan değiştirebilirsiniz", + "mobile-network-go-to-settings": "Ayarlara git", + "mobile-network-settings": "Mobil veri", + "mobile-network-sheet-configure": "Senkronizasyonu daha fazla yapılandırabilirsiniz .\n Detaylar burada", + "mobile-network-sheet-offline": "Wi-fi kapalı, mesaj senkronizasyonu devre dışı.", + "mobile-network-sheet-offline-details": "Mobil ağ kullanarak senkronizasyon kapalı", + "mobile-network-sheet-remember-choice": "Seçimimi hatırla", + "mobile-network-sheet-settings": "Ayarlar", + "mobile-network-start-syncing": "Senkronizasyonu başlat", + "mobile-network-stop-syncing": "Senkronizasyonu durdur", + "mobile-network-stop-syncing-details": "Kablosuz ağa bağlanana kadar?", + "mobile-network-use-mobile": "Mobil veri kullan", + "mobile-network-use-mobile-data": "Status, sohbetleri ve cüzdanı senkronize ederken çok fazla veri kullanır.", + "mobile-network-use-wifi": "Yalnızca kablosuz", + "mobile-syncing-sheet-details": "Status, sohbetleri ve cüzdanı senkronize ederken çok fazla veri kullanır.", + "mobile-syncing-sheet-title": "Mobil veri kullanarak senkronize edilsin mi?", + "more": "Daha", + "move-and-reset": "Taşı ve Sıfırla", + "move-keystore-file": "Anahtar deposu dosyasını taşı", + "move-keystore-file-to-keycard": "Anahtar deposu dosyası keycadınıza taşınsın mı?", + "multiaccount-exists-content": "Bu hesabın anahtarları zaten var ve tekrar eklenemiyor.Parolanızı, şifrenizi veya keycardınızı kaybettiyseniz, uygulamayı kaldırın, kelime imzanızı girerek anahtarlarınızı yeniden yükleyin ve erişin", + "multiaccount-exists-title": "Bu hesabın anahtarları zaten var", + "multiaccounts-recover-enter-phrase-text": "12, 15, 18, 21 veya 24 uzunluğunda kelime girin. \n Kelimeleri tek bir boşlukla ayırın.", + "multiaccounts-recover-enter-phrase-title": "kelime imzanızı girin", + "mute": "Sessiz", + "my-accounts": "Hesaplarım", + "my-accounts-empty": "Mevcut hesaplarınız burada görünecek", + "my-profile": "Benim profilim", + "my-status": "Durumum", + "name": "Ad", + "name-of-token": "Tokeninizin Adı", + "name-optional": "İsim: (İsteğe bağlı)", + "name-your-channel": "Kanalınızı adlandırın", + "name-your-channel-placeholder": "Kanal ismi", + "name-your-community": "Topluluğunuzu adlandırın", + "name-your-community-placeholder": "Akılda kalıcı bir isim", + "need-help": "Yardıma mı ihtiyacınız var?", + "network": "Ağ", + "network-chain": "Ağ zinciri", + "network-details": "Ağ ayrıntıları", + "network-fee": "Ağ ücreti", + "network-id": "Ağ kimliği", + "network-info": "Ağ bilgisi", + "network-invalid-network-id": "Belirtilen ağ kimliği, RPC URL'sinin ağ kimliğine karşılık gelmiyor", + "network-invalid-status-code": "Geçersiz status kodu: {{code}}", + "network-invalid-url": "Ağ URL'si geçersiz", + "network-settings": "Ağ ayarları", + "never": "Hiçbir zaman", + "new": "Yeni", + "new-category": "Yeni kategori", + "new-chat": "Yeni sohbet", + "new-community-title": "Yeni topluluk", + "new-contact": "Yeni iletişim", + "new-contract": "Yeni sözleşme", + "new-favourite": "Yeni favori", + "new-group": "Yeni Grup", + "new-group-chat": "Yeni grup sohbeti", + "new-network": "Yeni ağ", + "new-password": "Yeni Şifre", + "new-pin-description": "Yeni 6 haneli şifre girin", + "new-public-group-chat": "Herkese açık sohbete katılın", + "new-puk-description": "Yeni 12 haneli PUK girin", + "new-status": "Yeni Status", + "new-tab": "Yeni sekme", + "next": "Sonraki", + "nickname": "Takma ad", + "nickname-description": "Takma adlar, Status'da başkalarını tanımanıza yardımcı olur.\n Eklediğiniz takma adlarını yalnızca siz görebilirsiniz", + "no": "Hayır", + "no-collectibles": "Mevcut koleksiyonunuz yok", + "no-contacts": "Henüz kişi yok", + "no-keycard-applet-on-card": "Kartta Keycard uygulaması yok", + "no-messages": "Mesaj yok", + "no-pairing-slots-available": "Bu kart zaten 5 cihazla eşleştirildi ve bu kartla eşleştirilemiyor. Lütfen eşleştirilmiş cihazlardan birini kullanın, bu kartla giriş yapın ve karttaki eşleştirme yuvalarını boşaltın", + "no-pinned-messages": "Sabitlenmiş mesaj yok", + "no-result": "Sonuç yok", + "no-thanks": "Hayır, Teşekkürler", + "no-tokens-found": "Token bulunamadı.", + "node-address": "Node adresi", + "node-details": "Node ayrıntıları", + "node-info": "Node bilgisi", + "node-version": "Düğüm sürümü", + "nodes-disabled": "Status nodeleri devre dışı bırakıldı", + "non-archival-node": "RPC uç noktası arşiv isteklerini desteklemez. Yerel transfer geçmişiniz eksik olabilir.", + "non-contacts": "Kişi olmayanlar", + "nonce": "nonce", + "none": "Hiçbiri", + "normal": "Normal", + "not-applicable": "İmzasız işlemler için geçerli değildir", + "not-connected-nodes": "Bir status nodesine bağlı değil", + "not-connected-to-peers": "Herhangi bir eşe bağlı değil", + "not-enough-snt": "Yeterli SNT yok", + "not-found": "Bulunamadı", + "not-keycard-text": "Kullandığınız kart bir Keycard değil. Kullanmak için bir Keycard satın almanız gerekiyor", + "not-keycard-title": "Keycard değil", + "not-registered": "kayıtlı değil", + "notification-settings": "Bildirimler", + "notifications": "Bildirimler", + "notifications-non-contacts": "Kişi olmayanlardan gelen bildirimler", + "notifications-preferences": "Bildirim Tercihleri", + "notifications-servers": "Bildirim sunucuları", + "notifications-switch": "Bildirimleri göster", + "notifications-transactions": "Cüzdan işlemleri", + "notify": "Bildirim", + "now": "Şimdi", + "off": "Kapalı", + "off-status-tree": "Staus ağacı kapalı", + "offline": "Çevrimdışı", + "offline-messaging-use-history-explanation": "Uygulama kapalıyken gönderilen mesajları almak için Status nodelerini etkinleştirin. Etkinleştirildiğinde, bir Status nodesi ip adresinizi alır. Devre dışı bırakıldığında, uygulama kapatıldığında mesaj almayacaksınız ve uygulamayı daha sonra açtığınızda bunları görmeyeceksiniz.", + "offline-messaging-use-history-nodes": "Status nodelerini kullan", + "ok": "tamam", + "ok-continue": "Tamam, devam et", + "ok-got-it": "Tamam anladım", + "ok-save-pass": "Tamam, şifreyi kaydet", + "okay": "Tamam", + "on": "Aç", + "on-status-tree": "Status ağacında", + "once-enabled-share-metadata": "Etkinleştirildikten sonra, sohbette yayınlanan bağlantılar ve meta verileriniz siteyle paylaşılır.", + "one-day": "Bir gün", + "one-month": "Bir ay", + "one-week": "Bir hafta", + "open": "Açık", + "open-chat": "Sohbeti aç", + "open-dapp": "ÐApp'ı aç", + "open-dapp-store": "ÐApps'ı Keşfedin", + "open-home": "Açık...", + "open-in-new-tab": "Yeni sekmede aç", + "open-membership": "Üyelik açık", + "open-nfc-settings": "NFC ayarlarını aç", + "opening-buy-crypto": "{{site}} açılıyor ...", + "optimal": "En uygun", + "optional": "isteğe bağlı", + "or": "Veya", + "outgoing": "Giden", + "outgoing-transaction": "Giden işlem", + "page-camera-request-blocked": "Kamera istekleri engellendi. Kamera isteklerini etkinleştirmek için Ayarlar'a gidin", + "page-would-like-to-use-camera": "Kameranı kullanmak ister misin", + "pair": "Cihazları eşleştir", + "pair-card": "Bu cihazla eşleştir", + "pair-code": "Eşleme kodu", + "pair-code-explanation": "Anahtarları açmak ve aynı Keycard ile işlemleri imzalamak için kartı farklı bir cihaza (5'e kadar) eşleştirir", + "pair-code-placeholder": "Kodu eşle ...", + "pair-this-card": "Bu kartı eşleştir", + "pair-this-device": "Diğer cihazların telefonunuzu bulmasına izin verin", + "pair-this-device-description": "Kişileri ve sohbetleri aralarında senkronize etmek için cihazlarınızı eşleyin", + "paired-devices": "Eşleşmiş cihazlar", + "pairing": "Eşleştirme", + "pairing-card": "Eşleşen kart", + "pairing-changed": "Eşleştirme kodu değiştirildi", + "pairing-code-placeholder": "Eşleştirme kodu...", + "pairing-code_error1": "Eşleştirme kodları eşleşmiyor.", + "pairing-go-to-installation": "Eşleme ayarlarına gidin", + "pairing-maximum-number-reached-content": "Lütfen yeni bir cihazı etkinleştirmeden önce cihazlarınızdan birini devre dışı bırakın.", + "pairing-maximum-number-reached-title": "Maksimum cihaz sayısına ulaşıldı", + "pairing-new-installation-detected-content": "Yeni bir cihaz algılandı. \n Cihazlarınızı doğru bir şekilde kullanmak için kullanmadan önce eşleştirmek ve etkinleştirmek önemlidir. \n Cihazlarınızı eşleştirmek için lütfen ayarlar altındaki cihaz bölümüne gidin.", + "pairing-new-installation-detected-title": "Yeni cihaz algılandı", + "pairing-no-info": "Bilgi yok", + "pairing-please-set-a-name": "Lütfen cihazınız için bir ad belirleyin.", + "passphrase": "Parola", + "password": "Şifre", + "password-description": "En az 6 karakter. Parolanız anahtarlarınızı korur. Statusun kilidini açmak ve işlem yapmak için buna ihtiyacınız var.", + "password-mismatch": "Yeni şifre ve onay eşleşmiyor", + "password-placeholder": "Parola...", + "password-placeholder2": "Parolanızı doğrulayın", + "password-reset-in-progress": "Şifre değiştiriliyor...", + "password-reset-success": "Parola değiştirildi", + "password-reset-success-message": "Tekrar oturum açmanız gerekecek", + "password_error1": "Parolalar uyuşmuyor.", + "paste": "Yapıştır", + "paste-json": "JSON'u yapıştır", + "pay-to-chat": "Sohbete öde", + "peer-content": "Status sohbet ağına bağlı bir cihaz. Her kullanıcı, cihaz sayısına bağlı olarak bir veya daha fazla eş temsil edebilir.", + "peer-title": "Eş", + "peer-to-peer": "Eşler arası", + "peers": "Eşler", + "pending": "Bekliyor", + "pending-confirmation": "Onay bekleniyor...", + "pending-invitations": "Bekleyen üyelik istekleri", + "per-gas-price-limit": "Gaz başına fiyat limiti", + "per-gas-tip-limit": "Gaz başına uç sınır", + "perform-backup": "Yedeklemeyi gerçekleştir", + "permissions": "İzinler", + "phone-e164": "Uluslararası 1", + "photos": "Fotoğraflar", + "photos-access-error": "Gerekli fotoğraflara izin vermek için lütfen sistem ayarlarınıza gidin ve Status > Fotoğraflar'ın seçili olduğundan emin olun.", + "pin": "Sabit", + "pin-changed": "6 haneli şifre değiştirildi", + "pin-code": "6 haneli şifre", + "pin-limit-reached": "Pin sınırına ulaşıldı. Önce bir önceki mesajın sabitlemesini kaldırın.", + "pin-mismatch": "Yanlış şifre", + "pin-one-attempt": "bir deneme", + "pin-one-attempt-blocked-after": "Keycardınız engellenmeden önce", + "pin-one-attempt-blocked-before": "Sadece, Dikkatli Ol", + "pin-one-attempt-frozen-after": "Keycardınız dondurulmadan önce", + "pin-one-attempt-frozen-before": "Sadece, Dikkatli Ol", + "pin-retries-left": "{{number}} kaldı", + "pinned-by": "tarafından sabitlendi", + "pinned-messages": "Sabitlenmiş mesajlar", + "pinned-messages-count": { + "one": "1 sabitlenmiş mesaj", + "other": "{{count}} sabitlenmiş mesajlar" + }, + "pinned-messages-empty": "Sabitlenmiş mesajlar burada görünecektir. Bir mesajı sabitlemek için, basılı tutun ve \"Sabitle\"ye dokunun", + "preference": "Tecihler", + "preview-privacy": "Gizlilik modunu önizleme", + "previewing-may-share-metadata": "Bu web sitelerinden gelen bağlantılarını önizleyebilir, meta verilerinizi sahipleriyle paylaşabilir.", + "principles": "Prensipler", + "privacy": "Gizlilik", + "privacy-and-security": "Gizlilik ve güvenlik", + "privacy-photos": "Profil fotoğrafı gizliliği", + "privacy-policy": "Gizlilik Politikası", + "privacy-show-to-warning": "Profil resminizi daha önce görmüş olan kişiler bunu yapmaya devam edecek", + "private-key": "Özel anahtar", + "private-notifications": "Özel bildirimler", + "private-notifications-descr": "Status yeni mesajlar hakkında sizi bilgilendirir. Bildirim tercihlerinizi daha sonra ayarlardan düzenleyebilirsiniz.", + "processing": "Sadece bir dakika", + "product-information": "Ürün Bilgisi", + "profile": "Profil", + "profile-deleted-content": "Profiliniz başarıyla silindi", + "profile-deleted-keycard": "Artık Keycardınıza başka bir anahtar çiftini geri yükleyebilirsiniz.", + "profile-deleted-title": "Profil silindi", + "profile-details": "Profil detayları", + "profile-not-found": "Profil bulunamadı", + "profile-pic-pick": "Galeriden seç", + "profile-pic-remove": "Fotoğrafı kaldır", + "profile-pic-take": "Fotoğraf çek", + "profile-picture-updated": "Profil resmi güncellendi", + "public-channel": "Herkese açık kanal", + "public-chat": "Genel sohbet", + "public-chat-description": "İlgi alanlarınız için herkese açık sohbetlere katılın! Herkes yeni bir tane başlatabilir.", + "public-chats": "Genel sohbetler", + "public-group-status": "Genel", + "public-group-topic": "Konu", + "public-key": "Genel anahtar", + "puk-and-pairing-codes-displayed": "PUK ve eşleştirme kodlarını görüntüle", + "puk-changed": "12 haneli PUK değiştirildi", + "puk-code": "PUK kodu", + "puk-code-explanation": "6 basamaklı şifrenizi unutursanız veya 3 kez yanlış girerseniz, kartınızın kilidini açmak için bu koda ihtiyacınız olacak", + "puk-mismatch": "Yanlış PUK kodu", + "push-failed-transaction": "İşleminiz başarısız oldu", + "push-failed-transaction-body": "{{value}} {{currency}} için {{to}}", + "push-inbound-transaction": "{{value}} {{currency}} aldınız", + "push-inbound-transaction-body": "{{from}} gönderen {{from}} - {{to}}", + "push-notifications-server-enabled": "Sunucu etkinleştirildi", + "push-notifications-servers": "Push bildirim sunucuları", + "push-outbound-transaction": "{{value}} {{currency}} gönderdiniz", + "push-outbound-transaction-body": "{{from}} gönderen {{from}} - {{to}}", + "quiet-days": "{{quiet-days}} gün", + "quiet-hours": "{{quiet-hours}} saat", + "re-encrypt-key": "Anahtarlarınızı yeniden şifreleyin", + "rearrange-categories": "Kategorileri yeniden düzenle", + "receive": "Al", + "receive-transaction": "İşlem al", + "recent": "Son", + "recent-empty": "Son kullanılan adresler burada görünecek", + "recent-recipients": "İletişim", + "recently-used-stickers": "Son kullanılan etiketler burada görünecek", + "recipient": "alıcı", + "recipient-code": "Alıcı adresini girin", + "recipient-code-placeholder": "0x ... veya kullanıcıadı.domain.eth", + "recover": "Kurtarmak", + "recover-key": "Mevcut anahtarlara erişin", + "recover-keycard-multiaccount-not-supported": "Bu hesabın anahtarları zaten var ve tekrar eklenemiyor.Parolanızı, şifrenizi veya keycardınızı kaybettiyseniz, uygulamayı kaldırın, kelime imzanızı girerek anahtarlarınızı yeniden yükleyin ve erişin", + "recover-with-keycard": "Keycard ile kurtar", + "recover-with-seed-phrase": "İmza kelimeniz ile kurtar", + "recovering-key": "Anahtarlara erişiliyor ...", + "recovery-confirm-phrase": "Kelime imzanızı onaylayın.", + "recovery-phrase": "Kelime imzanız", + "recovery-success-text": "Anahtarlarınızı yeniden şifrelemek için yeni bir kod veya şifre oluşturmanız gerekecek", + "recovery-typo-dialog-description": "Lütfen dikkat, kelime imzanız için seçtiğiniz kelimelerin her sırası aynı kelimelerden oluşmalıdır.", + "recovery-typo-dialog-title": "Kelime imzası doğru mu?", + "redeem-amount": "{{quantity}}bonusları kullanılabilir", + "redeem-now": "Şimdi kullan", + "redeem-success": "Bonusu başarıyla kullandın!", + "refresh": "Yenile", + "registered": "kayıtlı", + "reject-and-delete": "Reddet ve sil", + "remember-me": "Beni hatırla", + "remind-me-later": "Bunu tekrar göster", + "remote-notifications-subtitle": "Google push bildirimlerini etkinleştirin", + "remove": "Kaldır", + "remove-favourite": "Favoriyi kaldır", + "remove-from-chat": "Sohbetten kaldır", + "remove-from-contacts": "Kişilerden kaldır", + "remove-from-contacts-text": "Bir kullanıcıyı kişi listenizden kaldırsanız bile cüzdan adresinizi onlardan gizleyemezsiniz.", + "remove-group": "Grubu kaldır", + "remove-network": "Ağı kaldır", + "remove-token": "Tokeni Sil", + "removed": "kaldırıldı", + "repeat-pin": "Yeni 6 haneli şifreyi tekrarlayın", + "repeat-puk": "Yeni 12 haneli PUK'u tekrarlayın", + "replying-to": "{{author}} yanıtlanıyor", + "report-bug-email-template": "1. Sorun Açıklaması\n( İstediğiniz özelliği açıklayın veya hatayı ve ne yaptığınızı, ne olmasını beklediğinizi ve gerçekte ne olduğunu kısaca özetleyin. Aşağıdaki bölümler )\n2. Birincil adım\n( Hatayı adım adım nasıl kopyalayabileceğimizi açıklayın. )\nStatus açın\n3. Adım vb.\n3. Beklenen davranış\n( Ne olmasını beklediğinizi açıklayın. )\n4. Gerçek davranış\n( Gerçekte ne olduğunu açıklayın. )\n5. sorunu demo olabilir ekran görüntüleri ekleyin, lütfen", + "request-access": "Erişim talep et", + "request-feature": "Bir özellik isteyin", + "request-membership": "Üyelik iste", + "request-pending": "Bekleyen istek…", + "request-transaction": "İşlem iste", + "required-field": "gerekli alan", + "resend-message": "Yeniden gönder", + "reset-card": "Kartı sıfırla", + "reset-card-description": "Bu işlem kartı başlangıç durumuna sıfırlar. Özel anahtarlar dahil tüm kart verilerini silecektir. İşlem geri döndürülemez.", + "reset-database": "Veritabanını sıfırla", + "reset-database-warning": "Sohbetleri, kişileri ve ayarları silin. Şifrenizi kaybettiğinizde gereklidir", + "reset-database-warning-keycard": "Sohbetleri, kişileri ve ayarları silin.", + "reset-password": "Şifreyi yenile", + "restore-defaults": "Varsayılanları Geri Yükle", + "retry": "Yeniden Dene", + "revoke-access": "Erişimi iptal et", + "rpc-url": "RPC URL'si", + "rpc-usage-copy": "Kopyala", + "rpc-usage-filter": "Filtre yöntemleri", + "rpc-usage-get-stats": "Yenile", + "rpc-usage-info": "RPC kullanım istatistikleri", + "rpc-usage-reset": "Sıfırla", + "safe-estimate": "Güvenli tahmin", + "save": "Kaydet", + "save-password": "Şifreyi kaydet", + "save-password-unavailable": "Şifreyi kaydetmek için cihaz şifresini ayarlayın", + "save-password-unavailable-android": "Şifreyi kaydet kullanılamıyor: cihazınız rootlanmış olabilir veya gerekli güvenlik izinlerine sahip olmayabilir.", + "scan-qr": "QR kodunu tara", + "scan-qr-code": "Cüz adresininin QR ile tarayın.", + "scan-tokens": "Tokenleri tara", + "search": "Arama", + "search-no-chat-found": "Arama sonucu bulunamadı. Ne aramak istedin ?", + "secret-keys-confirmation-text": "Telefonunuzu kaybetmeniz durumunda Keycardınızı kullanmaya devam etmeniz için onlara ihtiyacınız olacaktır.", + "secret-keys-confirmation-title": "Kodları yazdınız mı?", + "security": "Güvenlik", + "see-details": "Ayrıntılara bakınız", + "see-it-again": "TEKRAR GÖR", + "see-suggestions": "Önerileri görün", + "seed-key-uid-mismatch": "İmza kelimeniz eşleşmiyor", + "seed-key-uid-mismatch-desc-1": "Girdiğiniz kelime imza öbeği {{multiaccount-name}} eşleşmiyor", + "seed-key-uid-mismatch-desc-2": "Bu hesabın anahtarlarını yönetmek için kelime imzalarınızı doğrulayın ve tekrar deneyin.", + "seed-phrase-content": "BIP39 standart listesinden rastgele seçilen ve Ethereum hesabınızı diğer cüzdanlarda ve cihazlarda kurtarmak veya erişmek için kullanılan bir dizi okunması kolay kelimeler. Kripto ekosisteminde “anımsatıcı ifade”, “kurtarma ifadesi” veya “cüzdan yedeklemesi” olarak da adlandırılır. Çoğu kripto uygulaması hesap oluşturmak için aynı standardı kullanır.", + "seed-phrase-placeholder": "Kelime imzası...", + "seed-phrase-title": "Kelime imzanız", + "select": "Seçin", + "select-account": "Hesabı seçin", + "select-account-dapp": "Dapps kullanmak istediğiniz hesabı seçiniz.", + "select-account-first": "Önce bir hesap seçin", + "select-chat": "Mesajlaşmaya başlamak için bir sohbet seçin", + "select-new-location-for-keys": "Özel anahtarlarınızı kaydetmek için yeni bir konum seçin", + "selected": "Seçili", + "send-logs": "Hata bildirin", + "send-logs-to": "Bu hatayı {{email}} adresine bildir", + "send-message": "Mesaj gönder", + "send-push-notifications-description": "Devre dışı bırakıldığında, mesajlarınızı alan kişiye mesajın geldiği bildirilmez.", + "send-request": "İstek gönder", + "send-request-amount": "Miktar", + "send-request-amount-max-decimals": "Maksimum ondalık sayı {{asset-decimals}}", + "send-request-unknown-token": "Bilinmeyen token {{asset}}", + "send-sending-to": "{{recipient-name}}için", + "send-transaction": "İşlem gönder", + "sending": "Gönderiyorsun", + "sent-at": "Gönderme tarihi", + "server": "Sunucu", + "set-a-topic": "Konu oluştur", + "set-currency": "Para birimini ayarla", + "set-custom-fee": "Özel ücret belirle", + "set-dapp-access-permissions": "DApp erişim izinlerini ayarla", + "set-max": "Maksimum ayarlayın", + "settings": "Ayarlar", + "share": "Paylaş", + "share-address": "Adresi paylaş", + "share-chat": "Sohbeti paylaş", + "share-contact-code": "Sohbet anahtarımı paylaş", + "share-dapp-text": "Status'da kullandığım şu DApp'e göz atın: {{link}}", + "share-link": "Bağlantıyı paylaş", + "share-logs": "Günlükleri paylaş", + "share-my-profile": "Profilimi paylaş", + "share-profile": "Profili paylaş", + "share-profile-link": "Profil bağlantısını paylaş", + "share-public-chat-text": "Status uygulamasında şu genel sohbete göz atın: {{link}}", + "shared": "Paylaşıldı", + "sharing-copied-to-clipboard": "Kopyalandı", + "sharing-copy-to-clipboard": "Kopyala", + "sharing-data-desc-1": "Hassas verilerin gönderilmediğinden emin olmak için veriler genel kurallara göre doğrulanır. Güvenmeyin, onaylayın.", + "sharing-data-desc-2": "Kullanım verileri, Status eşler arası ağ üzerinden uçtan uca şifreli olarak gönderilir", + "sharing-data-desc-3": "Normal sohbet anahtarınız yerine tek kullanımlık bir anahtar kullanılır", + "sharing-data-desc-4": "Kullanım verileri IP adresinizle ilişkilendirilemez", + "sharing-data-desc-5": "Tüm kullanıcıların toplu verileri herkese açık", + "sharing-data-desc-6": "Veriler gönderildikten sonra telefonunuzdan kaldırılır", + "sharing-share": "Paylaş", + "show-less": "Daha az göster", + "show-more": "Daha fazla göster", + "show-notifications": "Bildirimleri göster", + "show-profile-pictures": "Profil resimlerine bakın", + "show-profile-pictures-to": "Profil resmini göster", + "show-qr": "QR kodunu göster", + "show-transaction-data": "İşlem verilerini göster", + "sign-and-send": "İmzala ve gönder", + "sign-anyway": "Yine de imzala", + "sign-in": "Oturum Aç", + "sign-message": "Mesajı İmzala", + "sign-out": "Oturumu kapat", + "sign-request-failed": "Mesaj imzalanamadı", + "sign-with": "İle imzala", + "sign-with-password": "Şifre ile oturum açın", + "sign-you-in": "Oturumunuz açılıyor…", + "signing": "İmzala", + "signing-a-message": "Mesaj imzalama", + "signing-phrase": "Kelime imzası", + "skip": "Atla", + "slow": "Yavaş", + "something-went-wrong": "Bir şeyler yanlış gitti", + "soon": "Yakında", + "specify-address": "Adresi belirtin", + "specify-name": "Bir ad belirtin", + "specify-network-id": "Ağ kimliğini belirtin", + "specify-rpc-url": "Bir RPC URL'si belirtin", + "specify-server-public-key": "Sunucu genel anahtarını girin", + "specify-symbol": "Bir sembol belirtin", + "start-chat": "Sohbeti başlat", + "start-conversation": "Görüşmeye başla", + "start-group-chat": "Grup sohbeti başlat", + "start-new-chat": "Yeni sohbet başlat", + "starter-pack-coming": "Başlangıç Paketi yolunuzu geliyor", + "starter-pack-coming-description": "Birkaç dakika veya saat sürebilir", + "starter-pack-received": "Başlangıç Paketi alındı", + "starter-pack-received-description": "İşte başlamanız için bazı kriptolar! Çıkartmalar, bir ENS adı almak ve dapp'leri denemek için kullanın", + "status": "Status", + "status-always-online": "Her zaman çevrimiçi", + "status-automatic": "Otomatik", + "status-automatic-subtitle": "Durumu otomatik olarak ayarla", + "status-confirmed": "Onaylandı", + "status-dnd": "Rahatsız etmeyin", + "status-dnd-subtitle": "Tüm bildirimleri sessize al", + "status-hardwallet": "Status hardwallet", + "status-inactive": "etkin değil", + "status-inactive-subtitle": "Çevrimiçi durumunuzu gizler", + "status-is-open-source": "Status açık kaynaklıdır", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status, sohbetleri senkronize ederken çok fazla veri kullanabilir. Mobil ağdayken senkronize etmemeyi seçebilirsiniz", + "status-not-sent-click": "Onaylanmadı. Seçenekler için tıklayın", + "status-not-sent-tap": "Onaylanamadı. Seçenekler için hafifçe dokunun.", + "status-pending": "Bekliyor", + "status-sent": "Gönderildi", + "status-tx-not-found": "TX bulunamadı", + "status-updates-descr": "Status güncellemeleri burada görünecektir. Zaman çizelgenizle ilgili güncellemeleri almak için profili kişi olarak ekleyin.", + "statuses-descr": "Aklınızdakileri paylaşın ve kişilerinizle güncel kalın", + "statuses-my-status-descr": "Aklından geçenleri paylaş. Profilinizi ziyaret eden herkes durumunuzu görebilir. Sizi kişi olarak ekleyen kişiler güncelleştirmelerinizi zaman çizelgelerine göre alır", + "step-i-of-n": "Adım {{step}}{{number}}", + "sticker": "Etiket", + "sticker-market": "Sticker marketi", + "storage": "Depolama", + "submit": "Gönder", + "submit-bug": "Bir hata gönderin", + "success": "Başarılı", + "suggested-min-tip": "Önerilen min.", + "suggested-price-limit": "Önerilen fiyat limiti", + "symbol": "Sembol", + "sync-all-devices": "Tüm cihazları senkronize et", + "sync-in-progress": "Senkronize ediliyor ...", + "sync-settings": "Senkronizasyon ayarları", + "sync-synced": "Senkronize edildi", + "syncing-devices": "Senkronize ediliyor ...", + "system": "Sistem", + "tabs": "Sekmeler", + "tag-was-lost": "Etiket kayboldu", + "tap-card-again": "Telefonunuzun arkasındaki karta hafifçe dokunun.", + "terms-of-service": "Kullanım Şartları", + "test-networks": "Test ağları", + "text-input-disabled": "Lütfen bir dakika bekleyin...", + "thank-you": "Teşekkür ederim", + "this-device": "Bu cihaz", + "this-device-desc": "Anahtarlarınız şifrelenecek ve cihazınızda güvenli bir şekilde saklanacak", + "this-is-you-signing": "Bu sizin kelime imzanız", + "this-will-take-few-seconds": "Bu birkaç saniye sürecek", + "three-days": "Üç gün", + "three-words-description": "Her bir işlemi imzalamadan önce bu 3 kelimeyi görmelisiniz", + "three-words-description-2": "Farklı bir kombinasyon görürseniz işlemi iptal edin ve oturumu kapatın", + "timeline": "Zaman çizelgesi", + "to": "için", + "to-block": "Engelle", + "to-enable-biometric": "{{bio-type-label}} özelliğini etkinleştirmek için kilit açma ekranında şifrenizi kaydetmelisiniz", + "to-encrypt-enter-password": "Hesabızı şifrelemek için lütfen şifrenizi girin.", + "to-see-this-message": "Bu mesajı görmek için,", + "token-auto-validate-decimals-error": "{{address}} adresindeki {{symbol}} belirtecinin yanlış ondalıkları, {{expected}} olarak ayarlandı ancak {{actual}} olarak algılandı", + "token-auto-validate-name-error": "{{address}} adresindeki {{symbol}} belirtecinin yanlış ondalıkları, {{expected}} olarak ayarlandı ancak {{actual}} olarak algılandı", + "token-auto-validate-symbol-error": "{{address}} adresindeki {{symbol}} belirtecinin yanlış ondalıkları, {{expected}} olarak ayarlandı ancak {{actual}} olarak algılandı", + "token-details": "Token detayları", + "topic-name-error": "Yalnızca küçük harfleri (a'dan z'ye), sayılar ve tireler (-) kullanın. Sohbet tuşlarını kullanmayın", + "total-gas": "Toplam gas ucreti", + "transaction": "işlem", + "transaction-data": "Işlem verileri", + "transaction-declined": "İşlem reddedildi", + "transaction-description": "Ağdaki 12 onaydan sonra tamamlanmış olarak düşünün.", + "transaction-details": "Ödeme detayları", + "transaction-failed": "İşlem başarısız oldu.", + "transaction-history": "İşlem geçmişi", + "transaction-request": "İşlem İsteği", + "transaction-sent": "İşlem gönderildi", + "transaction-signed": "İşlem başarıyla imzalandı", + "transactions": "işlemler", + "transactions-filter-select-all": "Hepsini seç", + "transactions-filter-title": "Geçmişi filtrele", + "transactions-history": "İşlem geçmişi", + "transactions-history-empty": "Geçmişinizde henüz işlem yok", + "transactions-history-loading": "İşlem geçmişi yükleniyor. Bu biraz zaman alabilir.", + "transactions-load-more": "Daha fazla yükle", + "transactions-management-enabled": "İşlem yönetimi (alfa)", + "transactions-sign": "İmzala", + "transfer-ma-unknown-error-desc-1": "Görünüşe göre çoklu hesabınız silinmemiş. Veritabanı sıfırlanmış olabilir", + "transfer-ma-unknown-error-desc-2": "Lütfen hesap listenizi kontrol edin ve tekrar deneyin. Hesap listelenmemişse, imza kelimeniz ile kurtarmak için mevcut anahtarlara erişin bölümüne gidin.", + "transfers-fetching-failure": "Transfer geçmişi güncellenemedi. Bağlantınızı kontrol edin ve tekrar denemek için aşağı elinizle kaydırın.", + "tribute-required-by-multiaccount": "{{multiaccount-name}} sohbeti başlatmak için SNT gerekiyor", + "tribute-state-paid": "Ücret ödendi", + "tribute-state-pending": "Ücret bekleniyor", + "tribute-state-required": "{{snt-amount}}Snt ödemesi gerektirir.", + "tribute-to-talk": "Tribute to Talk", + "tribute-to-talk-add-friends": "Ödeme yapmadan sohbetlere izin vermek için arkadaşlarınızı kişi olarak ekleyin.", + "tribute-to-talk-are-you-friends": "Siz arkadaş mısınız?", + "tribute-to-talk-ask-to-be-added": "Kişi olarak eklenmesini isteyin", + "tribute-to-talk-contact-received-your-tribute": "Ücreti aldı. Artık birbirinizle güvenli bir şekilde sohbet edebilirsiniz.", + "tribute-to-talk-desc": "Yeni kişilerin sohbet başlatması için SNT talep ederek dikkatinizi paraya çevirin", + "tribute-to-talk-disabled": "Tribute to Talk devre dışı", + "tribute-to-talk-disabled-note": "Artık yeni kişiler SNT göndermeden sizinle sohbet etmeye başlayabilir.", + "tribute-to-talk-enabled": "Tribute to Talk'u etkinleştirdiniz.", + "tribute-to-talk-finish-desc": "Şu andan itibaren, yalnızca kişilerden ve ödeme yapan kişilerden sohbetler alacaksınız", + "tribute-to-talk-learn-more-1": "Zamanınız ve dikkatiniz en değerli varlıklarınızdır. Tribute to Talk, yeni kişilerin sizinle sohbet etmeye başlaması için gereken miktarda SNT ayarlamanızı sağlar.", + "tribute-to-talk-learn-more-2": "Kişi listenizde olmayan herkesin ödeme yapması istenir ve ödeme yaptıktan sonra yanıt verebilirsiniz.", + "tribute-to-talk-learn-more-3": "Parayı her zaman geri gönderebilirsin, ancak arkadaşlarınızın size özgürce ulaşabilmesini sağlamak için, önce bir kişi olarak ekleyin.", + "tribute-to-talk-paywall-learn-more-1": "Zamanınız ve dikkatiniz en değerli varlıklarınızdır. Tribute to Talk, yeni kişilerin sizinle sohbet etmeye başlaması için gereken miktarda SNT ayarlamanızı sağlar.", + "tribute-to-talk-paywall-learn-more-2": "Ödemesi olan biriyle sohbet etmek için, gerekli SNT'yi ödemeniz yeterlidir ve bir kişi olarak eklenirsiniz.", + "tribute-to-talk-paywall-learn-more-3": "Bunu biliyor muydunuz ? Ücretsiz olarak eklenecek profilinizi Status dışında paylaşabilirsiniz.", + "tribute-to-talk-pending": "Ücret onaylanması bekleniyor", + "tribute-to-talk-pending-note": "Ödeme işlemi ağda onay bekliyor. İşlem geçmişinde durumunu kontrol edebilirsiniz", + "tribute-to-talk-removing-note": "Tribute to Talk'un kaldırılması, yeni kişilerin SNT göndermeden sohbet başlatmasına izin verir.İşlem gerektirir.", + "tribute-to-talk-set-snt-amount": "Yeni kişilerin sohbet başlatabilmesi için gereken SNT miktarını ayarla", + "tribute-to-talk-signing": "İşlem imzalanmayı bekliyor ...", + "tribute-to-talk-transaction-failed-note": "İşlem başarısız oldu ve Tribute to Talk, ayarlarınız değiştirilmedi", + "tribute-to-talk-tribute-received1": "Ücret alındı. Sen ve", + "tribute-to-talk-tribute-received2": "Şimdi kişiler birbirleriyle güvenli bir şekilde sohbet edebilirler.", + "tribute-to-talk-you-require-snt": "Yeni kişiler ile sohbete başlamak için SNT'ye ihtiyacınız var.", + "try-again": "Tekrar deneyin", + "try-keeping-the-card-still": "Kartı sabit tutmayı deneyin", + "turn-nfc-description": "Cihazınızda NFC devre dışı. Ayarlardan etkinleştirebilirsiniz.", + "turn-nfc-on": "Devam etmek için NFC'yi açın", + "tx-fail-description1": "Bu işlem büyük olasılıkla başarısız olacaktır. Özel ağ ücreti kullanarak kendi sorumluluğunuzda işlemi imzalayın.", + "tx-fail-description2": "Bu işlem büyük olasılıkla başarısız olacaktır. Kendi sorumluluğunuzdadır.İşlemi imzalamak için özel bir ağ ücreti belirleyin.", + "type": "Türü", + "type-a-message": "Mesaj", + "ulc-enabled": "ULC etkin", + "unable-to-fetch": "Sohbet geçmişi getirilemiyor", + "unable-to-read-this-code": "Bu kod okunamıyor", + "unable-to-send-messages": "Mesaj gönderilemiyor ve alınamıyor", + "unblock": "Engeli kaldır", + "unblock-contact": "Bu kullanıcının engelini kaldır", + "unknown-status-go-error": "Bilinmeyen status-go hatası", + "unlimited": "Limitsiz", + "unlock": "Kilidini aç", + "unmute": "Sessize Al", + "unpair-card": "Eşleştirilmemiş kart", + "unpair-card-confirmation": "Bu işlem kartın eşleştirmesini mevcut cihazınızdan kaldıracaktır. 6 basamaklı parola yetkilendirmesi gerektirir. Devam etmek istiyor musunuz?", + "unpair-keycard": "Keycardını bu telefondan eşlemesini kaldır", + "unpair-keycard-warning": "Eşleştirme kodunuz\/PUK ve PIN'iniz değişmeden kalır", + "unpaired-keycard-text": "Dokunduğunuz Keycard bu telefonla ilişkili değil", + "unpaired-keycard-title": "Kartınız eşleştirilmemiş gibi görünüyor", + "unpin": "Sabitlemeyi kaldır", + "update": "Güncelleme", + "update-to-listen-audio": "Sesli mesajı dinlemek için en son sürüme güncelleyin!", + "update-to-see-image": "Burada güzel bir görüntü görmek için en son sürüme güncelleyin!", + "update-to-see-sticker": "Burada güzel bir etiket görmek için en son sürüme güncelleyin!", + "updates-to-tos": "Hizmet Şartları Güncellemeleri", + "updates-to-tos-desc": "Devam etmeden önce lütfen Hizmet Şartlarını gözden geçirin ve uygulamayı nasıl kullandığınızla ilgili tüm sorumluluğu üstlendiğinizi onaylayın.", + "url": "URL", + "usd-currency": "Usd", + "use-as-profile-picture": "Profil resmi olarak kullan", + "use-valid-contact-code": "Lütfen geçerli bir sohbet anahtarı veya kullanıcı adı girin veya tarayın", + "validation-amount-invalid-number": "Tutar geçerli bir sayı değil", + "validation-amount-is-too-precise": "Tutar çok hassas. Maksimum ondalık sayı {{decimals}}", + "verified-community": "✓ Doğrulanmış topluluk", + "version": "Uygulama Versiyonu", + "view": "Görünüm", + "view-cryptokitties": "CryptoKitties'te görüntüle", + "view-cryptostrikers": "CryptoStrikers'da görüntüle", + "view-data": "Veriyi gör", + "view-details": "Detayları göster", + "view-etheremon": "Etheremon'da görüntüle", + "view-gitcoin": "Gitcoin'de görüntüle", + "view-on-opensea": "Opensea'de görüntüle", + "view-profile": "Profili Görüntüle", + "view-public-dashboard": "Herkese açık paneli görüntüle.", + "view-rules": "Kuralları görüntüle", + "view-signing": "Kelime imzanızı görüntüle", + "view-superrare": "SuperRare'de görüntüle", + "waiting-for-wifi": "Wi-fi kapalı, mesaj senkronizasyonu devre dışı.", + "waiting-for-wifi-change": "Ayarlar", + "waiting-to-sign": "İşlem imzalanmayı bekliyor ...", + "waiting-wi-fi": "Kablosuz bağlantı bekleniyor…", + "waku-bloom-filter-mode": "Waku Bloom Filtre Modu", + "wakuv2-change-nodes": "Waku v2 nodelerini değiştirmek istediğinden emin misiniz? ", + "wakuv2-node-format": "\/ip4\/ {node-ip} \/tcp\/ {port} \/p2p\/ {id}", + "wakuv2-settings": "Waku v2 ayarları", + "wallet": "Cüzdan", + "wallet-address": "Cüzdan adresi", + "wallet-asset": "Varlık", + "wallet-assets": "Varlıklar", + "wallet-backup-recovery-title": "İmza kelimelerinizi yedekleyin", + "wallet-choose-recipient": "Alıcı'yı Seçin", + "wallet-collectibles": "Koleksiyon", + "wallet-connect": "Cüzdan Bağla", + "wallet-insufficient-funds": "Yetersiz bakiye", + "wallet-insufficient-gas": "Gas için yeterli ETH yok", + "wallet-invalid-address": "Geçersiz adres: \n {{data}}", + "wallet-invalid-address-checksum": "Adres hatası: \n {{data}}", + "wallet-invalid-chain-id": "Ağ eşleşmiyor: \n {{data}} ancak mevcut zincir {{chain}}", + "wallet-key-content": "Ethereum standardını temel alan ve 0x ile başlayan 64 karakterlik onaltılık adres. Herkese açık olarak, para almak istediğinizde hesap adresiniz başkalarıyla paylaşılır. \"Ethereum adresi\" veya \"cüzdan adresi\" olarak da bilinir.", + "wallet-key-title": "Hesap adresi", + "wallet-manage-accounts": "Hesapları yönet", + "wallet-manage-assets": "Varlıkları yönetin", + "wallet-request": "İstek", + "wallet-send": "Gönder", + "wallet-send-min-units": "Min. 21000 adet", + "wallet-send-min-wei": "En az 1 wei", + "wallet-settings": "Cüzdan ayarları", + "wallet-total-value": "Toplam değer", + "wallet-transaction-total-fee": "Toplam ücret", + "wants-to-access-profile": "profilinize erişmek istiyor", + "warning": "Uyarı", + "warning-message": "Maalesef, spam'ı önlemek için hızlı bir şekilde birkaç mesaj göndermeyi sınırlandırıyoruz. Lütfen bir süre sonra tekrar deneyin", + "warning-sending-to-contract-descr": "Girdiğiniz adres akıllı bir sözleşmedir, bu adrese para göndermek para kaybına neden olabilir. Bir DApp ile etkileşim kurmak için, Status DApp Tarayıcısında DApp'ı açın.", + "watch-only": "Yalnızca İzle", + "wc-brand-guide": "Ticari markalar ve logolar gibi markalama kullanımına ilişkin rehberlik", + "wc-disclaimer": "Yasal uyarılar (üçüncü taraf sağlayıcılar dahil), garantiler ve yasal yayınlar", + "wc-dispute": "Uyuşmazlık çözümü hükümleri", + "wc-how-to-use-status-app": "Gizlilik ve güvenlik dahil Status uygulaması nasıl kullanılır?", + "wc-new-tos-based-on-principles-prefix": "Yeni Hizmet Şartlarımız temel alınarak tasarlanmış", + "web-view-error": "Sayfa yüklenemedi", + "websites": "Web siteleri", + "webview-camera-permission-requests": "Web görünümü kamera izin istekleri", + "webview-camera-permission-requests-subtitle": "Etkinleştirildiğinde, web siteleri ve dapp'ler kameranızı kullanmak isteyebilir", + "welcome-blank-community-message": "Topluluklarınız burada görünecek.", + "welcome-blank-message": "Sohbetleriniz burada görünecek. Yeni sohbetler başlatmak için ⊕ düğmesine basın", + "welcome-community-blank-message": "Sohbetleriniz burada görünecek. Yeni sohbetler başlatmak için yukarıdaki 3 noktayı tıklayın ve \"Kanal oluştur\" u seçin", + "welcome-community-blank-message-edit-chats": "Kanallarınız burada görünecek. Yeni bir kanal oluşturmak için topluluk ekranına geri dönün, ⊕ düğmesine tıklayın ve \"Bir kanal oluştur\"u seçin", + "welcome-screen-text": "Cüzdanınızı ayarlayın, arkadaşlarınızı sohbete davet edin \n ve popüler dappslere göz atın!", + "welcome-to-status": "Status'a Hoş Geldiniz!", + "welcome-to-status-description": "Kripto cüzdanınızı ayarlayın, arkadaşlarınızı sohbet etmeye ve merkezi olmayan uygulamalara göz atmaya davet edin", + "what-changed": "Ne değişti", + "what-is-shared": "Paylaşılanlar", + "whats-on-your-mind": "Aklınızdan ne geçiyor…", + "word-count": "Sözcük sayısı", + "word-n": "Kelime # {{number}}", + "word-n-description": "Kelime imzanızı doğru bir şekilde yedekleyip yedeklemediğinizi kontrol etmek için, yukarıdaki # {{number}} kelimesini girin.", + "words-n": { + "one": "kelime", + "other": "kelimeler" + }, + "write-down-and-store-securely": "Kodları yazın ve güvenli bir şekilde saklayın.", + "wrong-address": "Yanlış adres", + "wrong-card": "Yanlış kart", + "wrong-card-text": "Yüklenen kart seçtiğiniz tuşlara karşılık gelmiyor", + "wrong-contract": "Yanlış sözleşme", + "wrong-keycard-text": "Dokunduğunuz Keycard bu telefonla ilişkili değil", + "wrong-keycard-title": "Dokunduğunuz anlaşılıyor \nBu yanlış kaycard", + "wrong-password": "Yanlış şifre", + "wrong-word": "Yanlış kelime", + "yes": "Evet", + "you": "sen", + "you-already-have-an-asset": "Zaten bir {{value}} varlığınız var", + "you-are-all-set": "Hazırsınız!", + "you-are-all-set-description": "Telefonunuzu kaybederseniz, bakiyenize ve sohbet anahtarınıza kelime imzanızı kullanarak erişebilirsiniz", + "you-can-change-account": "Hesap adını ve rengini istediğiniz şekilde değiştirebilirsiniz", + "you-can-choose-preview-websites": "Aşağıdaki web sitelerinden hangilerinin sohbetlerdeki açıklamalarını ve resimlerininin bağlantılarını önizleyebileceğini seçebilirsiniz", + "you-can-fetch": "Sohbet geçmişini getirebilirsiniz", + "you-dont-have-contacts": "Henüz hiç kişiniz yok.", + "you-dont-have-contacts-invite-friends": "Henüz herhangi bir kişiniz yok.\n Arkadaşlarınızı sohbet etmeye davet edin.", + "you-dont-have-stickers": "Henüz çıkartmanız yok", + "you-will-need-this-code": "Statusu açmak ve işlemleri imzalamak için bu koda ihtiyacınız olacaktır", + "you-will-start-from-scratch": "Sıfırdan yeni bir anahtar seti ile başlayacaksınız.", + "your-card-is-frozen": "Keycardınız dondurulmuş. Kart erişimini sıfırla", + "your-contact-code": "Erişim izni vermek, DApp'e sohbet anahtarınızı alma yetkisi verir", + "your-data-belongs-to-you": "Kelime imzanızı kaybederseniz verilerinizi ve bakiyenizide kaybedersiniz.", + "your-data-belongs-to-you-description": "Erişiminizi kaybederseniz, örneğin telefonunuzu kaybederek, anahtarlarınıza yalnızca kelime imzanızla erişebilirsiniz. Ama senin kelime imzan var. Bir yere yaz. Güvende tut.", + "your-keys": "Senin anahtarların", + "your-price-limit": "Fiyat limitiniz", + "your-recovery-phrase": "Kelime imzanız", + "your-recovery-phrase-description": "Bu senin kelime imzan. Bunu senin cüzdanın olduğunu kanıtlamak için kullanıyorsun. Sadece bir kez görüyorsunuz! Kağıda yazın ve güvenli bir yerde saklayın. Cüzdanınızı kaybederseniz veya uygulamayı yeniden yüklerseniz ihtiyacınız olacak.", + "youre-on-mobile-network": "Mobil ağ üzerindesiniz" +} diff --git a/translations/uk.json b/translations/uk.json new file mode 100644 index 00000000000..c24b7d92465 --- /dev/null +++ b/translations/uk.json @@ -0,0 +1,202 @@ +{ + "validation-amount-invalid-number": "Сума недійсна", + "transaction-details": "Деталі транзакції", + "confirm": "Підтвердити", + "description": "Опис", + "amount": "Сума", + "open": "Відкрити", + "close-app-title": "Попередження!", + "members-active": { + "one": "1 контакт", + "other": "{{count}} контакти", + "zero": "немає контактів" + }, + "chat-name": "Назва чату", + "phew-here-is-your-passphrase": "*Уф*, це було непросто, ось ваша парольна фраза *запишіть її і зберігайте в надійному місці!* Вона буде потрібна вам для відновлення облікового запису.", + "public-group-topic": "Тема", + "chat-settings": "Налаштування чату", + "offline": "Оффлайн", + "invited": "запрошений", + "address": "Адреса", + "new-public-group-chat": "Приєднатися до публічного чату", + "datetime-hour": { + "one": "година", + "other": "години" + }, + "wallet-settings": "Налаштування гаманця", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "Підтвердити", + "block": "Блок", + "camera-access-error": "Щоб надати необхідний дозвіл для камери, будь ласка, перейдіть в налаштування системи і переконайтеся, що вибрано Status > Камера.", + "wallet-invalid-address": "Недійсна адреса: \n {{data}}", + "remove": "Видалити", + "add-members": "Додати учасників", + "yes": "Так", + "dapps": "ÐApps", + "network-settings": "Налаштування мережі", + "photos-access-error": "Щоб надати необхідний дозвіл для фото, будь ласка, перейдіть в налаштування системи і переконайтеся, що вибрано Status > Фотографії.", + "hash": "Хеш", + "done": "Готово", + "close-chat": "Видалити чат", + "new-group-chat": "Новий груповий чат", + "wallet": "Гаманець", + "wallet-request": "Запросити", + "sign-in": "Увійти", + "datetime-yesterday": "вчора", + "create-new-account": "Створити новий обліковий запис", + "datetime-ago": "назад", + "contacts": "Контакти", + "got-it": "Зрозуміло", + "public-chats": "Публічні чати", + "not-applicable": "Не можна застосувати для непідписаних транзакцій", + "active-online": "Онлайн", + "password": "Пароль", + "send-request": "Надіслати запит", + "paste-json": "Вставити JSON", + "browsing-title": "Переглядати", + "transactions-history-empty": "У вашій історії ще немає транзакцій", + "discover": "Пошук", + "browsing-cancel": "Скасувати", + "intro-status": "Поспілкуйтеся зі мною в чаті, щоб налаштувати свій аккаунт і змінити свої налаштування!", + "name": "Ім'я", + "gas-price": "Ціна Газу", + "validation-amount-is-too-precise": "Занадто багато цифр після десяткової коми. Найменша сума, яку ви можете надіслати це 1 Wei (1x10^-18 ETH)", + "pending": "В очікуванні", + "copy-transaction-hash": "Копіювати хеш транзакції", + "show-qr": "Показати QR код", + "connect": "Підключитися", + "edit": "Редагувати", + "account-generation-message": "Секундочку, мені потрібно виконати шалено складні розрахунки для створення вашого аккаунта!", + "remove-network": "Видалити мережу", + "no-messages": "Немає повідомлень", + "passphrase": "Парольна фраза", + "recipient": "Одержувач", + "members-title": "Учасники", + "new-group": "Нова група", + "phone-e164": "Міжнародний 1", + "connected": "Підключений", + "rpc-url": "RPC URL-адреса", + "settings": "Налаштування", + "specify-rpc-url": "Вкажіть RPC URL-адресу", + "gas-limit": "Ліміт Газу", + "delete": "Видалити", + "chats": "Чати", + "transaction-sent": "Транзакція відправлена", + "transaction": "Транзакція", + "public-group-status": "Публічний", + "image-source-make-photo": "Сфотографувати", + "chat": "Чат", + "start-conversation": "Почати розмову", + "save": "Зберегти", + "all": "Всі", + "confirmations-helper-text": "Будь ласка, зачекайте як мінімум 12-ти підтверджень, щоб переконатися, що транзакція оброблена безпечно", + "sharing-copy-to-clipboard": "Скопіювати", + "sync-in-progress": "Синхронізація...", + "enter-password": "Введіть пароль", + "send-transaction": "Відправити транзакцію", + "confirmations": "Підтвердження", + "incorrect-code": [ + "str", + "Вибачте, код неправильний, введіть ще раз" + ], + "image-source-gallery": "Вибрати з галереї", + "sync-synced": "Синхронізовано", + "currency": "Валюта", + "status-pending": "В очікуванні", + "connecting-requires-login": "Підключення до мережі вимагає входу в систему", + "datetime-day": { + "one": "день", + "other": "дні" + }, + "request-transaction": "Запит транзакції", + "wallet-send": "Відправити", + "scan-qr": "Сканувати QR код", + "contact-s": { + "one": "контакт", + "other": "контакти" + }, + "gas-used": "Використаний Газ", + "type": "Тип", + "next": "Далі", + "recent": "Останні статуси", + "open-on-etherscan": "Відкрити посилання на Etherscan.io", + "offline-messaging-settings": "Параметри оффлайн повідомленнь", + "share": "Поділитися", + "status": "Status", + "from": "Від", + "wrong-password": "Невірний пароль", + "in-contacts": "В контактах", + "transactions-sign": "Підписати", + "sharing-share": "Поділитися...", + "type-a-message": "Написати повідомлення...", + "usd-currency": "USD", + "url": "URL-адреса", + "add-network": "Додати мережу", + "unknown-status-go-error": "Невідома status-go помилка", + "clear-history": "Видалити історію", + "wallet-manage-assets": "Управління Активами", + "no-contacts": "Поки що немає контактів", + "soon": "Незабаром", + "close-app-content": "Додаток зупиниться і закриється. При повторному відкритті, буде використовуватися обрана мережа", + "datetime-today": "сьогодні", + "web-view-error": "ой, помилка", + "error": "Помилка", + "more": "більше", + "cancel": "Скасувати", + "can-not-add-yourself": "Ви не можете додати себе", + "transaction-description": "Будь ласка, почекайте як мінімум 12 підтверджень, щоб переконатися, що транзакція оброблена безпечно", + "add-to-contacts": "Додати до контактів", + "available": "Доступно", + "You": "Ви", + "main-wallet": "Основний Гаманець", + "transactions": "Транзакції", + "members": { + "one": "1 контакт", + "other": "{{count}} контакти", + "zero": "немає контактів" + }, + "intro-message1": "Ласкаво просимо в Status\nнатисніть на це повідомлення, щоб встановити пароль і почати!", + "eth": "ETH", + "transactions-history": "Історія", + "new-contact": "Новий контакт", + "datetime-second": { + "one": "секунда", + "other": "секунди" + }, + "recover": "Відновити", + "wallet-total-value": "Загальна вартість", + "nonce": "Nonce", + "new-network": "Нова мережа", + "datetime-minute": { + "one": "хвилина", + "other": "хвилин" + }, + "browsing-open-in-android-web-browser": "Відкрити у веб-браузері", + "browsing-open-in-ios-web-browser": "Відкрити у веб-браузері", + "wallet-insufficient-funds": "Недостатньо коштів", + "edit-profile": "Редагувати профіль", + "active-unknown": "Невідомо", + "wallet-invalid-chain-id": "Мережа не відповідає: \n {{data}}", + "transaction-failed": "Не вдалося виконати транзакцію", + "public-key": "Публічний ключ", + "incoming": "Вхідні", + "profile": "Профіль", + "wallet-choose-recipient": "Виберіть Одержувача", + "add-mailserver": "Додати поштовий сервер", + "none": "Жоден", + "removed": "видалений", + "no": "Ні", + "transactions-filter-select-all": "Вибрати все", + "transactions-filter-title": "Фільтри історії", + "message": "Повідомлення", + "here-is-your-passphrase": "Ось ваша парольна фраза *запишіть її і зберігайте в надійному місці!* Вона буде потрібна вам для відновлення облікового запису.", + "wallet-assets": "Активи", + "image-source-title": "Зображення профілю", + "current-network": "Поточна мережа", + "outgoing": "Вихідні", + "left": "вийшов", + "to": "Кому", + "data": "Дані", + "status-sent": "Відправлено", + "cost-fee": "Вартість/Комісія" +} diff --git a/translations/ur.json b/translations/ur.json new file mode 100644 index 00000000000..aa6fb9da9b3 --- /dev/null +++ b/translations/ur.json @@ -0,0 +1,127 @@ +{ + "confirm": "توثیق کریں", + "amount": "رقم", + "members-active": { + "one": "1 ممبر, 1 فعال", + "other": "{{count}} ممبران, {count}} فعال", + "zero": "کوئی ممبر نہیں" + }, + "chat-name": "چیٹ کا نام", + "phew-here-is-your-passphrase": "*اف* یہ مشکل تھا, یہ آپ کی passphrase ہے۔, *اسے لکھ لیں اور اپنے پاس محفوظ کر لیں۔* آپ کو اپنا اکاؤنٹ بحال کرنے کے لیے اس کی ضرورت ہو گی۔", + "public-group-topic": "موضوع", + "chat-settings": "چیٹ کی سیٹنگز", + "offline": "آف لائن", + "invited": "مدعو", + "address": "پتہ", + "new-public-group-chat": "عوامی چیٹ میں شامل ہوں", + "datetime-hour": { + "one": "گھنٹہ", + "other": "گھنٹے" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "remove": "نکالیں", + "add-members": "ممبران شامل کریں", + "done": "ہو گیا", + "close-chat": "چیٹ کو حذف کریں", + "new-group-chat": "نئی گروپ چیٹ", + "sign-in": "سائن اِن کریں", + "datetime-yesterday": "کل", + "create-new-account": "نیا اکاؤنٹ تخلیق کریں", + "datetime-ago": "قبل", + "contacts": "رابطے", + "got-it": "سمجھ گیا", + "active-online": "آن لائن", + "password": "پاسورڈ", + "browsing-title": "براؤز", + "discover": "دریافت", + "browsing-cancel": "منسوخ کریں", + "intro-status": "اپنا اکاؤنٹ سیٹ اپ کرنے اور سیٹنگز تبدیل کرنے کے لیے مجھ سے چیٹ کریں!", + "name": "نام", + "show-qr": "دکھائیں QR", + "connect": "ملیں", + "edit": "تصحیح", + "account-generation-message": "مجھے ایک سیکنڈ دیں، اپ کا اکاؤنٹ تشکیل دینے کے لیے مجھے کچھ ریاضی سے کام کرنا ہے۔!", + "no-messages": "کوئی پیغام نہیں", + "passphrase": "Passphrase", + "recipient": "وصول کنندہ", + "members-title": "ممبران", + "new-group": "نیا گروپ", + "phone-e164": "بین الاقوامی 1", + "settings": "سیٹنگز", + "chats": "چیٹ", + "transaction": "لین دین", + "public-group-status": "عوامی", + "image-source-make-photo": "کھینچیں", + "start-conversation": "بات چیت شروع کریں", + "save": "محفوظ کریں", + "sharing-copy-to-clipboard": "کلپ بورڈ پر نقل کیا گیا", + "sync-in-progress": "سنکرونائز ہو رہا ہے", + "send-transaction": "لین دین بھیجیں", + "incorrect-code": [ + "str", + "معذرت، کوڈ غلط تھا، برائے مہربانی دوبارہ درج کریں" + ], + "image-source-gallery": "گیلری سے چنیں", + "sync-synced": "دوران سنکرونائز", + "status-pending": "زیر غور", + "datetime-day": { + "one": "دن", + "other": "دن" + }, + "scan-qr": "سکین کریں QR", + "contact-s": { + "one": "رابطہ", + "other": "روابط" + }, + "next": "اگلا", + "recent": "حالیہ", + "status": "سٹیٹس", + "from": "سے", + "wrong-password": "غلط پاسورڈ", + "in-contacts": "روابط میں", + "sharing-share": "اشتراک کریں.....", + "type-a-message": "کوئی پیغام ٹائپ کریں....", + "clear-history": "تاریخ مٹا دیں", + "no-contacts": "ابھی یہاں کوئی کنٹیکٹ نہیں", + "datetime-today": "آج", + "web-view-error": "اوہ، غلطی ہو گئی", + "error": "خرابی", + "more": "مزید", + "cancel": "منسوخ کریں", + "can-not-add-yourself": "آپ خود کو شامل نہیں کر سکتے", + "add-to-contacts": "اپنے رابطوں میں درج کریں", + "available": "دستیاب", + "You": "آپ", + "main-wallet": "مرکزی والٹ", + "members": { + "one": "1 ممبر", + "other": "{{count}} ممبران", + "zero": "کوئی ممبر نہیں" + }, + "intro-message1": "سٹیٹس میں خوش آمدید اور اپنا پاسورڈ سیٹ کرنے کے لیے اس کو ٹیپ کریں اور شروعات کریں۔", + "new-contact": "نئے رابطے", + "datetime-second": { + "one": "سیکنڈ", + "other": "سیکنڈ" + }, + "recover": "بحال کریں", + "datetime-minute": { + "one": "منٹ", + "other": "منٹ" + }, + "browsing-open-in-android-web-browser": "ویب براؤزر میں کھولیں", + "browsing-open-in-ios-web-browser": "ویب براؤزر میں کھولیں", + "edit-profile": "پروفائل میں ترمیم کریں", + "active-unknown": "نامعلوم", + "public-key": "Public Key", + "profile": "پروفائل", + "none": "کوئی نہیں", + "removed": "نکال دیا گیا", + "message": "پیغام", + "here-is-your-passphrase": "یہ آپ کی passphrase ہے۔, *ا اکاؤنٹ بحال کرنے کے لیے اس کی ضرورت * ہے۔, *اسے لکھ لیں اور اپنے پاس محفوظ کر لیں۔* آپ کو ا", + "image-source-title": "پروفائل تصویر", + "left": "چھوڑ دیا", + "to": "بجانب", + "status-sent": "بھیج دیا گیا", + "data": "ڈیٹا" +} diff --git a/translations/vi.json b/translations/vi.json new file mode 100644 index 00000000000..4fe537a56bc --- /dev/null +++ b/translations/vi.json @@ -0,0 +1,1327 @@ +{ + "You": "Bạn", + "about-app": "Trong khoảng", + "about-key-storage-content": "Trạng thái sẽ không bao giờ truy cập khóa cá nhân của bạn. Đảm bảo sao lưu cụm từ hạt giống của bạn. Nếu bạn bị mất điện thoại, đó là cách duy nhất để truy cập vào chìa khóa của bạn.", + "about-key-storage-title": "Giới thiệu về bộ nhớ khóa", + "about-names-content": "Không ai có thể giả vờ là bạn! Bạn ẩn danh theo mặc định và không bao giờ phải tiết lộ tên thật của mình. Bạn có thể đăng ký một tên tùy chỉnh với một khoản phí nhỏ.", + "about-names-title": "Không thể thay đổi tên", + "accept": "Chấp nhận", + "accept-and-share-address": "Chấp nhận và chia sẻ địa chỉ", + "access-existing-keys": "Truy cập các khóa hiện có", + "access-key": "Khóa truy cập", + "account-added": "Đã thêm tài khoản", + "account-color": "Màu tài khoản", + "account-content": "Bạn có thể so sánh tài khoản ở Trạng thái với tài khoản ngân hàng. Giống như tài khoản ngân hàng, tài khoản thường có địa chỉ và số dư; Bạn sử dụng tài khoản này để giao dịch trên Ethereum. Bạn có thể có nhiều tài khoản trong ví của mình. Tất cả được truy cập bằng trạng thái mở khóa.", + "account-exists-title": "Tài khoản đã tồn tại", + "account-name": "Tên tài khoản", + "account-settings": "Cài đặt tài khoản", + "account-title": "Tài khoản", + "accounts": "Tài khoản", + "active-online": "Trực tuyến", + "active-unknown": "không xác định", + "add": "Thêm vào", + "add-a-watch-account": "Thêm địa chỉ chỉ xem", + "add-account": "Thêm một tài khoản", + "add-account-description": "Bạn có thể nhập bất kỳ loại tài khoản Ethereum nào để thêm vào ví Trạng thái của mình", + "add-account-incorrect-password": "Mật khẩu dường như không chính xác. Nhập mật khẩu bạn sử dụng để mở khóa ứng dụng.", + "add-an-account": "Thêm một tài khoản", + "add-bootnode": "Thêm bootnode", + "add-contact": "Thêm liên hệ", + "add-custom-token": "Thêm mã thông báo tùy chỉnh", + "add-mailserver": "Thêm nút lịch sử", + "add-members": "Thêm thành viên", + "add-network": "Thêm mạng", + "add-new-contact": "Thêm liên hệ mới", + "add-nickname": "Thêm biệt hiệu (tùy chọn)", + "add-private-key-account": "Thêm tài khoản từ khóa cá nhân", + "add-seed-account": "Thêm tài khoản bằng cụm từ hạt giống", + "add-to-contacts": "Thêm vào liên lạc", + "add-to-contacts-text": "Bằng cách thêm một người dùng vào danh sách liên hệ của bạn, bạn chia sẻ địa chỉ ví của mình", + "add-to-favourites": "Thêm vào mục ưa thích", + "add-watch-account": "Thêm tài khoản chỉ xem", + "address": "Địa chỉ", + "address-or-ens-name": "Địa chỉ hoặc tên ENS", + "address-received": "Địa chỉ đã nhận", + "address-request-accepted": "Yêu cầu địa chỉ được chấp nhận", + "address-requested": "Địa chỉ được yêu cầu", + "advanced": "Nâng cao", + "advanced-settings": "Cài đặt nâng cao", + "advertiser-description": "Bạn đã khám phá ra Trạng thái nhờ một đối tác. Bạn có phiền nếu Trạng thái kiểm tra địa chỉ IP của bạn một lần để họ nhận phần thưởng không? Thông tin này sẽ không được sử dụng cho bất cứ việc gì khác và nó sẽ bị xóa hoàn toàn sau 7 ngày.", + "advertiser-starter-pack-accept": "Chấp nhận", + "advertiser-starter-pack-decline": "Từ chối", + "advertiser-starter-pack-description": "Đây là một số tiền điện tử để bạn bắt đầu! Sử dụng nó để nhận nhãn dán, tên ENS và thử dapp", + "advertiser-starter-pack-title": "Gói khởi động", + "advertiser-title": "Quyền riêng tư theo mặc định", + "agree-by-continuing": "Bằng cách tiếp tục, bạn đồng ý\n cho chúng tôi", + "all": "Tất cả", + "allow": "Cho phép", + "allow-mention-notifications": "Hiển thị @ đề cập", + "allowing-authorizes-this-dapp": "Việc cho phép cho phép DApp này truy xuất địa chỉ ví của bạn và kích hoạt Web3", + "already-have-asset": "Bạn đã có tài sản này", + "amount": "Số tiền", + "appearance": "Xuất hiện", + "apply": "Ứng dụng", + "are-you-sure": "Bạn có chắc không?", + "are-you-sure-description": "Bạn sẽ không thể xem lại toàn bộ cụm từ hạt giống", + "are-you-sure-to-cancel": "Bạn có chắc là muốn hủy bỏ?", + "are-you-sure?": "Bạn có chắc không?", + "ask-in-status": "Đặt câu hỏi hoặc báo cáo lỗi", + "at": "tại", + "attribution-received": "{{attrib}} trong số {{max}} nhận được", + "audio": "Âm thanh", + "audio-recorder": "Máy ghi âm", + "audio-recorder-error": "Lỗi máy ghi âm", + "audio-recorder-max-ms-reached": "Đã đạt được thời gian ghi tối đa", + "audio-recorder-permissions-error": "Bạn phải cấp quyền để gửi tin nhắn âm thanh", + "authorize": "Ủy quyền", + "available": "Có sẵn", + "available-participants": { + "other": "Bạn có thể chọn thêm {{count}} người tham gia" + }, + "back": "Trở lại", + "back-up-seed-phrase": "Sao lưu cụm từ hạt giống", + "back-up-your-seed-phrase": "Sao lưu cụm từ hạt giống của bạn", + "backup-disabled": "Tàn tật", + "backup-recovery-phrase": "Sao lưu cụm từ hạt giống", + "balance": "Thăng bằng", + "begin-set-up": "Bắt đầu thiết lập", + "biometric-auth-android-sensor-desc": "Cảm biến chạm", + "biometric-auth-android-sensor-error-desc": "Thất bại", + "biometric-auth-android-title": "Yêu cầu xác thực", + "biometric-auth-confirm-logout": "Đăng nhập lại", + "biometric-auth-confirm-message": "Xác thực sinh trắc học là bắt buộc để tiếp tục, nếu không thể, vui lòng mở khóa bằng mật khẩu hoặc mật mã của bạn", + "biometric-auth-confirm-title": "Bạn phải xác thực!", + "biometric-auth-confirm-try-again": "Thử lại", + "biometric-auth-error": "Không thể thực hiện xác thực sinh trắc học ( {{code}} )", + "biometric-auth-login-error-title": "Lỗi xác thực sinh trắc học", + "biometric-auth-login-ios-fallback-label": "Nhập mật khẩu", + "biometric-auth-reason-login": "Đăng nhập trong trạng thái", + "biometric-auth-reason-verify": "Xác minh xác thực", + "biometric-disable-bioauth": "tắt {{bio-type-label}}", + "biometric-disable-password-description": "Nếu bạn tắt tính năng này, bạn cũng sẽ", + "biometric-disable-password-title": "Tắt tính năng lưu mật khẩu", + "biometric-enable": "Nếu bạn không muốn nhập mật khẩu của mình mỗi lần để truy cập ứng dụng, hãy bật đăng nhập {{bio-type-label}}", + "biometric-enable-button": "Bật {{bio-type-label}}", + "biometric-enable-keycard": "Nếu bạn không muốn sử dụng Thẻ khóa của mình mỗi lần để truy cập ứng dụng, hãy bật đăng nhập {{bio-type-label}}", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "Vân tay", + "biometric-secure-with": "Bảo mật với {{bio-type-label}}", + "biometric-touchid": "ID cảm ứng", + "blank-keycard-text": "Bạn có thể tiếp tục với thẻ khóa của mình sau khi bạn đã tạo khóa và tên của mình", + "blank-keycard-title": "Có vẻ như bạn đã nhấn vào\n một thẻ khóa trống", + "block": "Khối", + "block-contact": "Chặn người dùng này", + "block-contact-details": "Việc chặn sẽ xóa các tin nhắn trước đây của người dùng này và ngăn những tin nhắn mới tiếp cận bạn", + "blocked-users": "Người dùng bị chặn", + "bootnode-address": "Địa chỉ Bootnode", + "bootnode-details": "Chi tiết Bootnode", + "bootnode-format": "enode: \/\/ {enode-id} @ {ip-address} : {port}", + "bootnodes": "Bootnodes", + "bootnodes-enabled": "Bootnodes đã được kích hoạt", + "bootnodes-settings": "Cài đặt Bootnodes", + "browsed-websites": "Lịch sử trình duyệt sẽ xuất hiện ở đây", + "browser": "Trình duyệt", + "browser-not-secure": "Kết nối không an toàn! Không ký kết các giao dịch hoặc gửi dữ liệu cá nhân trên trang web này.", + "browser-secure": "Kết nối an toàn. Hãy chắc chắn rằng bạn thực sự tin tưởng trang web này trước khi ký kết các giao dịch hoặc nhập dữ liệu cá nhân.", + "browsers": "Các trình duyệt", + "browsing-cancel": "Huỷ bỏ", + "browsing-open-in-android-web-browser": "Mở trong Android", + "browsing-open-in-ios-web-browser": "Mở trong iOS", + "browsing-open-in-status": "Mở ở trạng thái", + "browsing-site-blocked-description1": "Chúng tôi đã phát hiện hoạt động độc hại tiềm ẩn từ địa chỉ này. Để bảo vệ bạn và ví của bạn, chúng tôi đang ngăn điều hướng thêm. \n\n Nếu bạn cho rằng đây là lỗi, hãy cho chúng tôi biết trong", + "browsing-site-blocked-description2": "trò chuyện công khai.", + "browsing-site-blocked-go-back": "Quay lại", + "browsing-site-blocked-title": "Trang web này bị chặn", + "browsing-title": "Duyệt qua", + "bug-report": "Báo cáo lỗi", + "camera-access-error": "Để cấp quyền đối với máy ảnh cần thiết, vui lòng chuyển đến cài đặt hệ thống của bạn và đảm bảo rằng Trạng thái > Máy ảnh được chọn.", + "can-not-add-yourself": "Đó là bạn, để bắt đầu một cuộc trò chuyện, hãy chọn một người khác", + "cancel": "Huỷ bỏ", + "cancel-keycard-setup": "Hủy thiết lập Thẻ khóa", + "cancelling": "Đang hủy", + "cannot-read-card": "Không thể đọc thẻ.\n Vui lòng giữ nó vào mặt sau điện thoại của bạn", + "cannot-use-default-pin": "Mật mã 000000 không được phép.\n Vui lòng sử dụng số khác", + "cant-open-public-chat": "Không thể mở cuộc trò chuyện công khai", + "cant-report-bug": "Không thể báo cáo lỗi", + "card-is-blank": "Thẻ này trống", + "card-reseted": "Thẻ đã được đặt lại", + "card-unpaired": "Thẻ đã được hủy ghép nối khỏi thiết bị hiện tại", + "change-fleet": "Thay đổi hạm đội thành {{fleet}}", + "change-logging-enabled": "Bạn có chắc chắn muốn {{enable}} ghi nhật ký không?", + "change-passcode": "Đổi mật khẩu", + "change-password": "Đổi mật khẩu", + "change-pin": "Thay đổi mật mã 6 chữ số", + "changed-amount-warning": "Số tiền đã được thay đổi từ {{old}} thành {{new}}", + "changed-asset-warning": "Nội dung đã được thay đổi từ {{old}} thành {{new}}", + "chaos-mode": "Chaos Mode", + "chaos-unicorn-day": "Ngày kỳ lân hỗn loạn", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "Trò chuyện", + "chat-and-transact": "Trò chuyện và giao dịch riêng tư với bạn bè", + "chat-is-a-contact": "Tiếp xúc", + "chat-is-not-a-contact": "Không phải là liên hệ", + "chat-key": "Phím trò chuyện", + "chat-key-content": "Tin nhắn trên giao thức Trò chuyện trạng thái được gửi và nhận bằng các khóa mã hóa. Khóa trò chuyện công khai là một chuỗi ký tự bạn chia sẻ với người khác để họ có thể gửi tin nhắn cho bạn trong Trạng thái.", + "chat-key-title": "Khóa trò chuyện", + "chat-link-previews": "Xem trước liên kết trò chuyện", + "chat-name": "Tên trò chuyện", + "chat-name-content": "Ba từ ngẫu nhiên, được lấy theo thuật toán từ khóa trò chuyện của bạn và được sử dụng làm bí danh mặc định của bạn trong trò chuyện. Tên trò chuyện là hoàn toàn duy nhất; không người dùng nào khác có thể có ba từ giống nhau.", + "chat-name-title": "Tên trò chuyện", + "chat-settings": "Cài đặt trò chuyện", + "chats": "Trò chuyện", + "check-on-opensea": "Kiểm tra opensea", + "check-your-recovery-phrase": "Kiểm tra cụm từ hạt giống của bạn", + "choose-authentication-method": "Chọn một phương thức xác thực", + "clear": "Thông thoáng", + "clear-all": "Quet sạch tât cả", + "clear-history": "Xóa lịch sử", + "clear-history-action": "Thông thoáng", + "clear-history-confirmation": "Xóa lịch sử?", + "clear-history-confirmation-content": "Bạn có chắc chắn muốn xóa lịch sử trò chuyện này không?", + "clear-history-title": "Xóa lịch sử?", + "close": "Đóng", + "close-app-button": "Xác nhận", + "close-app-content": "Ứng dụng sẽ dừng và đóng. Khi bạn mở lại, mạng đã chọn sẽ được sử dụng", + "close-app-title": "Cảnh báo!", + "command-button-send": "Gửi", + "community-image-remove": "Tẩy", + "community-invite-title": "Mời gọi", + "community-members-title": "Các thành viên", + "community-share-title": "Chia sẻ", + "complete-hardwallet-setup": "Thẻ này hiện đã được liên kết. Bạn cần nó để ký giao dịch và mở khóa", + "completed": "Đã hoàn thành", + "confirm": "Xác nhận", + "confirm-password-placeholder": "Xác nhận mật khẩu của bạn...", + "confirmation-request": "Đề nghị đơn xác nhận", + "confirmations": "Xác nhận", + "confirmations-helper-text": "Khi giao dịch có 12 xác nhận, bạn có thể coi là nó đã được giải quyết.", + "connect": "Kết nối", + "connect-mailserver-content": "Kết nối với {{name}} ?", + "connected": "Đã kết nối", + "connecting": "Đang kết nối...", + "connecting-requires-login": "Kết nối với mạng khác yêu cầu đăng nhập", + "connection-with-the-card-lost": "Kết nối với thẻ\n đã bị mất", + "connection-with-the-card-lost-setup-text": "Để tiếp tục thiết lập, hãy giữ thẻ để\n mặt sau của điện thoại của bạn và duy trì\n thẻ liên hệ điện thoại", + "connection-with-the-card-lost-text": "Để tiếp tục giữ thẻ vào mặt sau điện thoại của bạn", + "contact-code": "Phím trò chuyện", + "contact-s": { + "other": "liên lạc" + }, + "contacts": "Liên lạc", + "contacts-descr": "Danh bạ của bạn sẽ xuất hiện ở đây. Bạn sẽ nhận được cập nhật trạng thái từ bất kỳ ai mà bạn thêm làm địa chỉ liên hệ", + "contacts-empty": "Các liên hệ có tên ENS sẽ xuất hiện ở đây", + "continue": "Tiếp tục", + "continue-anyway": "Vẫn tiếp tục", + "contract-address": "Địa chỉ hợp đồng", + "contract-interaction": "Hợp đồng tương tác", + "copy-info": "Sao chép thông tin", + "copy-qr": "Sao chép mã", + "copy-to-clipboard": "Sao chép", + "copy-transaction-hash": "Sao chép ID giao dịch", + "cost-fee": "Chi phí \/ Phí", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "Tạo nên", + "create-a-pin": "Tạo mật mã gồm 6 chữ số", + "create-group-chat": "Tạo cuộc trò chuyện nhóm", + "create-multiaccount": "Tạo khóa", + "create-new-key": "Nhận chìa khóa mới", + "create-pin": "Tạo mật mã 6 chữ số", + "create-pin-description": "Bạn sẽ cần thẻ của mình + mật mã gồm 6 chữ số này để mở khóa Trạng thái và xác nhận giao dịch", + "created-group-chat-description": "Bạn đã tạo nhóm {{group-name}}", + "cryptokitty-name": "CryptoKitty # {{id}}", + "currency": "Tiền tệ", + "currency-display-name-aed": "Emirati Dirham", + "currency-display-name-afn": "Afghanistan Người Afghanistan", + "currency-display-name-ars": "Đồng peso của Argentina", + "currency-display-name-aud": "Đô la Úc", + "currency-display-name-bbd": "Đô la Barbados", + "currency-display-name-bdt": "Taka Bangladesh", + "currency-display-name-bgn": "Lev Bungari", + "currency-display-name-bhd": "Dinar Bahrain", + "currency-display-name-bnd": "Đô la Brunei Darussalam", + "currency-display-name-bob": "Bolivia Bolíviano", + "currency-display-name-brl": "Brazil Real", + "currency-display-name-btn": "Ngultrum của người Bhutan", + "currency-display-name-cad": "Đô la Canada", + "currency-display-name-chf": "Franc Thụy Sĩ", + "currency-display-name-clp": "Peso Chile", + "currency-display-name-cny": "Nhân dân tệ Trung Quốc", + "currency-display-name-cop": "Colombia Peso", + "currency-display-name-crc": "Costa Rica Colon", + "currency-display-name-czk": "Koruna Séc", + "currency-display-name-dkk": "Đan Mạch Krone", + "currency-display-name-dop": "Đồng Peso của Cộng hòa Dominica", + "currency-display-name-egp": "Bảng Ai Cập", + "currency-display-name-etb": "Ethiopia Birr", + "currency-display-name-eur": "Euro", + "currency-display-name-gbp": "Đồng bảng anh", + "currency-display-name-gel": "Gruzia Lari", + "currency-display-name-ghs": "Ghana Cedi", + "currency-display-name-hkd": "Đôla Hong Kong", + "currency-display-name-hrk": "Croatia Kuna", + "currency-display-name-huf": "Hungary Forint", + "currency-display-name-idr": "Đồng Rupiah Indonesia", + "currency-display-name-ils": "Shekel Israel", + "currency-display-name-inr": "Rupee Ấn Độ", + "currency-display-name-isk": "Iceland Krona", + "currency-display-name-jmd": "Đô la Jamaica", + "currency-display-name-jpy": "Yen Nhật", + "currency-display-name-kes": "Shilling Kenya", + "currency-display-name-krw": "Hàn Quốc (Hàn Quốc) Won", + "currency-display-name-kwd": "Đồng Dinar của Kuwait", + "currency-display-name-kzt": "Kazakhstan Tenge", + "currency-display-name-lkr": "Rupee Sri Lanka", + "currency-display-name-mad": "Đồng Dirham của Maroc", + "currency-display-name-mdl": "Moldova Leu", + "currency-display-name-mur": "Mauritius Rupee", + "currency-display-name-mwk": "Malawian Kwacha", + "currency-display-name-mxn": "Peso Mexico", + "currency-display-name-myr": "Ringgit Malaysia", + "currency-display-name-mzn": "Mô-dăm-bích Metical", + "currency-display-name-nad": "Đô la Namibia", + "currency-display-name-ngn": "Nigeria Naira", + "currency-display-name-nok": "Na Uy Krone", + "currency-display-name-npr": "Rupee Nepal", + "currency-display-name-nzd": "Đô la New Zealand", + "currency-display-name-omr": "Oman Rial", + "currency-display-name-pen": "Peru Sol", + "currency-display-name-pgk": "Papua New Guinean Kina", + "currency-display-name-php": "Peso Philippines", + "currency-display-name-pkr": "Đồng Rupee Pakistan", + "currency-display-name-pln": "Zloty Ba Lan", + "currency-display-name-pyg": "Guarani của Paraguay", + "currency-display-name-qar": "Riyal Qatar", + "currency-display-name-ron": "Romania Leu", + "currency-display-name-rsd": "Đồng Dinar của Serbia", + "currency-display-name-rub": "Đồng rúp Nga", + "currency-display-name-sar": "Riyal Ả Rập Xê Út", + "currency-display-name-sek": "Krona Thụy Điển", + "currency-display-name-sgd": "Đô la Singapore", + "currency-display-name-thb": "Bạt Thái Lan", + "currency-display-name-try": "Lira Thổ Nhĩ Kỳ", + "currency-display-name-ttd": "Đô la Trinidad và Tobago", + "currency-display-name-twd": "Đô la mới của Đài Loan", + "currency-display-name-tzs": "Đồng Shilling của Tanzania", + "currency-display-name-uah": "Ukraina Hryvnia", + "currency-display-name-ugx": "Đồng Shilling của Ugandan", + "currency-display-name-usd": "Đô la Mĩ", + "currency-display-name-uyu": "Peso Uruguay", + "currency-display-name-vef": "Bolívar Venezuela", + "currency-display-name-vnd": "Việt Nam đồng", + "currency-display-name-zar": "Rand Nam Phi", + "current-network": "Mạng hiện hành", + "current-pin": "Nhập mật mã gồm 6 chữ số", + "current-pin-description": "Nhập mật mã gồm 6 chữ số của bạn để tiếp tục", + "custom": "Tập quán", + "custom-networks": "Mạng tùy chỉnh", + "custom-seed-phrase": "Cụm từ hạt giống không hợp lệ", + "custom-seed-phrase-text-1": "Cụm từ hạt giống này không khớp với từ điển được hỗ trợ của chúng tôi. Kiểm tra các từ sai chính tả.", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "Chấp nhận và mở", + "dapp-starter-pack-description": "Đây là một số tiền điện tử để bạn bắt đầu! Sử dụng nó để nhận nhãn dán, tên ENS và thử dapp", + "dapp-starter-pack-title": "Gói khởi động", + "dapp-would-like-to-connect-wallet": "muốn kết nối với", + "dapps": "ÐApps", + "dapps-permissions": "Quyền DApp", + "dark": "Tối", + "data": "Dữ liệu", + "data-syncing": "Đồng bộ hóa dữ liệu", + "datetime-ago": "trước đây", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "other": "ngày" + }, + "datetime-day-short": { + "other": "D" + }, + "datetime-hour": { + "other": "giờ" + }, + "datetime-hour-short": { + "other": "H" + }, + "datetime-minute": { + "other": "phút" + }, + "datetime-minute-short": { + "other": "M" + }, + "datetime-second": { + "other": "giây" + }, + "datetime-second-short": { + "other": "S" + }, + "datetime-today": "hôm nay", + "datetime-yesterday": "hôm qua", + "decimals": "Số thập phân", + "decline": "Từ chối", + "decryption-failed-content": "Đã xảy ra lỗi khi giải mã dữ liệu của bạn. Bạn có thể cần xóa dữ liệu cũ của mình và tạo tài khoản mới. Nhấn vào “Áp dụng” để xóa hoặc “Hủy” để thử lại", + "default": "Mặc định", + "default-assets": "ERC20 và ERC721 mặc định", + "delete": "Xóa bỏ", + "delete-account": "Xóa tài khoản", + "delete-and-leave-group": "Xóa và rời khỏi nhóm", + "delete-bootnode": "Xóa bootnode", + "delete-bootnode-are-you-sure": "Bạn có chắc chắn muốn xóa bootnode này không?", + "delete-bootnode-title": "Xóa bootnode", + "close-chat": "Xóa trò chuyện", + "close-chat-confirmation": "Bạn có chắc chắn muốn xóa cuộc trò chuyện này không?", + "delete-confirmation": "Xóa bỏ?", + "delete-mailserver": "Xóa nút lịch sử", + "delete-mailserver-are-you-sure": "Bạn có chắc chắn muốn xóa nút lịch sử này không?", + "delete-mailserver-title": "Xóa nút lịch sử", + "delete-message": "Xóa tin nhắn", + "delete-my-account": "Xóa tài khoản của tôi đi", + "delete-my-profile": "Xóa hồ sơ của tôi", + "delete-network-confirmation": "Bạn có chắc chắn muốn xóa mạng này không?", + "delete-network-error": "Vui lòng kết nối với một mạng khác trước khi xóa mạng này", + "delete-network-title": "Xóa mạng?", + "delete-profile": "Xóa hồ sơ", + "delete-profile-warning": "Cảnh báo: Nếu bạn không viết lại cụm từ gốc, bạn sẽ mất quyền truy cập vào tiền của mình sau khi xóa hồ sơ của mình", + "deny": "Phủ nhận", + "derivation-path": "Đường dẫn xuất phát", + "description": "Sự miêu tả", + "dev-mode": "Chế độ phát triển", + "dev-mode-settings": "Cài đặt chế độ phát triển", + "device-syncing": "Đồng bộ hóa thiết bị", + "devices": "Thiết bị", + "disable": "vô hiệu hóa", + "disabled": "Tàn tật", + "disconnected": "Trò chuyện ngoại tuyến", + "discover": "Khám phá", + "dismiss": "Bỏ qua", + "done": "Làm xong", + "dont-ask": "Đừng hỏi tôi nữa", + "edit": "Biên tập", + "edit-group": "Chỉnh sửa nhóm", + "edit-profile": "Chỉnh sửa hồ sơ", + "empty-chat-description": "Không có tin nhắn nào\n trong cuộc trò chuyện này chưa", + "empty-chat-description-one-to-one": "Mọi thư bạn gửi ở đây đều được mã hóa và chỉ bạn mới có thể đọc và", + "empty-chat-description-public": "Ở đây yên tĩnh trong {{quiet-hours}} . Bắt đầu cuộc trò chuyện hoặc", + "empty-chat-description-public-share-this": "chia sẻ cuộc trò chuyện này.", + "empty-pending-invitations-descr": "Những người muốn tham gia nhóm\n thông qua một liên kết mời sẽ xuất hiện ở đây", + "enable": "Kích hoạt", + "enable-all": "Cho phép tất cả", + "enable-link-previews": "Bật xem trước liên kết trong trò chuyện?", + "encrypt-with-password": "Mã hóa bằng mật khẩu", + "ens-10-SNT": "10 SNT", + "ens-add-username": "Thêm tên người dùng", + "ens-agree-to": "Đồng ý với", + "ens-chat-settings": "Cài đặt trò chuyện", + "ens-custom-domain": "Tên miền tùy chọn", + "ens-custom-username-hints": "Nhập toàn bộ tên người dùng bao gồm cả miền tùy chỉnh như username.domain.eth", + "ens-custom-username-taken": "Tên người dùng không thuộc về bạn :(", + "ens-deposit": "Tiền gửi", + "ens-dismiss-message": "Bấm vào đây để loại bỏ", + "ens-displayed-with": "Tin nhắn của bạn được hiển thị cho những người khác với", + "ens-get-name": "Nhận một tên người dùng chung", + "ens-got-it": "OK đã nhận nó", + "ens-locked": "Tên người dùng đã bị khóa. Bạn sẽ không thể phát hành nó cho đến {{date}}", + "ens-name-content": "Bí danh tùy chỉnh cho khóa trò chuyện của bạn mà bạn có thể đăng ký bằng Dịch vụ tên Ethereum. Tên ENS là tên người dùng phi tập trung.", + "ens-name-not-found": "Không thể phân giải tên ENS", + "ens-name-title": "Tên ENS", + "ens-network-restriction": "Chỉ có trên Mainnet", + "ens-no-usernames": "Bạn không có bất kỳ tên người dùng nào được kết nối", + "ens-powered-by": "Được hỗ trợ bởi Dịch vụ tên Ethereum", + "ens-primary-username": "Tên người dùng chính", + "ens-register": "Đăng ký", + "ens-registration-failed": "Để đăng ký tên người dùng, vui lòng thử lại.", + "ens-registration-failed-title": "giao dịch không thành công", + "ens-registration-failure": "Đăng ký không thành công", + "ens-registration-in-progress": "Đang đăng ký ...", + "ens-release-username": "Giải phóng tên người dùng", + "ens-remove-hints": "Xóa sẽ tách tên người dùng khỏi khóa của bạn.", + "ens-remove-username": "Xóa tên người dùng", + "ens-saved": "hiện được kết nối với khóa trò chuyện của bạn và có thể được sử dụng trong Trạng thái.", + "ens-saved-title": "Đã thêm tên người dùng", + "ens-show-username": "Hiển thị tên người dùng ENS của tôi trong các cuộc trò chuyện", + "ens-terms-header": "Điều khoản đăng ký tên", + "ens-terms-point-1": "Tiền được gửi trong 1 năm. SNT của bạn sẽ bị khóa, nhưng không được chi tiêu.", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (Hệ thống đăng ký ENS).", + "ens-terms-point-2": "Sau 1 năm, bạn có thể sang tên và nhận lại tiền đặt cọc hoặc không cần thực hiện hành động nào để giữ tên.", + "ens-terms-point-3": "Nếu các điều khoản của hợp đồng thay đổi - ví dụ: Trạng thái thực hiện nâng cấp hợp đồng - người dùng có quyền phát hành tên người dùng bất kể thời gian được giữ.", + "ens-terms-point-4": "Người kiểm soát hợp đồng không thể truy cập số tiền đã ký gửi của bạn. Chúng chỉ có thể được chuyển trở lại địa chỉ đã gửi chúng.", + "ens-terms-point-5": "(Các) địa chỉ của bạn sẽ được liên kết công khai với tên ENS của bạn.", + "ens-terms-point-6": "Tên người dùng được tạo dưới dạng các nút miền phụ của stateofus.eth và tuân theo các điều khoản hợp đồng thông minh ENS.", + "ens-terms-point-7": "Bạn ủy quyền hợp đồng để chuyển giao SNT thay cho bạn. Điều này chỉ có thể xảy ra khi bạn chấp thuận một giao dịch để cho phép chuyển.", + "ens-terms-point-8": "Các điều khoản này được đảm bảo bởi logic hợp đồng thông minh tại các địa chỉ:", + "ens-terms-point-9": "{{address}} (Trạng thái UsernameRegistrar)", + "ens-terms-registration": "Điều khoản đăng ký tên.", + "ens-test-message": "Chào", + "ens-transaction-pending": "Giao dịch đang chờ xử lý ...", + "ens-understand": "Tôi hiểu rằng địa chỉ ví của tôi sẽ được kết nối công khai với tên người dùng của tôi.", + "ens-username": "Tên người dùng ENS", + "ens-username-already-added": "Tên người dùng đã được kết nối với khóa trò chuyện của bạn và có thể được sử dụng trong Trạng thái.", + "ens-username-available": "✓ Tên người dùng có sẵn!", + "ens-username-connected": "Tên người dùng này do bạn sở hữu và được kết nối với khóa trò chuyện của bạn.", + "ens-username-connected-continue": "Tiếp tục đặt `Hiển thị tên người dùng ENS của tôi trong cuộc trò chuyện`.", + "ens-username-connected-with-different-key": "Tiếp tục sẽ yêu cầu một giao dịch để kết nối tên người dùng với khóa trò chuyện hiện tại của bạn.", + "ens-username-connection-confirmation": "{{username}} sẽ được kết nối sau khi giao dịch hoàn tất.", + "ens-username-hints": "Ít nhất 4 ký tự. Chỉ các chữ cái Latinh, số và chữ thường.", + "ens-username-invalid": "Chỉ ký tự và số.", + "ens-username-owned": "✓ Tên người dùng do bạn sở hữu.", + "ens-username-owned-continue": "Tiếp tục sẽ kết nối tên người dùng này với khóa trò chuyện của bạn.", + "ens-username-registration-confirmation": "Đẹp! Bạn sở hữu {{username}} sau khi giao dịch hoàn tất.", + "ens-username-taken": "Tên người dùng đã được sử dụng :(", + "ens-username-you-can-follow-progress": "Bạn có thể theo dõi tiến trình trong phần Lịch sử giao dịch của ví.", + "ens-usernames": "Tên người dùng ENS", + "ens-usernames-details": "Đăng ký tên người dùng chung để người dùng khác dễ dàng nhận ra", + "ens-want-custom-domain": "Tôi sở hữu một tên miền khác", + "ens-want-domain": "Tôi muốn một miền stateofus.eth", + "ens-welcome-hints": "Tên ENS biến đổi những địa chỉ dài ngoằng đó thành tên người dùng duy nhất.", + "ens-welcome-point-customize": "Tên ENS có thể thay thế tên 3 từ ngẫu nhiên của bạn trong cuộc trò chuyện. Hãy là @yourname thay vì {{name}} .", + "ens-welcome-point-customize-title": "Tùy chỉnh tên trò chuyện của bạn", + "ens-welcome-point-receive": "Những người khác có thể gửi tiền cho bạn qua trò chuyện trong một bước đơn giản.", + "ens-welcome-point-receive-title": "Nhận giao dịch trong trò chuyện", + "ens-welcome-point-register": "Đăng ký một lần để giữ tên mãi mãi. Sau 1 năm, bạn có thể phát hành tên và lấy lại SNT của mình.", + "ens-welcome-point-register-title": "10 SNT để đăng ký", + "ens-welcome-point-simplify": "Bạn có thể nhận tiền bằng tên ENS dễ chia sẻ của mình hơn là hàm băm thập lục phân (0x ...).", + "ens-welcome-point-simplify-title": "Đơn giản hóa địa chỉ ETH của bạn", + "ens-welcome-point-verify": "Bạn có thể xác minh và thêm bất kỳ tên người dùng nào bạn sở hữu trong các bước tiếp theo.", + "ens-welcome-point-verify-title": "Đã sở hữu tên người dùng?", + "ens-your-username": "Tên người dùng của bạn", + "ens-your-usernames": "Tên người dùng của bạn", + "ens-your-your-name": "Tên ENS của bạn", + "enter-12-words": "Nhập 12 từ của cụm từ hạt giống của bạn, được phân tách bằng dấu cách đơn", + "enter-a-private-key": "Nhập khóa cá nhân", + "enter-a-seed-phrase": "Nhập một cụm từ hạt giống", + "enter-address": "Nhập địa chỉ", + "enter-contact-code": "Nhập tên người dùng ENS hoặc khóa trò chuyện", + "enter-pair-code": "Nhập mã ghép nối của bạn", + "enter-pair-code-description": "Mã ghép nối được hiển thị cho bạn trong quá trình thiết lập Thẻ khóa", + "enter-password": "Nhập mật khẩu", + "enter-pin": "Nhập mật mã gồm 6 chữ số", + "enter-puk-code": "Nhập mã PUK", + "enter-puk-code-description": "Mật mã 6 chữ số đã bị chặn.\n Vui lòng nhập mã PUK để mở khóa mật mã.", + "enter-recipient-address-or-username": "Nhập địa chỉ hoặc tên người dùng của người nhận", + "enter-seed-phrase": "Nhập cụm từ hạt giống", + "enter-url": "Nhập URL", + "enter-watch-account-address": "Quét mã QR\n hoặc là\n nhập địa chỉ để xem", + "enter-word": "Nhập từ", + "enter-your-code": "Nhập mật mã gồm 6 chữ số của bạn", + "enter-your-password": "Nhập mật khẩu của bạn", + "error": "lỗi", + "error-unable-to-get-balance": "Không thể lấy số dư", + "error-unable-to-get-prices": "Lỗi chuyển đổi tiền tệ. Làm mới màn hình của bạn để thử lại.", + "error-unable-to-get-token-balance": "Không thể lấy số dư mã thông báo", + "errors": "Lỗi", + "eth": "ETH", + "ethereum-account": "Tài khoản Ethereum", + "ethereum-address": "Địa chỉ Ethereum", + "ethereum-node-started-incorrectly-description": "Nút Ethereum đã được khởi động với cấu hình không chính xác, ứng dụng sẽ bị dừng để khôi phục từ tình trạng đó. Id mạng đã định cấu hình = {{network-id}} , thực tế = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "Nút Ethereum bắt đầu không chính xác", + "etherscan-lookup": "Tra cứu trên Etherscan", + "export-account": "Xuất tài khoản", + "external-storage-denied": "Quyền truy cập vào bộ nhớ ngoài bị từ chối", + "failed": "Thất bại", + "faq": "Các câu hỏi thường gặp", + "favourites": "Yêu thích", + "favourites-empty": "Địa chỉ được thêm vào danh sách yêu thích sẽ xuất hiện ở đây", + "fetch-messages": "↓ Tìm nạp tin nhắn", + "find": "Tìm thấy", + "finish": "Hoàn thành", + "finishing-card-setup": "Hoàn tất thiết lập thẻ", + "fleet": "Hạm đội", + "fleet-settings": "Cài đặt hạm đội", + "follow-your-interests": "Tham gia cuộc trò chuyện công khai và gặp gỡ những người mới", + "free": "↓ Miễn phí", + "from": "Từ", + "gas-limit": "Giới hạn khí", + "gas-price": "Giá xăng", + "gas-used": "Khí sử dụng", + "generate-a-key": "Tạo khóa", + "generate-a-new-account": "Tạo tài khoản", + "generate-a-new-key": "Tạo khóa mới", + "generate-account": "Tạo khóa", + "generate-an-account": "Tạo tài khoản", + "generate-new-key": "Tạo khóa", + "generating-codes-for-pairing": "> Tải phần mềm sản phẩm xuống thẻ\n > Tạo mã mở khóa và ghép nối", + "generating-keys": "Đang tạo khóa ...", + "generating-mnemonic": "Tạo cụm từ hạt giống", + "get-started": "Bắt đầu", + "get-status-at": "Nhận trạng thái tại http:\/\/status.im", + "get-stickers": "Nhận hình dán", + "give-permissions-camera": "Cho phép\n truy cập máy ảnh", + "glossary": "Bảng chú giải", + "go-to-settings": "Đi tới Cài đặt ...", + "got-it": "Hiểu rồi", + "grant-face-id-permissions": "Để cấp quyền Face ID cần thiết, vui lòng chuyển đến cài đặt hệ thống của bạn và đảm bảo rằng Trạng thái > Face ID được chọn", + "group-chat": "Trò chuyện nhóm", + "group-chat-admin": "Admin", + "group-chat-admin-added": "** {{member}} ** đã được làm quản trị viên", + "group-chat-all-contacts-invited": "Tất cả địa chỉ liên hệ của bạn đã có trong nhóm", + "group-chat-created": "** {{member}} ** đã tạo nhóm ** {{name}} **", + "group-chat-decline-invitation": "Từ chối lời mời", + "group-chat-member-added": "** {{member}} ** đã được mời", + "group-chat-member-joined": "** {{member}} ** đã tham gia nhóm", + "group-chat-member-removed": "** {{member}} ** đã rời khỏi nhóm", + "group-chat-members-count": "{{selected}} \/ {{max}} thành viên", + "group-chat-name-changed": "** {{member}} ** đã đổi tên nhóm thành ** {{name}} **", + "group-chat-no-contacts": "Bạn chưa có bất kỳ liên hệ nào.\n Mời bạn bè của bạn bắt đầu trò chuyện", + "group-info": "Thông tin nhóm", + "group-invite": "Mời nhóm", + "group-invite-link": "Liên kết mời nhóm", + "group-membership-request": "Yêu cầu thành viên nhóm", + "gwei": "Gwei", + "hash": "Băm", + "help": "Cứu giúp", + "help-capitalized": "Cứu giúp", + "help-center": "Trung tâm trợ giúp", + "hide-content-when-switching-apps": "Chặn ảnh chụp màn hình", + "hide-content-when-switching-apps-ios": "Ẩn bản xem trước", + "history": "Lịch sử", + "history-nodes": "Các nút lịch sử", + "hold-card": "Giữ thẻ ở mặt sau\n điện thoại của bạn", + "home": "Trang Chủ", + "hooks": "Móc", + "how-it-works": "Làm thế nào nó hoạt động", + "http-gateway-error": "Rất tiếc, yêu cầu không thành công!", + "identifier": "Định danh", + "image": "Hình ảnh", + "image-remove-current": "Loại bỏ hình ảnh hiện tại", + "image-source-gallery": "Chọn từ thư viện", + "image-source-make-photo": "Chiếm lấy", + "image-source-title": "Chỉnh sửa hình ảnh", + "in-contacts": "Trong danh bạ", + "incoming": "Mới đến", + "incoming-transaction": "Giao dịch đến", + "incorrect-code": [ + "str", + "Xin lỗi, mã không chính xác, vui lòng nhập lại" + ], + "increase-gas": "Tăng khí", + "initialization": "Khởi tạo", + "install": "↓ Cài đặt", + "intro-message1": "Chào mừng đến với Trạng thái!\n Nhấn vào tin nhắn này để đặt mật khẩu của bạn và bắt đầu.", + "intro-privacy-policy-note1": "Trạng thái không thu thập hoặc thu lợi từ dữ liệu cá nhân của bạn. Bằng cách tiếp tục, bạn đồng ý với", + "intro-privacy-policy-note2": "Chính sách bảo mật", + "intro-text": "Trạng thái là cửa ngõ của bạn vào web phi tập trung", + "intro-text1": "Trò chuyện qua mạng ngang hàng, được mã hóa nơi tin nhắn không thể bị kiểm duyệt hoặc bị tấn công", + "intro-text2": "Gửi và nhận tài sản kỹ thuật số ở mọi nơi trên thế giới — không cần tài khoản ngân hàng", + "intro-text3": "Khám phá các trò chơi, sàn giao dịch và mạng xã hội nơi bạn chỉ sở hữu dữ liệu của mình", + "intro-title1": "Giao tiếp thực sự riêng tư", + "intro-title2": "Ví tiền điện tử an toàn", + "intro-title3": "Ứng dụng phi tập trung", + "intro-wizard-text1": "Một bộ khóa kiểm soát tài khoản của bạn. Chìa khóa của bạn có trên điện thoại của bạn, vì vậy chỉ bạn mới có thể sử dụng chúng", + "intro-wizard-text2": "Một chìa khóa là để trò chuyện. Nó đi kèm với một cái tên dễ đọc và không thể thay đổi.", + "intro-wizard-text3": "Nếu bạn sở hữu Thẻ khóa, hãy cất chìa khóa của bạn ở đó để tăng cường bảo mật.", + "intro-wizard-text4": "Bảo mật và mã hóa khóa của bạn", + "intro-wizard-text6": "Trạng thái sẽ thông báo cho bạn về tin nhắn mới. Bạn có thể chỉnh sửa tùy chọn thông báo của mình sau trong cài đặt", + "intro-wizard-title-alt4": "Tạo một mật khẩu", + "intro-wizard-title-alt5": "Xác nhận mật khẩu của bạn", + "intro-wizard-title1": "Lấy chìa khóa của bạn", + "intro-wizard-title2": "Chọn tên trò chuyện", + "intro-wizard-title3": "Chọn bộ nhớ chính", + "intro-wizard-title4": "Tạo mật mã gồm 6 chữ số", + "intro-wizard-title5": "Xác nhận mật mã", + "intro-wizard-title6": "Bật thông báo", + "introduce-yourself": "Giới thiệu bản thân bằng một tin nhắn ngắn gọn", + "invalid-address-qr-code": "Mã QR được quét không chứa địa chỉ hợp lệ", + "invalid-format": "Định dạng không hợp lệ\n Phải là {{format}}", + "invalid-key-confirm": "Ứng dụng", + "invalid-key-content": "Không thể mã hóa cơ sở dữ liệu vì tệp bị hỏng. Tiền và khóa trò chuyện của bạn được an toàn. Không thể khôi phục dữ liệu khác, như các cuộc trò chuyện và danh bạ của bạn. {{erase-multiaccounts-data-button-text}} “ {{erase-multiaccounts-data-button-text}} ”, sẽ xóa tất cả dữ liệu khác và cho phép bạn truy cập vào tiền của mình và gửi tin nhắn", + "invalid-number": "Số không hợp lệ", + "invalid-pairing-password": "Mật khẩu ghép nối không hợp lệ", + "invalid-public-chat-topic": "Chủ đề trò chuyện công khai không hợp lệ", + "invalid-range": "Định dạng không hợp lệ, phải từ {{min}} đến {{max}}", + "invite": "Mời gọi", + "invite-button": "Mời gọi", + "invite-chat-accept": "Chấp nhận", + "invite-chat-intro": "Bạn được một người bạn giới thiệu tham gia Trạng thái. Đây là một số tiền điện tử để bạn bắt đầu! Sử dụng nó để đăng ký tên ENS hoặc mua một gói hình dán", + "invite-chat-name": "Giới thiệu bạn bè", + "invite-chat-pending": "Đang chờ xử lý", + "invite-chat-rule": "Việc chấp nhận cũng sẽ thưởng cho bạn bè của bạn một phần thưởng giới thiệu tiền điện tử", + "invite-chat-starter-pack": "Gói khởi động", + "invite-friends": "Mời bạn bè", + "invite-instruction-fifth": "Bạn có thể chọn đổi phần thưởng giới thiệu của mình bất cứ lúc nào.", + "invite-instruction-first": "Bạn gửi một liên kết mời duy nhất đến bạn bè của mình để tải xuống và tham gia Trạng thái", + "invite-instruction-fourth": "Bạn nhận được phần thưởng giới thiệu của mình và bạn bè của bạn Gói Khởi đầu", + "invite-instruction-second": "Bạn bè của bạn tải xuống Trạng thái và tạo tài khoản (trên Android)", + "invite-instruction-third": "Trò chuyện với bạn bè của bạn được bắt đầu, nơi họ xác nhận sự giới thiệu của bạn", + "invite-privacy-policy1": "Bằng cách chấp nhận, bạn đồng ý với chương trình giới thiệu", + "invite-privacy-policy2": "Các điều khoản và điều kiện.", + "invite-receive-account": "Tài khoản để nhận tiền thưởng giới thiệu của bạn", + "invite-reward": "Kiếm tiền điện tử cho mọi người bạn mà bạn mời!", + "invite-reward-friend": "Bạn:", + "invite-reward-friend-description": "Bạn của bạn sẽ nhận được Gói khởi đầu bao gồm một số {{reward}} để bắt đầu", + "invite-reward-friend-name": "Gói khởi động", + "invite-reward-you": "Bạn:", + "invite-reward-you-description": "Mời bạn bè và nhận {{reward}} dưới dạng phần thưởng giới thiệu. Sử dụng nó để nhận nhãn dán, tên ENS và thử dapp", + "invite-reward-you-name": "Tiền thưởng giới thiệu", + "invite-select-account": "Chọn một tài khoản để nhận phần thưởng giới thiệu của bạn", + "invite-warning": "Khuyến mãi này chỉ có hiệu lực cho người dùng thiết bị Android không phải là cư dân của Hoa Kỳ. Bạn bè cần xác nhận giới thiệu trong vòng 7 ngày", + "invited": "được mời", + "join": "Tham gia", + "join-group-chat": "Tham gia nhóm", + "join-group-chat-description": "{{username}} đã mời bạn tham gia nhóm {{group-name}}", + "join-me": "Xin hãy tham gia với tôi trên Trạng thái: {{url}}", + "join-new-private-chat": "Bắt đầu một cuộc trò chuyện riêng tư mới", + "join-new-public-chat": "Tham gia cuộc trò chuyện công khai", + "joined-group-chat-description": "Bạn đã tham gia {{group-name}} từ lời mời của {{username}}", + "key": "Chìa khóa", + "keycard": "Thẻ chìa khóa", + "keycard-access-reset": "Quyền truy cập thẻ khóa được đặt lại", + "keycard-applet-install-instructions": "Để cài đặt applet, vui lòng làm theo hướng dẫn trên https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation", + "keycard-awaiting-description": "Thử di chuyển thẻ xung quanh để tìm đầu đọc NFC trên thiết bị của bạn", + "keycard-awaiting-title": "Vẫn đang tìm kiếm...", + "keycard-blocked": "Thẻ khóa đã bị chặn.\n Bạn cần đặt lại thẻ để tiếp tục sử dụng nó.", + "keycard-can-use-with-new-passcode": "Bạn có thể sử dụng thẻ này với mật mã mới của mình", + "keycard-cancel-setup-text": "Thao tác này sẽ hủy thiết lập thẻ khóa. Bạn nên hoàn tất quá trình thiết lập để sử dụng thẻ khóa. Bạn có thực sự muốn hủy không?", + "keycard-cancel-setup-title": "Hoạt động nguy hiểm", + "keycard-connected-description": "Thử giữ yên thẻ", + "keycard-connected-title": "Đã kết nối", + "keycard-desc": "Sở hữu một Thẻ khóa? Lưu trữ chìa khóa của bạn trên đó; bạn sẽ cần nó cho các giao dịch", + "keycard-dont-ask-card": "Không yêu cầu thẻ để đăng nhập", + "keycard-enter-new-passcode": "Nhập mật mã mới {{step}} \/ 2", + "keycard-error-description": "Kết nối lại thẻ để tiếp tục", + "keycard-error-title": "Kết nối bị mất", + "keycard-free-pairing-slots": "Keycard có {{n}} vị trí ghép nối miễn phí", + "keycard-has-multiaccount-on-it": "Thẻ này đã đầy. Mỗi thẻ có thể chứa một cặp khóa chính", + "keycard-init-description": "Đặt thẻ vào mặt sau điện thoại của bạn để tiếp tục", + "keycard-init-title": "Đang tìm thẻ ...", + "keycard-is-blocked-details": "Bạn không thể sử dụng thẻ này để truy cập hoặc đăng nhập vào tài khoản này nữa. Đã có quá nhiều lần nhập mật mã và mã PUK không thành công.", + "keycard-is-blocked-instructions": "Để truy cập vào tài khoản của bạn, hãy cài đặt lại Trạng thái và sử dụng Thẻ khóa mới, hãy sử dụng ví khác hoặc đặt lại Thẻ khóa theo cách thủ công.", + "keycard-is-blocked-title": "Thẻ khóa bị chặn", + "keycard-is-frozen-details": "Để bảo vệ tài sản của bạn, thẻ của bạn đã bị đóng băng. Đặt lại quyền truy cập thẻ để mở khóa và gửi giao dịch. Tạo mật mã mới và nhập PUK của bạn để truy cập (các) tài khoản của bạn trên thẻ này", + "keycard-is-frozen-reset": "Đặt lại quyền truy cập thẻ", + "keycard-is-frozen-title": "Thẻ khóa bị đóng băng", + "keycard-onboarding-finishing-header": "Kết thúc", + "keycard-onboarding-intro-header": "Lưu trữ chìa khóa của bạn trên Keycard", + "keycard-onboarding-intro-text": "Hãy sẵn sàng, quá trình này có thể mất vài phút, nhưng điều quan trọng là phải bảo mật tài khoản của bạn", + "keycard-onboarding-pairing-header": "Ghép nối thẻ ...", + "keycard-onboarding-preparing-header": "Đang chuẩn bị thẻ ...", + "keycard-onboarding-puk-code-header": "Viết mã xuống\n và lưu trữ chúng một cách an toàn", + "keycard-onboarding-recovery-phrase-description": "Bạn cần cụm từ hạt giống này để lấy lại chìa khóa của mình. Viết nó ra. Giữ nó an toàn, ngoại tuyến và tách biệt với thiết bị này.", + "keycard-onboarding-recovery-phrase-header": "Sao lưu cụm từ hạt giống", + "keycard-onboarding-recovery-phrase-text": "Chỉ dung cho măt. Đây là hạt giống kỳ diệu được sử dụng để tạo ra khóa của bạn.", + "keycard-onboarding-start-header": "Giữ thẻ ở mặt sau\n của điện thoại của bạn để bắt đầu", + "keycard-onboarding-start-step1": "Tạo mật mã", + "keycard-onboarding-start-step1-text": "Khoảng 1 phút. Tạo mật mã gồm 6 chữ số để mã hóa khóa của bạn", + "keycard-onboarding-start-step2": "Viết ra PUK và mã ghép nối", + "keycard-onboarding-start-step2-text": "Khoảng 1 phút. Bạn sẽ cần một mảnh giấy và một cây bút chì cho việc đó", + "keycard-onboarding-start-step3": "Sao lưu cụm từ hạt giống", + "keycard-onboarding-start-step3-text": "Khoảng 1 phút. Ngoài ra, một mảnh giấy và một cây bút chì là cần thiết", + "keycard-onboarding-start-text": "Và duy trì thẻ liên hệ qua điện thoại\n trong quá trình thiết lập. Quá trình thiết lập sẽ mất khoảng 4 phút", + "keycard-processing-description": "Thử giữ yên thẻ", + "keycard-processing-title": "Chế biến...", + "keycard-recovery-intro-button-text": "Bắt đầu khôi phục", + "keycard-recovery-intro-header": "Khôi phục các khóa được lưu trữ trên thẻ khóa", + "keycard-recovery-intro-text": "Nếu bạn đã tạo khóa bằng thẻ khóa trước đây và bây giờ muốn sử dụng các khóa này trên thiết bị này", + "keycard-recovery-no-key-header": "Không có gì để\n phục hồi ở đây", + "keycard-recovery-no-key-text": "Thẻ Keycard của bạn không có khóa nào được lưu trên đó. Để sử dụng nó, hãy tạo một khóa mới và chọn Thẻ khóa của bạn để lưu trữ khóa", + "keycard-recovery-phrase-confirm-header": "Xác nhận cụm từ hạt giống", + "keycard-recovery-phrase-confirmation-text": "Bạn sẽ không có cơ hội thứ hai! Nếu bạn mất quyền truy cập, chẳng hạn như mất thẻ khóa, bạn chỉ có thể truy cập vào các khóa của mình bằng cụm từ hạt giống. Không ai, nhưng bạn có cụm từ hạt giống của bạn. Viết nó ra. Giữ nó an toàn.", + "keycard-recovery-phrase-confirmation-title": "Đã viết cụm từ hạt giống xuống?", + "keycard-recovery-success-header": "Chìa khóa của bạn đã được\n phục hồi thành công", + "keycard-redeem-title": "Đổi thành", + "keycard-redeem-tx": "Đổi tài sản", + "keycard-redeem-tx-desc": "Nhấn vào thẻ để ký và nhận nội dung", + "keycard-reset-passcode": "Đặt lại mật mã", + "keycard-success-description": "Bạn có thể xóa thẻ ngay bây giờ", + "keycard-success-title": "Sự thành công", + "keycard-unauthorized-operation": "Bạn không được phép thực hiện thao tác này.\n Vui lòng nhấn vào thẻ hợp lệ và thử lại.", + "language": "Ngôn ngữ", + "learn-more": "Tìm hiểu thêm", + "learn-more-about-keycard": "Tìm hiểu thêm về Keycard", + "leave": "Rời khỏi", + "leave-chat": "Rời khỏi trò chuyện", + "leave-chat-confirmation": "Bạn có chắc chắn muốn rời khỏi cuộc trò chuyện không?", + "leave-confirmation": "Rời khỏi trò chuyện", + "leave-group": "Rời khỏi nhóm", + "left": "trái", + "les-ulc": "LES \/ ULC", + "lets-go": "Đi nào", + "light": "Ánh sáng", + "linked-on": "Được liên kết vào {{date}}", + "load-messages-before": "trước {{date}}", + "load-more-messages": "↓ Tìm nạp thêm tin nhắn", + "loading": "Đang tải...", + "local-notifications": "Thông báo địa phương", + "lock-app-with": "Khóa ứng dụng bằng", + "log-level": "Mức đăng nhập", + "log-level-settings": "Cài đặt cấp độ nhật ký", + "logging": "Ghi nhật ký", + "logging-enabled": "Ghi nhật ký được bật?", + "login-pin-description": "Nhập mật mã gồm 6 chữ số của bạn để mở khóa", + "logout": "Đăng xuất", + "logout-app-content": "Tài khoản sẽ được đăng xuất. Khi bạn mở khóa lại, mạng đã chọn sẽ được sử dụng", + "logout-are-you-sure": "Bạn có chắc bạn muốn\n thoát ra?", + "logout-title": "Đăng xuất?", + "looking-for-cards": "Đang tìm thẻ ...", + "lost-connection": "Mất kết nối", + "mail-should-be-configured": "Ứng dụng thư phải được định cấu hình", + "mailserver-address": "Địa chỉ nút lịch sử", + "mailserver-automatic": "Lựa chọn tự động", + "mailserver-automatic-switch-explanation": "Chọn nút lịch sử nhanh nhất hiện có", + "mailserver-connection-error": "Không thể kết nối với nút lịch sử", + "mailserver-content": "Một nút trong mạng Trạng thái định tuyến và lưu trữ thông báo, trong tối đa 30 ngày.", + "mailserver-details": "Chi tiết nút lịch sử", + "mailserver-error-content": "Không thể truy cập vào nút lịch sử bạn đã chọn.", + "mailserver-error-title": "Lỗi khi kết nối với nút lịch sử", + "mailserver-format": "enode: \/\/ {enode-id} : {password} @ {ip-address} : {port}", + "mailserver-pick-another": "Chọn một nút lịch sử khác", + "mailserver-reconnect": "Không thể kết nối với nút lịch sử. Nhấn để kết nối lại", + "mailserver-request-error-content": "Nút lịch sử trả về lỗi sau: {{error}}", + "mailserver-request-error-status": "Đã xảy ra lỗi khi tìm nạp lịch sử, hãy kiểm tra nhật ký để biết chi tiết", + "mailserver-request-error-title": "Lỗi yêu cầu nút lịch sử", + "mailserver-request-retry": "Yêu cầu thử lại", + "mailserver-retry": "Thử lại", + "mailserver-title": "Nút lịch sử", + "main-currency": "Tiền tệ chính", + "main-networks": "Các mạng chính", + "main-wallet": "Ví chính", + "mainnet-network": "Mạng chính", + "make-admin": "Làm quản trị viên", + "mark-all-read": "đánh dấu tất cả đã đọc", + "maybe-later": "Có lẽ sau", + "members": { + "other": "{{count}} thành viên" + }, + "members-active": { + "other": "{{count}} thành viên" + }, + "members-active-none": "không có thành viên", + "members-count": "{{count}} thành viên", + "members-label": "Các thành viên", + "members-limit-reached": "Đã đạt đến giới hạn thành viên", + "members-title": "Các thành viên", + "membership-declined": "Yêu cầu tư cách thành viên đã bị từ chối", + "membership-description": "Tư cách thành viên nhóm yêu cầu bạn phải được quản trị viên nhóm chấp nhận", + "membership-none": "không ai", + "message": "Thông điệp", + "message-not-sent": "Tin nhắn chưa được gửi", + "message-options-cancel": "Huỷ bỏ", + "message-reply": "Đáp lại", + "messages": "Tin nhắn", + "might-break": "Có thể phá vỡ một số ÐApps", + "migrations-failed-content": "{{message}}\n phiên bản giản đồ: ban đầu {{initial-version}} , {{current-version}} , {{last-version}} \n\n Đã xảy ra lỗi cơ sở dữ liệu. Tiền và khóa trò chuyện của bạn được an toàn. Không thể khôi phục các dữ liệu khác như cuộc trò chuyện và danh bạ của bạn. {{erase-multiaccounts-data-button-text}} \" {{erase-multiaccounts-data-button-text}} \", sẽ xóa tất cả dữ liệu khác và cho phép bạn truy cập vào tiền của mình và gửi tin nhắn.", + "mobile-network-ask-me": "Hỏi tôi khi ở trên mạng di động", + "mobile-network-continue-syncing": "Tiếp tục đồng bộ hóa", + "mobile-network-continue-syncing-details": "Bạn có thể thay đổi điều này sau trong cài đặt", + "mobile-network-go-to-settings": "Đi tới cài đặt", + "mobile-network-settings": "Dữ liệu di động", + "mobile-network-sheet-configure": "Bạn có thể định cấu hình đồng bộ hóa trong nhiều hơn nữa\n chi tiết trong", + "mobile-network-sheet-offline": "Không có Wi-Fi, đồng bộ hóa tin nhắn bị tắt.", + "mobile-network-sheet-offline-details": "Đồng bộ hóa bằng mạng di động bị tắt", + "mobile-network-sheet-remember-choice": "Hãy nhớ sự lựa chọn của tôi", + "mobile-network-sheet-settings": "cài đặt", + "mobile-network-start-syncing": "Bắt đầu đồng bộ hóa", + "mobile-network-stop-syncing": "Dừng đồng bộ hóa", + "mobile-network-stop-syncing-details": "Cho đến khi kết nối với Wi-Fi?", + "mobile-network-use-mobile": "Sử dụng dữ liệu di động", + "mobile-network-use-mobile-data": "Trạng thái sử dụng nhiều dữ liệu khi đồng bộ hóa cuộc trò chuyện và ví.", + "mobile-network-use-wifi": "Chỉ wifi", + "mobile-syncing-sheet-details": "Trạng thái sử dụng nhiều dữ liệu khi đồng bộ hóa cuộc trò chuyện và ví.", + "mobile-syncing-sheet-title": "Đồng bộ hóa bằng dữ liệu di động?", + "more": "hơn", + "multiaccount-exists-content": "Các khóa cho tài khoản này đã tồn tại và không thể thêm lại. Nếu bạn bị mất mật khẩu, mật mã hoặc Thẻ khóa, hãy gỡ cài đặt ứng dụng, cài đặt lại và truy cập các khóa của bạn bằng cách nhập cụm từ hạt giống của bạn", + "multiaccount-exists-title": "Các khóa cho tài khoản này đã tồn tại", + "multiaccounts-recover-enter-phrase-text": "Nhập 12, 15, 18, 21 hoặc 24 từ.\n Phân cách các từ bằng một khoảng trắng.", + "multiaccounts-recover-enter-phrase-title": "Nhập cụm từ hạt giống của bạn", + "mute": "Tắt tiếng", + "my-accounts": "Tài khoản của tôi", + "my-accounts-empty": "Các tài khoản khả dụng của bạn sẽ xuất hiện ở đây", + "my-status": "Trạng thái của tôi", + "name": "Tên", + "name-of-token": "Tên mã thông báo của bạn", + "name-optional": "Tên (tùy chọn)", + "need-help": "Cần giúp đỡ?", + "network": "Mạng lưới", + "network-chain": "Chuỗi mạng", + "network-details": "Chi tiết mạng", + "network-fee": "Phí mạng", + "network-id": "ID mạng", + "network-info": "Thông tin mạng", + "network-invalid-network-id": "Id mạng đã chỉ định không tương ứng với id mạng theo url RPC", + "network-invalid-status-code": "Mã trạng thái không hợp lệ: {{code}}", + "network-invalid-url": "URL mạng không hợp lệ", + "network-settings": "Thiết lạp mạng lưới", + "new": "Mới", + "new-chat": "Cuộc trò truyện mới", + "new-contact": "Địa chỉ liên lạc mới", + "new-contract": "Liên hệ mới", + "new-favourite": "Yêu thích mới", + "new-group": "Nhóm mới", + "new-group-chat": "Trò chuyện nhóm mới", + "new-network": "Mạng mới", + "new-pin-description": "Nhập mật mã 6 chữ số mới", + "new-public-group-chat": "Tham gia trò chuyện công khai", + "new-status": "Trạng thái mới", + "next": "Kế tiếp", + "nickname": "Tên nick", + "nickname-description": "Biệt hiệu giúp bạn xác định những người khác trong Trạng thái.\n Chỉ bạn mới có thể xem các biệt hiệu bạn đã thêm", + "no": "Không", + "no-collectibles": "Không có sẵn sưu tầm", + "no-contacts": "Chưa có liên hệ", + "no-keycard-applet-on-card": "Không có applet Keycard trên thẻ", + "no-messages": "Không có tin nhắn", + "no-pairing-slots-available": "Thẻ này đã được ghép nối với 5 thiết bị và không thể ghép nối với thiết bị này. Vui lòng sử dụng một trong các thiết bị được ghép nối, đăng nhập bằng thẻ này và giải phóng các khe ghép nối trên thẻ", + "no-result": "Ko có kết quả", + "no-tokens-found": "Không tìm thấy mã thông báo", + "node-info": "Thông tin nút", + "node-version": "Phiên bản nút", + "nonce": "Nonce", + "none": "không ai", + "not-applicable": "Không áp dụng cho các giao dịch chưa ký", + "not-enough-snt": "Không đủ SNT", + "not-keycard-text": "Thẻ bạn đã sử dụng không phải là Thẻ khóa. Bạn cần mua Thẻ khóa để sử dụng", + "not-keycard-title": "Không phải thẻ khóa", + "not-registered": "chưa đăng ký", + "notification-settings": "Thông báo", + "notifications": "Thông báo", + "notifications-non-contacts": "Thông báo từ những người không liên hệ", + "notifications-preferences": "Tùy chọn thông báo", + "notifications-servers": "Máy chủ thông báo", + "notifications-switch": "Hiển thị thông báo", + "notifications-transactions": "Giao dịch ví", + "notify": "Thông báo", + "now": "Hiện nay", + "off": "Tắt", + "off-status-tree": "Cây trạng thái tắt", + "offline": "Ngoại tuyến", + "offline-messaging-use-history-explanation": "Bật các nút lịch sử để tìm nạp các tin nhắn đã được gửi trong khi ứng dụng bị đóng. Khi được bật, nút lịch sử sẽ lấy địa chỉ IP của bạn. Khi bị vô hiệu hóa, bạn sẽ không nhận được tin nhắn khi ứng dụng bị đóng và sẽ không nhìn thấy chúng khi bạn mở ứng dụng sau đó.", + "offline-messaging-use-history-nodes": "Sử dụng các nút lịch sử", + "ok": "đồng ý", + "ok-continue": "Được rồi, tiếp tục", + "ok-got-it": "Được rồi hiểu rồi", + "ok-save-pass": "OK, lưu mật khẩu", + "okay": "Được chứ", + "on": "Trên", + "on-status-tree": "Trên cây trạng thái", + "once-enabled-share-metadata": "Sau khi được bật, các liên kết được đăng trong cuộc trò chuyện có thể chia sẻ siêu dữ liệu của bạn với trang web", + "open": "Mở", + "open-dapp": "Mở ÐApp", + "open-dapp-store": "Khám phá ÐApps", + "open-home": "Mở...", + "open-nfc-settings": "Mở cài đặt NFC", + "optional": "không bắt buộc", + "or": "HOẶC LÀ", + "outgoing": "Hướng ngoaị", + "outgoing-transaction": "Giao dịch gửi đi", + "page-camera-request-blocked": "yêu cầu máy ảnh bị chặn. Để kích hoạt yêu cầu máy ảnh, hãy đi tới Cài đặt", + "page-would-like-to-use-camera": "muốn sử dụng máy ảnh của bạn", + "pair": "Ghép nối thiết bị", + "pair-card": "Ghép nối với thiết bị này", + "pair-code": "Ghép nối mã", + "pair-code-explanation": "Ghép nối thẻ với một thiết bị khác (tối đa 5) để mở khóa và ký giao dịch bằng cùng một Thẻ khóa", + "pair-code-placeholder": "Ghép nối mã ...", + "pair-this-card": "Ghép nối thẻ này", + "pair-this-device": "Quảng cáo thiết bị", + "pair-this-device-description": "Ghép nối các thiết bị của bạn để đồng bộ hóa danh bạ và cuộc trò chuyện giữa chúng", + "paired-devices": "Các thiết bị được ghép nối", + "pairing": "Ghép nối", + "pairing-card": "Thẻ ghép nối", + "pairing-go-to-installation": "Đi tới cài đặt ghép nối", + "pairing-maximum-number-reached-content": "Vui lòng tắt một trong các thiết bị của bạn trước khi bật thiết bị mới.", + "pairing-maximum-number-reached-title": "Đã đạt đến số lượng thiết bị tối đa", + "pairing-new-installation-detected-content": "Một thiết bị mới đã được phát hiện.\n Để sử dụng thiết bị của bạn một cách chính xác, điều quan trọng là phải ghép nối và bật chúng trước khi sử dụng.\n Vui lòng chuyển đến phần thiết bị trong cài đặt để ghép nối các thiết bị của bạn.", + "pairing-new-installation-detected-title": "Đã phát hiện thiết bị mới", + "pairing-no-info": "Không có thông tin", + "pairing-please-set-a-name": "Vui lòng đặt tên cho thiết bị của bạn.", + "passphrase": "Cụm mật khẩu", + "password": "Mật khẩu", + "password-description": "Ít nhất 6 kí tự. Mật khẩu của bạn bảo vệ các khóa của bạn. Bạn cần nó để mở khóa Trạng thái và giao dịch.", + "password-placeholder": "Mật khẩu...", + "password-placeholder2": "Xác nhận mật khẩu của bạn", + "password_error1": "Mật khẩu không khớp.", + "paste": "Dán", + "paste-json": "Dán JSON", + "pay-to-chat": "Trả tiền để trò chuyện", + "peer-content": "Một thiết bị được kết nối với mạng trò chuyện Trạng thái. Mỗi người dùng có thể đại diện cho một hoặc nhiều đồng nghiệp, tùy thuộc vào số lượng thiết bị của họ.", + "peer-title": "Ngang nhau", + "peers": "Ngang hàng", + "pending": "Đang chờ xử lý", + "pending-confirmation": "Chờ xác nhận...", + "pending-invitations": "Yêu cầu thành viên đang chờ xử lý", + "permissions": "Quyền", + "phone-e164": "Quốc tế 1", + "photos": "Ảnh", + "photos-access-error": "Để cấp quyền cho ảnh cần thiết, vui lòng chuyển đến cài đặt hệ thống của bạn và đảm bảo rằng Trạng thái > Ảnh được chọn.", + "pin-changed": "Mật mã 6 chữ số đã được thay đổi", + "pin-code": "Mật mã 6 chữ số", + "pin-mismatch": "Mật mã sai", + "pin-one-attempt": "một lần thử", + "pin-one-attempt-blocked-after": "trước khi Thẻ khóa của bạn bị chặn", + "pin-one-attempt-blocked-before": "Hãy cẩn thận, bạn chỉ có", + "pin-one-attempt-frozen-after": "trước khi thẻ Keycard của bạn bị đóng băng", + "pin-one-attempt-frozen-before": "Hãy cẩn thận, bạn chỉ có", + "pin-retries-left": "{{number}} còn lại", + "preference": "Sở thích", + "preview-privacy": "Xem trước chế độ bảo mật", + "previewing-may-share-metadata": "Xem trước các liên kết từ các trang web này có thể chia sẻ siêu dữ liệu của bạn với chủ sở hữu của chúng", + "privacy": "Riêng tư", + "privacy-and-security": "Quyền riêng tư và bảo mật", + "privacy-policy": "Chính sách bảo mật", + "private-key": "Khóa cá nhân", + "private-notifications": "Thông báo riêng tư", + "private-notifications-descr": "Trạng thái sẽ thông báo cho bạn về tin nhắn mới. Bạn có thể chỉnh sửa tùy chọn thông báo của mình sau trong cài đặt.", + "processing": "Chờ một chút", + "product-information": "Thông tin sản phẩm", + "profile": "Hồ sơ", + "profile-deleted-content": "Hồ sơ của bạn đã được xóa thành công", + "profile-deleted-title": "Hồ sơ đã bị xóa", + "profile-details": "Chi tiết hồ sơ", + "profile-pic-pick": "Chọn từ thư viện", + "public-chat": "Trò chuyện công khai", + "public-chat-description": "Tham gia các cuộc trò chuyện công khai vì sở thích của bạn! Bất kỳ ai cũng có thể bắt đầu một cái mới.", + "public-chats": "Trò chuyện công khai", + "public-group-status": "Công cộng", + "public-group-topic": "Đề tài", + "public-key": "Khóa công khai", + "puk-and-pairing-codes-displayed": "Mã PUK và mã ghép nối được hiển thị", + "puk-code": "Mã PUK", + "puk-code-explanation": "Nếu bạn quên mật mã gồm 6 chữ số hoặc nhập sai 3 lần, bạn sẽ cần mã này để mở khóa thẻ của mình.", + "puk-mismatch": "Mã PUK sai", + "push-failed-transaction": "Giao dịch của bạn không thành công", + "push-failed-transaction-body": "{{value}} {{currency}} thành {{to}}", + "push-inbound-transaction": "Bạn đã nhận được {{value}} {{currency}}", + "push-inbound-transaction-body": "Từ {{from}} đến {{to}}", + "push-notifications-server-enabled": "Máy chủ được kích hoạt", + "push-notifications-servers": "Máy chủ thông báo đẩy", + "push-outbound-transaction": "Bạn đã gửi {{value}} {{currency}}", + "push-outbound-transaction-body": "Từ {{from}} đến {{to}}", + "quiet-days": "{{quiet-days}} ngày", + "quiet-hours": "{{quiet-hours}} giờ", + "re-encrypt-key": "Mã hóa lại khóa của bạn", + "receive": "Nhận được", + "receive-transaction": "Nhận giao dịch", + "recent": "Gần đây", + "recent-empty": "Các địa chỉ được sử dụng gần đây sẽ xuất hiện ở đây", + "recent-recipients": "Liên lạc", + "recently-used-stickers": "Các nhãn dán được sử dụng gần đây sẽ xuất hiện ở đây", + "recipient": "Người nhận", + "recipient-code": "Nhập địa chỉ người nhận", + "recipient-code-placeholder": "0x ... hoặc username.domain.eth", + "recover": "Bình phục", + "recover-key": "Truy cập các khóa hiện có", + "recover-keycard-multiaccount-not-supported": "Các khóa cho tài khoản này đã tồn tại và không thể thêm lại. Nếu bạn bị mất mật khẩu, mật mã hoặc Thẻ khóa, hãy gỡ cài đặt ứng dụng, cài đặt lại và truy cập các khóa của bạn bằng cách nhập cụm từ hạt giống của bạn", + "recover-with-keycard": "Phục hồi bằng thẻ khóa", + "recovering-key": "Đang truy cập các phím ...", + "recovery-confirm-phrase": "Xác nhận cụm từ hạt giống", + "recovery-phrase": "Cụm từ hạt giống", + "recovery-success-text": "Bạn sẽ phải tạo mã hoặc mật khẩu mới để mã hóa lại khóa của mình", + "recovery-typo-dialog-description": "Xin lưu ý, cụm từ hạt giống của bạn phải sử dụng chính xác các từ và thứ tự như bạn nhận được", + "recovery-typo-dialog-title": "Cụm từ hạt giống có đúng không?", + "redeem-amount": "{{quantity}} có sẵn", + "redeem-now": "Đổi ngay", + "redeem-success": "Đổi tiền thưởng thành công!", + "refresh": "Làm tươi", + "registered": "đã đăng ký", + "remember-me": "Nhớ tôi", + "remind-me-later": "Cho tôi xem lại cái này", + "remove": "Tẩy", + "remove-from-chat": "Xóa khỏi trò chuyện", + "remove-from-contacts": "Xóa khỏi danh bạ", + "remove-from-contacts-text": "Bằng cách xóa một người dùng khỏi danh sách liên hệ của bạn, bạn không ẩn địa chỉ ví của mình với họ", + "remove-group": "Xóa nhóm", + "remove-network": "Xóa mạng", + "remove-token": "Xóa mã thông báo", + "removed": "loại bỏ", + "repeat-pin": "Lặp lại mật mã 6 chữ số mới", + "report-bug-email-template": "1. Mô tả vấn đề\n (Mô tả tính năng bạn muốn hoặc tóm tắt ngắn gọn về lỗi và những gì bạn đã làm, những gì bạn mong đợi sẽ xảy ra và những gì thực sự xảy ra. Các phần bên dưới) \n\n\n 2. Các bước tái tạo\n (Mô tả cách chúng tôi có thể sao chép lỗi từng bước.)\n -Tình trạng mở\n -...\n -Bước 3, v.v. \n\n\n 3. Hành vi mong đợi\n (Mô tả những gì bạn mong đợi sẽ xảy ra.) \n\n\n 4. Hành vi thực tế\n (Mô tả những gì thực sự đã xảy ra.) \n\n\n 5. Đính kèm ảnh chụp màn hình có thể demo vấn đề, vui lòng\n", + "request-feature": "Yêu cầu một tính năng", + "request-membership": "Yêu cầu thành viên", + "request-pending": "Đợi phản hồi…", + "request-transaction": "Yêu cầu giao dịch", + "required-field": "phần bắt buộc", + "resend-message": "Gửi lại", + "reset-card": "Đặt lại thẻ", + "reset-card-description": "Thao tác này sẽ đặt lại thẻ về trạng thái ban đầu. Nó sẽ xóa tất cả dữ liệu thẻ bao gồm cả khóa cá nhân. Hoạt động không thể đảo ngược.", + "retry": "Thử lại", + "revoke-access": "Thu hồi truy cập", + "rpc-url": "URL RPC", + "rpc-usage-copy": "Sao chép", + "rpc-usage-get-stats": "Làm tươi", + "save": "Tiết kiệm", + "save-password": "Lưu mật khẩu", + "save-password-unavailable": "Đặt mật mã thiết bị để lưu mật khẩu", + "save-password-unavailable-android": "Lưu mật khẩu không khả dụng: thiết bị của bạn có thể đã được root hoặc thiếu các tính năng bảo mật cần thiết.", + "scan-qr": "Quét mã QR", + "scan-qr-code": "Quét mã QR bằng địa chỉ ví", + "scan-tokens": "Quét mã thông báo", + "search": "Tìm kiếm", + "search-no-chat-found": "Không có kết quả tìm kiếm. Ý bạn là", + "secret-keys-confirmation-text": "Bạn sẽ cần họ tiếp tục sử dụng Thẻ khóa của mình trong trường hợp bạn bị mất điện thoại.", + "secret-keys-confirmation-title": "Viết mã xuống?", + "security": "Bảo vệ", + "see-details": "Xem chi tiết", + "see-it-again": "XEM LẠI", + "seed-phrase-content": "Một tập hợp các từ dễ đọc, được chọn ngẫu nhiên từ danh sách tiêu chuẩn BIP39 và được sử dụng để khôi phục hoặc truy cập tài khoản Ethereum của bạn trên các ví và thiết bị khác. Còn được gọi là “cụm từ dễ nhớ”, “cụm từ khôi phục” hoặc “sao lưu ví” trong hệ sinh thái tiền điện tử. Hầu hết các ứng dụng tiền điện tử đều sử dụng cùng một tiêu chuẩn này để tạo tài khoản.", + "seed-phrase-placeholder": "Cụm từ hạt giống ...", + "seed-phrase-title": "Cụm từ hạt giống", + "select": "Lựa chọn", + "select-account": "Chọn tài khoản", + "select-account-dapp": "Chọn tài khoản bạn muốn sử dụng với Dapps", + "select-account-first": "Chọn một tài khoản trước tiên", + "select-chat": "Chọn trò chuyện để bắt đầu nhắn tin", + "selected": "Đã chọn", + "send-logs": "Báo cáo lỗi", + "send-logs-to": "Báo cáo lỗi cho {{email}}", + "send-message": "Gửi tin nhắn", + "send-push-notifications-description": "Khi bị vô hiệu hóa, người nhận tin nhắn của bạn sẽ không được thông báo về việc họ đến", + "send-request": "Gửi yêu cầu", + "send-request-amount": "Số tiền", + "send-request-amount-max-decimals": "Số số thập phân tối đa là {{asset-decimals}}", + "send-request-unknown-token": "Mã thông báo không xác định - {{asset}}", + "send-sending-to": "tới {{recipient-name}}", + "send-transaction": "Gửi giao dịch", + "sending": "Gửi", + "sent-at": "Gửi lúc", + "server": "Người phục vụ", + "set-a-topic": "Tạo một chủ đề", + "set-currency": "Đặt tiền tệ", + "set-custom-fee": "Đặt phí tùy chỉnh", + "set-dapp-access-permissions": "Đặt quyền truy cập DApp", + "set-max": "Đặt tối đa", + "settings": "Cài đặt", + "share": "Chia sẻ", + "share-address": "Chia sẻ địa chỉ", + "share-chat": "Chia sẻ trò chuyện", + "share-contact-code": "Chia sẻ khóa trò chuyện của tôi", + "share-dapp-text": "Kiểm tra DApp này mà tôi đang sử dụng trên Trạng thái: {{link}}", + "share-link": "Chia sẻ đường link", + "share-my-profile": "Chia sẻ hồ sơ của tôi", + "share-profile": "Chia sẻ hồ sơ", + "share-profile-link": "Chia sẻ liên kết hồ sơ", + "share-public-chat-text": "Xem cuộc trò chuyện công khai này trên ứng dụng Trạng thái: {{link}}", + "shared": "Được chia sẻ", + "sharing-copied-to-clipboard": "Đã sao chép", + "sharing-copy-to-clipboard": "Sao chép", + "sharing-share": "Chia sẻ", + "show-less": "Hiện ít hơn", + "show-more": "Cho xem nhiều hơn", + "show-notifications": "Hiển thị thông báo", + "show-qr": "Hiển thị mã QR", + "show-transaction-data": "Hiển thị dữ liệu giao dịch", + "sign-and-send": "Ký và gửi", + "sign-anyway": "Vẫn ký", + "sign-in": "Mở khóa", + "sign-message": "Ký tên", + "sign-out": "Đăng xuất", + "sign-request-failed": "Không thể ký tin nhắn", + "sign-with": "Ký với", + "sign-with-password": "Đăng nhập bằng mật khẩu", + "sign-you-in": "Đang đăng nhập bạn…", + "signing": "Đang ký", + "signing-a-message": "Ký một tin nhắn", + "signing-phrase": "Ký tên", + "something-went-wrong": "Đã xảy ra sự cố", + "soon": "Sớm", + "specify-address": "Chỉ định địa chỉ", + "specify-name": "Chỉ định tên", + "specify-network-id": "Chỉ định id mạng", + "specify-rpc-url": "Chỉ định một URL RPC", + "specify-server-public-key": "Nhập khóa công khai của máy chủ", + "start-chat": "Bắt đầu trò chuyện", + "start-conversation": "Bắt đầu cuộc trò chuyện", + "start-group-chat": "Bắt đầu trò chuyện nhóm", + "start-new-chat": "Bắt đầu cuộc trò chuyện mới", + "starter-pack-received": "Gói Khởi đầu đã nhận được", + "starter-pack-received-description": "Đây là một số tiền điện tử để bạn bắt đầu! Sử dụng nó để nhận nhãn dán, tên ENS và thử dapp", + "status": "Trạng thái", + "status-confirmed": "Đã xác nhận", + "status-hardwallet": "Trạng thái cứng", + "status-keycard": "Thẻ trạng thái", + "status-not-sent-click": "Không được xác nhận. Nhấp để có các tùy chọn", + "status-not-sent-tap": "Không được xác nhận. Nhấn để có các tùy chọn", + "status-pending": "Đang chờ xử lý", + "status-sent": "Gởi", + "status-tx-not-found": "TX không tìm thấy", + "status-updates-descr": "Cập nhật trạng thái sẽ xuất hiện ở đây. Thêm hồ sơ làm địa chỉ liên hệ để nhận cập nhật trên dòng thời gian của bạn.", + "statuses-descr": "Chia sẻ những gì bạn nghĩ và cập nhật thông tin liên hệ của bạn", + "statuses-my-status-descr": "Chia sẻ những gì bạn nghĩ. Bất kỳ ai truy cập hồ sơ của bạn sẽ có thể xem trạng thái của bạn. Những người thêm bạn làm liên hệ của họ sẽ nhận được thông tin cập nhật của bạn trên dòng thời gian của họ", + "step-i-of-n": "Bước {{step}} của {{number}}", + "sticker-market": "Thị trường hình dán", + "storage": "Lưu trữ", + "submit": "Gửi đi", + "submit-bug": "Gửi lỗi", + "success": "Sự thành công", + "symbol": "Biểu tượng", + "sync-all-devices": "Đồng bộ hóa tất cả các thiết bị", + "sync-in-progress": "Đang đồng bộ hóa ...", + "sync-settings": "Cài đặt đồng bộ hóa", + "sync-synced": "Đồng bộ", + "syncing-devices": "Đang đồng bộ hóa ...", + "system": "Hệ thống", + "tag-was-lost": "Thẻ đã bị mất", + "tap-card-again": "Nhấn lại thẻ vào mặt sau điện thoại của bạn", + "test-networks": "Kiểm tra mạng", + "text-input-disabled": "Xin vui lòng chờ trong giây lát...", + "this-device": "Thiết bị này", + "this-device-desc": "Khóa của bạn sẽ được mã hóa và lưu trữ an toàn trên thiết bị của bạn", + "this-is-you-signing": "Đây là cụm từ ký của bạn", + "this-will-take-few-seconds": "Quá trình này sẽ mất vài giây", + "three-words-description": "Bạn nên xem 3 từ này trước khi ký mỗi giao dịch", + "three-words-description-2": "Nếu bạn thấy sự kết hợp khác, hãy hủy giao dịch và đăng xuất", + "timeline": "Mốc thời gian", + "to": "Đến", + "to-block": "Khối", + "to-enable-biometric": "Để bật {{bio-type-label}} , bạn phải lưu mật khẩu của mình trên màn hình mở khóa", + "to-encrypt-enter-password": "Để mã hóa tài khoản, vui lòng nhập mật khẩu của bạn", + "to-see-this-message": "Để xem thông báo này,", + "token-auto-validate-decimals-error": "Số thập phân sai cho mã thông báo {{symbol}} tại địa chỉ {{address}} - được đặt thành {{expected}} nhưng được phát hiện là {{actual}}", + "token-auto-validate-name-error": "Tên sai cho mã thông báo {{symbol}} tại địa chỉ {{address}} - được đặt thành {{expected}} nhưng được phát hiện là {{actual}}", + "token-auto-validate-symbol-error": "Ký hiệu sai cho mã thông báo {{symbol}} tại địa chỉ {{address}} - được đặt thành {{expected}} nhưng được phát hiện là {{actual}}", + "token-details": "Chi tiết mã thông báo", + "topic-name-error": "Chỉ sử dụng các chữ cái thường (a đến z), số và dấu gạch ngang (-). Không sử dụng phím trò chuyện", + "transaction": "Giao dịch", + "transaction-data": "Dữ liệu giao dịch", + "transaction-declined": "Giao dịch bị từ chối", + "transaction-description": "Coi như nó hoàn tất sau 12 lần xác nhận trên mạng.", + "transaction-details": "Chi tiết giao dịch", + "transaction-failed": "giao dịch không thành công", + "transaction-history": "Lịch sử giao dịch", + "transaction-request": "Yêu cầu giao dịch", + "transaction-sent": "Giao dịch đã được gửi", + "transaction-signed": "Giao dịch đã được ký thành công", + "transactions": "Giao dịch", + "transactions-filter-select-all": "Chọn tất cả", + "transactions-filter-title": "Lịch sử lọc", + "transactions-history": "Lịch sử giao dịch", + "transactions-history-empty": "Chưa có giao dịch nào trong lịch sử của bạn", + "transactions-history-loading": "Đang tải lịch sử giao dịch. Có lẽ sẽ mất một lúc.", + "transactions-load-more": "Tải thêm", + "transactions-sign": "Ký tên", + "tribute-required-by-multiaccount": "{{multiaccount-name}} yêu cầu SNT bắt đầu trò chuyện.", + "tribute-state-paid": "Cống đã trả", + "tribute-state-pending": "Cống hiến đang chờ xử lý", + "tribute-state-required": "Yêu cầu cống nạp SNT {{snt-amount}}", + "tribute-to-talk": "Tribute để nói chuyện", + "tribute-to-talk-add-friends": "Thêm bạn bè làm địa chỉ liên hệ để cho phép trò chuyện mà không cần trả tiền tri ân.", + "tribute-to-talk-are-you-friends": "Bạn là bạn bè?", + "tribute-to-talk-ask-to-be-added": "Yêu cầu được thêm làm địa chỉ liên hệ", + "tribute-to-talk-contact-received-your-tribute": "đã nhận được cống của bạn. Bây giờ bạn có thể trò chuyện an toàn với nhau.", + "tribute-to-talk-desc": "Kiếm tiền từ sự chú ý của bạn bằng cách yêu cầu SNT để những người mới bắt đầu trò chuyện", + "tribute-to-talk-disabled": "Tribute to Talk bị tắt", + "tribute-to-talk-disabled-note": "Từ bây giờ, những người mới có thể bắt đầu trò chuyện với bạn mà không cần gửi SNT.", + "tribute-to-talk-enabled": "Bạn đã bật Tribute to Talk.", + "tribute-to-talk-finish-desc": "Từ bây giờ, bạn sẽ chỉ nhận được các cuộc trò chuyện từ các liên hệ và những người đã trả tiền", + "tribute-to-talk-learn-more-1": "Thời gian và sự chú ý của bạn là tài sản quý giá nhất của bạn. Tribute to Talk cho phép bạn đặt số lượng SNT cần thiết để những người mới bắt đầu trò chuyện với bạn.", + "tribute-to-talk-learn-more-2": "Bất kỳ ai không có trong danh sách liên hệ của bạn sẽ được yêu cầu thanh toán và bạn có thể trả lời khi họ có.", + "tribute-to-talk-learn-more-3": "Bạn luôn có thể gửi lại tiền, nhưng để đảm bảo rằng bạn bè có thể liên hệ với bạn một cách thoải mái, hãy thêm họ làm địa chỉ liên hệ trước.", + "tribute-to-talk-paywall-learn-more-1": "Thời gian và sự chú ý của chúng tôi là tài sản quý giá nhất của chúng tôi. Tribute to Talk cho phép bạn liên hệ với những người mới để đổi lấy khoản thanh toán SNT.", + "tribute-to-talk-paywall-learn-more-2": "Để bắt đầu trò chuyện với một người nào đó đã đặt dấu ấn, chỉ cần thanh toán SNT được yêu cầu và bạn sẽ được thêm làm địa chỉ liên hệ.", + "tribute-to-talk-paywall-learn-more-3": "Nếu bạn biết họ, bạn có thể chia sẻ hồ sơ của mình bên ngoài Trạng thái để được thêm miễn phí.", + "tribute-to-talk-pending": "Xác nhận cống đang chờ xử lý", + "tribute-to-talk-pending-note": "Giao dịch cống đang chờ xác nhận trên mạng. Bạn có thể kiểm tra trạng thái của nó trong lịch sử giao dịch", + "tribute-to-talk-removing-note": "Xóa Tribute to Talk sẽ cho phép những người mới bắt đầu trò chuyện mà không cần gửi SNT. Yêu cầu một giao dịch được thực hiện.", + "tribute-to-talk-set-snt-amount": "Đặt số lượng SNT cần thiết để những người mới bắt đầu trò chuyện", + "tribute-to-talk-signing": "Đang chờ ký giao dịch", + "tribute-to-talk-transaction-failed-note": "Giao dịch không thành công và cài đặt Tribute to Talk của bạn không được thay đổi", + "tribute-to-talk-tribute-received1": "Đã nhận được cống hiến. Bạn và", + "tribute-to-talk-tribute-received2": "hiện là các địa chỉ liên hệ và có thể trò chuyện an toàn với nhau.", + "tribute-to-talk-you-require-snt": "Bạn yêu cầu SNT để những người mới bắt đầu trò chuyện.", + "try-again": "Thử lại", + "try-keeping-the-card-still": "Thử giữ yên thẻ", + "turn-nfc-description": "NFC bị tắt trên thiết bị của bạn. Bạn có thể bật nó trong cài đặt", + "turn-nfc-on": "Bật NFC để tiếp tục", + "tx-fail-description1": "Giao dịch này có khả năng thất bại. Tự chịu rủi ro khi đăng ký bằng cách sử dụng phí mạng tùy chỉnh.", + "tx-fail-description2": "Giao dịch này có khả năng thất bại. Đặt phí mạng tùy chỉnh để bạn tự chịu rủi ro khi đăng ký.", + "type": "Kiểu", + "type-a-message": "Thông điệp", + "ulc-enabled": "ULC được bật", + "unable-to-read-this-code": "Không thể đọc mã này", + "unblock": "Mở khóa", + "unblock-contact": "Bỏ chặn người dùng này", + "unknown-status-go-error": "Lỗi trạng thái không xác định", + "unlock": "Mở khóa", + "unmute": "Bật tiếng", + "unpair-card": "Hủy ghép nối thẻ", + "unpair-card-confirmation": "Thao tác này sẽ hủy ghép nối thẻ khỏi thiết bị hiện tại. Yêu cầu ủy quyền mật mã 6 chữ số. Bạn có muốn tiếp tục?", + "unpaired-keycard-text": "Thẻ khóa bạn đã nhấn không được liên kết với điện thoại này", + "unpaired-keycard-title": "Có vẻ như thẻ của bạn chưa được ghép nối", + "update": "Cập nhật", + "update-to-listen-audio": "Cập nhật phiên bản mới nhất để nghe tin nhắn âm thanh tại đây!", + "update-to-see-image": "Cập nhật phiên bản mới nhất để xem hình ảnh đẹp tại đây!", + "update-to-see-sticker": "Cập nhật phiên bản mới nhất để xem nhãn dán đẹp tại đây!", + "url": "URL", + "usd-currency": "đô la Mỹ", + "use-valid-contact-code": "Vui lòng nhập hoặc quét một khóa trò chuyện hoặc tên người dùng hợp lệ", + "validation-amount-invalid-number": "Số tiền không phải là số hợp lệ", + "validation-amount-is-too-precise": "Số tiền quá chính xác. Số phần thập phân tối đa là {{decimals}} .", + "version": "Phiên bản ứng dụng", + "view-cryptokitties": "Xem trong CryptoKitties", + "view-cryptostrikers": "Xem trong CryptoStrikers", + "view-details": "Xem chi tiết", + "view-etheremon": "Xem trong Etheremon", + "view-gitcoin": "Xem trong Gitcoin", + "view-profile": "Xem hồ sơ", + "view-signing": "Xem cụm từ ký kết", + "view-superrare": "Xem trong SuperRare", + "waiting-for-wifi": "Không có Wi-Fi, đồng bộ hóa tin nhắn bị tắt.", + "waiting-for-wifi-change": "Cài đặt", + "waiting-to-sign": "Đang chờ ký giao dịch ...", + "waku-bloom-filter-mode": "Chế độ bộ lọc nở Waku", + "wallet": "Ví tiền", + "wallet-address": "Địa chỉ ví", + "wallet-asset": "Tài sản", + "wallet-assets": "Tài sản", + "wallet-backup-recovery-title": "Sao lưu cụm từ hạt giống của bạn", + "wallet-choose-recipient": "Chọn người nhận", + "wallet-collectibles": "Sưu tầm", + "wallet-insufficient-funds": "Không đủ tiền", + "wallet-insufficient-gas": "Không đủ ETH để đổ xăng", + "wallet-invalid-address": "Địa chỉ không hợp lệ:\n {{data}}", + "wallet-invalid-address-checksum": "Lỗi địa chỉ:\n {{data}}", + "wallet-invalid-chain-id": "Mạng không khớp:\n {{data}} nhưng chuỗi hiện tại là {{chain}}", + "wallet-key-content": "Địa chỉ hex 64 ký tự dựa trên tiêu chuẩn Ethereum và bắt đầu bằng 0x. Công khai, địa chỉ tài khoản của bạn được chia sẻ với những người khác khi bạn muốn nhận tiền. Còn được gọi là “địa chỉ Ethereum” hoặc “địa chỉ ví”.", + "wallet-key-title": "Địa chỉ tài khoản", + "wallet-manage-assets": "Quản lý tài sản", + "wallet-request": "Yêu cầu", + "wallet-send": "Gửi", + "wallet-send-min-units": "Tối thiểu 21000 đơn vị", + "wallet-send-min-wei": "Min 1 wei", + "wallet-settings": "Cài đặt ví", + "wallet-total-value": "Tổng giá trị", + "wallet-transaction-total-fee": "Tổng phí", + "wants-to-access-profile": "muốn truy cập vào hồ sơ của bạn", + "warning": "Cảnh báo", + "warning-message": "Xin lỗi, chúng tôi hạn chế gửi nhiều thư liên tiếp để ngăn chặn thư rác. Vui lòng thử lại sau giây lát", + "warning-sending-to-contract-descr": "Địa chỉ bạn đã nhập là hợp đồng thông minh, việc gửi tiền đến địa chỉ này có thể dẫn đến mất tiền. Để tương tác với DApp, hãy mở DApp trong Trình duyệt DApp Trạng thái.", + "watch-only": "Chỉ xem", + "web-view-error": "Không thể tải trang", + "websites": "Trang web", + "webview-camera-permission-requests": "Yêu cầu quyền đối với camera xem qua web", + "webview-camera-permission-requests-subtitle": "Khi được bật, các trang web và dapp có thể yêu cầu sử dụng máy ảnh của bạn", + "welcome-blank-message": "Các cuộc trò chuyện của bạn sẽ xuất hiện ở đây. Để bắt đầu cuộc trò chuyện mới, nhấn nút ⊕", + "welcome-screen-text": "Thiết lập ví của bạn, mời bạn bè trò chuyện\n và duyệt qua các dapp phổ biến!", + "welcome-to-status": "Chào mừng đến với Trạng thái!", + "welcome-to-status-description": "Thiết lập ví tiền điện tử của bạn, mời bạn bè trò chuyện và duyệt qua các ứng dụng phi tập trung", + "whats-on-your-mind": "Bạn đang nghĩ gì vậy…", + "word-count": "Số từ", + "word-n": "Từ # {{number}}", + "word-n-description": "Để kiểm tra xem bạn đã sao lưu đúng cụm từ hạt giống của mình chưa, hãy nhập từ # {{number}} ở trên.", + "words-n": { + "other": "{{count}} từ" + }, + "write-down-and-store-securely": "Viết mã xuống\n & lưu trữ chúng một cách an toàn", + "wrong-address": "Sai địa chỉ", + "wrong-card": "Thẻ sai", + "wrong-card-text": "Thẻ đã nhấn không tương ứng với các phím bạn đã chọn", + "wrong-contract": "Hợp đồng sai", + "wrong-keycard-text": "Thẻ khóa bạn đã nhấn không được liên kết với điện thoại này", + "wrong-keycard-title": "Có vẻ như bạn đã nhấn vào\n một thẻ khóa sai", + "wrong-password": "Sai mật khẩu", + "wrong-word": "Từ sai", + "yes": "Đúng", + "you": "bạn", + "you-already-have-an-asset": "Bạn đã có một tài sản {{value}}", + "you-are-all-set": "Bạn đã sẵn sàng!", + "you-are-all-set-description": "Nếu bạn bị mất điện thoại, bây giờ bạn có thể truy cập vào tiền của mình và khóa trò chuyện bằng cách sử dụng cụm từ hạt giống của bạn", + "you-can-change-account": "Bạn có thể thay đổi tên tài khoản và màu sắc theo ý muốn", + "you-can-choose-preview-websites": "Bạn có thể chọn trang web nào sau đây có thể xem trước liên kết mô tả và hình ảnh trong cuộc trò chuyện", + "you-dont-have-contacts": "Bạn chưa có bất kỳ liên hệ nào.", + "you-dont-have-stickers": "Bạn chưa có bất kỳ nhãn dán nào", + "you-will-need-this-code": "Bạn sẽ cần mã này để mở Trạng thái và ký giao dịch", + "you-will-start-from-scratch": "Bạn sẽ bắt đầu lại từ đầu với một bộ phím mới", + "your-card-is-frozen": "Thẻ Keycard của bạn bị đóng băng. Đặt lại quyền truy cập thẻ", + "your-contact-code": "Việc cấp quyền truy cập cho phép DApp này truy xuất khóa trò chuyện của bạn", + "your-data-belongs-to-you": "Nếu bạn mất cụm từ hạt giống, bạn sẽ mất dữ liệu và tiền của mình", + "your-data-belongs-to-you-description": "Nếu bạn mất quyền truy cập, chẳng hạn như do mất điện thoại, bạn chỉ có thể truy cập các khóa của mình bằng cụm từ hạt giống. Không ai, nhưng bạn có cụm từ hạt giống của bạn. Viết nó ra. Giữ nó an toàn", + "your-keys": "Chìa khóa của bạn", + "your-recovery-phrase": "Cụm từ hạt giống của bạn", + "your-recovery-phrase-description": "Đây là cụm từ hạt giống của bạn. Bạn sử dụng nó để chứng minh rằng đây là ví của bạn. Bạn chỉ có thể xem nó một lần! Viết nó trên giấy và giữ nó ở một nơi an toàn. Bạn sẽ cần nó nếu bạn bị mất hoặc cài đặt lại ví của mình." +} diff --git a/translations/zh.json b/translations/zh.json new file mode 100644 index 00000000000..a12250a5710 --- /dev/null +++ b/translations/zh.json @@ -0,0 +1,1841 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "You": "您", + "about-app": "关于", + "about-key-storage-content": "Status永远不会访问您的密钥。请务必备份您的助记词。如果您丢失了手机,这是找回密钥的唯一方法。", + "about-key-storage-title": "关于密钥存储", + "about-names-content": "没有人可以冒充您!默认情况下,您是匿名的,永远不必透露您的真实姓名。您只需支付少量费用即可注册自定义名称。", + "about-names-title": "名称无法更改", + "about-sharing-data": "关于共享数据", + "accept": "接受", + "accept-and-add": "接受并添加", + "accept-and-continue": "接受并继续", + "accept-and-share-address": "同意并分享地址", + "accept-community-rules": "我同意社区规则", + "accept-new-chats-from": "接受新聊天,来自", + "accept-status-tos-prefix": "我接受Status", + "accepted": "已接受", + "access-existing-keys": "访问现有密钥", + "access-key": "访问密钥", + "account-added": "帐户已添加", + "account-color": "帐户颜色", + "account-content": "您可以将Status中的帐户比作银行帐户。像银行帐户一样,Status帐户通常具有地址和余额;您使用此帐户在以太坊上进行交易。您的钱包中可以有多个帐户。通过解锁Status可访问所有帐户。", + "account-exists-title": "帐户已存在", + "account-is-used": "该账户连接到浏览器中的Dapp。", + "account-name": "帐户名称", + "account-settings": "帐户设置", + "account-title": "帐户", + "accounts": "帐户", + "actions": "操作", + "active-members": "活跃成员", + "active-online": "在线", + "active-unknown": "未知", + "activity": "通知", + "add": "添加", + "add-a-watch-account": "添加仅限观察的地址", + "add-account": "添加帐户", + "add-account-description": "您可以导入任何类型的以太坊帐户,将其添加到您的Status钱包", + "add-account-incorrect-password": "密码似乎不正确。请输入您用于解锁应用程序的密码。", + "add-an-account": "添加帐户", + "add-bootnode": "添加引导节点", + "add-contact": "添加联系人", + "add-custom-token": "添加自定义代币", + "add-favourite": "添加到收藏夹", + "add-mailserver": "添加Status节点", + "add-members": "添加成员", + "add-network": "添加网络", + "add-new-contact": "添加新联系人", + "add-nickname": "添加昵称(可选)", + "add-node": "添加节点", + "add-private-key-account": "通过私钥添加帐户", + "add-seed-account": "使用助记词添加帐户", + "add-to-contacts": "添加到联系人", + "add-to-contacts-text": "将用户添加到您的联系人列表,您即在向他们分享您的钱包地址", + "add-to-favourites": "添加到收藏夹", + "add-watch-account": "添加仅限观察的帐户", + "added": "添加", + "address": "地址", + "address-or-ens-name": "地址或ENS名称", + "address-received": "已收到地址", + "address-request-accepted": "已接受地址请求", + "address-requested": "已请求地址", + "admin": "管理员", + "advanced": "高级", + "advanced-settings": "高级设置", + "advertiser-description": "感谢您的好友将Status推荐给您。您是否介意Status查看一次您目前的IP地址,以便获得奖励?此信息将不会再用于其他任何用途,并且会在7天后完全删除。", + "advertiser-starter-pack-accept": "接受", + "advertiser-starter-pack-decline": "拒绝", + "advertiser-starter-pack-description": "这是一些加密货币,可以帮助您入门!用其来获取贴纸、ENS名称并尝试DApp", + "advertiser-starter-pack-title": "入门包", + "advertiser-title": "默认为私密", + "agree-by-continuing": "通过继续,即表明您同意我们的", + "all": "全部", + "all-connections": "所有连接", + "allow": "允许", + "allow-and-send": "允许并发送", + "allow-mention-notifications": "显示@提及", + "allowing-authorizes-this-dapp": "允许授权此DApp以检索您的钱包地址, 并启用Web3", + "alphabetically": "按字母顺序排列", + "already-have-asset": "您已有该资产", + "amount": "金额", + "and": "和", + "anyone": "任何人", + "app-commit": "应用程序提交", + "app-connections": "应用程序连接", + "appearance": "显示", + "apply": "应用", + "approve": "批准", + "approve-limit": "批准限额", + "approve-token": "批准代币", + "approve-token-contract-desc": "通过合约批准代币允许其花费您的代币余额。如果您认为某个项目不值得信任,请不要选择批准代币,或者只批准您需要使用到的金额额度。", + "are-you-sure": "确定吗?", + "are-you-sure-description": "您将无法再次查看整个助记词", + "are-you-sure-to-cancel": "确定要取消?", + "are-you-sure?": "确定吗?", + "ask-in-status": "咨询问题或报告错误", + "at": "在", + "attribution-received": "收到{{attrib}}奖励,上限为{{max}}", + "audio": "音频", + "audio-message": "音频消息", + "audio-recorder": "录音器", + "audio-recorder-error": "录音器错误", + "audio-recorder-max-ms-reached": "达到最长录音时间", + "audio-recorder-permissions-error": "您必须授予发送音频消息的权限", + "authorize": "授权", + "available": "可用", + "available-participants": { + "other": "您可以再选择{{count}}个参与者。" + }, + "back": "返回", + "back-up": "备份", + "back-up-seed-phrase": "备份助记词", + "back-up-your-seed-phrase": "备份您的助记词", + "backing-up": "正在备份...", + "backup-disabled": "已禁用", + "backup-enabled": "启用", + "backup-recovery-phrase": "备份助记词", + "backup-settings": "备份设置", + "backup-through-waku": "通过 waku 备份", + "bad-fees-description": "您的首选费用低于我们建议的数值。", + "balance": "余额", + "begin-set-up": "开始设置", + "below-base-fee": "最高费用低于基本费用", + "biometric-auth-android-sensor-desc": "触摸传感器", + "biometric-auth-android-sensor-error-desc": "失败", + "biometric-auth-android-title": "需要进行身份验证", + "biometric-auth-confirm-logout": "重新登录", + "biometric-auth-confirm-message": "要继续请先进行生物识别身份验证,如果不能,请使用密码或通行码解锁密钥", + "biometric-auth-confirm-title": "您必须验证!", + "biometric-auth-confirm-try-again": "再试一次", + "biometric-auth-error": "无法执行生物识别认证 ( {{code}} )", + "biometric-auth-login-error-title": "生物识别身份验证错误", + "biometric-auth-login-ios-fallback-label": "输入密码", + "biometric-auth-reason-login": "登录Status", + "biometric-auth-reason-verify": "验证身份", + "biometric-disable-bioauth": "禁用{{bio-type-label}}", + "biometric-disable-password-description": "如果禁用此功能,您还将", + "biometric-disable-password-title": "禁用密码保存", + "biometric-enable": "如果您不想访问本应用时每次都输入密码,请启用{{bio-type-label}}登录", + "biometric-enable-button": "启用{{bio-type-label}}", + "biometric-enable-keycard": "如果您不想每次都使用Keycard来访问应用程序,请启用{{bio-type-label}}登录", + "biometric-faceid": "脸部ID", + "biometric-fingerprint": "指纹", + "biometric-secure-with": "使用{{bio-type-label}}进行安全保护", + "biometric-touchid": "触控ID", + "bip39-password-placeholder": "BIP39密码", + "blank-keycard-text": "生成密钥和名称后,您可以继续使用Keycard", + "blank-keycard-title": "好像您刷的是一张空白的Keycard", + "blank-messages-text": "您的消息将在这里", + "block": "屏蔽", + "block-contact": "屏蔽此用户", + "block-contact-details": "屏蔽将删除此用户之前的所有消息,并拒收新消息", + "block-user": "屏蔽用户", + "blocked-users": "已屏蔽的用户", + "bold": "粗体", + "bootnode-address": "引导节点地址", + "bootnode-details": "引导节点详细信息", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "引导节点", + "bootnodes-enabled": "引导节点启用", + "bootnodes-settings": "引导节点设置", + "browsed-websites": "浏览过的网站将在此处显示。", + "browser": "浏览器", + "browser-not-secure": "连接不安全!不要在本网站上签名交易或发送个人数据。", + "browser-secure": "连接是安全的。在签署交易或输入个人数据之前, 请确保您确实信任此网站。", + "browsers": "浏览器", + "browsing-cancel": "取消", + "browsing-open-in-android-web-browser": "在Android中打开", + "browsing-open-in-ios-web-browser": "在iOS中打开", + "browsing-open-in-status": "在Status中打开", + "browsing-site-blocked-description1": "我们检测到此地址有潜在的恶意行为。为了保护您和您的钱包,我们阻止了进一步的浏览。 \n\n如果您认为这是一个错误,请通过以下方式告诉我们:", + "browsing-site-blocked-description2": " 公共聊天。", + "browsing-site-blocked-go-back": "返回", + "browsing-site-blocked-title": "此站点被屏蔽", + "browsing-title": "浏览", + "bug-report": "报告错误", + "bug-report-description": "* 描述", + "bug-report-description-placeholder": "必填,不能为空", + "bug-report-steps": "问题重现步骤", + "bug-report-steps-placeholder": "- 打开应用程序\n- 先做了什么操作\n- 然后做了什么操作...", + "bug-report-submit-email": "通过电子邮件提交日志存档", + "bug-report-submit-gh-issue": "提交一个没有日志的GitHub的漏洞", + "bug-report-too-short-description": "描述太短", + "build-yourself": "如果您不同意本使用条款,你可以构建自己的应用程序版本", + "buy-crypto": "购买加密货币", + "buy-crypto-choose-a-service": "选择您想用来购买加密货币的服务", + "buy-crypto-description": "查找能够购买加密货币的DApp", + "buy-crypto-leaving": "您将离开Status并进入第三方网站以完成购买", + "buy-crypto-title": "您的钱包似乎是空的", + "camera-access-error": "要授予所需的相机许可,请转到系统设置,并确保选中 “Status” > “相机”。", + "can-not-add-yourself": "这是您自己,选择一个人开始聊天", + "can-send-messages": "您可以发送和接收新消息", + "cancel": "取消", + "cancel-keycard-setup": "取消Keycard设置", + "cancelling": "取消", + "cannot-pin-desc": "您最多只能置顶 3 条消息。\n至少取消置顶一个消息以置顶其他新消息。", + "cannot-pin-title": "您无法置顶此消息!", + "cannot-read-card": "无法读卡。\n请将卡贴紧您的手机背面", + "cannot-use-default-pin": "不允许密码为000000。 \n请使用其他数字", + "cant-open-public-chat": "无法开启公共聊天", + "cant-report-bug": "无法报告错误", + "card-is-blank": "这是一张空白卡", + "card-reseted": "卡已被重置", + "card-unpaired": "卡与当前设备的配对已取消", + "category": "类别", + "category-title": "类别标题", + "change-fleet": "变更组别到{{fleet}}", + "change-group-privacy": "更改群组隐私", + "change-logging-enabled": "确定要{{enable}}日志记录吗?", + "change-pairing": "更改配对码", + "change-pairing-description": "更改配对码不会影响当前的配对。但是,任何新的配对都将需要新的配对码。", + "change-pairing-title": "创建一个新的配对码", + "change-passcode": "更改密码", + "change-password": "更改密码", + "change-pin": "更改6位数字密码", + "change-puk": "更改12位PUK码", + "change-tip": "变更手续费", + "changed-amount-warning": "金额已从{{old}}更改为{{new}}", + "changed-asset-warning": "资产已从{{old}}更改为{{new}}", + "chaos-mode": "混乱模式", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "聊天", + "chat-and-transact": "与朋友开启隐私聊天和交易", + "chat-is-a-contact": "联系人", + "chat-is-not-a-contact": "非联系人", + "chat-key": "聊天码", + "chat-key-content": "在Status聊天协议中使用加密密钥发送和接收消息。公共聊天码是您与他人分享的一串字符,在Status中用于其他人向您发送消息。", + "chat-key-title": "聊天码", + "chat-link-previews": "聊天中的链接预览", + "chat-name": "聊天名称", + "chat-name-content": "三个随机的词,通过算法从您的聊天码中派生,并用作您在聊天中的默认别名。聊天名称是独一无二的;没有任何其他用户可以拥有相同的三个词。", + "chat-name-title": "聊天名称", + "chat-notification-preferences": "通知设置", + "chat-settings": "聊天设置", + "chats": "聊天", + "check-on-block-explorer": "在区块浏览器中确认", + "check-on-opensea": "在OpenSea中查看", + "check-your-recovery-phrase": "查看您的助记词", + "choose-actions": "选择操作", + "choose-authentication-method": "选择身份验证方式", + "choose-new-location-for-keystore": "选择一个新位置以保存您的密钥存储文件", + "choose-storage": "选择存储位置", + "clear": "清空", + "clear-all": "全部清除", + "clear-history": "清空历史记录", + "clear-history-action": "清空", + "clear-history-confirmation": "清空历史记录?", + "clear-history-confirmation-content": "确定要清除此聊天记录?", + "clear-history-title": "清空历史记录?", + "cleared-chat-description-public": "太安静了,开始交谈或者.", + "close": "关闭", + "close-all": "全部关闭", + "close-app-button": "确认", + "close-app-content": "应用将停止并关闭。再次打开时,将使用选中的网络", + "close-app-title": "警告!", + "collectibles-leak-metadata": "您可以在此处显示您的 NFT。如果这样做,您将共享您的钱包和 IP 地址", + "command-button-send": "发送", + "communities": "社区", + "communities-alpha": "社区(alpha)", + "communities-enabled": "启用社区功能", + "communities-verified": "✓已验证的Status社区", + "community": "社区", + "community-channel": "社区频道", + "community-color": "社区颜色", + "community-color-placeholder": "选择颜色", + "community-edit-title": "编辑社区", + "community-emoji-thumbnail-title": "缩略图", + "community-image-pick": "选择图片", + "community-image-remove": "删除", + "community-image-take": "拍照", + "community-info": "社区信息", + "community-info-not-found": "未找到社区信息", + "community-invite-title": "邀请", + "community-key": "社区私钥", + "community-key-placeholder": "输入您的社区私钥", + "community-link": "社区链接", + "community-members": { + "other": "{{count}}位成员" + }, + "community-members-title": "成员", + "community-message-preview": "邀请加入{{community-name}}", + "community-notification-settings": "通知设置", + "community-private-key": "社区私钥", + "community-requests-to-join-title": "加入申请", + "community-roles": "角色", + "community-rules": "社区规则", + "community-share-title": "分享", + "community-thumbnail-image": "缩略图", + "community-thumbnail-upload": "上传", + "complete-hardwallet-setup": "该卡现在已连接。您需要它来签署交易并解锁密钥", + "completed": "已完成", + "confirm": "确认", + "confirm-new-password": "确认新密码", + "confirm-pairing-code-placeholder": "确认您的配对码...", + "confirm-password-placeholder": "确认您的密码...", + "confirmation-request": "确认请求", + "confirmations": "确认", + "confirmations-helper-text": "当交易达到 12 个确认时,您可以认为交易已成功。", + "connect": "连接", + "connect-mailserver-content": "连接到{{name}} ?", + "connect-wallet": "连接钱包", + "connected": "已连接", + "connected-to": "连接到", + "connecting": "正在连接...", + "connecting-requires-login": "连接其它网络需要登录", + "connection-request": "连接请求", + "connection-status": "连接状态", + "connection-with-the-card-lost": "与卡的连接\n 已丢失", + "connection-with-the-card-lost-setup-text": "要恢复设置,请将卡放到\n手机背面并保持\n卡与手机接触", + "connection-with-the-card-lost-text": "要继续,请将卡片贴近手机背面", + "contact-code": "聊天码", + "contact-request": "请求加为好友", + "contact-request-accepted": "已接受 ✓", + "contact-request-declined": "已拒绝 (x)", + "contact-request-header": "请求加为好友", + "contact-request-pending": "待定...", + "contact-request-sent": "已发送好友申请", + "contact-requests": "好友请求", + "contact-s": { + "other": "联系人" + }, + "contacts": "联系人", + "contacts-descr": "您的联系人将显示在此处。您将收到添加为联系人的任何人的状态更新", + "contacts-empty": "具有ENS名称的联系人将显示在此处", + "continue": "继续", + "continue-anyway": "仍然继续", + "contract-address": "合约地址", + "contract-interaction": "合约交互", + "contract-isnt-supported": "不支持合约", + "copy-info": "复制信息", + "copy-qr": "复制代码", + "copy-text": "复制文本", + "copy-to-clipboard": "复制", + "copy-transaction-hash": "复制交易ID", + "cost-fee": "成本\/费用", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "创建", + "create-a-pin": "创建6位数字密码", + "create-a-puk": "创建一个12位的PUK码", + "create-category": "创建分类", + "create-channel": "创建频道", + "create-channel-title": "新频道", + "create-community": "创建社区", + "create-group-chat": "创建群聊", + "create-multiaccount": "生成密钥", + "create-new-key": "获取新密钥", + "create-pin": "创建6位数字密码", + "create-pin-description": "您需要卡和6位数字密码才能解锁Status并确认交易", + "created-group-chat-description": "您创建了群{{group-name}}", + "cryptokitty-name": "CryptoKitty# {{id}}", + "currency": "货币", + "currency-display-name-aed": "阿联酋迪拉姆", + "currency-display-name-afn": "阿富汗尼", + "currency-display-name-ars": "阿根廷比索", + "currency-display-name-aud": "澳元", + "currency-display-name-bbd": "巴巴多斯元", + "currency-display-name-bdt": "孟加拉国塔卡", + "currency-display-name-bgn": "保加利亚列弗", + "currency-display-name-bhd": "巴林第纳尔", + "currency-display-name-bnd": "文莱元", + "currency-display-name-bob": "玻利维亚玻利维亚诺", + "currency-display-name-brl": "巴西雷亚尔", + "currency-display-name-btn": "不丹努扎姆", + "currency-display-name-cad": "加拿大元", + "currency-display-name-chf": "瑞士法郎", + "currency-display-name-clp": "智利比索", + "currency-display-name-cny": "中国人民币", + "currency-display-name-cop": "哥伦比亚比索", + "currency-display-name-crc": "哥斯达黎加科郎", + "currency-display-name-czk": "捷克克朗", + "currency-display-name-dkk": "丹麦克朗", + "currency-display-name-dop": "多米尼加共和国比索", + "currency-display-name-egp": "埃及镑", + "currency-display-name-etb": "埃塞俄比亚比尔", + "currency-display-name-eur": "欧元", + "currency-display-name-gbp": "英镑", + "currency-display-name-gel": "格鲁吉亚拉里", + "currency-display-name-ghs": "加纳塞地", + "currency-display-name-hkd": "港币", + "currency-display-name-hrk": "克罗地亚库纳", + "currency-display-name-huf": "匈牙利福林", + "currency-display-name-idr": "印度尼西亚卢比", + "currency-display-name-ils": "以色列谢克尔", + "currency-display-name-inr": "印度卢比", + "currency-display-name-isk": "冰岛克朗", + "currency-display-name-jmd": "牙买加元", + "currency-display-name-jpy": "日元", + "currency-display-name-kes": "肯尼亚先令", + "currency-display-name-krw": "韩元", + "currency-display-name-kwd": "科威特第纳尔", + "currency-display-name-kzt": "哈萨克斯坦腾格", + "currency-display-name-lkr": "斯里兰卡卢比", + "currency-display-name-mad": "摩洛哥迪拉姆", + "currency-display-name-mdl": "摩尔多瓦列伊", + "currency-display-name-mur": "毛里求斯卢比", + "currency-display-name-mwk": "马拉维克瓦查", + "currency-display-name-mxn": "墨西哥比索", + "currency-display-name-myr": "马来西亚林吉特", + "currency-display-name-mzn": "莫桑比克梅蒂卡尔", + "currency-display-name-nad": "纳米比亚元", + "currency-display-name-ngn": "尼日利亚奈拉", + "currency-display-name-nok": "挪威克朗", + "currency-display-name-npr": "尼泊尔卢比", + "currency-display-name-nzd": "新西兰元", + "currency-display-name-omr": "阿曼里亚尔", + "currency-display-name-pen": "秘鲁索尔", + "currency-display-name-pgk": "巴布亚新几内亚基那", + "currency-display-name-php": "菲律宾比索", + "currency-display-name-pkr": "巴基斯坦卢比", + "currency-display-name-pln": "波兰兹罗提", + "currency-display-name-pyg": "巴拉圭瓜拉尼", + "currency-display-name-qar": "卡塔尔里亚尔", + "currency-display-name-ron": "罗马尼亚列伊", + "currency-display-name-rsd": "突尼斯第纳尔", + "currency-display-name-rub": "俄罗斯卢布", + "currency-display-name-sar": "沙特阿拉伯里亚尔", + "currency-display-name-sek": "瑞典克朗", + "currency-display-name-sgd": "新加坡元", + "currency-display-name-thb": "泰国泰铢", + "currency-display-name-try": "土耳其里拉", + "currency-display-name-ttd": "特立尼达和多巴哥元", + "currency-display-name-twd": "新台币", + "currency-display-name-tzs": "坦桑尼亚先令", + "currency-display-name-uah": "乌克兰格里夫尼亚", + "currency-display-name-ugx": "乌干达先令", + "currency-display-name-usd": "美元", + "currency-display-name-uyu": "乌拉圭比索", + "currency-display-name-vef": "委内瑞拉博利瓦", + "currency-display-name-vnd": "越南盾", + "currency-display-name-zar": "南非兰特", + "current": "当前", + "current-average": "目前的平均值", + "current-average-tip": "当前平均费用", + "current-base": "目前的基础", + "current-base-fee": "当前基本费用", + "current-minimum-tip": "当前最低费用", + "current-network": "当前网络", + "current-password": "当前密码", + "current-pin": "输入6位数字密码", + "current-pin-description": "输入您的6位数字密码以继续", + "custom": "自定义", + "custom-networks": "自定义网络", + "custom-node": "您正在使用自定义RPC端点。您的本地交易记录可能不完整。", + "custom-seed-phrase": "助记词无效", + "custom-seed-phrase-text-1": "该助记词与我们支持的词库不匹配。请检查是否存在拼写错误。", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "接受并打开", + "dapp-starter-pack-description": "这是一些加密货币,可以帮助您入门!用其来获取贴纸、ENS名称并尝试DApp", + "dapp-starter-pack-title": "入门包", + "dapp-would-like-to-connect-wallet": "想要连接到", + "dapps": "ÐApp", + "dapps-permissions": "DApp权限", + "dark": "夜晚模式", + "data": "数据", + "data-collected": "收集的数据", + "data-collected-subtitle": "下表显示了存储和将发送的确切数据。数据根据公共规则进行验证,以确保不会发送敏感数据。应随时保持怀疑,并进行验证。", + "data-syncing": "数据同步中", + "database-reset-content": "已删除聊天记录、联系人和设置。您的帐户可与Keycard配合使用", + "database-reset-title": "数据库重置", + "database-reset-warning": "数据库将被重置。聊天记录、联系人和设置将被删除", + "datetime-ago": "之前", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-ago-format-short": "{{number}} {{time-intervals}}", + "datetime-day": { + "other": "天" + }, + "datetime-day-short": { + "other": "天" + }, + "datetime-hour": { + "other": "小时" + }, + "datetime-hour-short": { + "other": "小时" + }, + "datetime-minute": { + "other": "分钟" + }, + "datetime-minute-short": { + "other": "分" + }, + "datetime-second": { + "other": "秒" + }, + "datetime-second-short": { + "other": "秒" + }, + "datetime-today": "今天", + "datetime-yesterday": "昨天", + "decimals": "小数点", + "decline": "拒绝", + "declined": "拒绝", + "decryption-failed-content": "解密数据时发生错误。您可能需要擦除旧数据并生成一个新帐户。点击“应用”以擦除,或点击“取消”重试", + "default": "默认", + "default-assets": "默认的ERC20和ERC721代币", + "default-sync-period": "同步历史记录", + "delete": "刪除", + "delete-account": "删除帐户", + "delete-and-leave-group": "删除并离开群组", + "delete-bootnode": "删除引导节点", + "delete-bootnode-are-you-sure": "确定要删除此引导节点吗?", + "delete-bootnode-title": "删除引导节点", + "delete-category-confirmation": "您确定要删除此类别吗?", + "close-chat": "刪除聊天", + "close-chat-confirmation": "确定要删除此聊天?", + "delete-confirmation": "刪除?", + "delete-for-everyone": "为所有人删除", + "delete-for-me": "为我删除", + "delete-keys-keycard": "从Keycard中删除密钥", + "delete-mailserver": "删除Status节点", + "delete-mailserver-are-you-sure": "确定要删除此Status节点吗?", + "delete-mailserver-title": "删除Status节点", + "delete-message": "删除消息", + "delete-my-account": "删除我的帐户", + "delete-my-profile": "删除我的个人资料", + "delete-network-confirmation": "确定要删除此网络吗?", + "delete-network-error": "请在删除此网络之前连接到其他网络", + "delete-network-title": "删除网络?", + "delete-node": "删除节点", + "delete-node-are-you-sure": "您确定要删除此节点吗?", + "delete-node-title": "删除节点", + "delete-profile": "删除个人资料", + "delete-profile-warning": "警告:如果您没有记下助记词, 在删除个人资料后,您将失去对资金的访问权限", + "deny": "拒绝", + "derivation-path": "派生路径", + "describe-channel": "渠道简介", + "description": "描述", + "dev-mode": "开发者模式", + "dev-mode-settings": "开发模式设置", + "device-syncing": "设备同步", + "devices": "设备", + "disable": "禁用", + "disable-all": "全部禁用", + "disable-later-in-settings": "您可以稍后在“设置”中禁用此功能", + "disabled": "已禁用", + "disconnect": "断开连接", + "disconnected": "离线聊天", + "discover": "发现", + "discover-communities": "发现社区", + "dismiss": "取消", + "display-collectibles": "展示收藏品", + "done": "完成", + "dont-ask": "不再询问我", + "edit": "编辑", + "edit-categories": "编辑类别", + "edit-channel-title": "编辑频道", + "edit-chats": "编辑聊天", + "edit-community": "编辑社区", + "edit-favourite": "编辑收藏夹", + "edit-group": "编辑群组", + "edit-message": "编辑消息", + "edit-name-and-image": "编辑名称和图像", + "edit-name-image": "编辑名称和图像", + "edit-nickname": "修改昵称", + "edit-profile": "编辑个人资料", + "edited": "已编辑", + "editing-message": "编辑消息", + "empty-activity-center": "您的聊天通知\n会在这里显示", + "empty-chat-description": "此聊天中\n还没有消息", + "empty-chat-description-community": "在过去{{quiet-hours}}没有新的消息。", + "empty-chat-description-one-to-one": "您在这里发送的任何消息都会加密, 只能由您读取,还有", + "empty-chat-description-public": "最近{{quiet-hours}}这里没有消息 。开始聊天或", + "empty-chat-description-public-share-this": "分享此聊天。", + "empty-keycard-required": "需要空白的Keycard", + "empty-pending-invitations-descr": "希望通过邀请链接加入群组的人将显示在此处", + "empty-tab": "空选项卡", + "enable": "启用", + "enable-all": "全部启用", + "enable-link-previews": "在聊天中启用链接预览?", + "encrypt-with-password": "用密码加密", + "ens-10-SNT": "10 SNT", + "ens-add-username": "添加用户名", + "ens-agree-to": "同意", + "ens-chat-settings": "聊天设置", + "ens-custom-domain": "自定义域名", + "ens-custom-username-hints": "输入完整的用户名,包括自定义域,例如username.domain.eth", + "ens-custom-username-taken": "用户名不属于您 :(", + "ens-deposit": "存款", + "ens-dismiss-message": "点击此处关闭", + "ens-displayed-with": "您的消息会显示给其他人", + "ens-get-name": "获取通用用户名", + "ens-got-it": "好的, 知道了", + "ens-locked": "用户名已锁定。您必须等到{{date}}才能将其释放", + "ens-name-content": "您可以使用以太坊名称服务(ENS)为您的聊天码注册的自定义别名。ENS名称是去中心化的用户名。", + "ens-name-not-found": "无法解析ENS名称", + "ens-name-title": "ENS名称", + "ens-network-restriction": "仅适用于主网", + "ens-no-usernames": "您没有关联任何用户名", + "ens-powered-by": "由以太坊名称服务提供支持", + "ens-primary-username": "主用户名", + "ens-register": "注册", + "ens-registration-failed": "要注册用户名,请重试。", + "ens-registration-failed-title": "交易失败", + "ens-registration-failure": "注册失败", + "ens-registration-in-progress": "正在注册...", + "ens-release-username": "释放用户名", + "ens-remove-hints": "删除将从密钥中分离用户名。", + "ens-remove-username": "删除用户名", + "ens-saved": " 现在已与您的聊天码相关联,可以在Status中使用了。", + "ens-saved-title": "用户名已添加", + "ens-show-username": "在聊天中显示我的ENS用户名", + "ens-terms-header": "名称注册条款", + "ens-terms-point-1": "资金存入1年。您的SNT将被锁定,但不会被花费。", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e(ENS注册表)。", + "ens-terms-point-2": "1年后,您可以释放名称并赎回您的押金,或者不采取任何措施保留该名称。", + "ens-terms-point-3": "如果合约条款发生变化(例如,Status升级合约),用户有权释放用户名,无论持有时间长短。", + "ens-terms-point-4": "合约控制者无法访问您缴纳的押金。它们只能原路返回发送它们的钱包地址。", + "ens-terms-point-5": "您的地址将与您的ENS名称公开关联。", + "ens-terms-point-6": "用户名创建为stateofus.eth的子域节点,并受ENS智能合约条款的约束。", + "ens-terms-point-7": "您授权合约代表您转发SNT。仅当您批准交易以授权转发时,才会出现这种情况。", + "ens-terms-point-8": "这些条款由下列地址的智能合约逻辑保证:", + "ens-terms-point-9": "{{address}} (Status用户名注册器)", + "ens-terms-registration": "名称注册条款。", + "ens-test-message": "嘿", + "ens-transaction-pending": "交易待确定…", + "ens-understand": "我知道我的钱包地址将公开连接到我的用户名。", + "ens-username": "ENS用户名", + "ens-username-already-added": "用户名已与您的聊天码关联,可以在Status中使用。", + "ens-username-available": "✓用户名可用!", + "ens-username-connected": "此用户名归您所有,并与您的聊天码相关联。", + "ens-username-connected-continue": "继续以设置“在聊天中显示我的ENS用户名”。", + "ens-username-connected-with-different-key": "如果继续,将需要通过一笔交易将用户名与您当前的聊天码关联起来。", + "ens-username-connection-confirmation": "交易一旦完成, {{username}}将被关联。", + "ens-username-hints": "至少4个字符。仅限拉丁字母、数字和小写字母。", + "ens-username-invalid": "仅限字母和数字。", + "ens-username-invalid-name-warning": "您的一个 ens 名称的注册过程已在无效状态下完成。请勿使用该名称进行钱包交易,并通过 support@status.im 获得我们的支持", + "ens-username-owned": "✓用户名归您所有。", + "ens-username-owned-continue": "如果继续,会将此用户名与您的聊天码关联。", + "ens-username-registration-confirmation": "恭喜!交易完成后,您即可拥有{{username}} 。", + "ens-username-registration-invalid": "警告!注册过程已在无效状态下完成。请勿使用该名称进行钱包交易,并通过 support@status.im 联系我们并获得支持", + "ens-username-taken": "用户名已被占用 :(", + "ens-username-you-can-follow-progress": "您可以在钱包的\"交易历史记录\"中关注进度。", + "ens-usernames": "ENS用户名", + "ens-usernames-details": "注册一个通用用户名,以方便其他用户轻松找到您", + "ens-want-custom-domain": "我在其他域上拥有名称", + "ens-want-domain": "我想要一个stateofus.eth域名", + "ens-welcome-hints": "ENS名称将那些冗长的地址转换为独一无二的用户名。", + "ens-welcome-point-customize": "ENS名称可以替换聊天中随机产生的由3个单词组成的名称。显示为“@您的名称”而不是{{name}} 。", + "ens-welcome-point-customize-title": "自定义聊天名称", + "ens-welcome-point-receive": "其他人可以在聊天中通过一个简单的操作向您汇款。", + "ens-welcome-point-receive-title": "在聊天中接收交易", + "ens-welcome-point-register": "注册一次就可以永久保留该用户名。1年后,您可以解绑用户名,并赎回您的SNT。", + "ens-welcome-point-register-title": "注册需要10个SNT", + "ens-welcome-point-simplify": "您可以使用易于共享的ENS名称而不是十六进制哈希(0x ...)来接收资金。", + "ens-welcome-point-simplify-title": "简化您的ETH地址", + "ens-welcome-point-verify": "您可以在后续步骤中验证并添加您拥有的任何用户名。", + "ens-welcome-point-verify-title": "已经拥有用户名?", + "ens-your-username": "您的用户名", + "ens-your-usernames": "您的用户名", + "ens-your-your-name": "您的ENS名称", + "enter-12-words": "输入您的12个助记词,并使用单个空格隔开", + "enter-a-private-key": "输入私钥", + "enter-a-seed-phrase": "输入助记词", + "enter-address": "输入地址", + "enter-contact-code": "ENS(vitalik94)或聊天码(0x04…)", + "enter-pair-code": "输入配对码", + "enter-pair-code-description": "可以从已配对的Status客户端设置配对码", + "enter-password": "输入密码", + "enter-password-migration-prompt": "输入密码以移动与您的密钥相关的好友名单、聊天和设置", + "enter-pin": "输入6位数字密码", + "enter-puk-code": "输入PUK码", + "enter-puk-code-description": "6位数字密码已锁定。 \n请输入PUK码以解锁密码。", + "enter-recipient-address-or-username": "输入接收人的地址或用户名", + "enter-seed-phrase": "输入助记词", + "enter-url": "输入网址", + "enter-user-pk": "输入用户公钥", + "enter-watch-account-address": "扫描二维码\n或\n输入要观察的地址", + "enter-word": "输入单词", + "enter-your-code": "输入您的6位密码", + "enter-your-password": "输入您的密码", + "error": "错误", + "error-unable-to-get-balance": "无法获取余额", + "error-unable-to-get-prices": "货币转换错误,请刷新屏幕以重试。", + "error-unable-to-get-token-balance": "无法获取代币余额", + "errors": "错误", + "eth": "ETH", + "ethereum-address": "以太坊地址", + "ethereum-node-started-incorrectly-description": "以太坊节点启动配置不正确,应用程序将停止从该条件恢复。已配置的网络ID = {{network-id}} ,实际网络ID = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "以太坊节点启动不正确", + "etherscan-lookup": "在Etherscan上查找", + "everyone": "所有人", + "expand-all": "展开全部", + "export-account": "导出帐户", + "export-key": "导出私钥", + "external-link": "外部链接", + "external-storage-denied": "对外部存储的访问遭到拒绝", + "failed": "失败", + "faq": "常见问题", + "fast": "快", + "favourite": "收藏夹", + "favourite-description": "您收藏的网站将显示在此处", + "favourites": "收藏夹", + "favourites-empty": "添加到收藏夹的地址将显示在此处", + "featured": "精选", + "fee-cap": "手续费上限", + "fee-explanation": "交易的最高费用。如果区块基本费用超过这个数值,则交易将被打包进基础费用较低的下一个区块中。", + "fee-options": "推荐的费用方案", + "fetch-community": "获取社区", + "fetch-messages": "↓获取消息", + "fetch-timeline": "↓获取", + "fetching-community": "正在获取社区...", + "find": "查找", + "finish": "完成", + "finishing-card-setup": "卡设置完成", + "fleet": "组别", + "fleet-settings": "组别设置", + "follow": "追踪", + "follow-your-interests": "进入公共聊天并结识新朋友", + "free": "↓免费", + "from": "从", + "gas-amount-limit": "gas数量上限", + "gas-limit": "Gas限制", + "gas-price": "Gas价格", + "gas-used": "使用的Gas", + "gated": " 有门槛", + "generate-a-key": "生成密钥", + "generate-a-new-account": "生成帐户", + "generate-a-new-key": "生成新密钥", + "generate-account": "生成密钥", + "generate-an-account": "生成帐户", + "generate-new-key": "生成密钥", + "generating-codes-for-pairing": "> 下载产品软件至卡\n > 生成解锁和配对码", + "generating-keys": "正在生成密钥…", + "generating-mnemonic": "生成助记词", + "get-a-keycard": "获取Keycard", + "get-started": "开始", + "get-status-at": "在http:\/\/status.im上获取Status", + "get-stickers": "获取贴纸", + "gif": "GIF", + "give-a-short-description": "请简短描述", + "give-a-short-description-community": "请简短描述", + "give-permissions-camera": "授予访问\n相机的权限", + "glossary": "词汇", + "go-to-settings": "前往设置…", + "got-it": "知道了", + "grant-face-id-permissions": "要授予脸部ID权限,请转到系统设置,确保选中“Status > 脸部ID”", + "group-chat": "群聊", + "group-chat-admin": "管理员", + "group-chat-admin-added": "** {{member}} **已成为管理员", + "group-chat-all-contacts-invited": "您的所有联系人都已在群组中", + "group-chat-created": "** {{member}} **创建了群** {{name}} **", + "group-chat-decline-invitation": "拒绝邀请", + "group-chat-member-added": "已邀请** {{member}} **", + "group-chat-member-joined": "** {{member}} **加入了群", + "group-chat-member-removed": "** {{member}} **离开了群", + "group-chat-members-count": "{{selected}} \/ {{max}}成员", + "group-chat-name-changed": "** {{member}} **将群名称更改为了** {{name}} **", + "group-chat-no-contacts": "您还没有任何联系人。 \n邀请您的好友开始聊天", + "group-details": "群信息", + "group-info": "群信息", + "group-invite": "群组邀请", + "group-invite-link": "群组邀请链接", + "group-membership-request": "加群请求", + "groups": "群组", + "gwei": "GWEI", + "has-permissions": "有权访问", + "hash": "哈希", + "help": "帮助", + "help-capitalized": "帮助", + "help-center": "帮助中心", + "help-improve-status": "帮助改善Status", + "hide": "隐藏", + "hide-content-when-switching-apps": "禁止屏幕截图", + "hide-content-when-switching-apps-ios": "隐藏预览", + "history": "历史记录", + "history-nodes": "Status节点", + "hold-card": "将卡贴放在手机背面", + "home": "主页", + "hooks": "挂钩", + "how-it-works": "使用方法", + "http-gateway-error": "糟糕,请求失败!", + "identifier": "标识符", + "identity-verification": "身份验证", + "identity-verification-request": "身份验证", + "image": "图像", + "image-remove-current": "删除当前照片", + "image-source-gallery": "从图库中选择", + "image-source-make-photo": "拍摄", + "image-source-title": "编辑图片", + "import": "导入", + "import-community": "导入社区", + "import-community-title": "导入社区", + "in-contacts": "在联系人中", + "include": "包括", + "incoming": "转入", + "incoming-transaction": "转入交易", + "incorrect-code": [ + "str", + "抱歉,此码不正确,请重新输入" + ], + "increase-gas": "增加Gas", + "initialization": "初始化", + "install": "↓安装", + "insufficient-balance-to-cover-fee": "余额不足以支付交易费", + "intro-message1": "欢迎使用Status!\n点击此消息设置您的密码并开始。", + "intro-privacy-policy-note1": "Status不会收集您的个人数据或从中获利。通过继续,即表示您同意", + "intro-privacy-policy-note2": "隐私政策", + "intro-text": "Status是您通向去中心化网络的门户", + "intro-text1": "通过点对点加密网络进行聊天,消息不会受到审查或黑客入侵", + "intro-text2": "在世界任何地方发送和接收数字资产 - 无需银行帐户", + "intro-text3": "探索您独自拥有自己数据的游戏、交易所和社交网络", + "intro-title1": "真正的私密交流", + "intro-title2": "安全加密钱包", + "intro-title3": "去中心化应用程序", + "intro-wizard-text1": "您的帐户由一组密钥控制。您的密钥存储在您的手机上,只有您可以使用它们", + "intro-wizard-text2": "一个密钥用于聊天。它有一个无法更改的可读名称。", + "intro-wizard-text3": "如果您有Keycard,将您的密钥存储在其上可以增强安全性。", + "intro-wizard-text4": "保护并加密您的密钥", + "intro-wizard-text6": "有新消息时Status将通知您。您稍后可在设置中编辑您的通知首选项", + "intro-wizard-title-alt4": "创建密码", + "intro-wizard-title-alt5": "确认密码", + "intro-wizard-title1": "获取密钥", + "intro-wizard-title2": "选择一个聊天名称", + "intro-wizard-title3": "选择密钥存储", + "intro-wizard-title4": "创建一个6位密码", + "intro-wizard-title5": "确认密码", + "intro-wizard-title6": "启用通知", + "introduce-yourself": "请简要介绍您自己", + "invalid-address-qr-code": "扫描的二维码不包含有效地址", + "invalid-format": "无效的格式\n必须是{{format}}", + "invalid-key-confirm": "应用", + "invalid-key-content": "由于文件损坏,无法加密数据库。您的资金和聊天码安全。其他数据(例如您的聊天和联系人)无法恢复。“{{erase-multiaccounts-data-button-text}}”按钮将删除所有其他数据,并允许您访问资金和发送消息", + "invalid-number": "无效数字", + "invalid-pairing-password": "配对密码无效", + "invalid-public-chat-topic": "公共聊天主题无效", + "invalid-range": "格式无效\n必须在{{min}}与{{max}}之间", + "invalid-username-or-key": "用户名或聊天码无效", + "invite": "邀请", + "invite-button": "邀请", + "invite-chat-accept": "接受", + "invite-chat-accept-join": "接受并加入", + "invite-chat-intro": "您被朋友推荐加入Status。这是一些加密货币,可以帮助您入门!用其注册一个ENS名称或购买贴纸包", + "invite-chat-name": "朋友推荐", + "invite-chat-pending": "等待中", + "invite-chat-rule": "接受将让您的朋友也获得推荐奖励", + "invite-chat-starter-pack": "入门包", + "invite-contacts": "邀请好友加入社区", + "invite-friends": "邀请好友", + "invite-friends-to-status": "邀请好友到Status", + "invite-instruction-fifth": "您可以选择随时兑换您的推荐奖金。", + "invite-instruction-first": "您向朋友发送一个专属的邀请链接,以下载并加入Status", + "invite-instruction-fourth": "您将收到推荐奖金,您的朋友将收到入门包", + "invite-instruction-second": "您的朋友下载Status并创建帐户(在安卓上)", + "invite-instruction-third": "开始与您的朋友聊天,让他们可以确认您的推荐", + "invite-people": "邀请其他人", + "invite-privacy-policy-public": "您已通过推荐链接安装了Status。通过加入此聊天,即表明您将归于您的推荐人并同意", + "invite-privacy-policy1": "接受即表示您同意推荐计划", + "invite-privacy-policy2": "条款和条件。", + "invite-public-chat-home": "推荐邀请", + "invite-public-chat-intro": "这里有一些加密货币能帮助您更快上手!用其注册ENS名称或购买贴纸包", + "invite-receive-account": "接收推荐奖励的帐户", + "invite-reward": "您每邀请一个朋友都可以赚取加密货币", + "invite-reward-friend": "朋友:", + "invite-reward-friend-description": "您的朋友将收到包含一些{{reward}}的入门包,以开始使用Status", + "invite-reward-friend-name": "入门包", + "invite-reward-you": "您:", + "invite-reward-you-description": "邀请朋友并获得{{reward}}作为推荐奖金。用其来购买贴纸、ENS名称并尝试DApp", + "invite-reward-you-name": "推荐奖励", + "invite-select-account": "选择一个帐户来接收您的推荐奖励", + "invite-warning": "此推广活动仅适用于非美国居民的安卓设备用户。朋友需要在7天内确认推荐", + "invited": "已邀请", + "italic": "斜体", + "join": "加入", + "join-a-community": "或加入社区", + "join-group-chat": "加入群", + "join-group-chat-description": "{{username}}邀请您加入群组{{group-name}}", + "join-me": "您好,请在Status上加入我: {{url}}", + "join-new-private-chat": "开始新的私密聊天", + "join-new-public-chat": "加入公共聊天", + "join-open-community": "加入社区", + "joined": "已加入", + "joined-group-chat-description": "您通过{{username}}的邀请加入{{group-name}}", + "key": "密钥", + "key-managment": "密钥管理", + "key-on-device": "私钥已保存于此设备", + "keycard": "Keycard", + "keycard-access-reset": "Keycard访问权限已重置", + "keycard-applet-install-instructions": "要安装小程序,请按照https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation上的说明进行操作。", + "keycard-awaiting-description": "尝试移动卡以找到设备上的NFC读卡器", + "keycard-awaiting-title": "仍在寻找...", + "keycard-backup": "创建备份Keycard", + "keycard-backup-success-body": "备份卡创建成功。现在,您可以像主卡一样在帐户中使用。", + "keycard-backup-success-title": "备份成功", + "keycard-blocked": "Keycard已被锁定。 \n您需要重置卡才能继续使用它。", + "keycard-can-use-with-new-passcode": "您可以通过新密码使用此卡", + "keycard-cancel-setup-text": "这将取消Keycard设置。强烈建议完成此设置以使用Keycard。确定要取消吗?", + "keycard-cancel-setup-title": "危险操作", + "keycard-connected-description": "保持卡不动", + "keycard-connected-title": "已连接", + "keycard-desc": "拥有Keycard?将密钥存储在其上;进行交易时,您将需要用到它", + "keycard-dont-ask-card": "无卡登录", + "keycard-enter-new-passcode": "输入新的密码{{step}} \/ 2", + "keycard-error-description": "再次连接卡以继续", + "keycard-error-title": "连接丢失", + "keycard-factory-reset": "将卡恢复为出厂设置", + "keycard-factory-reset-text": "执行此操作将删除卡上存储的所有助记词。确保您已备份了此Keycard上存储的助记词。", + "keycard-factory-reset-title": "确定要恢复出厂设置吗?", + "keycard-free-pairing-slots": "Keycard有{{n}}个空闲配对位", + "keycard-has-multiaccount-on-it": "此卡已满。每张卡可存储一个主密钥对", + "keycard-init-description": "请将卡放在手机背面以继续", + "keycard-init-title": "正在寻找卡片...", + "keycard-is-blocked-details": "您无法再使用此卡访问或签名此帐户。密码和PUK尝试失败次数过多。", + "keycard-is-blocked-instructions": "要访问您的帐户,您需要将卡恢复出厂设置。点击下面的按钮开始,您将需要助记词。", + "keycard-is-blocked-title": "Keycard已被锁定", + "keycard-is-frozen-details": "为了保护您的资产,您的卡已被冻结。请重置以解冻您的卡并恢复发送交易功能。您可以使用PUK或助记词来执行此操作。", + "keycard-is-frozen-factory-reset": "用助记词重置", + "keycard-is-frozen-reset": "用PUK重置", + "keycard-is-frozen-title": "Keycard被冻结", + "keycard-onboarding-finishing-header": "完成", + "keycard-onboarding-intro-header": "将密钥存储在keycard上", + "keycard-onboarding-intro-text": "已经准备好,可能需要几分钟,但这对保护您的帐户非常重要", + "keycard-onboarding-mnemonic-text": "您还需要一张纸和一支笔写下您的助记词。", + "keycard-onboarding-pairing-header": "正在配对卡...", + "keycard-onboarding-pin-text": "您将需要创建一个6位数的密码,用于保护对Keycard的访问。", + "keycard-onboarding-preparing-header": "正在准备密钥卡", + "keycard-onboarding-puk-code-header": "写下密码\n并安全地保存它们", + "keycard-onboarding-recovery-phrase-description": "您需要此助记词来找回密钥。请抄写下来,安全离线保存,并与本设备分开。", + "keycard-onboarding-recovery-phrase-header": "备份助记词", + "keycard-onboarding-recovery-phrase-text": "只用于查看。这是用于生成密钥的神奇种子。", + "keycard-onboarding-start-header": "将Keycard贴近手机背面以开始", + "keycard-onboarding-start-step1": "创建密码", + "keycard-onboarding-start-step1-text": "大约1分钟。创建一个6位密码来加密您的密钥", + "keycard-onboarding-start-step2": "写下PUK码和配对码", + "keycard-onboarding-start-step2-text": "大约1分钟。您需要准备纸和笔", + "keycard-onboarding-start-step3": "备份助记词", + "keycard-onboarding-start-step3-text": "大约1分钟。还需要准备笔和纸", + "keycard-onboarding-start-text": "设置过程中保持卡与手机接触。设置大约需要4分钟", + "keycard-processing-description": "保持卡不动", + "keycard-processing-title": "处理中...", + "keycard-recover": "卡丢失或锁定?", + "keycard-recover-text": "如果您有助记词,则可以创建与此帐户关联的新Keycard。您可以使用新的Keycard,也可以将锁定的Keycard恢复出厂设置。", + "keycard-recover-title": "为此帐户创建一张新卡?", + "keycard-recovery-intro-button-text": "开始恢复", + "keycard-recovery-intro-header": "恢复存储在Keycard上的密钥", + "keycard-recovery-intro-text": "如果您之前使用Keycard生成了密钥,现在想在本设备上使用该密钥", + "keycard-recovery-no-key-header": "没有要恢复的内容", + "keycard-recovery-no-key-text": "您的Keycard上没有存储密钥。要使用它,请生成一个新密钥并选择存储到Keycard", + "keycard-recovery-phrase-confirm-header": "确认助记词", + "keycard-recovery-phrase-confirmation-text": "您将没有第二次机会!如果您失去访问权限(例如,丢失了Keycard),则只能使用助记词访问密钥。只有您自己拥有您的助记词。请务必将助记词写到纸上并安全保存。", + "keycard-recovery-phrase-confirmation-title": "已抄写下助记词了吗?", + "keycard-recovery-success-header": "您的密钥已成功恢复", + "keycard-redeem-title": "赎回到", + "keycard-redeem-tx": "赎回资产", + "keycard-redeem-tx-desc": "贴近卡以完成签名和接收资产", + "keycard-reset-passcode": "重置密码", + "keycard-success-description": "您现在可以移除卡", + "keycard-success-title": "成功", + "keycard-unauthorized-operation": "您未经授权执行此操作。 \n请选择有效卡,然后重试。", + "keycard-upsell-subtitle": "增强的安全性和便利性", + "kicked": "已踢", + "language": "语言", + "last-backup-performed": "上次执行的备份:", + "last-transaction": "上一笔交易", + "learn-more": "了解更多", + "learn-more-about-keycard": "了解有关Keycard的更多信息", + "leave": "离开", + "leave-chat": "退出聊天", + "leave-chat-confirmation": "聊天记录将从您的设备中删除。重新加入后,您将无法查看您的任何历史记录。", + "leave-community": "退出社区", + "leave-community-message": "很遗憾你的离开,但请记住,你可以随时回来!", + "leave-community?": "离开社区?", + "leave-confirmation": "退出{{chat-name}}", + "leave-group": "退群", + "left": "剩余", + "les-ulc": "LES\/ULC", + "lets-go": "开始", + "lifestyle": "生活", + "light": "白天模式", + "limit": "限价", + "link-to-community": "链接到社区", + "linked-on": "已与{{date}}关联", + "load-messages-before": "在{{date}} 之前", + "load-more-messages": "↓获取更多消息", + "load-more-timeline": "↓获取更多", + "loading": "载入中...", + "local-notifications": "本地通知", + "local-notifications-subtitle": "启用后台服务", + "lock-app-with": "锁定应用程序方式", + "log-level": "日志级别", + "log-level-settings": "日志级别设置", + "logging": "日志记录", + "logging-enabled": "启用日志记录?", + "login-pin-description": "输入您的6位数字密码来解锁密钥", + "logout": "注销", + "logout-app-content": "该帐户将被注销。再次解锁时,将使用所选的网络", + "logout-are-you-sure": "确定要注销吗?", + "logout-key-management": "您需要先注销才能访问密钥管理。", + "logout-title": "注销?", + "looking-for-cards": "正在查找卡...", + "lost-connection": "连接中断", + "low-tip": "手续费太低", + "lower-than-average-tip": "低于平均手续费", + "mail-should-be-configured": "应配置邮件客户端", + "mailserver-address": "Status节点地址", + "mailserver-automatic": "自动选择", + "mailserver-automatic-switch-explanation": "选择可用的最快Status节点", + "mailserver-connection-error": "无法连接到Status节点", + "mailserver-content": "Status网络中路由和存储消息的节点,最多存储30天的消息。", + "mailserver-details": "Status节点详细信息", + "mailserver-error-content": "无法访问您选择的Status节点。", + "mailserver-error-title": "连接到Status节点时出错", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "选择其他Status节点", + "mailserver-reconnect": "无法连接到Status节点。点击重新连接", + "mailserver-request-error-content": "Status节点返回了以下错误:{{error}}", + "mailserver-request-error-status": "获取历史消息时发生错误,请查看日志以获取详细信息", + "mailserver-request-error-title": "Status节点请求错误", + "mailserver-request-retry": "重试请求", + "mailserver-retry": "重试", + "mailserver-title": "Status节点", + "main-account": "主账户", + "main-currency": "主要货币", + "main-networks": "主网", + "main-wallet": "主钱包", + "mainnet-network": "主网", + "make-admin": "设置管理员", + "manage-connections": "管理来自应用连接中的连接", + "manage-keys-and-storage": "管理密钥和存储", + "manage-members": "管理成员", + "mark-all-read": "标记全部为已读", + "mark-as-read": "标记为已读", + "mark-untrustworthy": "标记为不可信", + "master-account": "主帐户", + "max-fee": "最高交易费用", + "max-priority-fee": "最高手续费", + "maximum-fee": "最高费用上限", + "maximum-fee-desc": "交易的最高手续费。如果当前区块基础费用超过此值,您的交易将包含在下一个基础费用较低的区块中。", + "maybe-later": "以后再说", + "member-ban": "禁止成员", + "member-kick": "删除成员", + "members": { + "other": "{{count}} 个成员" + }, + "members-active": { + "other": "{{count}} 个成员" + }, + "members-active-none": "没有成员", + "members-count": "{{count}}位成员", + "members-label": "成员", + "members-limit-reached": "达到成员人数上限", + "members-title": "成员", + "membership": "成员资格", + "membership-approval": "需要取得同意", + "membership-approval-description": "您的社区可以自由加入,但是新成员首次必须先获得社区创建者的同意", + "membership-button": "加入条件", + "membership-declined": "进群申请被拒绝", + "membership-description": "进群需要群管理员同意", + "membership-ens": "需要ENS用户名", + "membership-ens-description": "您的社区需要有ENS用户名才能加入", + "membership-free": "无要求", + "membership-free-description": "任何人都可以自由加入您的社区", + "membership-invite": "需要其他成员的邀请", + "membership-invite-description": "您的社区只能通过现有社区成员的邀请才能加入", + "membership-none": "无", + "membership-none-placeholder": "您可以要求新成员在加入前满足某些条件。这些条件可以随时更改", + "membership-request-pending": "加入申请待通过", + "membership-requests": "加入申请", + "membership-title": "加入条件", + "mentions": "提及", + "message": "消息", + "message-deleted": "消息已删除", + "message-deleted-for-you": "为您删除的消息", + "message-not-sent": "消息未发送", + "message-options-cancel": "取消", + "message-reply": "回复", + "messages": "消息", + "messages-from-contacts-only-subtitle": "只有您添加为联系人的人可以与您开始新的聊天或邀请您加入群组", + "messages-gap-warning": "某些消息可能丢失", + "might-break": "可能会破坏一些ÐApp", + "migration-successful": "迁移成功", + "migration-successful-text": "帐号成功迁移到 Keycard", + "migrations-failed-content": "{{message}} \n架构版本:初始{{initial-version}} ,当前{{current-version}} ,最新{{last-version}} \n\n发生数据库错误。您的资金和聊天码安全。其他数据(例如您的聊天和联系人)无法恢复。 “{{erase-multiaccounts-data-button-text}}” 按钮将删除所有其他数据,并允许您访问资金并发送消息。", + "miners-higher-fee": "如果您支付更高的费用,矿工可能会更早地打包您的交易。", + "minimum-received": "最低收到", + "mobile-network-ask-me": "当在移动网络上时询问我", + "mobile-network-continue-syncing": "继续同步", + "mobile-network-continue-syncing-details": "您可以稍后在设置中更改此设置", + "mobile-network-go-to-settings": "前往设置", + "mobile-network-settings": "移动数据", + "mobile-network-sheet-configure": "您可以配置更多同步选项,请到", + "mobile-network-sheet-offline": "无Wi-Fi,消息同步已禁用。", + "mobile-network-sheet-offline-details": "使用移动网络同步已关闭", + "mobile-network-sheet-remember-choice": "记住我的选择", + "mobile-network-sheet-settings": "设置", + "mobile-network-start-syncing": "开始同步", + "mobile-network-stop-syncing": "停止同步", + "mobile-network-stop-syncing-details": "直到连接到Wi-Fi?", + "mobile-network-use-mobile": "使用移动数据", + "mobile-network-use-mobile-data": "同步聊天和钱包时,Status会消耗大量数据流量。", + "mobile-network-use-wifi": "仅限Wi-Fi", + "mobile-syncing-sheet-details": "同步聊天和钱包时,Status会消耗大量数据流量。", + "mobile-syncing-sheet-title": "使用移动数据同步?", + "more": "更多", + "move-and-reset": "迁移并重置", + "move-keystore-file": "迁移密钥存储文件", + "move-keystore-file-to-keycard": "将密钥存储文件迁移到Keycard?", + "multiaccount-exists-content": "此帐户的密钥已存在,无法再次添加。如果您忘记了密码、通行码或keycard,请卸载此应用程序,然后重新安装并且通过输入助记词的方式访问您的密钥。", + "multiaccount-exists-title": "此帐户的密钥已经存在", + "multiaccounts-recover-enter-phrase-text": "输入12、15、18、21或24个单词。 \n单词之间用单个空格分隔。", + "multiaccounts-recover-enter-phrase-title": "输入您的助记词", + "music": "音乐", + "mutal-contacts": "互为好友", + "mute": "静音", + "mute-chat": "静音聊天", + "mute-community": "静音社区", + "mutual-contact-requests": "请求加为好友", + "my-accounts": "我的帐户", + "my-accounts-empty": "您的可用帐户将显示在此处", + "my-profile": "我的个人资料", + "my-status": "我的状态", + "n-photos": "{{count}}照片", + "name": "名称", + "name-of-token": "代币的名称", + "name-optional": "名称(可选)", + "name-your-channel": "命名您的频道", + "name-your-channel-placeholder": "频道名称", + "name-your-community": "命名您的社区", + "name-your-community-placeholder": "容易记住的名称", + "need-help": "需要帮助?", + "negative": "负的", + "network": "网络", + "network-chain": "网链", + "network-details": "网络详细信息", + "network-fee": "网络费", + "network-id": "网络ID", + "network-info": "网络信息", + "network-invalid-network-id": "指定的网络ID与RPC URL的网络ID不对应", + "network-invalid-status-code": "无效状态码: {{code}}", + "network-invalid-url": "网络URL无效", + "network-settings": "网络设置", + "never": "从不", + "new": "新", + "new-category": "新类别", + "new-chat": "新聊天", + "new-community-title": "新社区", + "new-contact": "新联系人", + "new-contract": "新合约", + "new-favourite": "新的收藏", + "new-group": "新群组", + "new-group-chat": "新的群聊", + "new-messages-header": "新消息", + "new-network": "新网络", + "new-password": "新密码", + "new-pin-description": "输入新的6位数字密码", + "new-public-group-chat": "加入公共聊天", + "new-puk-description": "输入新的12位PUK码", + "new-status": "新状态", + "new-tab": "新选项卡", + "new-ui": "新的用户界面", + "next": "下一步", + "nickname": "昵称", + "nickname-description": "昵称可帮助您识别Status中的其他人。 \n只有您可以看到您所添加的昵称", + "no": "否", + "no-collectibles": "没有可用的收藏物", + "no-contacts": "还没有联系人", + "no-keycard-applet-on-card": "卡上没有Keycard小程序", + "no-messages": "无消息", + "no-pairing-slots-available": "此卡已与5台设备配对,无法与此设备配对。请使用此卡登录已配对的其中一台设备,并释放卡上的配对插槽", + "no-pinned-messages": "没有置顶的消息", + "no-pinned-messages-community-desc": "此频道没有任何置顶的消息。", + "no-pinned-messages-desc": "此聊天没有任何置顶消息。", + "no-result": "没有结果", + "no-thanks": "不,谢谢", + "no-tokens-found": "没有找到代币", + "node-address": "节点地址", + "node-details": "节点详情", + "node-info": "节点信息", + "node-version": "节点版本", + "nodes-disabled": "Status节点已禁用", + "non-archival-node": "RPC端点不支持存档请求。您的本地交易记录可能不完整。", + "non-contacts": "非联系人", + "nonce": "随机数", + "none": "无", + "normal": "正常", + "not-applicable": "对未签名交易不可用", + "not-connected-nodes": "未连接到Status节点", + "not-connected-to-peers": "没有连接到任何对等点", + "not-enough-snt": "SNT不足", + "not-found": "未找到", + "not-keycard-text": "您使用的卡不是Keycard。您需要购买Keycard才能使用", + "not-keycard-title": "不是Keycard", + "not-registered": "未注册", + "notification-settings": "通知", + "notifications": "通知", + "notifications-non-contacts": "来自非联系人的通知", + "notifications-preferences": "通知首选项", + "notifications-servers": "通知服务器", + "notifications-switch": "显示通知", + "notifications-transactions": "钱包交易", + "notify": "通知", + "now": "现在", + "off": "关闭", + "off-status-tree": "不在Status树上", + "offline": "离线", + "offline-messaging-use-history-explanation": "启用Status节点以获取应用程序离线期间的消息。启用后,Status节点将获得您的IP地址。禁用后,您将不会收到应用程序离线时的消息,并且您在上线之后也不会收到离线期间的消息。", + "offline-messaging-use-history-nodes": "使用Status节点", + "ok": "确定", + "ok-continue": "好的,继续", + "ok-got-it": "好的, 知道了", + "ok-save-pass": "好的,保存密码", + "okay": "确定", + "on": "开启", + "on-status-tree": "在Status树上", + "once-enabled-share-metadata": "启用后,聊天中发送的链接可能会与网站共享您的元数据", + "one-day": "一天", + "one-month": "一个月", + "one-week": "一周", + "online": "在线", + "open": "打开", + "open-chat": "开启聊天", + "open-dapp": "打开ÐApp", + "open-dapp-store": "发现ÐApp", + "open-home": "打开...", + "open-in-new-tab": "在新选项卡中打开", + "open-membership": "开放加入", + "open-nfc-settings": "打开NFC设置", + "open-on-block-explorer": "在区块浏览器上打开", + "opened": "已开放", + "opening-buy-crypto": "打开{{site}} ...", + "optimal": "最佳", + "optional": "可选", + "or": "或", + "outgoing": "转出", + "outgoing-transaction": "转出交易", + "page-camera-request-blocked": "相机权限被拒绝。要启用相机权限,请前往“设置”", + "page-would-like-to-use-camera": "需要使用您的相机", + "pair": "配对设备", + "pair-card": "与此设备配对", + "pair-code": "配对码", + "pair-code-explanation": "将卡与其他设备配对(最多5个)以解锁密钥并使用同一keycard签署交易", + "pair-code-placeholder": "配对码...", + "pair-this-card": "配对此卡", + "pair-this-device": "广告设备", + "pair-this-device-description": "配对您的设备,以在它们之间同步联系人和聊天", + "paired-devices": "已配对设备", + "pairing": "配对", + "pairing-card": "配对卡", + "pairing-changed": "配对码已更改", + "pairing-code-placeholder": "配对码...", + "pairing-code_error1": "配对码不匹配。", + "pairing-go-to-installation": "前往配对设置", + "pairing-maximum-number-reached-content": "请在启用新设备之前禁用您的其中一个设备。", + "pairing-maximum-number-reached-title": "达到最大设备数", + "pairing-new-installation-detected-content": "已检测到新设备。 \n为了正确使用您的设备,请在使用前务必配对并启用它们。 \n请在设置中的设备部分配对您的设备。", + "pairing-new-installation-detected-title": "检测到新设备", + "pairing-no-info": "没有信息", + "pairing-please-set-a-name": "请为您的设备设置名称。", + "passphrase": "密码短语", + "password": "密码", + "password-description": "至少6个字符。您的密码可以保护您的密钥。您需要它来解锁Status并进行交易。", + "password-mismatch": "新密码和确认不一致", + "password-placeholder": "密码...", + "password-placeholder2": "确认您的密码", + "password-reset-in-progress": "更改密码中...", + "password-reset-success": "密码已重置", + "password-reset-success-message": "您需要重新登录", + "password_error1": "密码错误。", + "paste": "粘贴", + "paste-json": "粘贴JSON", + "pay-to-chat": "付费聊天", + "peer-content": "连接到Status聊天网络的设备。每个用户可以代表一个或多个对等点,具体取决于他们的设备数量。", + "peer-title": "对等点", + "peer-to-peer": "点对点", + "peers": "对等点", + "pending": "等待中", + "pending-confirmation": "待确认...", + "pending-invitations": "待处理的加群请求", + "pending-requests": "待处理的请求", + "per-gas-price-limit": "每次gas价格限制", + "per-gas-tip-limit": "每次gas手续费用限制", + "perform-backup": "进行备份", + "permissions": "权限", + "phone-e164": "国际1", + "photos": "照片", + "photos-access-error": "要授予所需的照片权限,请前往系统设置,并确保选中 “Status” > “照片”。", + "pin": "置顶", + "pin-changed": "6位数字密码已更改", + "pin-code": "6位数字密码", + "pin-limit-reached": "已达到置顶数上限。请先取消一条之前置顶的消息。", + "pin-mismatch": "密码错误", + "pin-one-attempt": "一次尝试,", + "pin-one-attempt-blocked-after": "之后您的Keycard将被锁定", + "pin-one-attempt-blocked-before": "请注意,您只有", + "pin-one-attempt-frozen-after": "在您的Keycard被冻结之前", + "pin-one-attempt-frozen-before": "请注意,您只有", + "pin-retries-left": "您还剩{{number}}次尝试机会", + "pin-to-channel": "在频道内置顶消息", + "pin-to-chat": "在聊天中置顶", + "pinned-a-message": "置顶消息", + "pinned-by": "被置顶", + "pinned-messages": "置顶的消息", + "pinned-messages-count": { + "other": " {{count}} 条置顶消息" + }, + "pinned-messages-empty": "置顶的消息将显示在此处。要置顶消息,请按住它并点击“置顶”", + "podcasts": "播客", + "positive": "正的", + "powered-by-paraswap": "由 Paraswap 提供支持", + "preference": "偏好", + "preview-privacy": "预览隐私模式", + "previewing-may-share-metadata": "预览这些网站的链接可能会与网站所有者共享您的元数据", + "price-impact": "价格变化", + "price-impact-desc": "此交易的估算价格。如果当前区块基础费用超过此值,您的交易将包含在下一个基础费用较低的区块中。", + "principles": "原则", + "priority": "优先程度", + "privacy": "隐私", + "privacy-and-security": "隐私和安全", + "privacy-photos": "个人资料照片隐私", + "privacy-policy": "隐私政策", + "privacy-show-to-warning": "已经看过你头像的人会继续可以看到", + "private-key": "私钥", + "private-notifications": "隐私通知", + "private-notifications-descr": "有新消息时Status将通知您。您稍后可在设置中编辑您的通知首选项。", + "processing": "稍等片刻", + "product-information": "产品信息", + "profile": "个人资料", + "profile-deleted-content": "您的个人资料已成功删除", + "profile-deleted-keycard": "现在,您可以在Keycard上恢复另一个密钥对", + "profile-deleted-title": "个人资料已删除", + "profile-details": "个人资料详细信息", + "profile-not-found": "找不到个人资料", + "profile-pic-pick": "从图库中选择", + "profile-pic-remove": "删除照片", + "profile-pic-take": "拍摄照片", + "profile-picture-updated": "头像图片已更新", + "public": "公共", + "public-channel": "公共频道", + "public-chat": "公共聊天", + "public-chat-description": "加入您感兴趣的公共聊天!任何人都可以创建一个新的公共聊天频道。", + "public-chats": "公共聊天", + "public-group-status": "公共", + "public-group-topic": "主题", + "public-key": "公钥", + "puk-and-pairing-codes-displayed": "显示PUK码和配对码", + "puk-changed": "12位PUK码已更改", + "puk-code": "PUK码", + "puk-code-explanation": "如果您忘记了6位数字密码或输入错误3次,则需要使用此码解锁您的卡。", + "puk-mismatch": "PUK码错误", + "push-failed-transaction": "您的交易失败", + "push-failed-transaction-body": "{{value}} {{currency}}至{{to}}", + "push-inbound-transaction": "您收到了{{value}} {{currency}}", + "push-inbound-transaction-body": "从{{from}}到{{to}}", + "push-notifications-server-enabled": "服务器已启用", + "push-notifications-servers": "推送通知服务器", + "push-outbound-transaction": "您发送了{{value}} {{currency}}", + "push-outbound-transaction-body": "从{{from}}到{{to}}", + "quiet-days": "{{quiet-days}}天", + "quiet-hours": "{{quiet-hours}}小时", + "re-encrypt-key": "重新加密密钥", + "rearrange-categories": "重新排列类别", + "receive": "接收", + "receive-transaction": "接收交易", + "received": "已收到", + "recent": "最近", + "recent-empty": "最近使用的地址将显示在此处", + "recent-recipients": "联系人", + "recently-used-stickers": "最近使用的贴纸将显示在此处", + "recipient": "接收入", + "recipient-code": "输入接收人地址", + "recipient-code-placeholder": "0x ...或用户名.域名.eth", + "recover": "恢复", + "recover-key": "访问现有密钥", + "recover-keycard-multiaccount-not-supported": "此帐户的密钥已存在,无法再次添加。如果您忘记了密码、通行码或Keycard,请卸载此应用程序,然后重新安装并且通过输入助记词的方式访问您的密钥。", + "recover-with-keycard": "使用Keycard恢复", + "recover-with-seed-phrase": "用助记词恢复", + "recovering-key": "正在访问密钥...", + "recovery-confirm-phrase": "确认助记词", + "recovery-phrase": "助记词", + "recovery-success-text": "您必须创建新的代码或密码才能重新加密密钥", + "recovery-typo-dialog-description": "请注意,您的助记词必须使用与您收到的词组完全相同的单词和顺序", + "recovery-typo-dialog-title": "此助记词正确吗?", + "redeem-amount": "{{quantity}}个待领取奖金", + "redeem-now": "立即领取", + "redeem-success": "领取奖励成功!", + "reduced-tip": "手续费将被减少", + "refresh": "刷新", + "registered": "已注册", + "reject": "拒绝", + "reject-and-delete": "拒绝并删除", + "remember-me": "记住我", + "remind-me-later": "给我再显示", + "remote-notifications": "远程通知", + "remote-notifications-subtitle": "启用谷歌推送通知", + "remove": "删除", + "remove-favourite": "删除收藏夹", + "remove-from-chat": "从聊天中删除", + "remove-from-contacts": "从联系人中删除", + "remove-from-contacts-text": "从联系人列表中删除用户,也无法对他们隐藏您的钱包地址", + "remove-group": "删除群", + "remove-network": "删除网络", + "remove-token": "删除代币", + "removed": "已删除", + "removed-from-contacts": "从联系人中删除", + "rename": "重命名", + "repeat-pin": "重复新的6位数字密码", + "repeat-puk": "重复新的12位PUK码", + "replies": "回复", + "replying-to": "回复{{author}}", + "report-bug-email-template": "1. 问题描述\n{{description}}\n \n\n 2. 重现步骤\n{{steps}}\n \n\n 3.请附上可以演示问题的截图\n", + "request-access": "申请加入", + "request-feature": "请求功能", + "request-membership": "申请进群", + "request-pending": "请求待处理...", + "request-to-join": "申请加入", + "request-transaction": "请求交易", + "required-field": "必填字段", + "resend-message": "重新发送", + "reset-card": "重置卡", + "reset-card-description": "此操作会将卡片重置为初始状态。它将清除所有的卡数据,包括私钥。操作不可逆。", + "reset-database": "重置数据库", + "reset-database-warning": "删除聊天记录、联系人和设置。当您的密码丢失时才需要执行此步骤", + "reset-database-warning-keycard": "删除聊天记录、联系人和设置。", + "reset-password": "重置密码", + "restore-defaults": "恢复默认值", + "retry": "重试", + "revoke-access": "撤消访问权限", + "rpc-url": "RPC URL", + "rpc-usage-copy": "复制", + "rpc-usage-filter": "过滤方式", + "rpc-usage-filter-methods": "过滤方式", + "rpc-usage-filtered-total": "第{{filtered-total}} ,共 {{total}}", + "rpc-usage-get-stats": "刷新", + "rpc-usage-info": "RPC使用情况统计", + "rpc-usage-reset": "重置", + "rpc-usage-total": "共计", + "safe-estimate": "安全估计", + "save": "保存", + "save-image-library": "将图片保存到库", + "save-password": "保存密码", + "save-password-unavailable": "设置设备码以保存密码", + "save-password-unavailable-android": "保存密码不可用:您的设备可能已被root或缺少必要的安全功能。", + "say-hi": "打个招呼", + "scan-qr": "扫描二维码", + "scan-qr-code": "扫描钱包地址的二维码", + "scan-tokens": "扫描代币", + "search": "搜索", + "search-contacts": "搜索好友", + "search-discover-communities": "搜索社区或类别", + "search-no-chat-found": "没有搜索结果。您是想:", + "secret-keys-confirmation-text": "万一您丢失了手机,您将需要它们才能继续使用您的Keycard。", + "secret-keys-confirmation-title": "将密码抄写下来了吗?", + "security": "安全", + "see-details": "查看详细信息", + "see-it-again": "再次核对", + "see-sticker-set": "查看完整的贴纸集", + "see-suggestions": "查看建议", + "seed-key-uid-mismatch": "助记词不匹配", + "seed-key-uid-mismatch-desc-1": "您输入的助记词与{{multiaccount-name}}不匹配", + "seed-key-uid-mismatch-desc-2": "要管理此帐户的密钥,请验证您的助记词,然后重试。", + "seed-phrase-content": "从BIP39标准列表中随机选择的一组易于阅读的单词,用于在其他钱包和设备上恢复或访问您的以太坊帐户。在整个加密生态系统中也称为“助记词”,“恢复短语”或“钱包备份”。大多数加密应用程序使用相同的标准来生成帐户。", + "seed-phrase-placeholder": "助记词...", + "seed-phrase-title": "助记词", + "select": "选择", + "select-account": "选择帐号", + "select-account-dapp": "选择您要用于DApp的帐户", + "select-account-first": "首先选择一个帐户", + "select-chat": "选择一个聊天开始发送消息", + "select-new-location-for-keys": "选择一个新位置以保存您的私钥", + "select-token-to-receive": "选择要接收的代币", + "select-token-to-swap": "选择要交换的代币", + "selected": "已选择", + "send": "发送", + "send-contact-request-message": "要开始聊天,您们需要成为联系人", + "send-logs": "报告错误", + "send-logs-to": "向{{email}}报告错误", + "send-message": "发送消息", + "send-push-notifications": "发送推送通知", + "send-push-notifications-description": "禁用此功能后,接收您消息的人不会收到通知", + "send-request": "发送请求", + "send-request-amount": "金额", + "send-request-amount-max-decimals": "最大小数位数为{{asset-decimals}}", + "send-request-unknown-token": "未知代币 - {{asset}}", + "send-sending-to": "至{{recipient-name}}", + "send-transaction": "发送交易", + "sending": "发送", + "sent": "已发送", + "sent-at": "发送于", + "server": "服务器", + "set-a-topic": "创建主题", + "set-currency": "设置货币", + "set-custom-fee": "设置自定义费用", + "set-dapp-access-permissions": "设置DApp访问权限", + "set-max": "设至上限", + "settings": "设置", + "share": "分享", + "share-address": "分享地址", + "share-chat": "分享聊天", + "share-community": "分享社区", + "share-contact-code": "分享我的聊天码", + "share-dapp-text": "查看我在Status上使用的这个DApp:{{link}}", + "share-image": "分享图片", + "share-invite-link": "分享邀请链接", + "share-link": "分享链接", + "share-logs": "分享日志", + "share-my-profile": "分享我的个人资料", + "share-profile": "分享个人资料", + "share-profile-link": "分享个人资料链接", + "share-public-chat-text": "在Status应用中查看此公共聊天:{{link}}", + "shared": "已分享", + "sharing-copied-to-clipboard": "已复制", + "sharing-copy-to-clipboard": "复制", + "sharing-data-desc-1": "数据根据公共规则进行验证,以确保不会发送敏感数据。应随时保持怀疑,并进行验证。", + "sharing-data-desc-2": "使用数据通过 Status 的对等网络进行端到端加密发送", + "sharing-data-desc-3": "使用一次性密钥而不是您的常规聊天密钥", + "sharing-data-desc-4": "使用数据无法与您的 IP 地址相关联", + "sharing-data-desc-5": "所有用户的累积数据公开可用", + "sharing-data-desc-6": "数据发送后会从您的手机中删除", + "sharing-share": "分享", + "shell-placeholder-subtitle": "打开您的社区、\n钱包帐户、浏览器窗口和发送消息", + "shell-placeholder-title": "你的应用程序将在这里运行", + "show-less": "收起", + "show-more": "显示更多", + "show-notifications": "显示通知", + "show-profile-pictures": "要显示个人头像的组为", + "show-profile-pictures-to": "将您的个人头像图片显示给", + "show-qr": "显示二维码", + "show-transaction-data": "显示交易数据", + "sign-and-send": "签名并发送", + "sign-anyway": "仍要签名", + "sign-in": "登录", + "sign-message": "签名消息", + "sign-out": "注销", + "sign-request-failed": "无法签署消息", + "sign-with": "签名方式", + "sign-with-password": "使用密码签署", + "sign-you-in": "登录…", + "signing": "签名", + "signing-a-message": "签署消息", + "signing-phrase": "签名短语", + "skip": "跳过", + "slippage": "滑点", + "slow": "慢", + "something-went-wrong": "出错", + "soon": "很快", + "sort-communities": "对社区进行排序", + "specify-address": "指定地址", + "specify-name": "指定名称", + "specify-network-id": "指定网络ID", + "specify-rpc-url": "指定一个RPC URL", + "specify-server-public-key": "输入服务器公钥", + "specify-symbol": "指定符号", + "start-chat": "开始聊天", + "start-conversation": "开始聊天", + "start-group-chat": "开始群聊", + "start-new-chat": "开始新聊天", + "starter-pack-coming": "入门包来了", + "starter-pack-coming-description": "可能需要几分钟到几小时", + "starter-pack-received": "入门包已收到", + "starter-pack-received-description": "这是一些加密货币,可以帮助您入门!用其来获取贴纸、ENS名称并尝试DApp", + "status": "Status", + "status-always-online": "始终在线", + "status-automatic": "自动", + "status-automatic-subtitle": "自动设置状态", + "status-confirmed": "已确认", + "status-dnd": "请勿打扰", + "status-dnd-subtitle": "静音所有通知", + "status-hardwallet": "Status硬件钱包", + "status-inactive": "不活跃", + "status-inactive-subtitle": "隐藏您的在线状态", + "status-is-open-source": "Status是开源项目", + "status-keycard": "Status Keycard", + "status-mobile-descr": "Status同步聊天时往往会消耗大量数据。您可以选择在移动网络上时不同步。", + "status-not-sent-click": "未确认。点击选项", + "status-not-sent-tap": "未确认。点击选项", + "status-pending": "等待中", + "status-sent": "已发送", + "status-tx-not-found": "未找到TX", + "status-updates-descr": "Status更新将显示在此处。将个人资料添加为联系人,以在您的时间轴上接收更新。", + "statuses-descr": "分享您的想法,并更新到您的联系人", + "statuses-my-status-descr": "分享您的想法。访问您个人资料的任何人都可以看到您的状态。将您添加为联系人的用户,将在时间轴上收到您的更新", + "step-i-of-n": "步骤{{step}}\/{{number}}", + "sticker": "贴纸", + "sticker-market": "贴纸市场", + "storage": "存储", + "strikethrough": "删除线", + "submit": "提交", + "submit-bug": "提交错误", + "success": "成功", + "successful-connection": "连接成功", + "suggested-min-tip": "建议的最低手续费", + "suggested-price-limit": "建议的价格", + "swap": "交换", + "swap-details": "交换详情", + "switch-to-simple-interface": "切换到简单界面", + "symbol": "符号", + "sync-all-devices": "同步所有设备", + "sync-in-progress": "正在同步...", + "sync-settings": "同步设置", + "sync-synced": "同步中", + "syncing-devices": "正在同步...", + "system": "智能模式", + "tabs": "选项卡", + "tag-was-lost": "标签丢失", + "tap-card-again": "再次将卡贴近手机背面", + "terms-of-service": "使用条款", + "test-networks": "测试网络", + "text-input-disabled": "请稍候...", + "thank-you": "谢谢", + "this-device": "本设备", + "this-device-desc": "您的密钥将被加密并安全地存储在您的设备上", + "this-is-you-signing": "这是您的签名短语", + "this-will-take-few-seconds": "这将需要几秒钟", + "three-days": "三天", + "three-words-description": "在签署每笔交易之前, 您应看到这3个单词", + "three-words-description-2": "如果您看到不同的组合, 请取消交易并注销", + "timeline": "时间轴", + "tip-cap": "小费上限", + "to": "到", + "to-block": "屏蔽", + "to-enable-biometric": "要启用{{bio-type-label}} ,您必须在解锁界面勾选保存密码", + "to-encrypt-enter-password": "请输入密码以对您的帐户加密", + "to-see-this-message": "要查看此消息,", + "token": "代币", + "token-auto-validate-decimals-error": "地址{{address}}中的代币{{symbol}}小数位错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-name-error": "地址{{address}}中的代币{{symbol}}名称错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-symbol-error": "地址{{address}}中的代币{{symbol}}符号错误 - 设置为{{expected}}但检测为{{actual}}", + "token-details": "代币详细信息", + "token-price": "代币价格", + "topic-name-error": "仅使用小写字母(a到z)、数字和短划线( - )。不要使用聊天码", + "total-gas": "总交易手续费", + "total-members": "成员总数", + "transaction": "交易", + "transaction-data": "交易数据", + "transaction-declined": "交易被拒绝", + "transaction-description": "网络上达到12个确认将被认为交易完成。", + "transaction-details": "交易明细", + "transaction-failed": "交易失败", + "transaction-fee": "交易费用", + "transaction-history": "交易记录", + "transaction-request": "交易请求", + "transaction-sent": "交易已发送", + "transaction-signed": "交易已成功签署", + "transactions": "交易", + "transactions-filter-select-all": "全选", + "transactions-filter-title": "筛选记录", + "transactions-history": "交易记录", + "transactions-history-empty": "您的历史记录中尚未有交易", + "transactions-history-loading": "正在载入交易记录。这可能需要一点时间。", + "transactions-load-more": "加载更多", + "transactions-management-enabled": "交易管理 (alpha)", + "transactions-sign": "签名", + "transfer-ma-unknown-error-desc-1": "您的多帐户好像没有被删除。数据库可能已被重置", + "transfer-ma-unknown-error-desc-2": "请检查您的帐户列表,然后重试。如果未列出该帐户,请访问现有密钥并使用助记词进行恢复", + "transfers-fetching-failure": "交易历史记录无法更新。请检查您的网络连接,然后下拉以重试", + "tribute-required-by-multiaccount": "{{multiaccount-name}}需要收到SNT才能开始聊天", + "tribute-state-paid": "朝贡已支付", + "tribute-state-pending": "朝贡等待中", + "tribute-state-required": "需要朝贡{{snt-amount}}SNT", + "tribute-to-talk": "聊天收益模式", + "tribute-to-talk-add-friends": "添加好友为联系人就可以允许他们无需支付朝贡便可以聊天。", + "tribute-to-talk-are-you-friends": "你们是朋友吗?", + "tribute-to-talk-ask-to-be-added": "请求添加为联系人", + "tribute-to-talk-contact-received-your-tribute": " 已收到您的朝贡。现在可以安全地互相聊天了。", + "tribute-to-talk-desc": "通过收取SNT来开启新聊天,从而可以货币化您的注意力。", + "tribute-to-talk-disabled": "付费聊天模式关闭", + "tribute-to-talk-disabled-note": "从现在开始,新用户可以在不发送SNT的情况下与您聊天。", + "tribute-to-talk-enabled": "您已启用朝贡。", + "tribute-to-talk-finish-desc": "从现在开始,您只会收到来自联系人和付费用户的聊天信息 ", + "tribute-to-talk-learn-more-1": "您的时间和精力是您最宝贵的资产。 朝贡可让您设置陌生人加您为好友所需的SNT数量。", + "tribute-to-talk-learn-more-2": "任何不在您的联系人列表中的人都会被要求付款,您可以在收款后回复他们。", + "tribute-to-talk-learn-more-3": "您可以随时把钱退回,但为了确保好友可以随时联系您,请先将其添加为联系人。", + "tribute-to-talk-paywall-learn-more-1": "我们的时间和精力是我们最宝贵的资产。朝贡让您添加新朋友以换取SNT付款。", + "tribute-to-talk-paywall-learn-more-2": "要与设置了朝贡的人开始聊天,只需支付所需的SNT,您就会被添加为联系人。", + "tribute-to-talk-paywall-learn-more-3": "如果您认识他们,则可以在Status之外分享您的个人资料,以便其他人可自由添加您。", + "tribute-to-talk-pending": "朝贡等待确认", + "tribute-to-talk-pending-note": "朝贡交易正在等待网络确认。您可以在交易历史记录中查看其状态", + "tribute-to-talk-removing-note": "删除朝贡将允许陌生人在不发送SNT的情况下开始聊天。需要进行交易才能生效。", + "tribute-to-talk-set-snt-amount": "设置开始新聊天所需的SNT数量", + "tribute-to-talk-signing": "正在等待签署交易", + "tribute-to-talk-transaction-failed-note": "交易失败,您的朝贡设置未更改", + "tribute-to-talk-tribute-received1": "朝贡收到了。您和", + "tribute-to-talk-tribute-received2": " 现在是联系人,可以安全互聊了。", + "tribute-to-talk-you-require-snt": "您需要收到 SNT 才能开启新聊天。", + "try-again": "再试一次", + "try-keeping-the-card-still": "保持卡不动", + "turn-nfc-description": "您的设备已禁用NFC,请先在设置中启用NFC", + "turn-nfc-on": "开启NFC以继续", + "two-minutes": "2分钟", + "tx-fail-description1": "此交易可能失败。请根据自身风险承担能力设置自定义网络费。", + "tx-fail-description2": "此交易可能失败。请根据自身风险承担能力设置自定义网络费。", + "type": "类型", + "type-a-message": "消息", + "ulc-enabled": "ULC已启用", + "unable-to-fetch": "无法获取聊天记录", + "unable-to-read-this-code": "无法读取此代码", + "unable-to-send-messages": "无法发送和接收消息", + "unblock": "解锁", + "unblock-contact": "取消屏蔽此用户", + "undo": "撤消", + "unknown-status-go-error": "未知的status-go错误", + "unlimited": "无限制", + "unlock": "解锁", + "unmute": "取消静音", + "unmute-chat": "取消聊天静音", + "unmute-community": "取消静音社区", + "unpair-card": "卡未配对", + "unpair-card-confirmation": "此操作将取消卡与当前设备的配对。需要6位数字密码授权。要继续吗?", + "unpair-keycard": "取消此手机与Keycard的配对", + "unpair-keycard-warning": "您的配对码\/PUK和PIN保持不变", + "unpaired-keycard-text": "您刷的Keycard与此手机无关联", + "unpaired-keycard-title": "您的卡似乎已取消配对", + "unpin": "取消置顶", + "unpin-from-channel": "取消频道内置顶消息", + "unpin-from-chat": "从聊天中取消置顶", + "untrustworthy": "不可信", + "update": "更新", + "update-to-listen-audio": "更新到最新版本,收听音频消息!", + "update-to-see-image": "更新到最新版本,欣赏漂亮的图像!", + "update-to-see-sticker": "更新到最新版本,查看精美的贴纸!", + "updates-to-tos": "使用条款更新", + "updates-to-tos-desc": "在继续之前,请查看服务条款,并确认您对使用此应用程序的方式承担全部责任。", + "url": "URL", + "usd-currency": "美元", + "use-as-profile-picture": "用作个人头像图片", + "use-valid-contact-code": "请输入或扫描有效的聊天码或用户名", + "validation-amount-invalid-number": "金额不是一个有效的数字", + "validation-amount-is-too-precise": "金额太精确了。最大小数位数为{{decimals}} 。", + "verified-community": "✓通过验证的社区", + "version": "应用版本", + "view": "查看", + "view-community-rules": "查看社区规则", + "view-cryptokitties": "在CryptoKitties中查看", + "view-cryptostrikers": "在CryptoStrikers中查看", + "view-data": "查看数据", + "view-details": "查看详细信息", + "view-etheremon": "在Etheremon中查看", + "view-gitcoin": "在Gitcoin中查看", + "view-members": "查看成员", + "view-on-opensea": "在opensea中查看", + "view-pinned-messages": "查看置顶消息", + "view-profile": "查看个人资料", + "view-public-dashboard": "查看公共仪表板", + "view-rules": "查看规则", + "view-signing": "查看签名短语", + "view-superrare": "在SuperRare中查看", + "vote-to-feature": "投票推荐此社区", + "waiting-for-wifi": "无Wi-Fi,消息同步已禁用。", + "waiting-for-wifi-change": "设置", + "waiting-to-sign": "正在等待签名交易…", + "waiting-wi-fi": "正在等待Wi-Fi…", + "waku-bloom-filter-mode": "Waku Bloom过滤器模式", + "wakuv2-change-nodes": "您确定要切换 Wakuv2 节点吗?", + "wakuv2-node-format": "\/ip4\/ {node-ip} \/tcp\/ {port} \/p2p\/ {id}", + "wakuv2-settings": "Waku v2设置", + "wallet": "钱包", + "wallet-address": "钱包地址", + "wallet-asset": "资产", + "wallet-assets": "资产", + "wallet-backup-recovery-title": "备份助记词", + "wallet-choose-recipient": "选择接收人", + "wallet-collectibles": "收藏物", + "wallet-connect": "钱包连接", + "wallet-connect-2.0": "钱包连接2.0", + "wallet-connect-app-connected": "已连接", + "wallet-connect-go-back": "回到你的浏览器或dapp", + "wallet-connect-proposal-description": "通过连接,你允许{{name}}获取你的钱包地址和启用Web3", + "wallet-connect-proposal-title": "愿意连接你的钱包", + "wallet-insufficient-funds": "资金不足", + "wallet-insufficient-gas": "ETH不足以支付gas费", + "wallet-invalid-address": "无效的地址:{{data}}", + "wallet-invalid-address-checksum": "地址错误: \n {{data}}", + "wallet-invalid-chain-id": "网络不匹配: \n {{data}}而当前链是{{chain}}", + "wallet-key-content": "基于以太坊标准并以0x开头的用64个字符表示的十六进制地址。面向公众,当您想接收资金时,您的帐户地址将共享给其他人。该地址也称为“以太坊地址”或“钱包地址”。", + "wallet-key-title": "帐户地址", + "wallet-manage-accounts": "管理帐户", + "wallet-manage-app-connections": "管理app连接", + "wallet-manage-assets": "管理资产", + "wallet-request": "请求", + "wallet-send": "发送", + "wallet-send-min-units": "最少21000个单位", + "wallet-send-min-wei": "最小1 Gwei", + "wallet-settings": "钱包设置", + "wallet-total-value": "总价值", + "wallet-transaction-total-fee": "总费用", + "wants-to-access-profile": "想要访问您的个人资料", + "warning": "警告", + "warning-message": "抱歉,我们限制快速连续发送多条消息,以防滥发。请稍后再试", + "warning-sending-to-contract-descr": "您输入的地址是智能合约地址,将资金发送到此地址可能会导致资金损失。若要与DApp交互,请在Status DApp浏览器中打开DApp。", + "watch-only": "仅限观察", + "wc-brand-guide": "有关使用商标和徽标等品牌的指南", + "wc-disclaimer": "免责声明(包括第三方提供商)、保证和法律声明", + "wc-dispute": "争议解决条款", + "wc-how-to-use-status-app": "如何使用 Status 应用程序,包括隐私和安全", + "wc-new-tos-based-on-principles-prefix": "使用条款的设计基于我们", + "web-view-error": "无法加载页面", + "websites": "网站", + "webview-camera-permission-requests": "手机相机权限请求", + "webview-camera-permission-requests-subtitle": "启用后,网站和DApp可请求使用您的相机", + "welcome-blank-community-message": "您的社区将显示在此处。", + "welcome-blank-message": "您的聊天记录将在此处显示。要开始新的聊天,请点击⊕按钮", + "welcome-community-blank-message": "您的频道将显示在此处。要创建新频道,请单击⊕按钮,然后选择\"创建频道\"", + "welcome-community-blank-message-edit-chats": "您的频道将显示在此处。要创建新频道,请返回社区界面,单击⊕按钮,然后选择\"创建频道\"", + "welcome-screen-text": "设置您的钱包,邀请好友聊天\n并浏览广受欢迎的DApp!", + "welcome-to-status": "欢迎使用Status!", + "welcome-to-status-description": "设置您的加密钱包、邀请好友聊天、浏览去中心化应用", + "what-changed": "更改的内容", + "what-is-shared": "共享的内容", + "whats-on-your-mind": "您想到了些什么…", + "whats-trending": "查看热点", + "word-count": "字数", + "word-n": "{{number}}#单词", + "word-n-description": "为了确认您是否正确备份了助记词,请在上方输入{{number}}#单词。", + "words-n": { + "other": "{{count}} 个单词" + }, + "write-down-and-store-securely": "写下来并安全的存储起来", + "wrong-address": "地址错误", + "wrong-card": "错误的卡", + "wrong-card-text": "卡与选择的密钥不对应", + "wrong-contract": "合约错误", + "wrong-keycard-text": "您使用的Keycard与此手机无关联", + "wrong-keycard-title": "好像您刷了一张错误的Keycard", + "wrong-password": "密码错误", + "wrong-word": "错误的单词", + "yes": "是", + "you": "您", + "you-already-have-an-asset": "您已拥有资产{{value}}", + "you-are-all-set": "设置完成!", + "you-are-all-set-description": "如果您丢了手机,现在可以使用助记词访问您的资金和聊天码", + "you-can-change-account": "您可以根据自己的喜好更改帐户的名称和颜色", + "you-can-choose-preview-websites": "您可以选择以下哪些网站可以在聊天中预览链接中的描述和图片", + "you-can-fetch": "您可以获取聊天记录", + "you-dont-have-contacts": "您还没有任何联系人。", + "you-dont-have-contacts-invite-friends": "您还没有任何联系人。\n邀请您的朋友开始聊天。", + "you-dont-have-stickers": "您还没有任何贴纸", + "you-will-need-this-code": "您需要此密码才能打开应用程序并签署交易。", + "you-will-start-from-scratch": "您将从零开始使用一组新的密钥", + "your-card-is-frozen": "您的Keycard已冻结。重置卡访问权限", + "your-contact-code": "授予此DApp访问权限以查看您的聊天码", + "your-data-belongs-to-you": "如果您丢失了您的助记词, 您也同时失去了您的数据和资金", + "your-data-belongs-to-you-description": "如果您失去了访问权限(例如,丢失了手机),则只能使用助记词访问密钥。除了您没有任何其他人有您的助记词。请将其写下来并安全保存", + "your-keys": "您的密钥", + "your-price-limit": "您的设定价格", + "your-recovery-phrase": "您的助记词", + "your-recovery-phrase-description": "这是您的助记词。您需要用它来证明这个钱包属于您。您只能查看一次!请将其写在纸上并保存在安全的地方。如果丢失或重新安装钱包,您将需要用到这些助记词。", + "your-tip-limit": "您的手续费上限", + "youre-on-mobile-network": "您正在使用移动网络" +} diff --git a/translations/zh_Hans_CN.json b/translations/zh_Hans_CN.json new file mode 100644 index 00000000000..440f7e7d3f6 --- /dev/null +++ b/translations/zh_Hans_CN.json @@ -0,0 +1,967 @@ +{ + "about-app": "关于", + "about-key-storage-content": "Status永远不会访问您的私钥。请务必备份您的助记词。如果您丢失了手机,这是找回密钥的唯一方法。", + "about-key-storage-title": "关于密钥存储", + "about-names-content": "您的身份在设计上是安全且私密的。您将获得本地生成的加密密钥对。名称和图像是此秘钥的可视形式。它们是唯一的。没有人能假装成你。除非你提供你自己的名称,否则没有人看到你的名称。", + "about-names-title": "关于名称", + "access-key": "访问密钥", + "account-added": "帐户已添加", + "account-color": "账户颜色", + "account-name": "帐户名称", + "account-settings": "帐号设定", + "accounts": "帐户", + "active-online": "在线", + "active-unknown": "未知", + "add": "添加", + "add-a-watch-account": "添加一个观察帐户", + "add-account": "添加帐号", + "add-account-description": "您可以导入任何类型的以太坊帐户,将其添加到你的Status钱包", + "add-account-incorrect-password": "密码不正确。输入用于解锁应用程序的密码。", + "add-an-account": "添加一个帐号", + "add-bootnode": "添加引导节点", + "add-contact": "增加联系人", + "add-custom-token": "添加自定义代币", + "add-mailserver": "添加邮件服务器", + "add-members": "添加成员", + "add-network": "添加网络", + "add-to-contacts": "添加到联系人", + "address": "地址", + "advanced": "高级", + "advanced-settings": "高级设置", + "agree-by-continuing": "继续授权给我们", + "all": "全部", + "allow": "允许", + "allowing-authorizes-this-dapp": "允许授权此 DApp 检索您的钱包地址, 并启用 Web3", + "already-have-asset": "你已经有了这种资产", + "amount": "金额", + "are-you-sure-description": "您将无法再次看到整个助记词", + "are-you-sure?": "你确定?", + "ask-in-status": "咨询问题或报告错误", + "at": "在", + "authorize": "授权", + "available": "可用", + "available-participants": { + "one": "", + "other": "你可以选择{{count}} 参与者。" + }, + "back": "返回", + "back-up-seed-phrase": "备份助记词", + "back-up-your-seed-phrase": "备份你的助记词", + "backup-recovery-phrase": "备份助记词", + "balance": "余额", + "begin-set-up": "开始设置", + "biometric-auth-android-sensor-desc": "触摸传感器", + "biometric-auth-android-sensor-error-desc": "失败", + "biometric-auth-android-title": "需要进行身份验证", + "biometric-auth-confirm-logout": "重新登录", + "biometric-auth-confirm-message": "生物识别身份验证需要连续,如果不能完成,请使用帐户密码重新登录", + "biometric-auth-confirm-title": "你必须验证!", + "biometric-auth-confirm-try-again": "再试一次", + "biometric-auth-error": "无法执行生物识别身份验证( {{code}} )", + "biometric-auth-login-error-title": "生物识别身份验证错误", + "biometric-auth-login-ios-fallback-label": "输入密码", + "biometric-auth-reason-login": "登录Status", + "biometric-auth-reason-verify": "验证身份", + "blank-keycard-text": "生成密钥和名称后,您可以继续使用密钥卡", + "blank-keycard-title": "看起来你已经点击了\n一张空白的钥匙卡", + "block": "块", + "block-contact": "屏蔽联系人", + "block-contact-details": "屏蔽将删除此用户之前的所有消息,并拒收新消息", + "blocked-users": "被屏蔽的用户", + "bootnode-address": "引导节点地址", + "bootnode-details": "引导节点详细信息", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "引导节点", + "bootnodes-enabled": "引导节点启用", + "bootnodes-settings": "引导节点设置", + "browsed-websites": "浏览过的网站将在此处显示。", + "browser": "浏览器", + "browser-not-secure": "连接不安全!不要在本网站上签署交易或发送个人数据。", + "browser-secure": "连接是安全的。在签署交易或输入个人数据之前, 请确保您确实信任此网站。", + "browsers": "浏览器", + "browsing-cancel": "取消", + "browsing-open-in-android-web-browser": "在网络浏览器中打开", + "browsing-open-in-ios-web-browser": "在网络浏览器中打开", + "browsing-open-in-status": "在Status中打开", + "browsing-site-blocked-description1": "我们从此地址检测到潜在的恶意活动。为了保护您和您的钱包,我们阻止了进一步的引导。 \n\n如果您认为这是一个错误,请告诉我们", + "browsing-site-blocked-description2": "公聊", + "browsing-site-blocked-go-back": "返回", + "browsing-site-blocked-title": "此站点被阻止", + "browsing-title": "浏览", + "camera-access-error": "要授予所需的摄像机许可,请转到系统设置,并确定选中了 “Status” > “摄像机”。", + "can-not-add-yourself": "不能添加自己", + "cancel": "取消", + "cancel-keycard-setup": "取消密钥卡设置", + "cannot-read-card": "无法读卡。\n请把卡放在你的手机后面", + "cannot-use-default-pin": "密码000000是无效的。 \n请使用其他数字", + "card-is-blank": "这是一张空白卡", + "card-reseted": "卡片已被重置", + "card-unpaired": "卡片已从当前设备删除配对", + "change-fleet": "变更组别到{{fleet}}", + "change-logging-enabled": "您确定要{{enable}}日志记录吗?", + "change-passcode": "更改密码", + "change-password": "更改密码", + "change-pin": "更改6位数字密码", + "changed-amount-warning": "数量已从{{old}}更改为{{new}}", + "changed-asset-warning": "资产已从{{old}}更改为{{new}}", + "chaos-mode": "混乱模式", + "chaos-unicorn-day": "混乱独角兽日", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "聊天", + "chat-key": "聊天密钥", + "chat-name": "聊天名称", + "chat-settings": "对话设置", + "chats": "聊天", + "check-your-recovery-phrase": "检查您的助记词", + "choose-authentication-method": "选择一种身份验证方法来保护您的帐户", + "clear": "清空", + "clear-history": "清空历史记录", + "clear-history-action": "清空", + "clear-history-confirmation": "清空历史记录?", + "clear-history-confirmation-content": "您确定要清除此聊天记录吗?", + "clear-history-title": "清空历史记录?", + "close-app-button": "确认", + "close-app-content": "应用将会停止并关闭。当你重新打开应用,选中的网络将会被使用", + "close-app-title": "警告!", + "command-button-send": "发送", + "complete-hardwallet-setup": "现在此卡是您帐户安全的重要组成部分。没有它就无法发送交易。", + "completed": "已完成", + "confirm": "确认", + "confirmations": "确认", + "confirmations-helper-text": "请等待达到至少12个确认,来确保交易已被安全地处理。", + "connect": "连接", + "connect-mailserver-content": "连接到{{name}} ?", + "connected": "已连接", + "connecting": "正在连接...", + "connecting-requires-login": "连接其它网络需要登录", + "connection-with-the-card-lost": "与卡的连接\n 已丢失", + "connection-with-the-card-lost-setup-text": "要恢复设置,请将卡放到\n你的手机背面并保持\n卡与手机的连接", + "connection-with-the-card-lost-text": "要继续,请将卡片放在手机背面", + "contact-code": "聊天码", + "contact-s": { + "one": "", + "other": "联系人" + }, + "contacts": "联系人", + "continue": "继续", + "contract-address": "合约地址", + "contract-interaction": "合约交互", + "copy-info": "复制信息", + "copy-qr": "复制代码", + "copy-to-clipboard": "复制", + "copy-transaction-hash": "复制交易哈希", + "cost-fee": "成本\/费用", + "counter-9-plus": "9+", + "create": "创建", + "create-a-pin": "创建6位数字密码", + "create-group-chat": "创建群聊", + "create-multiaccount": "创建帐号", + "create-new-key": "创建一个新密钥", + "create-pin": "创建6位数字密码", + "create-pin-description": "你需要卡+本6位数字密码才能解锁Status和确认交易", + "created-group-chat-description": "您创建了群{{group-name}}", + "cryptokitty-name": "CryptoKitty# {{id}}", + "currency": "货币", + "currency-display-name-aed": "阿联酋迪拉姆", + "currency-display-name-afn": "阿富汗尼", + "currency-display-name-ars": "阿根廷比索", + "currency-display-name-aud": "澳元", + "currency-display-name-bbd": "巴巴多斯元", + "currency-display-name-bdt": "孟加拉国塔卡", + "currency-display-name-bgn": "保加利亚列弗", + "currency-display-name-bhd": "巴林第纳尔", + "currency-display-name-bnd": "文莱元", + "currency-display-name-bob": "玻利维亚玻利维亚诺", + "currency-display-name-brl": "巴西雷亚尔", + "currency-display-name-btn": "不丹努扎姆", + "currency-display-name-cad": "加拿大元", + "currency-display-name-chf": "瑞士法郎", + "currency-display-name-clp": "智利比索", + "currency-display-name-cny": "人民币", + "currency-display-name-cop": "哥伦比亚比索", + "currency-display-name-crc": "哥斯达黎加科郎", + "currency-display-name-czk": "捷克克朗", + "currency-display-name-dkk": "丹麦克朗", + "currency-display-name-dop": "多米尼加比索", + "currency-display-name-egp": "埃及镑", + "currency-display-name-etb": "埃塞俄比亚比尔", + "currency-display-name-eur": "欧元", + "currency-display-name-gbp": "英镑", + "currency-display-name-gel": "格鲁吉亚拉里", + "currency-display-name-ghs": "加纳塞地", + "currency-display-name-hkd": "港币", + "currency-display-name-hrk": "克罗地亚库纳", + "currency-display-name-huf": "匈牙利福林", + "currency-display-name-idr": "印度尼西亚卢比", + "currency-display-name-ils": "以色列新谢克尔", + "currency-display-name-inr": "印度卢比", + "currency-display-name-isk": "冰岛克朗", + "currency-display-name-jmd": "牙买加元", + "currency-display-name-jpy": "日元", + "currency-display-name-kes": "肯尼亚先令", + "currency-display-name-krw": "韩元", + "currency-display-name-kwd": "科威特第纳尔", + "currency-display-name-kzt": "哈萨克斯坦腾格", + "currency-display-name-lkr": "斯里兰卡卢比", + "currency-display-name-mad": "摩洛哥迪拉姆", + "currency-display-name-mdl": "摩尔多瓦列伊", + "currency-display-name-mur": "毛里求斯卢比", + "currency-display-name-mwk": "马拉维克瓦查", + "currency-display-name-mxn": "墨西哥比索", + "currency-display-name-myr": "马来西亚林吉特", + "currency-display-name-mzn": "莫桑比克美提卡", + "currency-display-name-nad": "纳米比亚元", + "currency-display-name-ngn": "尼日利亚奈拉", + "currency-display-name-nok": "挪威克朗", + "currency-display-name-npr": "尼泊尔卢比", + "currency-display-name-nzd": "新西兰元", + "currency-display-name-omr": "阿曼里亚尔", + "currency-display-name-pen": "秘鲁新索尔", + "currency-display-name-pgk": "巴布亚新几内亚基那", + "currency-display-name-php": "菲律宾比索", + "currency-display-name-pkr": "巴基斯坦卢比", + "currency-display-name-pln": "波兰兹罗提", + "currency-display-name-pyg": "巴拉圭瓜拉尼", + "currency-display-name-qar": "卡塔尔里亚尔", + "currency-display-name-ron": "罗马尼亚列伊", + "currency-display-name-rsd": "突尼斯第纳尔", + "currency-display-name-rub": "俄罗斯卢布", + "currency-display-name-sar": "沙特阿拉伯里亚尔", + "currency-display-name-sek": "瑞典克朗", + "currency-display-name-sgd": "新加坡元", + "currency-display-name-thb": "泰国泰铢", + "currency-display-name-try": "土耳其里拉", + "currency-display-name-ttd": "特立尼达和多巴哥元", + "currency-display-name-twd": "新台币", + "currency-display-name-tzs": "坦桑尼亚先令", + "currency-display-name-uah": "乌克兰格里夫纳", + "currency-display-name-ugx": "乌干达先令", + "currency-display-name-usd": "美元", + "currency-display-name-uyu": "乌拉圭比索", + "currency-display-name-vef": "委内瑞拉玻利瓦尔", + "currency-display-name-vnd": "越南盾", + "currency-display-name-zar": "南非兰德", + "current-network": "当前网络", + "current-pin": "输入6位数字密码", + "current-pin-description": "输入您的6位数字密码以继续", + "custom": "自 定义", + "custom-networks": "自定义网络", + "dapp": "ÐApp", + "dapp-would-like-to-connect-wallet": "想连接到您的钱包吗", + "dapps": "ÐApps", + "dapps-permissions": "DApp权限", + "data": "数据", + "datetime-ago": "前", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-day": { + "one": "", + "other": "天" + }, + "datetime-hour": { + "one": "", + "other": "小时" + }, + "datetime-minute": { + "one": "", + "other": "分钟" + }, + "datetime-second": { + "one": "", + "other": "秒" + }, + "datetime-today": "今天", + "datetime-yesterday": "昨天", + "decimals": "小数点", + "decryption-failed-content": "我们无法解密您的数据,您可能需要创建新帐户并且点击 “应用” 来清除旧数据。如果点击 “取消”,系统将再尝试一次。", + "default": "默认", + "delete": "刪除", + "delete-and-leave-group": "删除并离开群组", + "delete-bootnode": "删除引导节点", + "delete-bootnode-are-you-sure": "您确定要删除这个引导节点吗?", + "delete-bootnode-title": "删除 bootnode", + "close-chat": "刪除聊天", + "close-chat-confirmation": "您确定要删除此聊天记录吗?", + "delete-confirmation": "刪除", + "delete-mailserver": "删除邮件服务器", + "delete-mailserver-are-you-sure": "您确定要删除此邮件服务器吗?", + "delete-mailserver-title": "删除邮件服务器", + "delete-message": "删除消息", + "delete-my-account": "删除我的账户", + "delete-network-confirmation": "您确定要删除此网络吗?", + "delete-network-error": "请在删除此网络之前连接到其他网络", + "delete-network-title": "删除网络?", + "deny": "拒绝", + "description": "简介", + "dev-mode": "开发模式", + "dev-mode-settings": "开发模式设置", + "device-syncing": "设备同步", + "devices": "设备", + "disable": "禁用", + "disabled": "禁用", + "disconnected": "正在连接到对等方..。", + "discover": "发现", + "dismiss": "解雇", + "done": "完成", + "edit": "编辑", + "edit-profile": "编辑个人资料", + "empty-chat-description": "此聊天中还没有消息", + "empty-chat-description-one-to-one": "您在这里发送的任何邮件都是加密的, 只能由您读取并", + "empty-chat-description-public": "最近{{quiet-hours}}这里没有消息 。开始对话或", + "empty-chat-description-public-share-this": "分享此聊天。", + "enable": "启用", + "encrypt-with-password": "用密码加密", + "ens-10-SNT": "10 SNT", + "ens-add-username": "添加用户名", + "ens-agree-to": "同意", + "ens-chat-settings": "聊天设置", + "ens-custom-domain": "自定义域名", + "ens-custom-username-hints": "输入完整用户名,包括自定义域,例如username.domain.eth", + "ens-custom-username-taken": "用户名不属于您:(", + "ens-deposit": "充值", + "ens-displayed-with": "您的消息会显示给其他人", + "ens-get-name": "获取通用用户名", + "ens-got-it": "好的, 明白了", + "ens-locked": "用户名已锁定。您将无法在{{date}}之前释放它", + "ens-network-restriction": "仅适用于主网或ropsten", + "ens-no-usernames": "您没有关联任何用户名", + "ens-powered-by": "由以太坊名称服务提供支持", + "ens-primary-username": "主用户名", + "ens-register": "注册", + "ens-registration-failed": "要注册用户名,请重试。", + "ens-registration-failed-title": "交易失败", + "ens-release-username": "释放用户名", + "ens-remove-hints": "删除将从密钥中分离用户名。", + "ens-remove-username": "删除用户名", + "ens-saved": " 现在已与您的密钥相关联,可以在Status中使用了。", + "ens-saved-title": "用户名已添加", + "ens-show-username": "在聊天中显示我的ENS用户名", + "ens-terms-header": "名称注册条款", + "ens-terms-point-1": "资金存入1年。您的 snt 将被锁定, 但不会被花费。", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e(ENS注册表)。", + "ens-terms-point-2": "1 年后,您可以释放名称并赎回您的押金,或者不采取任何措施保留该名称。", + "ens-terms-point-3": "如果合约条款发生变化(例如,Status升级合约),用户有权释放用户名,无论持有时间长短。", + "ens-terms-point-4": "合约控制者无法访问您缴纳的押金。它们只能原路返回发送它们的钱包地址。", + "ens-terms-point-5": "您的地址将与您的ENS名称公开关联。", + "ens-terms-point-6": "用户名创建为stateofus.eth的子节点,并受ENS智能合约条款的约束。", + "ens-terms-point-7": "您授权合约代表您转发 SNT。仅当您批准交易以授权转移时,才会出现这种情况。", + "ens-terms-point-8": "这些条款由地址的智能合约逻辑保证:", + "ens-terms-point-9": "{{address}} (Status用户名注册器)", + "ens-terms-registration": "名称注册条款。", + "ens-test-message": "嘿", + "ens-transaction-pending": "交易待确定......", + "ens-understand": "我明白我的钱包地址将公开连接到我的用户名。", + "ens-username": "ENS用户名", + "ens-username-connected": "此用户名归您所有,并与您的聊天密钥相关联。", + "ens-username-hints": "至少 4 个字符。仅限拉丁字母、数字和小写字母。", + "ens-username-invalid": "只限字母和数字", + "ens-username-owned": "✓用户名归您所有。", + "ens-username-available": "✓用户名可用!", + "ens-username-taken": "用户名已被占用:(", + "ens-usernames": "ENS用户名", + "ens-usernames-details": "注册通用用户名,以便其他用户轻松找到你", + "wallet-address": "钱包地址", + "ens-want-custom-domain": "我在另一个域名上拥有一个名称", + "ens-want-domain": "我想要一个stateofus.eth域名", + "ens-welcome-hints": "ENS名称将那些冗长的地址转换为唯一的用户名。", + "ens-your-username": "您的用户名", + "ens-your-usernames": "您的用户名", + "ens-your-your-name": "您的ENS名称", + "enter-12-words": "输入您的12个助记词,并使用单个空格隔开", + "enter-contact-code": "输入联系人代码或用户名", + "enter-pair-code": "输入配对码", + "enter-pair-code-description": "在Keycard设置期间显示配对代码", + "enter-password": "输入密码", + "enter-pin": "输入6位数字密码", + "enter-puk-code": "输入PUK码", + "enter-puk-code-description": "6位数字密码已锁定。 \n请输入PUK码以解锁密码。", + "enter-seed-phrase": "输入助记词", + "enter-url": "输入网址", + "enter-word": "输入单词", + "enter-your-code": "输入你的6位数密码", + "enter-your-password": "输入你的密码......", + "error": "错误", + "error-unable-to-get-balance": "无法获取余额", + "error-unable-to-get-prices": "货币转换错误,请刷新屏幕以重试。", + "error-unable-to-get-token-balance": "无法获取代币余额", + "errors": "错误", + "eth": "ETH", + "ethereum-node-started-incorrectly-description": "以太网节点启动配置不正确,应用程序将停止从该条件恢复。已配置的网络ID = {{network-id}} ,实际网络ID = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "以太坊节点启动不正确", + "etherscan-lookup": "在Etherscan上查看", + "export-account": "导出帐户", + "failed": "失败", + "faq": "常见问题", + "fetch-messages": "↓获取消息", + "find": "查找", + "finish": "完成", + "finishing-card-setup": "卡片设置完成", + "fleet": "组别", + "fleet-settings": "组别设置", + "from": "从", + "gas-limit": "Gas 限制", + "gas-price": "Gas 价格", + "gas-used": "使用的 Gas", + "generate-a-key": "生成一个新密钥", + "generate-a-new-account": "生成一个新密钥", + "generate-a-new-key": "生成一个新密钥", + "generate-account": "生成密钥", + "generate-new-key": "生成一个新密钥", + "generating-codes-for-pairing": "正在生成与您的Status帐户配对的代码。", + "generating-keys": "正在生成密钥......", + "generating-mnemonic": "生成助记词", + "get-started": "开始", + "get-status-at": "在http:\/\/status.im获取Status", + "get-stickers": "获取贴纸", + "go-to-settings": "前往设置", + "got-it": "知道了", + "group-chat": "群聊", + "group-chat-admin": "管理员", + "group-chat-admin-added": "* {{member}} *已成为管理员", + "group-chat-created": "* {{member}} *创建了群* {{name}} *", + "group-chat-decline-invitation": "拒绝邀请", + "group-chat-member-added": "* {{member}} *加入了群", + "group-chat-member-joined": "* {{member}} *已加入该群组", + "group-chat-member-removed": "* {{member}} *离开了群", + "group-chat-members-count": "{{selected}} \/ {{max}}成员", + "group-chat-name-changed": "* {{member}} *将群名称更改为* {{name}} *", + "group-chat-no-contacts": "您还没有任何联系人。 \n邀请您的朋友开始聊天", + "group-info": "群信息", + "gwei": "GWEI", + "hash": "哈希", + "help": "帮助", + "help-capitalized": "帮助", + "help-center": "帮助中心", + "hide-content-when-switching-apps": "切换应用时隐藏内容", + "history": "历史记录", + "hold-card": "将卡放在手机背面", + "home": "消息", + "hooks": "挂钩", + "identifier": "识别码", + "image-remove-current": "删除当前照片", + "image-source-gallery": "从图库中选择", + "image-source-make-photo": "拍摄", + "image-source-title": "个人资料图片", + "in-contacts": "已添加联系人", + "incoming": "呼入", + "incorrect-code": [ + "str", + "抱歉,代码不正确,请重新输入" + ], + "initialization": "初始化", + "install": "安装", + "intro-message1": "欢迎来到Status\n点击该消息来设置你的密码并开始!", + "intro-privacy-policy-note1": "Status不会收集,共享或出售任何个人数据。你会继续同意", + "intro-privacy-policy-note2": "隐私政策", + "intro-text": "Status 是您通向分散网络的门户", + "intro-text1": "在以太坊区块链上安全地聊天和交易的开源平台", + "intro-text2": "您的帐户已设置完毕。请不要忘记在个人资料中备份助记词", + "intro-text3": "您的帐户已设置完毕。请不要忘记在个人资料中备份助记词", + "intro-title1": "私密,安全的沟通", + "intro-title2": "安全加密钱包", + "intro-title3": "去中心化应用程序", + "intro-wizard-text1": "您的身份在设计上是安全的。您将获得本地生成的加密密钥对", + "intro-wizard-text2": "此名称是您在Status中的身份。一旦选择,就无法更改。", + "intro-wizard-text3": "您的密钥存储在本地。没有副本。只有你有权访问。", + "intro-wizard-text4": "保护并加密您的密钥", + "intro-wizard-text6": "有新消息Status将通知您。您可以稍后在设置中编辑通知偏好设置", + "intro-wizard-title-alt4": "创建密码", + "intro-wizard-title-alt5": "确认你的密码", + "intro-wizard-title1": "先获取一个秘钥", + "intro-wizard-title2": "选择私钥和名称", + "intro-wizard-title3": "选择密钥存储", + "intro-wizard-title4": "创建一个6位数字密码", + "intro-wizard-title5": "确认密码", + "intro-wizard-title6": "启用通知", + "invalid-format": "无效的格式\n必须是{{format}}", + "invalid-key-confirm": "应用", + "invalid-key-content": "{{message}} \n \n 多账户的数据库无法加密,因为文件已损坏。没有办法恢复它。如果按“取消”按钮,则不会发生任何事情。如果按“ {{erase-multiaccounts-data-button-text}} ”按钮,将删除多账户的数据库,您将能够解锁多帐户。所有multiaccount的数据都将丢失。", + "invalid-number": "无效号码", + "invalid-pairing-password": "配对密码无效", + "invalid-range": "无效的格式\n必须是在{{min}}与{{max}}之间", + "invite-friends": "邀请朋友", + "invited": "已邀请", + "join-group-chat": "加入群", + "join-group-chat-description": "{{username}}邀请您加入群组{{group-name}}", + "joined-group-chat-description": "您通过来自{{username}}的邀请加入{{group-name}}", + "key": "密钥", + "keycard": "Keycard", + "keycard-applet-install-instructions": "要安装applet,请按照https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation上的说明进行操作。", + "keycard-blocked": "Keycard已被冻结。 \n您需要重置卡片才能继续使用它。", + "keycard-cancel-setup-text": "这将取消Keycard设置。强烈建议完成设置并使用Keycard。你真的想取消吗?", + "keycard-cancel-setup-title": "危险操作", + "keycard-desc": "仅适用于Android系统。您需要先获得一张Keycard", + "keycard-has-multiaccount-on-it": "此卡上已有帐户。如果您想更改它,请先登录并重置您的卡。如果您要导入Keycard帐户,请使用“添加现有帐户”", + "keycard-onboarding-finishing-header": "完成", + "keycard-onboarding-intro-header": "将密钥存储在keycard上", + "keycard-onboarding-intro-text": "准备好了,这可能需要几分钟,但保护您的帐户非常重要", + "keycard-onboarding-pairing-header": "正在配对卡片...", + "keycard-onboarding-preparing-header": "正在准备密钥卡", + "keycard-onboarding-puk-code-header": "写下代码\n并安全地存储它们", + "keycard-onboarding-recovery-phrase-description": "使用此助记词,您可以随时获取密钥。写下助记词。保持安全,离线存储并与此设备分开。", + "keycard-onboarding-recovery-phrase-header": "备份“种子”短语", + "keycard-onboarding-recovery-phrase-text": "这是用来生成密钥的种子。", + "keycard-onboarding-start-header": "把卡贴到手机后面并开始", + "keycard-onboarding-start-step1": "创建密码", + "keycard-onboarding-start-step1-text": "大约1分钟。创建一个6位数密码来加密您的密钥", + "keycard-onboarding-start-step2": "记下 PUK 码和配对码", + "keycard-onboarding-start-step2-text": "大约1分钟。你需要纸和笔", + "keycard-onboarding-start-step3": "备份助记词", + "keycard-onboarding-start-step3-text": "大约1分钟。还需要准备笔和纸", + "keycard-onboarding-start-text": "并在设置过程中保持卡与手机的接触。设置大约需要4分钟", + "keycard-recovery-intro-button-text": "开始恢复", + "keycard-recovery-intro-header": "恢复存储在密钥卡上的密钥", + "keycard-recovery-intro-text": "如果您之前使用密钥卡生成了密钥,现在想在此设备上使用此密钥", + "keycard-recovery-no-key-header": "无需恢复", + "keycard-recovery-no-key-text": "您的密钥卡上没有密钥存储。要使用它,请生成一个新密钥并选择您的密钥卡来存储密钥", + "keycard-recovery-phrase-confirm-header": "确认“种子”短语", + "keycard-recovery-phrase-confirmation-text": "以后无法再操作。如果丢失设备并且没有助记词,您将无法访问密钥或与之关联的任何资产。", + "keycard-recovery-phrase-confirmation-title": "已写下助记词?", + "keycard-recovery-success-header": "你的私钥已经成功恢复", + "keycard-unauthorized-operation": "您未经授权执行此操作。 \n请选择有效卡,然后重试。", + "language": "语言", + "learn-more": "学到更多", + "learn-more-about-keycard": "了解有关Keycard的更多信息", + "leave": "离开", + "leave-group": "退群", + "left": "剩余", + "les-ulc": "轻以太坊子协议\/超轻客户端", + "linked-on": "已与{{date}}关联", + "load-messages-before": "{{date}} 之前", + "load-more-messages": "↓获取更多消息", + "loading": "载入中...", + "log-level": "日志级别", + "log-level-settings": "日志级别设置", + "logging": "日志记录", + "logging-enabled": "启用日志记录吗?", + "login-pin-description": "输入您的6位数字密码并登录\n到您的帐户", + "logout": "登出", + "logout-app-content": "该帐户将被注销。再次登录时,将使用所选的网络", + "logout-are-you-sure": "您确定您要登出吗?", + "logout-title": "登出?", + "mailserver-address": "邮件服务器地址", + "mailserver-automatic": "自动选择", + "mailserver-connection-error": "无法连接到邮件服务器", + "mailserver-details": "邮件服务器详细信息", + "mailserver-error-content": "无法访问您选择的邮件服务器。", + "mailserver-error-title": "连接到邮件服务器时出错", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "选择其他邮件服务器", + "mailserver-reconnect": "无法连接到邮件服务器,请点击重新连接", + "mailserver-request-error-content": "邮件服务器返回以下错误: {{error}}", + "mailserver-request-error-status": "获取历史消息时发生错误,请检查日志以获取详细信息", + "mailserver-request-error-title": "邮件服务器请求错误", + "mailserver-request-retry": "重试请求", + "mailserver-retry": "重试", + "main-currency": "主要货币", + "main-networks": "主网", + "main-wallet": "主钱包", + "mainnet-network": "主网", + "make-admin": "设置管理员", + "members": { + "one": "", + "other": "{{count}} 个成员" + }, + "members-active": { + "one": "", + "other": "{{count}} 个成员" + }, + "members-active-none": "没有成员", + "members-title": "成员", + "message": "信息", + "message-not-sent": "信息未发送", + "message-options-cancel": "取消", + "message-reply": "回复", + "message-syncing": "消息同步", + "messages": "消息", + "might-break": "可能会破坏一些ÐApp", + "migrations-failed-content": "{{message}} \n架构版本:初始{{initial-version}} ,当前{{current-version}} ,最后{{last-version}} \n\n请在#status公共聊天中告诉我们此问题。如果按“取消”按钮,则不会产生任何后果。如果按“ {{erase-multiaccounts-data-button-text}} ”按钮,帐户的数据库将被删除,您将能够解锁帐户。所有帐户的数据都将丢失。", + "mobile-network-ask-me": "当在移动网络上时询问我", + "mobile-network-continue-syncing": "继续同步", + "mobile-network-continue-syncing-details": "您可以稍后在设置中更改此设置", + "mobile-network-go-to-settings": "前往设置", + "mobile-network-settings": "移动数据", + "mobile-network-sheet-configure": "您可以配置更多同步\n细节", + "mobile-network-sheet-offline": "离线,等待Wi-Fi", + "mobile-network-sheet-offline-details": "使用移动网络同步已关闭", + "mobile-network-sheet-remember-choice": "记住我的选择", + "mobile-network-sheet-settings": "设置", + "mobile-network-start-syncing": "开始同步", + "mobile-network-stop-syncing": "停止同步", + "mobile-network-stop-syncing-details": "直到连接到Wi-Fi?", + "mobile-network-use-mobile": "使用移动数据", + "mobile-network-use-mobile-data": "在同步聊天时,Status 会使用大量数据流量。您可以选择不在移动网络上同步", + "mobile-network-use-wifi": "仅限Wi-Fi", + "mobile-syncing-sheet-details": "在同步聊天时,Status 会使用大量数据流量。您可以选择不在移动网络上同步", + "mobile-syncing-sheet-title": "使用移动数据同步", + "more": "更多", + "multiaccounts-recover-enter-phrase-text": "输入12,15,18,21或24个单词。 \n用单个空格分隔单词。", + "multiaccounts-recover-enter-phrase-title": "输入您的助记词", + "name": "名称", + "name-of-token": "代币的名称", + "need-help": "需要帮助?", + "network": "网络", + "network-chain": "网络链", + "network-details": "网络详细信息", + "network-fee": "网络费", + "network-id": "网络 ID", + "network-invalid-network-id": "指定的网络ID与RPC url的网络ID不对应", + "network-invalid-status-code": "无效状态码: {{code}}", + "network-invalid-url": "无效网络网址", + "network-settings": "网络设置", + "new": "新建", + "new-chat": "新的聊天", + "new-contact": "新的联系人", + "new-contract": "新合约", + "new-group": "新增群组", + "new-group-chat": "新的群聊", + "new-network": "新建网络", + "new-pin-description": "输入新的6位数字密码", + "new-public-group-chat": "加入公共聊天", + "next": "下一个", + "no": "否", + "no-collectibles": "没有可用的收藏品", + "no-contacts": "还没有联系人", + "no-keycard-applet-on-card": "卡上没有Keycard小程序", + "no-messages": "无消息", + "no-pairing-slots-available": "没有可用配对位。 \n你可以解除已经与卡配对的设备配对", + "no-result": "没有结果", + "no-tokens-found": "没有找到代币", + "node-info": "节点信息", + "nonce": "随机数", + "none": "无", + "not-applicable": "对未签名交易不可用", + "not-keycard-text": "您使用的卡不是密钥卡。您需要购买密钥卡才能使用它", + "not-keycard-title": "不是一个密钥卡", + "notifications": "通知", + "notify": "通知", + "off": "关闭", + "offline": "离线", + "offline-messaging": "邮件服务器", + "offline-messaging-settings": "邮件服务器设置", + "ok": "确定", + "ok-continue": "好的,继续", + "ok-got-it": "好的, 明白了", + "okay": "确定", + "on": "开启", + "open": "打开", + "open-dapp": "打开ÐApp", + "open-dapp-store": "发现ÐApps", + "open-nfc-settings": "打开NFC设置", + "open-on-etherscan": "打开 Etherscan.io", + "optional": "可选", + "outgoing": "呼出", + "pair": "配对设备", + "pair-card": "配对卡", + "pair-code": "配对码", + "pair-code-explanation": "将卡与另一台具有相同Status多帐户的设备配对。", + "pair-this-card": "配对此卡", + "pair-this-device": "配对此设备", + "pair-this-device-description": "将您的设备配对以同步联系人并与他们聊天", + "paired-devices": "配对设备", + "pairing": "配对", + "pairing-card": "配对卡", + "pairing-go-to-installation": "配对设置", + "pairing-maximum-number-reached-content": "请在启用新设备之前禁用其中一个设备。", + "pairing-maximum-number-reached-title": "达到最大设备数", + "pairing-new-installation-detected-content": "已检测到新设备。 \n为了正确使用您的设备,在使用之前配对并启用它们。 \n请找到设置菜单下的设备项以配对您的设备。", + "pairing-new-installation-detected-title": "检测到新设备", + "pairing-no-info": "没有信息", + "pairing-please-set-a-name": "请为您的设备设置名称。", + "passphrase": "密码", + "password": "密码", + "password_error1": "密码不匹配。", + "password-description": "至少6个字符。您需要此密码才能打开Status并确认交易", + "password-placeholder2": "确认你的密码", + "paste": "粘贴", + "paste-json": "粘贴 JSON", + "pay-to-chat": "付钱聊天", + "peers": "对等方", + "pending": "等待中", + "pending-confirmation": "待确认...", + "permissions": "权限", + "phone-e164": "国际1", + "photos-access-error": "要授予所需的照片许可,请转到系统设置,并确保选中了 “Status” > “照片”。", + "pin-changed": "6位数字密码已更改", + "pin-code": "6位数字密码", + "pin-mismatch": "6位数字密码不匹配", + "pin-retries-left": "您还剩{{number}}次重试机会", + "preview-privacy": "预览隐私模式", + "privacy": "隐私", + "privacy-and-security": "隐私和安全", + "privacy-policy": "隐私权政策", + "processing": "处理中", + "product-information": "产品信息", + "profile": "个人资料", + "public-chat": "公聊", + "public-chats": "公共聊天", + "public-group-status": "公共", + "public-group-topic": "话题", + "public-key": "公钥", + "puk-and-pairing-codes-displayed": "显示PUK和配对码", + "puk-code": "PUK码", + "puk-code-explanation": "如果您忘记了6位数字密码或输入错误3次,则需要使用此代码解锁您的卡。", + "puk-mismatch": "PUK码不匹配", + "quiet-days": "{{quiet-days}}天", + "quiet-hours": "{{quiet-hours}}小时", + "re-encrypt-key": "重新加密密钥", + "receive": "接收", + "receive-transaction": "接收交易", + "recent": "最近", + "recent-recipients": "联系人", + "recently-used-stickers": "最近使用的贴纸将出现在这里", + "recipient": "接收方", + "recipient-code": "输入收件人地址", + "recover": "恢复", + "recover-key": "恢复密钥", + "recover-keycard-multiaccount-not-supported": "不支持使用密码恢复keycard帐户", + "recover-with-keycard": "使用Keycard恢复", + "recovering-key": "正在恢复密钥...", + "recovery-confirm-phrase": "确认密码", + "recovery-phrase": "助记词", + "recovery-success-text": "您必须创建新的代码或密码才能重新加密密钥", + "recovery-typo-dialog-description": "如果输入错误的单词,您将创建一个新帐号,而不是恢复旧帐号。", + "recovery-typo-dialog-title": "此助记词正确吗?", + "remember-me": "记住我的选择", + "remind-me-later": "请稍后提示我", + "remove": "删除", + "remove-from-chat": "从聊天中删除", + "remove-network": "移除网络", + "remove-token": "删除代币", + "removed": "已删除", + "repeat-pin": "重复你的新的6位数字密码", + "report-bug-email-template": "1.问题描述\n {{description}} \n\n\n 2.重现的步骤\n {{steps}} \n\n\n 3.附上可以演示问题的屏幕截图\n", + "request-transaction": "请求交易", + "required-field": "必填字段", + "resend-message": "重新发送", + "reset-card": "重置卡片", + "reset-card-description": "此操作将卡片重置为初始状态。它将清除所有数据,包括私钥。操作不可逆。", + "retry": "重试", + "rpc-url": "RPC 链接", + "save": "保存", + "save-password": "保存密码", + "save-password-unavailable": "设置设备码以保存密码", + "save-password-unavailable-android": "保存密码不可用:您的设备可能已被root或缺少必要的安全功能。", + "scan-qr": "扫描二维码", + "scan-qr-code": "扫描钱包地址的 QR 码", + "search": "搜索", + "secret-keys-confirmation-text": "万一您丢失了手机,您将需要它们以继续使用您的Keycard。", + "secret-keys-confirmation-title": "你抄写下来了吗?", + "security": "安全", + "see-details": "查看详细信息", + "see-it-again": "再次核对", + "select-chat": "选择一个聊天对象开始聊天", + "selected": "选择", + "send-logs": "报告一个错误", + "send-logs-to": "向{{email}}报告错误", + "send-message": "发送消息", + "send-request": "发送请求", + "send-request-amount": "金额", + "send-request-amount-max-decimals": "最大小数位数为{{asset-decimals}}", + "send-request-unknown-token": "未知代币 - {{asset}}", + "send-sending-to": "到{{recipient-name}}", + "send-transaction": "发送交易", + "sending": "正在发送...", + "sent-at": "发送于", + "set-a-topic": "创建主题", + "set-currency": "设置货币", + "set-dapp-access-permissions": "设置DApp访问权限", + "settings": "设置", + "share": "分享", + "share-address": "分享地址", + "share-chat": "共享聊天", + "share-contact-code": "共享我的联系人代码", + "share-dapp-text": "查看我在Status上使用的这个DApp: {{link}}", + "share-link": "共享链接", + "share-my-profile": "分享我的个人资料", + "share-profile": "分享个人资料", + "share-profile-link": "共享配置文件链接", + "share-public-chat-text": "在Status应用中查看此公共聊天: {{link}}", + "sharing-copied-to-clipboard": "复制到剪贴板", + "sharing-copy-to-clipboard": "复制到剪贴板", + "sharing-share": "分享...", + "show-less": "收起", + "show-more": "显示更多", + "show-qr": "显示二维码", + "sign-in": "登录", + "sign-message": "签名消息", + "sign-out": "注销", + "sign-with": "签名", + "sign-with-password": "使用密码签名", + "sign-you-in": "签入..。", + "signing": "签名", + "signing-a-message": "输入讯息...", + "signing-phrase": "签名短语", + "something-went-wrong": "出错", + "soon": "不久", + "specify-address": "指定地址", + "specify-name": "指定名称", + "specify-network-id": "指定网络ID", + "specify-rpc-url": "指定一个 RPC 链接", + "start-chat": "开始聊天", + "start-conversation": "开始对话", + "start-group-chat": "开始群聊", + "start-new-chat": "开始新对话", + "status": "状态", + "status-confirmed": "确定", + "status-hardwallet": "Status硬件钱包", + "status-keycard": "Status Keycard", + "status-not-sent-click": "未发送", + "status-not-sent-tap": "未发送。点击选项", + "status-pending": "等待中", + "status-sent": "已发送", + "status-tx-not-found": "未找到 TX", + "step-i-of-n": "步骤{{step}}\/{{number}}", + "sticker-market": "贴纸市场", + "submit": "提交", + "submit-bug": "提交错误", + "success": "成功", + "symbol": "符号", + "sync-all-devices": "同步所有设备", + "sync-in-progress": "正在同步...", + "sync-settings": "同步设置", + "sync-synced": "已同步", + "syncing-devices": "正在同步...", + "tag-was-lost": "标签丢失", + "test-networks": "测试网络", + "text-input-disabled": "请稍候...", + "this-device": "此设备", + "this-device-desc": "您的私钥将被加密并安全存储", + "this-is-you-signing": "这是你的签名短语", + "this-will-take-few-seconds": "这将需要几秒钟", + "three-words-description": "在每笔交易签名之前, 您可以看到这三个词语", + "three-words-description-2": "如果您看到不同的组合, 请取消交易并注销。", + "to": "到", + "to-block": "屏蔽", + "to-encrypt-enter-password": "请输入密码以对您的账户加密", + "to-see-this-message": "查看此消息,", + "token-auto-validate-decimals-error": "地址{{address}}中的代币 {{symbol}}小数位错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-name-error": "地址{{address}}中的代币 {{symbol}}名称错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-symbol-error": "地址{{address}}中的代币 {{symbol}}符号错误 - 设置为{{expected}}但检测为{{actual}}", + "token-details": "代币详细信息", + "topic-name-error": "仅使用小写字母(a到z),数字和短划线( - )。不要使用聊天码", + "transaction": "交易", + "transaction-description": "请等待达到至少12个确认,来确保交易已被安全地处理。", + "transaction-details": "交易明细", + "transaction-failed": "交易失败", + "transaction-history": "交易记录", + "transaction-request": "交易请求", + "transaction-sent": "发送的交易", + "transactions": "交易", + "transactions-filter-select-all": "全部选中", + "transactions-filter-title": "过滤历史记录", + "type": "类型", + "transactions-history": "历史记录", + "transactions-history-empty": "暂无交易历史记录", + "transactions-sign": "签名", + "tribute-required-by-multiaccount": "{{multiaccount-name}}要求SNT开始聊天。", + "tribute-state-paid": "Tribute已付款", + "tribute-state-pending": "见面礼等待中", + "tribute-state-required": "需要{{snt-amount}} SNT致敬", + "tribute-to-talk": "见面礼对话", + "tribute-to-talk-add-friends": "添加朋友作为联系人以允许聊天而无需支付费用。", + "tribute-to-talk-are-you-friends": "你们是朋友吗?", + "tribute-to-talk-ask-to-be-added": "请求添加为联系人", + "tribute-to-talk-contact-received-your-tribute": "收到你的见面礼。你可以安全地互相聊天。", + "tribute-to-talk-desc": "通过收取陌生人首次与你聊天时支付的SNT,来货币化你的注意力。", + "tribute-to-talk-disabled": "见面礼对话未启用", + "tribute-to-talk-disabled-note": "从现在开始,新人可以在不发送SNT的情况下与您聊天。", + "tribute-to-talk-enabled": "您已启用Tribute to Talk。", + "tribute-to-talk-finish-desc": "从现在开始,您只会收到来自联系人和付款人的聊天信息 ", + "tribute-to-talk-learn-more-1": "您的时间和精力是您最宝贵的资产。 Tribute to Talk可让您设置陌生人与您开始聊天所需的SNT数量。", + "tribute-to-talk-learn-more-2": "任何不在您的联系人列表中的人都会被要求付款,您可以在他们付款后回复。", + "tribute-to-talk-learn-more-3": "您可以随时退款,但为了确保朋友可以自由联系您,请先将其添加为联系人。", + "tribute-to-talk-paywall-learn-more-1": "我们的时间和精力是我们最宝贵的资产。 Tribute to Talk让您联系新朋友以换取SNT付款。", + "tribute-to-talk-paywall-learn-more-2": "要与设置了Tribute的人开始聊天,只需支付所需的SNT,您就会被添加为联系人。", + "tribute-to-talk-paywall-learn-more-3": "如果你认识他们,则可以在Status之外分享您的个人资料以免费添加好友。", + "tribute-to-talk-pending": "见面礼等待确认", + "tribute-to-talk-pending-note": "见面礼交易正在等待网络确认。您可以在交易历史记录中查看其状态", + "tribute-to-talk-removing-note": "删除Tribute to Talk将允许陌生人在不发送SNT的情况下开始聊天。需要进行交易才能生效。", + "tribute-to-talk-set-snt-amount": "设置陌生人与你开始聊天所需的SNT数量", + "tribute-to-talk-signing": "正在等待签名交易", + "tribute-to-talk-transaction-failed-note": "交易失败,你的见面礼谈话设置未更改", + "tribute-to-talk-tribute-received1": "Tribute收到了. You and ", + "tribute-to-talk-tribute-received2": "现在是联系人,可以安全地互相聊天。", + "tribute-to-talk-you-require-snt": "您需要收到 SNT 才能允许新人与您聊天。", + "try-again": "再试一次", + "turn-nfc-on": "开启NFC", + "type-a-message": "输入讯息...", + "ulc-enabled": "超轻客户端启用", + "unable-to-read-this-code": "无法读取此代码", + "unblock-contact": "取消屏蔽联系人", + "unknown-status-go-error": "未知的 status-go 错误", + "unlock": "解锁", + "unpair-card": "未配对卡片", + "unpair-card-confirmation": "此操作将取消当前设备的卡。需要6位数字密码授权。你想继续吗?", + "unpaired-keycard-text": "您点按的Keycard与此手机无关联", + "unpaired-keycard-title": "卡片已从当前设备删除配对", + "update": "更新", + "url": "链接", + "usd-currency": "USD", + "use-valid-contact-code": "请输入或扫描有效的联系人代码或用户名", + "validation-amount-invalid-number": "金额不是一个有效的数字", + "validation-amount-is-too-precise": "金额太精确了。最大小数位数为{{decimals}} 。", + "version": "版本", + "view-cryptokitties": "在CryptoKitties中查看", + "view-cryptostrikers": "在 CryptoStrikers 中查看", + "view-etheremon": "在Etheremon中查看", + "view-gitcoin": "在Gitcoin中查看", + "view-profile": "查看个人资料", + "view-signing": "查看签名短语", + "view-superrare": "在 SuperRare 中查看", + "waiting-for-wifi": "历史记录同步离线, 等待 Wi-Fi。", + "waiting-for-wifi-change": "更改", + "waiting-to-sign": "正在等待签名交易......", + "wallet": "钱包", + "wallet-asset": "资产", + "wallet-assets": "资产", + "wallet-backup-recovery-title": "备份助记词", + "wallet-choose-recipient": "选择接收方", + "wallet-collectibles": "收藏品", + "wallet-insufficient-funds": "资金不足", + "wallet-insufficient-gas": "ETH不足以支付燃料费", + "wallet-invalid-address": "无效的地址: \n {{data}}", + "wallet-invalid-address-checksum": "地址错误: \n {{data}}", + "wallet-invalid-chain-id": "网络不匹配: \n {{data}}而当前链是{{chain}}", + "wallet-manage-assets": "管理资产", + "wallet-request": "请求", + "wallet-send": "发送", + "wallet-send-min-wei": "最小1wei", + "wallet-settings": "钱包设置", + "wallet-total-value": "总值", + "wallet-transaction-total-fee": "总费用", + "wants-to-access-profile": "想要访问您的个人资料", + "warning": "警告", + "warning-message": "抱歉,我们限制快速连续发送多条消息。请稍后再试", + "web-view-error": "糟糕,出错了", + "welcome-screen-text": "设置你的钱包,邀请朋友聊天\n并浏览流行的dapps!", + "welcome-to-status": "欢迎来到Status", + "welcome-to-status-description": "点按加号(+)按钮即可开始使用", + "word-n": "字# {{number}}", + "word-n-description": "为了确认您是否正确备份助记词,请在上方输入单词 #{{number}} 。", + "words-n": { + "one": "1个单词", + "other": "{{count}} 个单词" + }, + "write-down-and-store-securely": "写下来并安全的存储起来", + "wrong-address": "错误的地址", + "wrong-card": "错误的卡片", + "wrong-card-text": "您已点击了与您选择的多帐户不对应的卡片。请再试一次。", + "wrong-contract": "错误的合约", + "wrong-keycard-text": "您点按的Keycard与此手机无关联", + "wrong-keycard-title": "看起来你已经点击了\n一张空白的密钥卡", + "wrong-password": "密码错误", + "wrong-word": "错误的单词", + "yes": "是", + "You": "你", + "you": "你", + "you-already-have-an-asset": "您已拥有资产{{value}}", + "you-are-all-set": "你已完成所有设置", + "you-are-all-set-description": "现在,如果您丢失了手机,则可以使用助记词恢复您的帐号和钱包。", + "you-can-change-account": "您可以根据自己的喜好更改帐户的名称和颜色", + "you-dont-have-stickers": "你还没有任何贴纸", + "your-contact-code": "授予此DApp访问权限以查看您的聊天码", + "your-data-belongs-to-you": "如果你丢失了你的助记词, 你也同时失去了你的数据和资金", + "your-data-belongs-to-you-description": "如果您丢失了助记词,Status无法帮助您恢复多帐户。您需对数据的安全性负责,备份助记词是最佳保障。", + "your-recovery-phrase": "您的助记词", + "your-recovery-phrase-description": "这是你的助记词。已此来证明这是你的钱包。你只能查看一次!请将其写在纸上并保存在安全的地方。如果丢失或重新安装钱包,您将需要用到这些助记词。" +} diff --git a/translations/zh_TW.json b/translations/zh_TW.json new file mode 100644 index 00000000000..6f7c34b8e71 --- /dev/null +++ b/translations/zh_TW.json @@ -0,0 +1,1834 @@ +{ + "K": "K", + "M": "M", + "NFT": "NFT", + "You": "您", + "about-app": "關於", + "about-key-storage-content": "Status永遠不會詢問您的私鑰。確保備份您的種子詞組。如果丟失手機,這是取回金鑰的唯一方法。", + "about-key-storage-title": "關於金鑰保存", + "about-names-content": "沒有人可以冒充您!在預設值中,您是匿名的,永遠不必透露您的真實姓名。您只需支付一些費用即可註冊自定義名稱。", + "about-names-title": "名稱無法更改", + "about-sharing-data": "關於共享資料", + "accept": "接受", + "accept-and-add": "接受並新增", + "accept-and-continue": "接受並繼續", + "accept-and-share-address": "接受並分享地址", + "accept-community-rules": "我同意社区规则", + "accept-new-chats-from": "接受來自的新聊天", + "accept-status-tos-prefix": "我接受Status", + "accepted": "已接受", + "access-existing-keys": "使用既有金鑰", + "access-key": "使用金鑰", + "account-added": "帳戶已新增", + "account-color": "帳戶顏色", + "account-content": "您可以將 Status 中的帳號與銀行帳戶進行比較。像銀行帳戶一樣,帳號通常具有位址和餘額;您將使用此帳號在乙太坊上進行交易。您的錢包中可以有多個帳號。解鎖 Status 後即可進行存取。", + "account-exists-title": "帳號已存在", + "account-is-used": "該帳戶正在瀏覽器中與 Dapps 一起使用。", + "account-name": "帳號名稱", + "account-settings": "帳號設定", + "account-title": "帳號", + "accounts": "帳號", + "actions": "操作", + "active-members": "活跃成员", + "active-online": "線上", + "active-unknown": "未知", + "activity": "活動", + "add": "新增", + "add-a-watch-account": "新增監看地址", + "add-account": "新增收款地址", + "add-account-description": "您可以導入任何類型的乙太坊賬戶以將其新增到您的狀態錢包中", + "add-account-incorrect-password": "密碼似乎不正確。請輸入密碼來解鎖應用程式。", + "add-an-account": "新增帳號", + "add-bootnode": "新增引導節點", + "add-contact": "新增好友", + "add-custom-token": "新增自訂代幣", + "add-favourite": "加入書籤", + "add-mailserver": "新增Status節點", + "add-members": "新增成員", + "add-network": "新增網路", + "add-new-contact": "新增好友", + "add-nickname": "新增暱稱(選填)", + "add-node": "新增節點", + "add-private-key-account": "通過私鑰新增帳戶", + "add-seed-account": "使用種子詞組來新增帳號", + "add-to-contacts": "新增到好友名單", + "add-to-contacts-text": "通過將用戶新增到您的好友名單,您的錢包位址將顯示給對方", + "add-to-favourites": "加入收藏", + "add-watch-account": "新增監視帳號", + "added": "添加", + "address": "地址", + "address-or-ens-name": "地址或ENS名稱", + "address-received": "接收位址", + "address-request-accepted": "地址請求已接受", + "address-requested": "地址請求", + "admin": "管理員", + "advanced": "進階", + "advanced-settings": "進階設定", + "advertiser-description": "感謝您的好友將Status推薦給您。您是否介意Status檢查您目前的IP地址,以便獲得獎勵?該資訊將不會用於其他任何用途,並會在7天後將其完全刪除。", + "advertiser-starter-pack-accept": "接受", + "advertiser-starter-pack-decline": "拒絕", + "advertiser-starter-pack-description": "這是一些加密貨幣,可以幫助您入門!用它來獲得貼紙,ENS名稱並嘗試dapps", + "advertiser-starter-pack-title": "入門包", + "advertiser-title": "預設為隱密", + "agree-by-continuing": "繼續,表示您同意我們", + "all": "所有", + "all-connections": "所有连接", + "allow": "允許", + "allow-and-send": "允許並傳送", + "allow-mention-notifications": "顯示@", + "allowing-authorizes-this-dapp": "允許授權此DApp檢索您的錢包地址並啟用Web3", + "alphabetically": "按字母顺序排列", + "already-have-asset": "您已經擁有此資產", + "amount": "數目", + "and": "和", + "anyone": "任何人", + "app-commit": "App提交", + "app-connections": "应用程序连接", + "appearance": "版面外觀", + "apply": "執行", + "approve": "核准", + "approve-limit": "核准限額", + "approve-token": "核准代幣", + "approve-token-contract-desc": "核准代幣合約將會允許它花費您的代幣餘額。如果您覺得某個項目不值得信賴,請不要選擇核准代幣,或者只核准您需要使用的金額額度。", + "are-you-sure": "您確定嗎?", + "are-you-sure-description": "您將無法再看到完整的種子詞組", + "are-you-sure-to-cancel": "您確定要取消?", + "are-you-sure?": "您確定嗎?", + "ask-in-status": "提出問題或報告錯誤", + "at": "在", + "attribution-received": "收到{{attrib}}獎勵,上限為{{max}}", + "audio": "音效", + "audio-message": "音频消息", + "audio-recorder": "錄音機", + "audio-recorder-error": "錄音機錯誤", + "audio-recorder-max-ms-reached": "已達最長錄音時間", + "audio-recorder-permissions-error": "您必須授予發送語音訊息的權限", + "authorize": "授權", + "available": "可使用", + "available-participants": { + "other": "您還可以選擇 {{count}} 位參與者" + }, + "back": "返回", + "back-up": "備份", + "back-up-seed-phrase": "備份種子詞組", + "back-up-your-seed-phrase": "備份您的種子詞組", + "backing-up": "備份中...", + "backup-disabled": "禁用", + "backup-enabled": "啟用", + "backup-recovery-phrase": "備份種子詞組", + "backup-settings": "備份設定", + "backup-through-waku": "透過 waku 備份", + "bad-fees-description": "您的手續費用低於我們建議的參數。", + "balance": "帳戶餘額", + "begin-set-up": "開始設定", + "below-base-fee": "最高交易費用低於基本費用", + "biometric-auth-android-sensor-desc": "觸摸感應器", + "biometric-auth-android-sensor-error-desc": "失敗", + "biometric-auth-android-title": "需要驗證", + "biometric-auth-confirm-logout": "重新登入", + "biometric-auth-confirm-message": "需要進行生物識別身份驗證才能繼續,如果無法使用,請使用密碼來解鎖您的金鑰", + "biometric-auth-confirm-title": "您必須驗證!", + "biometric-auth-confirm-try-again": "再試一次", + "biometric-auth-error": "無法執行生物特徵認證( {{code}} )", + "biometric-auth-login-error-title": "生物特徵辨識錯誤", + "biometric-auth-login-ios-fallback-label": "輸入密碼", + "biometric-auth-reason-login": "登入Status", + "biometric-auth-reason-verify": "需要驗證", + "biometric-disable-bioauth": "禁用{{bio-type-label}}", + "biometric-disable-password-description": "如果禁用此功能,您還將", + "biometric-disable-password-title": "禁用密碼儲存", + "biometric-enable": "如果您不想每次都輸入密碼來啟動應用程式,請啟用{{bio-type-label}}登錄", + "biometric-enable-button": "啟用{{bio-type-label}}", + "biometric-enable-keycard": "如果您不想每次都使用金鑰卡來啟動應用程式,請啟用{{bio-type-label}}登錄", + "biometric-faceid": "Face ID", + "biometric-fingerprint": "指紋", + "biometric-secure-with": "使用{{bio-type-label}}", + "biometric-touchid": "Touch ID", + "bip39-password-placeholder": "BIP39密碼", + "blank-keycard-text": "生成金鑰和名稱後,即可繼續使用金鑰卡", + "blank-keycard-title": "您似乎使用\n空白的金鑰卡", + "blank-messages-text": "您的消息将在这里", + "block": "區塊", + "block-contact": "封鎖此用戶", + "block-contact-details": "封鎖將刪除該用戶以前的訊息,並阻擋傳送新訊息給您", + "block-user": "屏蔽用户", + "blocked-users": "已封鎖的黑名單", + "bootnode-address": "引導節點地址", + "bootnode-details": "引導節點詳細資訊", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "引導節點", + "bootnodes-enabled": "引導節點已啟用", + "bootnodes-settings": "引導節點設定", + "browsed-websites": "瀏覽器歷史記錄將顯示在此處", + "browser": "瀏覽器", + "browser-not-secure": "連線不安全!不要在此網站上簽署交易或發送個人數據。", + "browser-secure": "連線是安全的。在簽署交易或輸入個人資訊之前,請確保您確實信任此網站。", + "browsers": "瀏覽器", + "browsing-cancel": "取消", + "browsing-open-in-android-web-browser": "在Android中開啟", + "browsing-open-in-ios-web-browser": "在iOS中開啟", + "browsing-open-in-status": "在Status中開啟", + "browsing-site-blocked-description1": "我們從該地址偵測到潛在的惡意活動。為了保護您和您的錢包,我們已阻止進一步的瀏覽動作。 \n\n如果您認為這是一個錯誤,請回報至", + "browsing-site-blocked-description2": "開放的聊天", + "browsing-site-blocked-go-back": "返回", + "browsing-site-blocked-title": "該網站已被封鎖", + "browsing-title": "瀏覽", + "bug-report": "報告錯誤", + "bug-report-description": "* 描述", + "bug-report-description-placeholder": "必填,不能為空", + "bug-report-steps": "故障重現步驟", + "bug-report-steps-placeholder": "- 打開應用程序\n- 做了什麼點選\n- 然後是其他的...", + "bug-report-submit-email": "透過電子郵件傳送日誌存檔", + "bug-report-submit-gh-issue": "提送一個沒有日誌紀錄的 GitHub漏洞", + "bug-report-too-short-description": "描述太短", + "build-yourself": "若您不同意這些服務條款,您可以考慮建立自己的應用程式版本", + "buy-crypto": "購買加密貨幣", + "buy-crypto-choose-a-service": "選擇您想用來購買加密貨幣的服務", + "buy-crypto-description": "尋找能購買加密貨幣的dapp", + "buy-crypto-leaving": "您即將離開Status並進入第三方網站以完成購買", + "buy-crypto-title": "您的錢包似乎是空的", + "camera-access-error": "要開放所需的相機權限,請進入系統設定,並在應用程式Status>相機中進行變更。", + "can-not-add-yourself": "這是您,要開始聊天,請選擇其他人", + "can-send-messages": "您可以傳送和接收新訊息", + "cancel": "取消", + "cancel-keycard-setup": "取消金鑰卡設定", + "cancelling": "取消", + "cannot-pin-desc": "您最多只能置顶 3 条消息。\n至少取消置顶一个消息以置顶其他新消息。", + "cannot-pin-title": "您无法置顶此消息!", + "cannot-read-card": "無法讀取卡片。 \n請把它放在手機感應處", + "cannot-use-default-pin": "不允許輸入密碼000000\n請使用其他號碼", + "cant-open-public-chat": "無法開啟公共聊天", + "cant-report-bug": "無法報告錯誤", + "card-is-blank": "空白卡片", + "card-reseted": "卡片已重設", + "card-unpaired": "卡片已與當前設備取消配對", + "category": "類別", + "category-title": "類別標題", + "change-fleet": "將其更改為{{fleet}}", + "change-group-privacy": "更改群组隐私", + "change-logging-enabled": "您確定要{{enable}}登入嗎?", + "change-pairing": "更改配對碼", + "change-pairing-description": "更改配對代碼不會影響當前的配對。但是,往後任何新增配對都將需要新的代碼。", + "change-pairing-title": "建立一個新的配對代碼", + "change-passcode": "更改啟動密碼", + "change-password": "更改密碼", + "change-pin": "更改六位數密碼", + "change-puk": "更改12位數PUK", + "change-tip": "變更手續費", + "changed-amount-warning": "金額從{{old}}更改為{{new}}", + "changed-asset-warning": "資產已從{{old}}更改為{{new}}", + "chaos-mode": "混沌模式", + "chaos-unicorn-day": "Chaos Unicorn Day", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "聊天室", + "chat-and-transact": "與朋友私下聊天和交易", + "chat-is-a-contact": "聯絡人", + "chat-is-not-a-contact": "不是聯絡人", + "chat-key": "聊天金鑰", + "chat-key-content": "\"Status\"聊天協議使用加密金鑰傳送和接收有關的訊息。聊天公鑰是您與他人共用的字串,讓他們可以在“Status”中向您傳送訊息。", + "chat-key-title": "聊天金鑰", + "chat-link-previews": "聊天連結預覽", + "chat-name": "聊天名称", + "chat-name-content": "從聊天鍵中演算法得出的三個隨機詞,會當作聊天中的默認別名。聊天名稱是完全唯一的;沒有其他用戶可以使用相同的三個詞。", + "chat-name-title": "聊天名稱", + "chat-notification-preferences": "通知设置", + "chat-settings": "聊天設定", + "chats": "聊天室", + "check-on-block-explorer": "在區塊瀏覽器查看", + "check-on-opensea": "在OpenSea查看", + "check-your-recovery-phrase": "檢查您的種子詞組", + "choose-actions": "選擇操作", + "choose-authentication-method": "選擇一種身份驗證方法", + "choose-new-location-for-keystore": "選擇一個新位置以儲存您的密鑰檔案", + "choose-storage": "選擇保存", + "clear": "清除", + "clear-all": "全部清除", + "clear-history": "清除歷史記錄", + "clear-history-action": "清除", + "clear-history-confirmation": "清除歷史記錄?", + "clear-history-confirmation-content": "您確定要清除此聊天記錄嗎?", + "clear-history-title": "清除歷史記錄?", + "cleared-chat-description-public": "太安静了,开始交谈或者.", + "close": "關閉", + "close-all": "全部關閉", + "close-app-button": "確認", + "close-app-content": "應用程式即將中止並關閉。重新啟動時,將使用所選定的網路", + "close-app-title": "警告!", + "collectibles-leak-metadata": "您可以在此處顯示您的 NFT。如果這樣做,您將會分享您的錢包和 IP 地址", + "command-button-send": "發送", + "communities": "社群", + "communities-alpha": "社群(alpha)", + "communities-enabled": "啟用社群", + "communities-verified": "✓已驗證的Status社群", + "community": "社群", + "community-channel": "社区频道", + "community-color": "社群顏色", + "community-color-placeholder": "選擇一種顏色", + "community-edit-title": "編輯社群", + "community-emoji-thumbnail-title": "圖片縮圖", + "community-image-pick": "選擇一張圖片", + "community-image-remove": "移除", + "community-image-take": "拍攝照片", + "community-info": "社群資訊", + "community-info-not-found": "找不到社群資訊", + "community-invite-title": "邀請", + "community-key": "社群管理私鑰", + "community-key-placeholder": "輸入您的社群管理私鑰", + "community-link": "社群連接", + "community-members": { + "other": "{{count}}位成員" + }, + "community-members-title": "成員", + "community-message-preview": "邀請加入{{community-name}}", + "community-notification-settings": "通知设置", + "community-private-key": "社群管理私鑰", + "community-requests-to-join-title": "會員申請", + "community-roles": "角色", + "community-rules": "社区规则", + "community-share-title": "分享", + "community-thumbnail-image": "相片縮圖", + "community-thumbnail-upload": "上傳", + "complete-hardwallet-setup": "這張卡片已連結。您將需要它來簽署交易與解鎖金鑰。", + "completed": "完成", + "confirm": "確認", + "confirm-new-password": "確認新密碼", + "confirm-pairing-code-placeholder": "確認您的配對代碼...", + "confirm-password-placeholder": "確認密碼...", + "confirmation-request": "要求確認", + "confirmations": "確認", + "confirmations-helper-text": "當交易經過12次確認後,您可以視為已結算完成。", + "connect": "連結", + "connect-mailserver-content": "連結到{{name}}嗎?", + "connect-wallet": "連接錢包", + "connected": "已連結", + "connected-to": "連結到", + "connecting": "正在連線...", + "connecting-requires-login": "需要登入以連結到另一個網路", + "connection-request": "連結請求", + "connection-status": "連結狀態", + "connection-with-the-card-lost": "無法與卡片取得連結", + "connection-with-the-card-lost-setup-text": "要恢復設定,\n請將卡置於手機感應處\n並維持不動", + "connection-with-the-card-lost-text": "要繼續操作,請將卡保持在手機感應處", + "contact-code": "聊天金鑰", + "contact-request": "联络请求", + "contact-request-accepted": "已接受 ✓", + "contact-request-declined": "已拒绝 (x)", + "contact-request-header": "请求加为好友", + "contact-request-pending": "待定...", + "contact-request-sent": "已发送好友申请", + "contact-requests": "好友请求", + "contact-s": { + "other": "好友名單" + }, + "contacts": "好友名單", + "contacts-descr": "您的好友名單將出現在這裡。您將收到添加為好友的所有狀態更新", + "contacts-empty": "具有ENS名稱的聯絡人將顯示在此處", + "continue": "繼續", + "continue-anyway": "仍然繼續", + "contract-address": "合約地址", + "contract-interaction": "合約交互", + "contract-isnt-supported": "不支援該合约", + "copy-info": "複製訊息", + "copy-qr": "複製", + "copy-text": "复制文本", + "copy-to-clipboard": "複製", + "copy-transaction-hash": "複製交易編號", + "cost-fee": "支出\/交易費用", + "counter-9-plus": "9+", + "counter-99-plus": "99+", + "create": "建立", + "create-a-pin": "創建一個六位數密碼", + "create-a-puk": "建立一個12位數的PUK", + "create-category": "建立分類", + "create-channel": "建立頻道", + "create-channel-title": "新頻道", + "create-community": "建立社群", + "create-group-chat": "建立聊天室", + "create-multiaccount": "產生金鑰", + "create-new-key": "獲取新金鑰", + "create-pin": "建立六位數的密碼", + "create-pin-description": "將需要您的卡片和此六位元數密碼來解鎖Status以及確認交易", + "created-group-chat-description": "您新建了群組{{group-name}}", + "cryptokitty-name": "謎戀貓 #{{id}}", + "currency": "貨幣", + "currency-display-name-aed": "阿聯迪拉姆", + "currency-display-name-afn": "阿富汗幣", + "currency-display-name-ars": "阿根廷披索", + "currency-display-name-aud": "澳元", + "currency-display-name-bbd": "巴貝多元", + "currency-display-name-bdt": "孟加拉塔卡", + "currency-display-name-bgn": "保加利亞幣", + "currency-display-name-bhd": "巴林第納爾", + "currency-display-name-bnd": "汶萊元", + "currency-display-name-bob": "玻利維亞幣", + "currency-display-name-brl": "巴西幣", + "currency-display-name-btn": "不丹幣", + "currency-display-name-cad": "加拿大元", + "currency-display-name-chf": "瑞士法郎", + "currency-display-name-clp": "智利披索", + "currency-display-name-cny": "人民幣", + "currency-display-name-cop": "哥倫比亞披索", + "currency-display-name-crc": "哥斯大黎加科朗", + "currency-display-name-czk": "捷克克朗", + "currency-display-name-dkk": "丹麥克朗", + "currency-display-name-dop": "多明尼加共和國披索", + "currency-display-name-egp": "埃及鎊", + "currency-display-name-etb": "衣索比亞比爾", + "currency-display-name-eur": "歐元", + "currency-display-name-gbp": "英鎊", + "currency-display-name-gel": "喬治亞拉里", + "currency-display-name-ghs": "迦納幣", + "currency-display-name-hkd": "港元", + "currency-display-name-hrk": "克羅埃西亞庫納", + "currency-display-name-huf": "匈牙利福林", + "currency-display-name-idr": "印尼盾", + "currency-display-name-ils": "以色列謝克爾", + "currency-display-name-inr": "印度盧比", + "currency-display-name-isk": "冰島克朗", + "currency-display-name-jmd": "牙買加元", + "currency-display-name-jpy": "日圓", + "currency-display-name-kes": "肯亞先令", + "currency-display-name-krw": "韓元", + "currency-display-name-kwd": "科威特第納爾", + "currency-display-name-kzt": "哈薩克堅戈", + "currency-display-name-lkr": "斯里蘭卡盧比", + "currency-display-name-mad": "摩洛哥迪拉姆", + "currency-display-name-mdl": "摩爾多瓦列伊", + "currency-display-name-mur": "模里西斯盧比", + "currency-display-name-mwk": "馬拉威克瓦查", + "currency-display-name-mxn": "墨西哥披索", + "currency-display-name-myr": "馬來西亞令吉", + "currency-display-name-mzn": "莫三比克梅蒂卡爾", + "currency-display-name-nad": "納米比亞元", + "currency-display-name-ngn": "奈及利亞奈拉", + "currency-display-name-nok": "挪威克朗", + "currency-display-name-npr": "尼泊爾盧比", + "currency-display-name-nzd": "紐西蘭元", + "currency-display-name-omr": "阿曼里亞爾", + "currency-display-name-pen": "秘魯幣", + "currency-display-name-pgk": "巴布亞新幾內亞幣", + "currency-display-name-php": "菲律賓披索", + "currency-display-name-pkr": "巴基斯坦盧比", + "currency-display-name-pln": "波蘭幣", + "currency-display-name-pyg": "巴拉圭幣", + "currency-display-name-qar": "卡達里亞爾", + "currency-display-name-ron": "羅馬尼亞列伊", + "currency-display-name-rsd": "塞爾維亞第納爾", + "currency-display-name-rub": "俄羅斯盧布", + "currency-display-name-sar": "沙烏地阿拉伯里亞爾", + "currency-display-name-sek": "瑞典克朗", + "currency-display-name-sgd": "新加坡元", + "currency-display-name-thb": "泰銖", + "currency-display-name-try": "土耳其里拉", + "currency-display-name-ttd": "千里達及托巴哥元", + "currency-display-name-twd": "新台幣", + "currency-display-name-tzs": "坦尚尼亞先令", + "currency-display-name-uah": "烏克蘭格里夫納", + "currency-display-name-ugx": "烏干達先令", + "currency-display-name-usd": "美金", + "currency-display-name-uyu": "烏拉圭披索", + "currency-display-name-vef": "委內瑞拉幣", + "currency-display-name-vnd": "越南盾", + "currency-display-name-zar": "南非幣", + "current": "目前", + "current-average": "目前平均值", + "current-average-tip": "目前平均手續費用", + "current-base": "目前基礎", + "current-base-fee": "目前基本費用", + "current-minimum-tip": "目前最低手續費用", + "current-network": "目前網路", + "current-password": "目前密碼", + "current-pin": "輸入六位數密碼", + "current-pin-description": "輸入您的六位數密碼以繼續", + "custom": "自訂", + "custom-networks": "自訂網路", + "custom-node": "您正在使用自訂RPC端點。您的本機交易記錄可能不完整。", + "custom-seed-phrase": "無效的種子詞組", + "custom-seed-phrase-text-1": "該種子詞組與我們支持的辭典不相符。請檢查拼寫錯誤的單字。", + "dapp": "ÐApp", + "dapp-starter-pack-accept": "接受並開啟", + "dapp-starter-pack-description": "這是一些加密貨幣,可以幫助您入門!用它來獲得貼紙,ENS名稱並嘗試Ðapps", + "dapp-starter-pack-title": "入門包", + "dapp-would-like-to-connect-wallet": "請求連結到", + "dapps": "ÐApps", + "dapps-permissions": "ÐApp權限", + "dark": "夜晚", + "data": "數據", + "data-collected": "資料已收集", + "data-collected-subtitle": "下表顯示將儲存和傳送的確切資料。資料根據公共規則進行驗證,以確保不會發送敏感資料。應隨時保持懷疑,進行驗證。", + "data-syncing": "資料同步中", + "database-reset-content": "對話紀錄、好友名單和設定已經被刪除。您可以將您的帳戶與金鑰卡一起使用", + "database-reset-title": "資料庫重置", + "database-reset-warning": "資料庫將被重置。現有聊天、好友名單和設定將被刪除", + "datetime-ago": "前", + "datetime-ago-format": "{{number}}{{time-intervals}}{{ago}}", + "datetime-ago-format-short": "{{number}}{{time-intervals}}", + "datetime-day": { + "other": "天" + }, + "datetime-day-short": { + "other": "天" + }, + "datetime-hour": { + "other": "小時" + }, + "datetime-hour-short": { + "other": "小時" + }, + "datetime-minute": { + "other": "分" + }, + "datetime-minute-short": { + "other": "分" + }, + "datetime-second": { + "other": "秒" + }, + "datetime-second-short": { + "other": "秒" + }, + "datetime-today": "今天", + "datetime-yesterday": "昨天", + "decimals": "小數點", + "decline": "拒絕", + "declined": "拒绝", + "decryption-failed-content": "解密數據時出現錯誤,您可能需要清除舊資料,並建立新的帳戶,請點選“同意”來清除舊資料,或點選“取消”以重試。", + "default": "預設", + "default-assets": "預設兼容ERC20和ERC721", + "default-sync-period": "同步歷史記錄", + "delete": "刪除", + "delete-account": "刪除帳號", + "delete-and-leave-group": "刪除並離開群組", + "delete-bootnode": "刪除引導節點", + "delete-bootnode-are-you-sure": "您確定要刪除該引導節點嗎?", + "delete-bootnode-title": "刪除引導節點", + "delete-category-confirmation": "您確定要刪除此類別嗎?", + "close-chat": "刪除聊天", + "close-chat-confirmation": "您確定要刪除此對話嗎?", + "delete-confirmation": "刪除?", + "delete-for-everyone": "为所有人删除", + "delete-for-me": "为我删除", + "delete-keys-keycard": "從金鑰卡中刪除私鑰", + "delete-mailserver": "刪除Status節點", + "delete-mailserver-are-you-sure": "您確定要刪除此Status節點嗎?", + "delete-mailserver-title": "刪除Status節點", + "delete-message": "刪除留言", + "delete-my-account": "刪除我的賬號", + "delete-my-profile": "刪除我的個人資料", + "delete-network-confirmation": "您確定要刪除此網路嗎?", + "delete-network-error": "請先連結到其他網路,然後再刪除這個網路", + "delete-network-title": "刪除網路?", + "delete-node": "刪除節點", + "delete-node-are-you-sure": "您確定要刪除此節點嗎?", + "delete-node-title": "刪除節點", + "delete-profile": "刪除個人資料", + "delete-profile-warning": "警告:如果您沒有記下種子詞組,在刪除個人資料後,您將失去對資金的訪問權限", + "deny": "拒絕", + "derivation-path": "推導路徑", + "describe-channel": "頻道簡介", + "description": "描述", + "dev-mode": "開發人員模式", + "dev-mode-settings": "開發模式設定", + "device-syncing": "設備同步", + "devices": "裝置", + "disable": "禁用", + "disable-all": "全部停用", + "disable-later-in-settings": "您可以稍後在“設定”中禁用此功能", + "disabled": "禁用", + "disconnect": "中斷連結", + "disconnected": "離線聊天", + "discover": "發現", + "discover-communities": "发现社区", + "dismiss": "返回", + "display-collectibles": "展示收藏", + "done": "完成", + "dont-ask": "不再詢問我", + "edit": "編輯", + "edit-categories": "編輯分類", + "edit-channel-title": "編輯頻道", + "edit-chats": "編輯聊天", + "edit-community": "編輯社群", + "edit-favourite": "編輯書籤", + "edit-group": "編輯群組", + "edit-message": "編輯訊息", + "edit-name-and-image": "編輯名稱和圖像", + "edit-name-image": "編輯名稱和圖像", + "edit-nickname": "修改昵称", + "edit-profile": "編輯個人資料", + "edited": "已編輯", + "editing-message": "編輯訊息", + "empty-activity-center": "您的聊天通知會出現在此", + "empty-chat-description": "聊天室中沒有任何訊息", + "empty-chat-description-community": "在過去{{quiet-hours}}中沒有新的留言。", + "empty-chat-description-one-to-one": "您在此發送的所有訊息都是經過加密的,只有您和", + "empty-chat-description-public": "過去{{quiet-hours}}中,這裡沒有新留言。開始對話或", + "empty-chat-description-public-share-this": "分享此對話。", + "empty-keycard-required": "需要空白的金鑰卡", + "empty-pending-invitations-descr": "透過邀請連結申請加入群組的人員將顯示在此", + "empty-tab": "空白分頁", + "enable": "啟用", + "enable-all": "全部啟用", + "enable-link-previews": "啟用聊天中的連結預覽?", + "encrypt-with-password": "用密碼加密", + "ens-10-SNT": "10 SNT", + "ens-add-username": "新增用戶名稱", + "ens-agree-to": "同意", + "ens-chat-settings": "聊天設定", + "ens-custom-domain": "自訂網域", + "ens-custom-username-hints": "輸入整個用戶名,包括自訂網域,如username.domain.eth", + "ens-custom-username-taken": "用戶名稱不屬於您:(", + "ens-deposit": "存款", + "ens-dismiss-message": "點選此處關閉", + "ens-displayed-with": "您的訊息透過", + "ens-get-name": "獲取專屬用戶名稱", + "ens-got-it": "好的,我知道了", + "ens-locked": "用戶名已鎖定。您必須等到{{date}}才能將其釋放", + "ens-name-content": "您可以使用乙太坊名稱服務(Ethereum Name Service, ENS) 註冊自訂的聊天別名。ENS名稱是分散式的用戶名。", + "ens-name-not-found": "無法解析ENS名稱", + "ens-name-title": "ENS名稱", + "ens-network-restriction": "僅在主網上可用", + "ens-no-usernames": "您沒有任何用戶名", + "ens-powered-by": "由Ethereum Name Services提供", + "ens-primary-username": "主要使用者名稱", + "ens-register": "註冊", + "ens-registration-failed": "要註冊用戶名稱,請重試。", + "ens-registration-failed-title": "交易失敗", + "ens-registration-failure": "註冊失敗", + "ens-registration-in-progress": "正在註冊...", + "ens-release-username": "釋出用戶名稱", + "ens-remove-hints": "刪除會將用戶名稱從您的金鑰中分離。", + "ens-remove-username": "刪除用戶名稱", + "ens-saved": "現在已與您的聊天金鑰連結,可以在\"Status\"中使用。", + "ens-saved-title": "用戶名已新增", + "ens-show-username": "在聊天中顯示我的ENS用戶名", + "ens-terms-header": "名稱註冊條款", + "ens-terms-point-1": "資金存入後,您該筆SNT將被鎖定一整年,無法被花費。", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e(ENS註冊表)", + "ens-terms-point-2": "一年後,您可以釋放名稱並取回押金,或者不採取任何措施來保留名稱。", + "ens-terms-point-3": "如果合約條款發生更改(例如\"Status\"變更了合約),則用戶有權釋放用戶名,而不管其持有時間為何。", + "ens-terms-point-4": "合約控制者無法取用您的存款。他們只能將存款返回發送位址。", + "ens-terms-point-5": "您的地址將與您的ENS名稱產生公開連結。", + "ens-terms-point-6": "用戶名稱將成為stateofus.eth的子網域節點,並接受ENS智慧合約條款的約束。", + "ens-terms-point-7": "您授權合約代表您同意轉讓SNT。僅當您核准交易以授權轉移時,才會出現此提示。", + "ens-terms-point-8": "這些條款由以下地址的智慧合約邏輯保證:", + "ens-terms-point-9": "{{address}} (Status UsernameRegistrar)", + "ens-terms-registration": "名稱註冊條款。", + "ens-test-message": "嘿", + "ens-transaction-pending": "交易待處理...", + "ens-understand": "我瞭解我的錢包地址將公開連結到我的用戶名。", + "ens-username": "ENS用戶名稱", + "ens-username-already-added": "用戶名稱已經與您的聊天密鑰連結,可以在\"Status\"中使用。", + "ens-username-available": "✓用戶名稱可以使用!", + "ens-username-connected": "該用戶名由您擁有,並與您的聊天金鑰連結。", + "ens-username-connected-continue": "繼續以設定“在聊天中顯示我的ENS用戶名”。", + "ens-username-connected-with-different-key": "繼續進行將產生一筆交易來將用戶名稱與您當前的聊天金鑰連結。", + "ens-username-connection-confirmation": "交易完成後, {{username}}將被連結。", + "ens-username-hints": "至少4個字元。僅拉丁字母,數字和小寫字母。", + "ens-username-invalid": "只能使用字母和數字。", + "ens-username-invalid-name-warning": "您的一個 ens 域名在註冊過程中被視為無效狀態。請勿使用該名稱進行錢包交易,並通過 support@status.im 聯繫我們以取得協助", + "ens-username-owned": "✓用戶名歸您所有。", + "ens-username-owned-continue": "繼續以將此用戶名稱與您的聊天金鑰連結。", + "ens-username-registration-confirmation": "太好了!交易完成後,您將擁有{{username}} 。", + "ens-username-registration-invalid": "警告! 該域名在註冊過程中被視為無效。請勿使用該名稱進行錢包交易,並通過 support@status.im 聯繫我們以取得協助", + "ens-username-taken": "用戶名稱已被使用:(", + "ens-username-you-can-follow-progress": "您可以在錢包的“交易歷史記錄”部分中追蹤進度。", + "ens-usernames": "ENS用戶名稱", + "ens-usernames-details": "註冊專屬用戶名,以便其他用戶輕鬆辨認", + "ens-want-custom-domain": "我在另一個網域上擁有註冊名稱", + "ens-want-domain": "我想要一個stateofus.eth網域", + "ens-welcome-hints": "ENS名稱將那些瘋狂的長串地址轉換為唯一的用戶名。", + "ens-welcome-point-customize": "ENS名稱可以替換聊天中的隨機3字名稱,改為 @yourname 而不是{{name}} 。", + "ens-welcome-point-customize-title": "自定義您的聊天名稱", + "ens-welcome-point-receive": "其他人可以在聊天中透過一個簡單的操作匯款給您。", + "ens-welcome-point-receive-title": "在聊天中接收交易", + "ens-welcome-point-register": "註冊一次就可以永久保留該用戶名。1年後,您可以解綁用戶名,並贖回您的SNT。", + "ens-welcome-point-register-title": "用10 SNT進行註冊", + "ens-welcome-point-simplify": "您可以使用易於共用的ENS名稱而不是十六進制雜湊(0x ...)來接收資金。…", + "ens-welcome-point-simplify-title": "簡化您的ETH地址", + "ens-welcome-point-verify": "您可以在接下來的步驟中驗證並新增您擁有的任何用戶名。", + "ens-welcome-point-verify-title": "已擁有用戶名?", + "ens-your-username": "您的用戶名稱", + "ens-your-usernames": "您的用戶名稱", + "ens-your-your-name": "您的ENS名稱", + "enter-12-words": "請輸入您種子詞組的12個單詞,並以單空格分開", + "enter-a-private-key": "輸入私鑰", + "enter-a-seed-phrase": "輸入種子詞組", + "enter-address": "輸入地址", + "enter-contact-code": "輸入ENS用戶名或聊天密鑰", + "enter-pair-code": "輸入您的配對碼", + "enter-pair-code-description": "配對碼可從已完成配對的Status用戶端設定", + "enter-password": "輸入密碼", + "enter-password-migration-prompt": "輸入您的密碼以移動好友名單、聊天和您的密鑰設定", + "enter-pin": "輸入六位數密碼", + "enter-puk-code": "輸入PUK碼", + "enter-puk-code-description": "六位數密碼已被鎖定, \n請輸入PUK碼以解鎖。", + "enter-recipient-address-or-username": "輸入收件人的地址或用戶名", + "enter-seed-phrase": "輸入種子詞組", + "enter-url": "輸入網址", + "enter-user-pk": "輸入用戶公鑰", + "enter-watch-account-address": "掃描QR碼或輸入要監控的地址", + "enter-word": "輸入密碼", + "enter-your-code": "輸入您的6位數密碼", + "enter-your-password": "輸入密碼", + "error": "錯誤", + "error-unable-to-get-balance": "無法取得帳戶餘額", + "error-unable-to-get-prices": "貨幣換算錯誤。請刷新頁面後重試。", + "error-unable-to-get-token-balance": "無法獲得代幣餘額", + "errors": "錯誤", + "eth": "ETH", + "ethereum-address": "以太坊地址", + "ethereum-node-started-incorrectly-description": "乙太坊節點以錯誤的配置啟動,應用程式即將停止。\n已配置的網路ID = {{network-id}} ,實際= {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "乙太坊節點啟動錯誤", + "etherscan-lookup": "至Etherscan上查詢", + "everyone": "所有人", + "expand-all": "展開全部", + "export-account": "匯出帳號", + "export-key": "匯出私鑰", + "external-link": "外部链接", + "external-storage-denied": "存取外部儲存空間被拒絕", + "failed": "失敗", + "faq": "常見問題", + "fast": "快速", + "favourite": "書籤", + "favourite-description": "您已加入書籤的網站將出現在這裡", + "favourites": "收藏夾", + "favourites-empty": "添加到收藏夾的地址將顯示在此處", + "featured": "精选", + "fee-cap": "費用上限", + "fee-explanation": "交易的最高價格。如果區塊基本費用超過此值,它將會延遲到下一個價格較低的區塊中處理。", + "fee-options": "建議的費用選項", + "fetch-community": "徵詢社群", + "fetch-messages": "↓取得訊息", + "fetch-timeline": "↓獲取", + "fetching-community": "正在徵詢社群...", + "find": "搜尋", + "finish": "完成", + "finishing-card-setup": "設定即將完成", + "fleet": "機群(Fleet)", + "fleet-settings": "機群設定", + "follow": "追蹤", + "follow-your-interests": "進入公共聊天並結識新朋友", + "free": "↓免費", + "from": "從", + "gas-amount-limit": "Gas數量上限", + "gas-limit": "Gas上限", + "gas-price": "Gas價格", + "gas-used": "Gas用量", + "gated": " 有门槛", + "generate-a-key": "產生金鑰", + "generate-a-new-account": "新增帳號", + "generate-a-new-key": "產生新的金鑰", + "generate-account": "產生金鑰", + "generate-an-account": "產生一個帳號", + "generate-new-key": "產生金鑰", + "generating-codes-for-pairing": ">將軟體程式下載到卡片上\n >產生解鎖碼和配對碼", + "generating-keys": "產生金鑰中...", + "generating-mnemonic": "產生種子詞組", + "get-a-keycard": "取得金鑰卡", + "get-started": "開始吧", + "get-status-at": "前往https:\/\/status.im取得Status", + "get-stickers": "取得貼圖", + "gif": "GIF", + "give-a-short-description": "簡短說明", + "give-a-short-description-community": "請簡短描述", + "give-permissions-camera": "給予使用相機的權限", + "glossary": "詞彙表", + "go-to-settings": "前往設定...", + "got-it": "知道了", + "grant-face-id-permissions": "要授予所需的Face ID權限,請進入系統設定,並確認選擇了Status > Face ID", + "group-chat": "群組聊天", + "group-chat-admin": "管理員", + "group-chat-admin-added": "** {{member}} **已成為管理員", + "group-chat-all-contacts-invited": "所有好友都已經在群組中", + "group-chat-created": "** {{member}} **新建了群組** {{name}} **", + "group-chat-decline-invitation": "拒絕邀請", + "group-chat-member-added": "** {{member}} **已受邀", + "group-chat-member-joined": "** {{member}} **已加入該群組", + "group-chat-member-removed": "** {{member}} **離開群組", + "group-chat-members-count": "{{selected}} \/ {{max}}位成員", + "group-chat-name-changed": "** {{member}} **將群組名稱更改為** {{name}} **", + "group-chat-no-contacts": "您還沒有任何好友。 \n邀請您的朋友開始聊天", + "group-details": "群信息", + "group-info": "群組資訊", + "group-invite": "群組邀請", + "group-invite-link": "群組邀請連結", + "group-membership-request": "請求加入群組成員", + "groups": "群组", + "gwei": "Gwei", + "has-permissions": "請求地址存取授權", + "hash": "雜湊", + "help": "幫助", + "help-capitalized": "幫助", + "help-center": "幫助中心", + "help-improve-status": "幫助改善Status", + "hide": "隱藏", + "hide-content-when-switching-apps": "禁止螢幕截圖", + "hide-content-when-switching-apps-ios": "隱藏預覽", + "history": "歷史紀錄", + "history-nodes": "Status節點", + "hold-card": "請將卡片保持在手機感應處", + "home": "首頁", + "hooks": "Hooks", + "how-it-works": "如何運作", + "http-gateway-error": "糟糕,請求失敗!", + "identifier": "識別碼", + "identity-verification": "身份验证", + "image": "圖片", + "image-remove-current": "刪除當前照片", + "image-source-gallery": "從圖庫中選擇", + "image-source-make-photo": "拍攝", + "image-source-title": "編輯圖片", + "import": "匯入", + "import-community": "匯入社群", + "import-community-title": "匯入社群", + "in-contacts": "好友名單", + "include": "包括", + "incoming": "等待中", + "incoming-transaction": "等待中交易", + "incorrect-code": [ + "str", + "抱歉,密碼不正確,請重新輸入" + ], + "increase-gas": "增加Gas", + "initialization": "初始化", + "install": "↓安裝", + "insufficient-balance-to-cover-fee": "餘額不足以支付交易費用", + "intro-message1": "歡迎來到Status! \n點選此訊息以設定密碼並開始使用。", + "intro-privacy-policy-note1": "\"Status\"不會收集您的個人數據或從中獲利。按下繼續,即表示您同意", + "intro-privacy-policy-note2": "隱私權政策", + "intro-text": "Status是您前進分散式網路的入口", + "intro-text1": "透過點對點加密網路進行聊天,在該網路中,郵件不會受到審查或駭客入侵", + "intro-text2": "在世界任何地方發送和接收數字資產-無需銀行帳戶", + "intro-text3": "探索遊戲,交易所和社群網路,只有您掌握自己的數據", + "intro-title1": "真正的隱密交流", + "intro-title2": "安全的加密錢包", + "intro-title3": "去中心化應用", + "intro-wizard-text1": "此組金鑰能控制您的帳戶。您的金鑰只存放在手機中,因此只有您可以使用它們", + "intro-wizard-text2": "此金鑰是聊天使用。它帶有一個無法更改的名稱。", + "intro-wizard-text3": "如果您擁有金鑰卡,請將金鑰儲存在此處以增強安全性。", + "intro-wizard-text4": "保護並加密您的金鑰", + "intro-wizard-text6": "\"Status\"將通知您更新訊息。您稍後可以在設定中的通知選項進行變更", + "intro-wizard-title-alt4": "建立密碼", + "intro-wizard-title-alt5": "確認您的密碼", + "intro-wizard-title1": "獲取您的金鑰", + "intro-wizard-title2": "選擇一個聊天名稱", + "intro-wizard-title3": "選擇金鑰保存", + "intro-wizard-title4": "創建一個六位數的密碼", + "intro-wizard-title5": "確認密碼", + "intro-wizard-title6": "啟用通知", + "introduce-yourself": "請簡單地介紹您自己", + "invalid-address-qr-code": "掃描的QR碼不包含有效位址", + "invalid-format": "格式錯誤\n必須為{{format}}", + "invalid-key-confirm": "執行", + "invalid-key-content": "帳戶資料庫無法加密,因為檔案已損壞。您的資產與聊天金鑰仍然安全。其他資料。像是對話紀錄與好友名單,將無法復原。使用“ {{erase-multiaccounts-data-button-text}} ”按鈕,將會刪除這些其他資料,並讓您重新存取資產與傳送訊息。", + "invalid-number": "無效號碼", + "invalid-pairing-password": "配對密碼無效", + "invalid-public-chat-topic": "無效的公開聊天主題", + "invalid-range": "格式無效,必須介於{{min}}和{{max}}", + "invalid-username-or-key": "無效的用戶名或聊天密鑰", + "invite": "邀请", + "invite-button": "邀請", + "invite-chat-accept": "接受", + "invite-chat-accept-join": "接受並加入", + "invite-chat-intro": "您推薦的一位朋友加入了Status。這裡是一些加密貨幣,可以幫助您入門!用它來註冊一個ENS名稱或購買貼紙包", + "invite-chat-name": "朋友推薦", + "invite-chat-pending": "等待中", + "invite-chat-rule": "接受將讓您的朋友也獲得推薦獎勵", + "invite-chat-starter-pack": "入門包", + "invite-contacts": "邀请好友加入社区", + "invite-friends": "邀請朋友", + "invite-friends-to-status": "邀請朋友", + "invite-instruction-fifth": "您隨時都可以來兌換推薦獎勵。", + "invite-instruction-first": "向您的朋友發送一個專屬的邀請,用來下載並加入Status", + "invite-instruction-fourth": "您的朋友取得入門包時,您可以獲得推薦獎勵", + "invite-instruction-second": "您的朋友下載了Status並建立帳戶(在Android上)", + "invite-instruction-third": "開始與您的朋友聊天,讓他們可以確認您的推薦", + "invite-people": "邀請其他人", + "invite-privacy-policy-public": "您已透過推薦連結安裝Status。現在加入此聊天頻道,您可以取得自己的推薦碼並同意", + "invite-privacy-policy1": "繼續,表示您同意參加推薦獎勵", + "invite-privacy-policy2": "條款及細則", + "invite-public-chat-home": "推薦邀請", + "invite-public-chat-intro": "這裡有一些可用的加密貨幣能幫助您更快上手!用它註冊一個ENS名稱或購買貼圖組合", + "invite-receive-account": "獲得推薦獎勵的賬戶", + "invite-reward": "為您邀請的每個朋友取得加密貨幣!", + "invite-reward-friend": "朋友:", + "invite-reward-friend-description": "您的朋友將收到包含一些{{reward}}的入門包,以開始使用", + "invite-reward-friend-name": "入門包", + "invite-reward-you": "您:", + "invite-reward-you-description": "邀請朋友並獲得{{reward}}推薦獎勵。可用它來取得貼圖、ENS名稱並嘗試dapps", + "invite-reward-you-name": "推薦獎勵", + "invite-select-account": "選擇一個帳戶以獲得推薦獎勵", + "invite-warning": "此推廣活動僅適用於非美國居民的Android設備用戶。好友需要在7天內確認推薦。", + "invited": "邀請", + "join": "加入", + "join-a-community": "或加入社群", + "join-group-chat": "加入群組", + "join-group-chat-description": "{{username}}邀請您加入群組{{group-name}}", + "join-me": "嗨,快來加我為Status好友:{{url}}", + "join-new-private-chat": "開始新的個人聊天", + "join-new-public-chat": "加入公共聊天", + "join-open-community": "加入社区", + "joined": "已加入", + "joined-group-chat-description": "您已透過{{username}}邀請加入{{group-name}}", + "key": "金鑰", + "key-managment": "密鑰管理", + "key-on-device": "私鑰已保存在此裝置上", + "keycard": "金鑰卡", + "keycard-access-reset": "金鑰卡的訪問權限被重置", + "keycard-applet-install-instructions": "要安裝小工具,請按照https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation上的說明進行操作", + "keycard-awaiting-description": "嘗試四處移動卡以在設備上找到NFC讀卡器", + "keycard-awaiting-title": "尋找中...", + "keycard-backup": "建立一個備份金鑰卡", + "keycard-backup-success-body": "備份卡建立成功。現在,您可以像原本卡片一樣在帳戶中使用它。", + "keycard-backup-success-title": "備份成功", + "keycard-blocked": "金鑰卡已被鎖定, \n您需要重設卡片才能繼續使用。", + "keycard-can-use-with-new-passcode": "您可以將此卡與新密碼一起使用", + "keycard-cancel-setup-text": "這將取消金鑰卡設定。強烈建議您完成設定以使用金鑰卡。您真的要取消嗎?", + "keycard-cancel-setup-title": "危險操作", + "keycard-connected-description": "嘗試保持卡靜止", + "keycard-connected-title": "已連結", + "keycard-desc": "擁有金鑰卡?將金鑰儲存在上面;進行交易時您將需要它", + "keycard-dont-ask-card": "不使用卡片進行登入", + "keycard-enter-new-passcode": "輸入新密碼{{step}}\/2", + "keycard-error-description": "再次連結卡以繼續", + "keycard-error-title": "連結丟失", + "keycard-factory-reset": "將卡片恢復為初始設定", + "keycard-factory-reset-text": "執行此操作將刪除卡上儲存的所有記憶詞組。請確保您已備份了與此鑰匙卡一起使用的助記詞。", + "keycard-factory-reset-title": "您確定要恢復至初始設定?", + "keycard-free-pairing-slots": "金鑰卡有{{n}}自由配對插槽", + "keycard-has-multiaccount-on-it": "卡片已滿。每張卡只可容納一個主金鑰配對", + "keycard-init-description": "將卡放在手機背面即可繼續", + "keycard-init-title": "尋找卡片...", + "keycard-is-blocked-details": "您不能再使用此卡存取或為該帳戶簽署。因為密碼和PUK嘗試失敗的次數過多。", + "keycard-is-blocked-instructions": "要存取您的帳戶,您需要將卡恢復初始設定。請點擊下方按鈕開始執行,您將需要使用到您的助記詞。", + "keycard-is-blocked-title": "金鑰卡已被封鎖", + "keycard-is-frozen-details": "為保護您的資產,您的卡已被凍結。請重置您的卡將其解凍回復後,才能夠發送交易。您需要使用PUK或助記詞來執行此操作。", + "keycard-is-frozen-factory-reset": "使用助記詞重設", + "keycard-is-frozen-reset": "使用PUK重置", + "keycard-is-frozen-title": "金鑰卡被凍結", + "keycard-onboarding-finishing-header": "即將完成", + "keycard-onboarding-intro-header": "將金鑰儲存到金鑰卡上", + "keycard-onboarding-intro-text": "做好準備,這可能需要幾分鐘,但確保帳戶安全很重要", + "keycard-onboarding-mnemonic-text": "您還需要一張紙和一支筆來寫下您的助記詞。", + "keycard-onboarding-pairing-header": "卡片配對中...", + "keycard-onboarding-pin-text": "您需要建立一個6位數的密碼,用於保護金鑰卡的存取權限。", + "keycard-onboarding-preparing-header": "正在準備卡片...", + "keycard-onboarding-puk-code-header": "寫下代碼並保存在安全之處", + "keycard-onboarding-recovery-phrase-description": "您需要此種子詞組來找回金鑰。請寫下來,存放在安全處,離線並與該設備分開。", + "keycard-onboarding-recovery-phrase-header": "備份種子詞組", + "keycard-onboarding-recovery-phrase-text": "最高機密。這是用於生成金鑰的神奇種子。", + "keycard-onboarding-start-header": "要繼續操作,\n請將卡保持在手機感應處", + "keycard-onboarding-start-step1": "創建密碼", + "keycard-onboarding-start-step1-text": "大約1分鐘。創建一個六位數的密碼來加密您的金鑰", + "keycard-onboarding-start-step2": "寫下PUK和配對代碼", + "keycard-onboarding-start-step2-text": "大約要1分鐘。您將需要一張紙和一支鉛筆", + "keycard-onboarding-start-step3": "備份種子詞組", + "keycard-onboarding-start-step3-text": "大約要1分鐘,您還需要準備一張紙和一支鉛筆", + "keycard-onboarding-start-text": "請保持卡片與手機能感應,\n在安裝過程中。設定大約需要4分鐘", + "keycard-processing-description": "嘗試保持卡靜止", + "keycard-processing-title": "處理中...", + "keycard-recover": "卡片遺失或被凍結?", + "keycard-recover-text": "如果您有助記詞,就能夠建立與此帳戶連結的新金鑰卡。您可以使用全新的金鑰卡,也可以在凍結的金鑰卡上進行重置。", + "keycard-recover-title": "為此帳戶建立一張新金鑰卡?", + "keycard-recovery-intro-button-text": "開始恢復", + "keycard-recovery-intro-header": "使用金鑰卡復原", + "keycard-recovery-intro-text": "如果您以前使用金鑰卡生成過金鑰,並想在此設備上使用這些金鑰", + "keycard-recovery-no-key-header": "無法恢復", + "keycard-recovery-no-key-text": "您的金鑰卡上沒有任何資料。想使用它,請生成一個新金鑰,並選擇您的金鑰卡來存放金鑰", + "keycard-recovery-phrase-confirm-header": "確認種子詞組", + "keycard-recovery-phrase-confirmation-text": "您將無法挽回!如果您遺失存取裝置,例如您的金鑰卡,您只能透過種子詞組來存取帳戶。切勿讓他人知道您的種子詞組,立刻寫下種子詞組,並存放在安全之處。", + "keycard-recovery-phrase-confirmation-title": "把種子詞組寫下來了嗎?", + "keycard-recovery-success-header": "您的金鑰\n已經成功恢復", + "keycard-redeem-title": "兌換至", + "keycard-redeem-tx": "兌換資產", + "keycard-redeem-tx-desc": "靠近卡片以完成簽署和接收資產", + "keycard-reset-passcode": "重置通行密碼", + "keycard-success-description": "您現在可以取出卡了", + "keycard-success-title": "成功", + "keycard-unauthorized-operation": "您無權執行此操作。 \n請點擊有效的卡,然後重試。", + "keycard-upsell-subtitle": "增強的安全性和便利性", + "kicked": "已踢", + "language": "語言Lang", + "last-backup-performed": "上次建立備份:", + "last-transaction": "最後一筆交易", + "learn-more": "瞭解更多", + "learn-more-about-keycard": "瞭解有關金鑰卡的更多訊息", + "leave": "離開", + "leave-chat": "退出聊天", + "leave-chat-confirmation": "聊天記錄將從您的設備中刪除。重新加入後,您將無法取回先前的歷史記錄。", + "leave-community": "退出社群", + "leave-community-message": "很遗憾你的离开,但请记住,你可以随时回来!", + "leave-community?": "离开社区?", + "leave-confirmation": "退出{{chat-name}}", + "leave-group": "退出群組", + "left": "剩下", + "les-ulc": "LES\/ULC", + "lets-go": "出發吧", + "lifestyle": "生活", + "light": "白天", + "limit": "限額", + "link-to-community": "链接到社区", + "linked-on": "已於{{date}}鏈結", + "load-messages-before": "在{{date}}之前", + "load-more-messages": "↓取得更多訊息", + "load-more-timeline": "↓取得更多", + "loading": "載入中...", + "local-notifications": "本地通知", + "local-notifications-subtitle": "啟用後端服務", + "lock-app-with": "鎖定應用", + "log-level": "日誌級別", + "log-level-settings": "紀錄日誌設定", + "logging": "登入中", + "logging-enabled": "啟用登入?", + "login-pin-description": "輸入您的六位數密碼以解鎖您的密鑰", + "logout": "登出", + "logout-app-content": "該帳戶即將登出。再次解鎖時,將使用前次選定的網路", + "logout-are-you-sure": "您確定要登出?", + "logout-key-management": "您需要先登出才能進行密鑰管理。", + "logout-title": "登出?", + "looking-for-cards": "尋找卡片...", + "lost-connection": "連線中斷", + "low-tip": "手續費用太低", + "lower-than-average-tip": "低於平均手續費用", + "mail-should-be-configured": "郵件客戶端應配置", + "mailserver-address": "Status節點地址", + "mailserver-automatic": "自動選擇", + "mailserver-automatic-switch-explanation": "選擇最快的可用Status節點", + "mailserver-connection-error": "無法連結到Status節點", + "mailserver-content": "\"Status\"網路中路由和儲存訊息的節點,最多30天。", + "mailserver-details": "Status節點詳細資訊", + "mailserver-error-content": "無法訪問您選擇的Status節點。", + "mailserver-error-title": "連結到Status節點時錯誤", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "選擇另一個Status節點", + "mailserver-reconnect": "無法連結到Status節點。點選即可重試", + "mailserver-request-error-content": "Status節點返回了以下錯誤: {{error}}", + "mailserver-request-error-status": "提取歷史記錄時發生錯誤,請查看日誌以獲取詳細訊息", + "mailserver-request-error-title": "Status節點請求錯誤", + "mailserver-request-retry": "重試", + "mailserver-retry": "重試", + "mailserver-title": "Status節點", + "main-account": "主账户", + "main-currency": "主要貨幣", + "main-networks": "主網路", + "main-wallet": "主錢包", + "mainnet-network": "主網路", + "make-admin": "設為管理員", + "manage-connections": "從應用程式連結內管理連線", + "manage-keys-and-storage": "管理密鑰和儲存", + "manage-members": "管理成员", + "mark-all-read": "將所有內容標記為已讀", + "mark-as-read": "标记为已读", + "mark-untrustworthy": "标记为不可信", + "master-account": "主控賬戶", + "max-fee": "最高交易費用", + "max-priority-fee": "最高手續費用", + "maximum-fee": "最高費用上限", + "maximum-fee-desc": "交易的最高價格。如果區塊處理費用超過此值,它將會延遲至稍後價格較低的區塊中處理。", + "maybe-later": "稍後再說", + "member-ban": "封鎖成員", + "member-kick": "強制退出成員", + "members": { + "other": " {{count}} 位成員" + }, + "members-active": { + "other": "{{count}} 位成員" + }, + "members-active-none": "沒有成員", + "members-count": "{{count}}名成員", + "members-label": "成員", + "members-limit-reached": "達到會員人數上限", + "members-title": "成員", + "membership": "成员资格", + "membership-approval": "需要取得同意", + "membership-approval-description": "您的社群可以自由加入,但是新成員必須先取得社群創建者的同意", + "membership-button": "入會要求", + "membership-declined": "會員申請被拒絕", + "membership-description": "會員資格需要經過群組管理員同意", + "membership-ens": "需要具備ENS用戶名", + "membership-ens-description": "您的社群需要擁有ENS用戶名才能加入", + "membership-free": "沒有要求", + "membership-free-description": "您的社群是任何人都能自由加入", + "membership-invite": "需要其他成員的邀請", + "membership-invite-description": "您的社群只能透過現有社群成員邀請才能加入", + "membership-none": "沒有", + "membership-none-placeholder": "您可以要求新成員滿足某些條件才能加入。可以隨時更改", + "membership-request-pending": "會員申請處理中", + "membership-requests": "會員申請", + "membership-title": "入會要求", + "mentions": "提及", + "message": "留言", + "message-deleted": "消息已删除", + "message-deleted-for-you": "为您删除的消息", + "message-not-sent": "留言未傳送", + "message-options-cancel": "取消", + "message-reply": "回覆", + "messages": "留言", + "messages-from-contacts-only-subtitle": "只有您加入好友名單的成員,才能與您開啟新聊天,或邀請您加入群組", + "messages-gap-warning": "某些消息可能丢失", + "might-break": "可能導致某些ÐApps失效", + "migration-successful": "遷移成功", + "migration-successful-text": "帳號已成功遷移到金鑰卡", + "migrations-failed-content": "{{message}} \n架構版本:初始{{initial-version}} ,當前{{current-version}} ,前次{{last-version}} \n\n資料庫發生錯誤,您的資產與聊天金鑰仍然安全,但其他數據,像是您的對話紀錄與好友名單,將無法回復。\n“{{erase-multiaccounts-data-button-text}}”按鈕,將會刪除這些數據,讓您能夠重新存取帳戶資產和傳送訊息。", + "miners-higher-fee": "如果您支付更高的費用,礦工可能會更快處理您的交易。", + "minimum-received": "最低收到", + "mobile-network-ask-me": "使用行動網路時詢問", + "mobile-network-continue-syncing": "同步中", + "mobile-network-continue-syncing-details": "您稍後可以在設定中進行更改", + "mobile-network-go-to-settings": "前往設定", + "mobile-network-settings": "行動數據", + "mobile-network-sheet-configure": "您可以更改其他同步選項,請至", + "mobile-network-sheet-offline": "沒有Wi-fi,無法更新訊息。", + "mobile-network-sheet-offline-details": "使用行動網路同步已關閉", + "mobile-network-sheet-remember-choice": "記住我的選擇", + "mobile-network-sheet-settings": "設定", + "mobile-network-start-syncing": "開始同步", + "mobile-network-stop-syncing": "停止同步", + "mobile-network-stop-syncing-details": "僅透過Wi-Fi進行同步", + "mobile-network-use-mobile": "使用行動數據", + "mobile-network-use-mobile-data": "進行聊天和錢包同步時,Status會佔用相當的數據傳輸量。", + "mobile-network-use-wifi": "僅限Wi-Fi", + "mobile-syncing-sheet-details": "進行聊天和錢包同步時,Status會佔用相當的數據傳輸量。", + "mobile-syncing-sheet-title": "使用行動數據進行同步?", + "more": "更多", + "move-and-reset": "移動並重置", + "move-keystore-file": "移動密鑰檔案", + "move-keystore-file-to-keycard": "要將密鑰檔案移動到金鑰卡?", + "multiaccount-exists-content": "此帳號的密鑰已存在,無法再次新增。如果您已經忘記您的密碼、通行密碼、或是遺失金鑰卡,請移除應用程式,然後重新安裝,並使用您的種子詞組取回密鑰。", + "multiaccount-exists-title": "此帳號的密鑰已存在", + "multiaccounts-recover-enter-phrase-text": "輸入12、15、18、21或24個字詞。 \n用單個空格分隔單詞。", + "multiaccounts-recover-enter-phrase-title": "輸入您的種子詞組", + "music": "音乐", + "mutal-contacts": "互为好友", + "mute": "靜音", + "mute-chat": "靜音聊天", + "mute-community": "静音社区", + "mutual-contact-requests": "好友请求", + "my-accounts": "我的帳戶", + "my-accounts-empty": "您的可用帳戶將顯示在此處", + "my-profile": "我的個人資料", + "my-status": "我的狀態", + "n-photos": "{{count}}照片", + "name": "名稱", + "name-of-token": "代幣名稱", + "name-optional": "名稱(選填)", + "name-your-channel": "請為您的頻道命名", + "name-your-channel-placeholder": "頻道名稱", + "name-your-community": "請為您的社群命名", + "name-your-community-placeholder": "容易記憶的名稱", + "need-help": "需要幫忙?", + "negative": "负的", + "network": "網路", + "network-chain": "網路鏈", + "network-details": "網路詳細資訊", + "network-fee": "網路費用", + "network-id": "網路ID", + "network-info": "網路狀態", + "network-invalid-network-id": "指定的網路ID與RPC網址所對應的網路ID不符", + "network-invalid-status-code": "無效的狀態碼: {{code}}", + "network-invalid-url": "網址無效", + "network-settings": "網路設定", + "never": "從未", + "new": "新", + "new-category": "新類別", + "new-chat": "新聊天", + "new-community-title": "新社群", + "new-contact": "新好友", + "new-contract": "新合約", + "new-favourite": "新的收藏", + "new-group": "新群組", + "new-group-chat": "新的群組聊天", + "new-messages-header": "新消息", + "new-network": "新網路", + "new-password": "新密碼", + "new-pin-description": "輸入新的六位數密碼", + "new-public-group-chat": "加入公共聊天", + "new-puk-description": "輸入新的12位數PUK碼", + "new-status": "新增狀態", + "new-tab": "新分頁", + "new-ui": "新的用户界面", + "next": "下一個", + "nickname": "暱稱", + "nickname-description": "暱稱可以幫助您識別Status中的其他人。 \n只有您才能看到已新增的暱稱", + "no": "不", + "no-collectibles": "沒有可用的收藏品", + "no-contacts": "好友名單空白", + "no-keycard-applet-on-card": "卡上沒有金鑰卡程式", + "no-messages": "無訊息", + "no-pairing-slots-available": "此卡片已經與5台裝置配對,因此無法再與此裝置配對。請使用已配對的裝置,或登入卡片並解除先前的裝置配對", + "no-pinned-messages": "沒有釘選的訊息", + "no-pinned-messages-community-desc": "此频道没有任何置顶的消息。", + "no-pinned-messages-desc": "此聊天没有任何置顶消息。", + "no-result": "沒有結果", + "no-thanks": "不,謝謝", + "no-tokens-found": "找不到代幣", + "node-address": "節點地址", + "node-details": "節點詳情", + "node-info": "節點資訊", + "node-version": "節點版本", + "nodes-disabled": "Status節點已停用", + "non-archival-node": "RPC端點不支援存檔請求。您的本機交易記錄可能不完整。", + "non-contacts": "未知聯絡人", + "nonce": "Nonce", + "none": "沒有", + "normal": "普通", + "not-applicable": "不適用於未簽名的交易", + "not-connected-nodes": "未連結到Status節點", + "not-connected-to-peers": "沒有連結到任何端點", + "not-enough-snt": "SNT不足", + "not-found": "未找到", + "not-keycard-text": "您使用的不是金鑰卡。您需要購買金鑰卡才能使用它", + "not-keycard-title": "不是金鑰卡", + "not-registered": "未註冊", + "notification-settings": "通知設定", + "notifications": "通知", + "notifications-non-contacts": "來自未知聯絡人的通知", + "notifications-preferences": "通知首選項", + "notifications-servers": "通知伺服器", + "notifications-switch": "顯示通知", + "notifications-transactions": "錢包交易", + "notify": "通知", + "now": "現在", + "off": "關", + "off-status-tree": "關閉\"Status\"", + "offline": "離線", + "offline-messaging-use-history-explanation": "啟用Status節點以存取應用程式關閉時傳送的訊息。啟用時,Status節點將獲取您的IP地址。禁用後,您將不會在關閉應用程式時收到訊息,並且往後打開應用程式時也不會看到訊息。", + "offline-messaging-use-history-nodes": "使用Status節點", + "ok": "確定", + "ok-continue": "好,繼續", + "ok-got-it": "好,知道了", + "ok-save-pass": "OK,保存密碼", + "okay": "好的", + "on": "開", + "on-status-tree": "在\"Status\"上", + "once-enabled-share-metadata": "啟用後,聊天中發布的連結可能會與網站共享您的中繼資料", + "one-day": "一天", + "one-month": "一個月", + "one-week": "一週", + "online": "線上", + "open": "打開", + "open-chat": "開啟聊天", + "open-dapp": "啟動ÐApp", + "open-dapp-store": "搜尋ÐApps", + "open-home": "打開...", + "open-in-new-tab": "用新分頁開啟", + "open-membership": "開放會員", + "open-nfc-settings": "打開NFC設定", + "open-on-block-explorer": "在區塊瀏覽器上開啟", + "opened": "已开放", + "opening-buy-crypto": "開啟{{site}} ...", + "optimal": "最佳", + "optional": "選填", + "or": "或", + "outgoing": "外部", + "outgoing-transaction": "外部交易", + "page-camera-request-blocked": "相機權限被拒絕。要啟用相機,請進入手機設定", + "page-would-like-to-use-camera": "想使用你的相機", + "pair": "配對裝置", + "pair-card": "與此裝置配對", + "pair-code": "配對碼", + "pair-code-explanation": "將卡片與不同的設備(最多5個)進行配對,就能使用同一張卡片簽署交易。", + "pair-code-placeholder": "配對碼", + "pair-this-card": "配對這張卡", + "pair-this-device": "其他通知裝置", + "pair-this-device-description": "配對裝置以同步好友名單和聊天", + "paired-devices": "已配對裝置", + "pairing": "配對中", + "pairing-card": "配對卡片", + "pairing-changed": "配對代碼已更改", + "pairing-code-placeholder": "配對代碼...", + "pairing-code_error1": "配對碼不符合", + "pairing-go-to-installation": "進入配對設定", + "pairing-maximum-number-reached-content": "在啟用新裝置之前,請先禁用其中一台。", + "pairing-maximum-number-reached-title": "達到最大裝置數", + "pairing-new-installation-detected-content": "偵測到新裝置。 \n為了正確使用您的裝置,需要在使用之前配對並啟用。 \n請進到設定下的裝置部分,以與您的裝置配對。", + "pairing-new-installation-detected-title": "偵測到新裝置", + "pairing-no-info": "暫無資訊", + "pairing-please-set-a-name": "請為您的裝置設定名稱。", + "passphrase": "密碼詞組", + "password": "密碼", + "password-description": "最少要有6個字元。您的密碼可以保護您的金鑰。您需要它來解鎖Status並進行交易。", + "password-mismatch": "新密碼與確認不一致", + "password-placeholder": "密碼...", + "password-placeholder2": "確認您的密碼", + "password-reset-in-progress": "更改密碼中...", + "password-reset-success": "密碼已重設", + "password-reset-success-message": "您將需要重新登入", + "password_error1": "密碼不符", + "paste": "貼上", + "paste-json": "貼上JSON", + "pay-to-chat": "付費聊天", + "peer-content": "連結到\"Status\"聊天網路的設備。每個用戶可以代表一個或多個端點,具體取決於他們的設備數量。", + "peer-title": "端點", + "peer-to-peer": "點對點", + "peers": "端點", + "pending": "等待中", + "pending-confirmation": "正在確認...", + "pending-invitations": "待處理的會員申請", + "pending-requests": "申請處理中", + "per-gas-price-limit": "每次gas價格限制", + "per-gas-tip-limit": "每次gas手續費用限制", + "perform-backup": "建立備份", + "permissions": "權限", + "phone-e164": "International 1", + "photos": "相片", + "photos-access-error": "要開放相簿的使用權限,請進入系統設定,並在應用程式Status>相簿中進行變更。", + "pin": "釘選", + "pin-changed": "六位數密碼已更改", + "pin-code": "六位數密碼", + "pin-limit-reached": "達到釘選限制數。請先取消釘選上一則訊息。", + "pin-mismatch": "密碼錯誤", + "pin-one-attempt": "一次嘗試", + "pin-one-attempt-blocked-after": "在您的金鑰卡被封鎖之前", + "pin-one-attempt-blocked-before": "小心,您只有", + "pin-one-attempt-frozen-after": "在您的金鑰卡被凍結之前", + "pin-one-attempt-frozen-before": "小心,您只有", + "pin-retries-left": "還剩{{number}}次", + "pin-to-channel": "在频道内置顶消息", + "pin-to-chat": "在聊天中置顶", + "pinned-a-message": "置顶消息", + "pinned-by": "設為釘選", + "pinned-messages": "釘選的訊息", + "pinned-messages-count": { + "other": " {{count}} 則釘選訊息" + }, + "pinned-messages-empty": "釘選的訊息將顯示在此。要釘選訊息,請長按該訊息並確認“釘選”", + "podcasts": "播客", + "positive": "正的", + "powered-by-paraswap": "由 Paraswap 提供", + "preference": "選擇偏好", + "preview-privacy": "預覽隱私模式", + "previewing-may-share-metadata": "這些網站的預覽連結可能會與其所有者共享您的中繼資料", + "price-impact": "價格影響", + "price-impact-desc": "本次交易的價格影響估計。如果當前的區塊處理費用超過此值,您的交易將包含在稍後處理費用較低的區塊中。", + "principles": "原則", + "priority": "優先程度", + "privacy": "隱私", + "privacy-and-security": "隱私權與安全性", + "privacy-photos": "個人資料照片隱私", + "privacy-policy": "隱私權政策", + "privacy-show-to-warning": "已經看過你頭像的人能繼續取得更新", + "private-key": "私鑰", + "private-notifications": "私人通知", + "private-notifications-descr": "Status將通知您更新訊息。您可以稍後在設定中的通知選項進行變更", + "processing": "請稍等", + "product-information": "產品資訊", + "profile": "個人資料", + "profile-deleted-content": "您的個人資料已成功刪除", + "profile-deleted-keycard": "現在您可以在金鑰卡上還原另一個密鑰對", + "profile-deleted-title": "個人資料已刪除", + "profile-details": "個人資料詳細訊息", + "profile-not-found": "找不到個人資料", + "profile-pic-pick": "從圖庫中選擇", + "profile-pic-remove": "移除照片", + "profile-pic-take": "拍攝照片", + "profile-picture-updated": "個人資料圖片已更新", + "public": "公開", + "public-channel": "公共頻道", + "public-chat": "公開的聊天", + "public-chat-description": "加入您感興趣的公開聊天!任何人都可以建立一個新的。", + "public-chats": "公共聊天室", + "public-group-status": "公開", + "public-group-topic": "話題", + "public-key": "公鑰", + "puk-and-pairing-codes-displayed": "顯示PUK和配對碼", + "puk-changed": "12位數PUK已更改", + "puk-code": "PUK碼", + "puk-code-explanation": "如果您忘記了六位數的密碼,或輸入錯誤三次,就需要此密碼來解鎖卡片。", + "puk-mismatch": "錯誤的PUK碼", + "push-failed-transaction": "您的交易失敗", + "push-failed-transaction-body": "{{value}} {{currency}}至{{to}}", + "push-inbound-transaction": "您收到了{{value}} {{currency}}", + "push-inbound-transaction-body": "從{{from}}到{{to}}", + "push-notifications-server-enabled": "伺服器已啟用", + "push-notifications-servers": "推送通知伺服器", + "push-outbound-transaction": "您發送了{{value}} {{currency}}", + "push-outbound-transaction-body": "從{{from}}到{{to}}", + "quiet-days": "{{quiet-days}}天", + "quiet-hours": "{{quiet-hours}}小時", + "re-encrypt-key": "重新加密您的金鑰", + "rearrange-categories": "重新排序類別", + "receive": "接收", + "receive-transaction": "接收交易", + "received": "已接收", + "recent": "最近", + "recent-empty": "最近使用的地址將顯示在此處", + "recent-recipients": "好友名單", + "recently-used-stickers": "最近使用過的貼圖會出現在這裡", + "recipient": "收款人", + "recipient-code": "輸入收款地址", + "recipient-code-placeholder": "0x ...或username.domain.eth", + "recover": "恢復", + "recover-key": "使用既有金鑰", + "recover-keycard-multiaccount-not-supported": "此帳號的密鑰已存在,無法再次新增。如果您已經忘記您的密碼、通行密碼、或是遺失金鑰卡,請移除應用程式,然後重新安裝,並使用您的種子詞組取回密鑰。", + "recover-with-keycard": "使用金鑰卡復原", + "recover-with-seed-phrase": "使用種子詞組恢復", + "recovering-key": "正在訪問金鑰...", + "recovery-confirm-phrase": "確認種子詞組", + "recovery-phrase": "種子詞組", + "recovery-success-text": "您將必須創建新的代碼或密碼來重新加密金鑰", + "recovery-typo-dialog-description": "請注意,您輸入種子詞組的單字與順序,都必須與最初的詞組一致。", + "recovery-typo-dialog-title": "種子詞組正確嗎?", + "redeem-amount": "{{quantity}}待領取的獎勵", + "redeem-now": "立即領取", + "redeem-success": "領取獎勵完成!", + "reduced-tip": "手續費將會減少", + "refresh": "重新整理", + "registered": "註冊", + "reject": "拒絕", + "reject-and-delete": "拒絕並刪除", + "remember-me": "記住賬號", + "remind-me-later": "再讓我看一次", + "remote-notifications": "遠端通知", + "remote-notifications-subtitle": "啟用google推送通知", + "remove": "移除", + "remove-favourite": "刪除書籤", + "remove-from-chat": "從聊天中刪除", + "remove-from-contacts": "從好友名單中刪除", + "remove-from-contacts-text": "即使從好友名單中刪除用戶,您仍無法向他們隱藏已顯示過的錢包地址", + "remove-group": "移除群組", + "remove-network": "移除網路", + "remove-token": "刪除代幣", + "removed": "已移除", + "removed-from-contacts": "从联系人中删除", + "rename": "重命名", + "repeat-pin": "重複新的六位數密碼", + "repeat-puk": "再次確認新的12位數PUK", + "replies": "回复", + "replying-to": "回覆給{{author}}", + "report-bug-email-template": "1. 問題說明\n {{description}}\n \n 2. 操作步驟\n {{steps}}\n\n 3. 請附上可以顯示問題的螢幕截圖", + "request-access": "申請加入", + "request-feature": "要求功能", + "request-membership": "申請會員", + "request-pending": "申請處理中...", + "request-transaction": "請求交易", + "required-field": "必填項目", + "resend-message": "重新傳送", + "reset-card": "卡片重置", + "reset-card-description": "此操作會將卡重置為初始狀態。它將刪除所有卡片資料,包括金鑰。操作將無法回復。", + "reset-database": "重置資料庫", + "reset-database-warning": "刪除聊天、好友名單和設定。當您遺失密碼時才需要進行此步驟", + "reset-database-warning-keycard": "刪除對話紀錄、好友名單和設定。當您遺失密碼時才需要進行此步驟", + "reset-password": "重設密碼", + "restore-defaults": "恢復預設值", + "retry": "重試", + "revoke-access": "解除訪問權限", + "rpc-url": "RPC URL", + "rpc-usage-copy": "複製", + "rpc-usage-filter": "過濾方式", + "rpc-usage-filter-methods": "過濾方式", + "rpc-usage-filtered-total": "第{{filtered-total}} ,共 {{total}}", + "rpc-usage-get-stats": "重新整理", + "rpc-usage-info": "RPC使用情況統計", + "rpc-usage-reset": "重置", + "rpc-usage-total": "共计", + "safe-estimate": "安全估計", + "save": "儲存", + "save-image-library": "将图像保存到库", + "save-password": "保存密碼", + "save-password-unavailable": "設定裝置密碼以儲存密碼", + "save-password-unavailable-android": "無法使用“儲存密碼”:您的設備可能已開啟Root權限,或缺少必要的安全功能。", + "say-hi": "打个招呼", + "scan-qr": "掃描QR碼", + "scan-qr-code": "掃描含有錢包地址的QR碼", + "scan-tokens": "掃描代幣", + "search": "搜尋", + "search-discover-communities": "搜索社区或类别", + "search-no-chat-found": "沒有搜尋結果。您的意思是", + "secret-keys-confirmation-text": "萬一您遺失手機,您將需要此密碼才能使用金鑰卡。", + "secret-keys-confirmation-title": "把密碼寫下來了嗎?", + "security": "安全性", + "see-details": "詳細資訊", + "see-it-again": "再看一遍", + "see-sticker-set": "查看完整的贴纸集", + "see-suggestions": "查看建議", + "seed-key-uid-mismatch": "種子詞組不符合", + "seed-key-uid-mismatch-desc-1": "您輸入的種子詞組與{{multiaccount-name}}不一致", + "seed-key-uid-mismatch-desc-2": "要管理此帳戶的密鑰,請驗證您的種子詞組,然後重試。", + "seed-phrase-content": "從BIP39標準列表中隨機選擇的一組易於閱讀的單詞,用於在其他錢包和設備上恢復或訪問您的以太坊帳戶。在整個加密生態系統中也稱為“助記詞”,“恢復詞”或“錢包備份”。大多數加密應用程式使用相同地標準來生成帳戶。", + "seed-phrase-placeholder": "助記詞", + "seed-phrase-title": "輸入種子詞組", + "select": "選擇", + "select-account": "選擇帳號", + "select-account-dapp": "選擇您希望用於Dapps的帳戶", + "select-account-first": "首先選擇一個帳號", + "select-chat": "選擇聊天以開始發送訊息", + "select-new-location-for-keys": "選擇一個新位置以保存您的私鑰", + "select-token-to-receive": "選擇要接收的代幣", + "select-token-to-swap": "選擇要交換的代幣", + "selected": "已選", + "send": "發送", + "send-contact-request-message": "要开始聊天,您需要成为联系人", + "send-logs": "報告錯誤", + "send-logs-to": "向{{email}}報告錯誤", + "send-message": "發訊息", + "send-push-notifications": "傳送推送通知", + "send-push-notifications-description": "禁用此功能後,收到您訊息的人將不會收到通知", + "send-request": "發送請求", + "send-request-amount": "數目", + "send-request-amount-max-decimals": "小數點後的位數最多為{{asset-decimals}}", + "send-request-unknown-token": "未知代幣-{{asset}}", + "send-sending-to": "致{{recipient-name}}", + "send-transaction": "發送交易", + "sending": "正在發送", + "sent": "已發送", + "sent-at": "發送於", + "server": "伺服器", + "set-a-topic": "新增話題", + "set-currency": "設定默認貨幣", + "set-custom-fee": "設定自訂費用", + "set-dapp-access-permissions": "設定DApp訪問權限", + "set-max": "設至最大", + "settings": "設定", + "share": "分享", + "share-address": "分享地址", + "share-chat": "分享聊天", + "share-community": "分享社区", + "share-contact-code": "分享聊天金鑰", + "share-dapp-text": "在Status上查看這個使用中的ÐApp: {{link}}", + "share-image": "分享图片", + "share-invite-link": "分享邀請連結", + "share-link": "分享連結", + "share-logs": "分享程式紀錄日誌", + "share-my-profile": "分享我的個人檔案", + "share-profile": "分享個人資料", + "share-profile-link": "分享資料連結", + "share-public-chat-text": "在Status應用程式上查看此公開聊天: {{link}}", + "shared": "共用", + "sharing-copied-to-clipboard": "已複製", + "sharing-copy-to-clipboard": "複製", + "sharing-data-desc-1": "資料根據公共規則進行驗證,以確保不會發送敏感資料。請隨時保持懷疑,進行驗證。", + "sharing-data-desc-2": "使用資料是通過 Status 的對等網路進行端到端加密發送", + "sharing-data-desc-3": "使用一次性密鑰而不是您個人的聊天密鑰", + "sharing-data-desc-4": "使用資料無法與您的 IP 地址相關聯", + "sharing-data-desc-5": "所有用戶的總計資料均公開可得", + "sharing-data-desc-6": "資料傳送後會從您的手機中刪除", + "sharing-share": "分享", + "shell-placeholder-subtitle": "打開您的社群、訊息、\n錢包帳戶和瀏覽器視窗", + "shell-placeholder-title": "您的應用程式將在此執行", + "show-less": "顯示較少", + "show-more": "顯示更多", + "show-notifications": "顯示通知", + "show-profile-pictures": "展示個人大頭貼", + "show-profile-pictures-to": "將您的個人頭像顯示給", + "show-qr": "顯示QR碼", + "show-transaction-data": "顯示交易明細", + "sign-and-send": "簽名並傳送", + "sign-anyway": "仍要簽名", + "sign-in": "登入", + "sign-message": "簽署訊息", + "sign-out": "登出", + "sign-request-failed": "無法簽署訊息", + "sign-with": "簽名", + "sign-with-password": "輸入密碼確認", + "sign-you-in": "正在登錄…", + "signing": "簽署", + "signing-a-message": "簽署訊息", + "signing-phrase": "簽署詞組", + "skip": "略過", + "slippage": "滑價", + "slow": "慢", + "something-went-wrong": "發生錯誤", + "soon": "即將", + "sort-communities": "对社区进行排序", + "specify-address": "指定地址", + "specify-name": "指定一個名稱", + "specify-network-id": "指定網路ID", + "specify-rpc-url": "指定一個RPC網址", + "specify-server-public-key": "輸入伺服器公開金鑰", + "specify-symbol": "指定標示", + "start-chat": "開始聊天", + "start-conversation": "開始對話", + "start-group-chat": "開始群組聊天", + "start-new-chat": "開始新聊天", + "starter-pack-coming": "新手組合禮包在此", + "starter-pack-coming-description": "可能需要幾分鐘到幾個小時", + "starter-pack-received": "入門包已收到", + "starter-pack-received-description": "這是一些加密貨幣,可以幫助您入門!用它來獲得貼紙,ENS名稱並嘗試dapps", + "status": "Status", + "status-always-online": "總是在線上", + "status-automatic": "自動", + "status-automatic-subtitle": "自動設定個人狀態", + "status-confirmed": "已確認", + "status-dnd": "請勿打擾", + "status-dnd-subtitle": "靜音所有通知", + "status-hardwallet": "Status硬體錢包", + "status-inactive": "關閉", + "status-inactive-subtitle": "隱藏您的線上狀態", + "status-is-open-source": "Status是開源項目", + "status-keycard": "Status金鑰卡", + "status-mobile-descr": "同步對話時,Status會使用大量數據傳輸。您可以選擇在行動網路上關閉同步", + "status-not-sent-click": "尚未確認,查看其他選項", + "status-not-sent-tap": "尚未確認,查看其他選項", + "status-pending": "等待中", + "status-sent": "已發送", + "status-tx-not-found": "找不到TX", + "status-updates-descr": "狀態更新將顯示在此處。將個人資料添加為聯絡人,以在您的時間軸上接收更新。", + "statuses-descr": "分享您的想法,並更新到您的好友名單中", + "statuses-my-status-descr": "分享您的想法。任何瀏覽您個人資料的使用者,都可以看到您的狀態。而將您添加為聯絡人的使用者,會在時間軸上收到您的更新", + "step-i-of-n": "步驟{{step}}\/{{number}}", + "sticker": "貼圖", + "sticker-market": "貼圖市集", + "storage": "儲存", + "submit": "提交", + "submit-bug": "回報錯誤", + "success": "成功", + "successful-connection": "连接成功", + "suggested-min-tip": "建議最低手續費", + "suggested-price-limit": "建議價格", + "swap": "交換", + "swap-details": "交換詳情", + "switch-to-simple-interface": "切換到簡易界面", + "symbol": "符號", + "sync-all-devices": "同步所有裝置", + "sync-in-progress": "同步中...", + "sync-settings": "同步設定", + "sync-synced": "同步中", + "syncing-devices": "同步中...", + "system": "系統預設", + "tabs": "分頁", + "tag-was-lost": "標籤丟失", + "tap-card-again": "請將卡片再次靠近手機感應處", + "terms-of-service": "使用條款", + "test-networks": "測試網路", + "text-input-disabled": "請稍等", + "thank-you": "感謝您", + "this-device": "這個設備", + "this-device-desc": "您的金鑰將被加密並安全地儲存在設備上", + "this-is-you-signing": "這是您的簽署字詞", + "this-will-take-few-seconds": "這需要幾秒鐘", + "three-days": "三天", + "three-words-description": "這三個字詞證明交易是安全的。", + "three-words-description-2": "在簽署每筆交易之前,您應該看到這些單詞,反之請取消並登出。", + "timeline": "時間軸", + "tip-cap": "費用上限", + "to": "到", + "to-block": "區塊", + "to-enable-biometric": "要啟用{{bio-type-label}} ,您必須在解鎖螢幕上勾選保存密碼", + "to-encrypt-enter-password": "要加密此帳號,請輸入密碼", + "to-see-this-message": "要查看此訊息,", + "token": "代幣", + "token-auto-validate-decimals-error": "地址{{address}}上{{symbol}}代幣的小數位數錯誤-設定為{{expected}}但檢測為{{actual}}", + "token-auto-validate-name-error": "地址{{address}}上{{symbol}}代幣名稱錯誤-設定為{{expected}}但檢測為{{actual}}", + "token-auto-validate-symbol-error": "地址{{address}}上{{symbol}}代幣代碼錯誤-設定為{{expected}}但檢測為{{actual}}", + "token-details": "代幣詳細訊息", + "token-price": "代币价格", + "topic-name-error": "僅能使用小寫字母(a到z)、數字和破折號(-),請勿使用聊天金鑰", + "total-gas": "總交易手續費", + "total-members": "成员总数", + "transaction": "交易", + "transaction-data": "交易明細", + "transaction-declined": "交易被拒絕", + "transaction-description": "將在網路上經過12次確認後完成", + "transaction-details": "交易明細", + "transaction-failed": "交易失敗", + "transaction-fee": "交易費用", + "transaction-history": "交易記錄", + "transaction-request": "交易請求", + "transaction-sent": "交易已發送", + "transaction-signed": "交易已成功簽署", + "transactions": "交易", + "transactions-filter-select-all": "全選", + "transactions-filter-title": "篩選記錄", + "transactions-history": "交易記錄", + "transactions-history-empty": "您的歷史記錄中還沒有交易", + "transactions-history-loading": "正在載入交易記錄。這可能需要一點時間。", + "transactions-load-more": "讀取更多", + "transactions-management-enabled": "交易管理 (alpha)", + "transactions-sign": "確認", + "transfer-ma-unknown-error-desc-1": "您的多帳戶似乎沒有被刪除。但資料庫可能已經重置", + "transfer-ma-unknown-error-desc-2": "請檢查您的帳戶列表,然後重試。如果未列出該帳戶,請選擇使用既有金鑰,並以種子詞組進行恢復", + "transfers-fetching-failure": "傳輸歷史記錄無法更新。請檢查您的網路,然後下拉頁面來重試", + "tribute-required-by-multiaccount": "{{multiaccount-name}}需要SNT才能開始聊天。", + "tribute-state-paid": "付款完成", + "tribute-state-pending": "付款待處理", + "tribute-state-required": "需要提供{{snt-amount}} SNT", + "tribute-to-talk": "聊天收益模式", + "tribute-to-talk-add-friends": "將朋友新增為好友,允許聊天且無需支付費用。", + "tribute-to-talk-are-you-friends": "這是您認識的人嗎?", + "tribute-to-talk-ask-to-be-added": "申請成為好友", + "tribute-to-talk-contact-received-your-tribute": "收到您的付款。您現在可以安全地相互聊天。", + "tribute-to-talk-desc": "通過要求SNT來開啟新聊天,讓您的知名度可以轉換成收益", + "tribute-to-talk-disabled": "關閉Tribute to Talk", + "tribute-to-talk-disabled-note": "現在開始,新使用者可以在不發送SNT的情況下與您聊天。", + "tribute-to-talk-enabled": "您已啟用聊天收益模式。", + "tribute-to-talk-finish-desc": "從現在開始,您將只收到來自好友和付費用戶的聊天訊息", + "tribute-to-talk-learn-more-1": "您的時間和精力是您最寶貴的資產。所以聊天收益模式允許您設定新朋友開始與您聊天所需的SNT數量。", + "tribute-to-talk-learn-more-2": "不在您的好友列表中的人都將被要求付款,並且您可以在他們確認後開始聊天。", + "tribute-to-talk-learn-more-3": "您可以隨時將錢匯回,但是要確保朋友們能與您聯繫,請先將他們新增為好友。", + "tribute-to-talk-paywall-learn-more-1": "時間和精力是我們最寶貴的資產。通過Tribute to Talk,您可以聯繫新朋友以換取SNT付款。", + "tribute-to-talk-paywall-learn-more-2": "要與通過認證的人開始聊天,只需支付所需的SNT,您就會被新增為好友。", + "tribute-to-talk-paywall-learn-more-3": "如果您認識他們,可以自由地在外部應用分享您在\"Status\"的個人資料連結。", + "tribute-to-talk-pending": "尚待確認", + "tribute-to-talk-pending-note": "交易正在網路上等待確認,您可以在交易記錄中查看其狀態", + "tribute-to-talk-removing-note": "關閉聊天收益模式,將使新朋友無需發送SNT即可開始聊天,需要完成交易確認。", + "tribute-to-talk-set-snt-amount": "設定開始新聊天所需的SNT數量", + "tribute-to-talk-signing": "等待簽署交易", + "tribute-to-talk-transaction-failed-note": "交易失敗,您的“Tribute to Talk”設定並未更改", + "tribute-to-talk-tribute-received1": "接收已完成,您和", + "tribute-to-talk-tribute-received2": "現在是好友,可以安全地彼此聊天。", + "tribute-to-talk-you-require-snt": "您需要SNT才能與新朋友開始聊天。", + "try-again": "再試一次", + "try-keeping-the-card-still": "嘗試保持卡靜止", + "turn-nfc-description": "您的設備上禁用了NFC。您可以在設定中啟用它", + "turn-nfc-on": "開啟NFC以繼續", + "two-minutes": "2分鐘", + "tx-fail-description1": "此交易很可能失敗。使用自定網路費需自擔風險。", + "tx-fail-description2": "此交易很可能失敗。請根據自身風險承擔能力設定自訂網路費。", + "type": "類型", + "type-a-message": "訊息", + "ulc-enabled": "啟用ULC", + "unable-to-fetch": "無法取得對話記錄", + "unable-to-read-this-code": "無法讀取此代碼", + "unable-to-send-messages": "無法傳送和接收訊息", + "unblock": "解除封鎖", + "unblock-contact": "取消封鎖此用戶", + "undo": "撤消", + "unknown-status-go-error": "status-go發生未知錯誤", + "unlimited": "無上限", + "unlock": "解鎖", + "unmute": "取消靜音", + "unmute-chat": "取消聊天静音", + "unmute-community": "取消静音社区", + "unpair-card": "卡片配對取消", + "unpair-card-confirmation": "此操作將取消與當前設備的卡配對。需要6位元密碼授權。您要繼續嗎?", + "unpair-keycard": "取消與此手機的金鑰卡配對", + "unpair-keycard-warning": "您的配對代碼\/PUK和PIN維持不變", + "unpaired-keycard-text": "您使用的金鑰卡與此手機不相符", + "unpaired-keycard-title": "看來您的卡已取消配對", + "unpin": "取消釘選", + "unpin-from-channel": "取消频道内置顶消息", + "unpin-from-chat": "从聊天中取消置顶", + "update": "更新", + "update-to-listen-audio": "更新到最新版本,收聽語音訊息!", + "update-to-see-image": "更新到最新版本,欣賞精美圖像!", + "update-to-see-sticker": "更新到最新版本,查看精美貼圖!", + "updates-to-tos": "使用條款更新", + "updates-to-tos-desc": "在繼續之前,請查看使用條款並確認您對於此應用程式的使用方式承擔全部責任。", + "url": "網址", + "usd-currency": "美元", + "use-as-profile-picture": "設為個人頭像", + "use-valid-contact-code": "請輸入或掃描有效的聊天金鑰或用戶名", + "validation-amount-invalid-number": "金額不是有效數字", + "validation-amount-is-too-precise": "金額太精確了。小數點後的位數最多為{{decimals}}", + "verified-community": "✓經過驗證的社群", + "version": "應用程式版本", + "view": "查看", + "view-community-rules": "查看社区规则", + "view-cryptokitties": "在謎戀貓中查看", + "view-cryptostrikers": "在CryptoStrikers中查看", + "view-data": "查看資料", + "view-details": "查看詳情", + "view-etheremon": "在Etheremon中查看", + "view-gitcoin": "在Gitcoin中查看", + "view-members": "查看成员", + "view-on-opensea": "在OpenSea中查看", + "view-pinned-messages": "查看置顶消息", + "view-profile": "查看資料", + "view-public-dashboard": "查看公共統計資料面板", + "view-rules": "查看規則", + "view-signing": "查看簽署詞組", + "view-superrare": "在SuperRare中查看", + "vote-to-feature": "投票推荐此社区", + "waiting-for-wifi": "沒有Wi-fi,無法更新訊息。", + "waiting-for-wifi-change": "設定", + "waiting-to-sign": "正在等待簽署交易...", + "waiting-wi-fi": "正在等待Wi-Fi…", + "waku-bloom-filter-mode": "Waku Bloom過濾器模式", + "wakuv2-change-nodes": "您確定要更改 Wakuv2 節點嗎?", + "wakuv2-node-format": "\/ip4\/{node-ip}\/tcp\/{port}\/p2p\/{id}", + "wakuv2-settings": "Waku v2 設定", + "wallet": "錢包", + "wallet-address": "錢包地址", + "wallet-asset": "資產", + "wallet-assets": "資產", + "wallet-backup-recovery-title": "備份您的種子詞組", + "wallet-choose-recipient": "選擇收款人", + "wallet-collectibles": "收藏", + "wallet-connect": "錢包連結", + "wallet-connect-2.0": "錢包連結2.0", + "wallet-connect-app-connected": "已連結", + "wallet-connect-go-back": "返回您的瀏覽器或dapp", + "wallet-connect-proposal-description": "連結後,將授權{{name}}檢索您的錢包地址並啟用Web3", + "wallet-connect-proposal-title": "請求連結到您的錢包", + "wallet-insufficient-funds": "餘額不足", + "wallet-insufficient-gas": "ETH不足以支付gas", + "wallet-invalid-address": "地址錯誤: \n {{data}}", + "wallet-invalid-address-checksum": "地址錯誤: \n {{data}}", + "wallet-invalid-chain-id": "網路不符: \n {{data}}但目前使用{{chain}}", + "wallet-key-content": "基於乙太坊標準並以0x開頭的64個字元的十六進制位址。向大眾公開,當您想接收資金時,您的帳戶位址會與其他人共用。也稱為“乙太坊位址”或“錢包地址”。", + "wallet-key-title": "帳號地址", + "wallet-manage-accounts": "帳戶管理", + "wallet-manage-app-connections": "管理應用程式連結", + "wallet-manage-assets": "管理資產", + "wallet-request": "請求", + "wallet-send": "發送", + "wallet-send-min-units": "最少21000 units", + "wallet-send-min-wei": "最少1 wei", + "wallet-settings": "錢包設定", + "wallet-total-value": "總值", + "wallet-transaction-total-fee": "總交易費用", + "wants-to-access-profile": "想要訪問您的個人資料", + "warning": "警告", + "warning-message": "抱歉,我們設定了連續發送上限以防止垃圾郵件。請稍後重試", + "warning-sending-to-contract-descr": "您輸入的地址是智能合約,向該地址發送資金可能會導致損失。如要操作DApp功能,請在Status瀏覽器中打開DApp。", + "watch-only": "監看", + "wc-brand-guide": "商標和品牌圖像的使用指引", + "wc-disclaimer": "免責聲明(包括第三方提供商)、保固和法律聲明", + "wc-dispute": "爭議解決條款", + "wc-how-to-use-status-app": "如何使用Status應用程式,並涵蓋隱私和安全", + "wc-new-tos-based-on-principles-prefix": "基於設計原則而更新的使用條款", + "web-view-error": "無法讀取頁面", + "websites": "網站", + "webview-camera-permission-requests": "Webview相機權限請求", + "webview-camera-permission-requests-subtitle": "啟用後,網站和dapp可能會要求使用您的相機", + "welcome-blank-community-message": "您的社群列表將出現在這裡。", + "welcome-blank-message": "您的聊天記錄將顯示在此處。要開始新聊天,請按⊕按鈕", + "welcome-community-blank-message": "您的頻道將顯示在此處。要建立新頻道,請單擊 ⊕ 按鈕並選擇“建立頻道”", + "welcome-community-blank-message-edit-chats": "您的頻道將顯示在此處。要建立新頻道,請返回社群畫面,單擊 ⊕ 按鈕並選擇“建立頻道”", + "welcome-screen-text": "設定錢包,邀請朋友聊天\n並瀏覽流行的dapp!", + "welcome-to-status": "歡迎來到Status!", + "welcome-to-status-description": "設定您的加密錢包,邀請朋友聊天和瀏覽分散式應用程式", + "what-changed": "變動更新內容", + "what-is-shared": "共享的内容", + "whats-on-your-mind": "你想到了些什麼…", + "whats-trending": "查看热点", + "word-count": "字數", + "word-n": "單字#{{number}}", + "word-n-description": "為檢查您是否已正確備份種子詞組,請在上方輸入編號# {{number}}的單字。", + "words-n": { + "other": " {{count}} words " + }, + "write-down-and-store-securely": "寫下代碼\n並存放在安全的位置", + "wrong-address": "地址錯誤", + "wrong-card": "卡片錯誤", + "wrong-card-text": "您使用的卡與您選擇的帳戶金鑰不符。", + "wrong-contract": "合約錯誤", + "wrong-keycard-text": "您使用的金鑰卡與此手機不相符", + "wrong-keycard-title": "您似乎使用\n錯誤的金鑰卡", + "wrong-password": "密碼錯誤", + "wrong-word": "輸入錯誤", + "yes": "是", + "you": "您", + "you-already-have-an-asset": "您已經擁有{{value}}", + "you-are-all-set": "設定完成!", + "you-are-all-set-description": "如果您遺失了手機,您現在可以使用種子詞組來重新存取您的資產與聊天金鑰。", + "you-can-change-account": "您可以根據需要更改帳戶名稱和顏色", + "you-can-choose-preview-websites": "您可以選擇以下哪個網站可以預覽聊天中的敘述和圖片連結", + "you-can-fetch": "您可以取得對話記錄", + "you-dont-have-contacts": "您還沒有任何好友。", + "you-dont-have-contacts-invite-friends": "您還沒有任何好友。\n邀請您的朋友開始聊天。", + "you-dont-have-stickers": "您還沒有任何貼圖", + "you-will-need-this-code": "您需要此代碼才能打開狀態並簽署交易", + "you-will-start-from-scratch": "您將從頭開始,使用一組新的金鑰", + "your-card-is-frozen": "您的金鑰卡已被凍結,請重置卡片存取權限", + "your-contact-code": "同意授權此DApp檢索您的聊天金鑰", + "your-data-belongs-to-you": "如果您遺失種子詞組,您將失去所有的數據資料和資金", + "your-data-belongs-to-you-description": "如果您遺失存取裝置,例如:您的手機,您將只能使用種子詞組取回個人密鑰。切勿讓他人得知您的種子詞組,請立刻寫下這些字詞,並妥善維護其安全。", + "your-keys": "您的金鑰", + "your-price-limit": "您的設定價格", + "your-recovery-phrase": "您的種子詞組", + "your-recovery-phrase-description": "這是您的種子詞組,能用它來證明這是您的錢包。您只會看到一次!請將其寫在紙上,並存放在安全的地方。如果裝置遺失或想重新安裝錢包,將需要它。", + "your-tip-limit": "您的手續費上限", + "youre-on-mobile-network": "您正在使用行動網路" +} diff --git a/translations/zh_hans.json b/translations/zh_hans.json new file mode 100644 index 00000000000..db6cea6405f --- /dev/null +++ b/translations/zh_hans.json @@ -0,0 +1,900 @@ +{ + "about-app": "关于", + "about-key-storage-content": "", + "about-key-storage-title": "", + "about-names-content": "", + "about-names-title": "", + "access-key": "", + "multiaccount-generation-message": "给我一点时间,我得疯狂地计算一下,才能生成你的帐户!", + "account-settings": "帐号设定", + "active-online": "在线", + "active-unknown": "未知", + "add": "添加", + "add-a-watch-account": "添加一个观察帐户", + "add-account": "添加帐号", + "add-an-account": "添加一个帐号", + "add-bootnode": "添加引导节点", + "add-contact": "增加联系人", + "add-custom-token": "添加自定义代币", + "add-existing-account": "添加已有帐号", + "add-mailserver": "添加邮件服务器", + "add-members": "添加成员", + "add-network": "添加网络", + "add-to-contacts": "添加到联系人", + "address": "地址", + "advanced": "", + "advanced-settings": "高级设置", + "agree-by-continuing": "继续授权给我们", + "all": "全部", + "allow": "允许", + "allowing-authorizes-this-dapp": "允许授权此 DApp 检索您的钱包地址, 并启用 Web3", + "already-have-asset": "你已经有了这种资产", + "amount": "金额", + "are-you-sure-description": "您将无法再次看到整个助记词", + "are-you-sure?": "你确定?", + "ask-in-status": "咨询问题或报告错误", + "at": "在", + "authorize": "授权", + "available": "可用", + "available-participants": { + "other": "你可以选择{{count}} 参与者。" + }, + "back": "返回", + "back-up-your-seed-phrase": "备份助记词", + "backup-recovery-phrase": "备份助记词", + "balance": "余额", + "begin-set-up": "开始设置", + "biometric-auth-android-sensor-desc": "触摸传感器", + "biometric-auth-android-sensor-error-desc": "失败", + "biometric-auth-android-title": "需要进行身份验证", + "biometric-auth-confirm-logout": "重新登录", + "biometric-auth-confirm-message": "生物识别身份验证需要连续,如果不能完成,请使用帐户密码重新登录", + "biometric-auth-confirm-title": "你必须验证!", + "biometric-auth-confirm-try-again": "再试一次", + "biometric-auth-error": "无法执行生物识别身份验证( {{code}} )", + "biometric-auth-login-error-title": "生物识别身份验证错误", + "biometric-auth-login-ios-fallback-label": "输入密码", + "biometric-auth-reason-login": "登录Status", + "biometric-auth-reason-verify": "验证身份", + "block": "块", + "block-contact": "屏蔽联系人", + "block-contact-details": "屏蔽将删除此用户之前的所有消息,并拒收新消息", + "blocked-users": "被屏蔽的用户", + "bootnode-address": "引导节点地址", + "bootnode-details": "引导节点详细信息", + "bootnode-format": "enode:\/\/{enode-id}@{ip-address}:{port}", + "bootnodes": "引导节点", + "bootnodes-enabled": "引导节点启用", + "bootnodes-settings": "引导节点设置", + "browsed-websites": "浏览过的网站将在此处显示。", + "browser": "浏览器", + "browser-not-secure": "连接不安全!不要在本网站上签署交易或发送个人数据。", + "browser-secure": "连接是安全的。在签署交易或输入个人数据之前, 请确保您确实信任此网站。", + "browsers": "浏览器", + "browsing-cancel": "取消", + "browsing-open-in-android-web-browser": "在网络浏览器中打开", + "browsing-open-in-ios-web-browser": "在网络浏览器中打开", + "browsing-open-in-status": "在Status中打开", + "browsing-site-blocked-description1": "我们从此地址检测到潜在的恶意活动。为了保护您和您的钱包,我们阻止了进一步的引导。 \n\n如果您认为这是一个错误,请告诉我们", + "browsing-site-blocked-description2": "公聊", + "browsing-site-blocked-go-back": "返回", + "browsing-site-blocked-title": "此站点被阻止", + "browsing-title": "浏览", + "camera-access-error": "要授予所需的摄像机许可,请转到系统设置,并确定选中了 “Status” > “摄像机”。", + "can-not-add-yourself": "不能添加自己", + "cancel": "取消", + "cancel-keycard-setup": "", + "cannot-read-card": "无法读卡。\n请把卡放在你的手机后面", + "cannot-use-default-pin": "PIN 码000000是无效的。 \n请使用其他码", + "card-is-blank": "这是一张空白卡", + "card-reseted": "卡片已被重置", + "card-unpaired": "卡片已从当前设备删除配对", + "change-fleet": "变更组别到{{fleet}}", + "change-logging-enabled": "您确定要{{enable}}日志记录吗?", + "change-pin": "更改PIN码", + "changed-amount-warning": "数量已从{{old}}更改为{{new}}", + "changed-asset-warning": "资产已从{{old}}更改为{{new}}", + "chaos-mode": "混乱模式", + "chaos-unicorn-day": "混乱独角兽日", + "chaos-unicorn-day-details": "🦄🦄🦄🦄🦄🦄🦄🚀!", + "chat": "聊天", + "chat-name": "聊天名称", + "chat-settings": "对话设置", + "chats": "聊天", + "check-your-recovery-phrase": "检查您的助记词", + "choose-authentication-method": "选择一种身份验证方法来保护您的帐户", + "clear": "清空", + "clear-history": "清空历史记录", + "clear-history-action": "清空", + "clear-history-confirmation": "清空历史记录?", + "clear-history-confirmation-content": "您确定要清除此聊天记录吗?", + "clear-history-title": "清空历史记录?", + "close-app-button": "确认", + "close-app-content": "应用将会停止并关闭。当你重新打开应用,选中的网络将会被使用", + "close-app-title": "警告!", + "command-button-send": "发送", + "complete-hardwallet-setup": "现在此卡是您帐户安全的重要组成部分。没有它就无法发送交易。", + "completed": "已完成", + "confirm": "确认", + "confirmations": "确认", + "confirmations-helper-text": "请等待达到至少12个确认,来确保交易已被安全地处理。", + "connect": "连接", + "connect-mailserver-content": "连接到{{name}} ?", + "connected": "已连接", + "connecting": "正在连接...", + "connecting-requires-login": "连接其它网络需要登录", + "connection-with-the-card-lost": "", + "connection-with-the-card-lost-text": "", + "contact-code": "联系码", + "contact-s": { + "other": "联系人" + }, + "contacts": "联系人", + "continue": "继续", + "contract-address": "合约地址", + "contract-interaction": "合约交互", + "copy-info": "复制信息", + "copy-qr": "复制代码", + "copy-to-clipboard": "复制", + "copy-transaction-hash": "复制交易哈希", + "cost-fee": "成本\/费用", + "counter-9-plus": "9+", + "create": "创建", + "create-a-pin": "创建PIN码", + "create-multiaccount": "创建帐号", + "create-group-chat": "创建群聊", + "create-pin": "创建PIN码", + "create-pin-description": "你需要卡+本PIN码才能登录和确认交易", + "created-group-chat-description": "您创建了群{{group-name}}", + "cryptokitty-name": "CryptoKitty# {{id}}", + "currency": "货币", + "currency-display-name-aed": "阿联酋迪拉姆", + "currency-display-name-afn": "阿富汗尼", + "currency-display-name-ars": "阿根廷比索", + "currency-display-name-aud": "澳元", + "currency-display-name-bbd": "巴巴多斯元", + "currency-display-name-bdt": "孟加拉国塔卡", + "currency-display-name-bgn": "保加利亚列弗", + "currency-display-name-bhd": "巴林第纳尔", + "currency-display-name-bnd": "文莱元", + "currency-display-name-bob": "玻利维亚玻利维亚诺", + "currency-display-name-brl": "巴西雷亚尔", + "currency-display-name-btn": "不丹努扎姆", + "currency-display-name-cad": "加拿大元", + "currency-display-name-chf": "瑞士法郎", + "currency-display-name-clp": "智利比索", + "currency-display-name-cny": "人民币", + "currency-display-name-cop": "哥伦比亚比索", + "currency-display-name-crc": "哥斯达黎加科郎", + "currency-display-name-czk": "捷克克朗", + "currency-display-name-dkk": "丹麦克朗", + "currency-display-name-dop": "多米尼加比索", + "currency-display-name-egp": "埃及镑", + "currency-display-name-etb": "埃塞俄比亚比尔", + "currency-display-name-eur": "欧元", + "currency-display-name-gbp": "英镑", + "currency-display-name-gel": "格鲁吉亚拉里", + "currency-display-name-ghs": "加纳塞地", + "currency-display-name-hkd": "港币", + "currency-display-name-hrk": "克罗地亚库纳", + "currency-display-name-huf": "匈牙利福林", + "currency-display-name-idr": "印度尼西亚卢比", + "currency-display-name-ils": "以色列新谢克尔", + "currency-display-name-inr": "印度卢比", + "currency-display-name-isk": "冰岛克朗", + "currency-display-name-jmd": "牙买加元", + "currency-display-name-jpy": "日元", + "currency-display-name-kes": "肯尼亚先令", + "currency-display-name-krw": "韩元", + "currency-display-name-kwd": "科威特第纳尔", + "currency-display-name-kzt": "哈萨克斯坦腾格", + "currency-display-name-lkr": "斯里兰卡卢比", + "currency-display-name-mad": "摩洛哥迪拉姆", + "currency-display-name-mdl": "摩尔多瓦列伊", + "currency-display-name-mur": "毛里求斯卢比", + "currency-display-name-mwk": "马拉维克瓦查", + "currency-display-name-mxn": "墨西哥比索", + "currency-display-name-myr": "马来西亚林吉特", + "currency-display-name-mzn": "莫桑比克美提卡", + "currency-display-name-nad": "纳米比亚元", + "currency-display-name-ngn": "尼日利亚奈拉", + "currency-display-name-nok": "挪威克朗", + "currency-display-name-npr": "尼泊尔卢比", + "currency-display-name-nzd": "新西兰元", + "currency-display-name-omr": "阿曼里亚尔", + "currency-display-name-pen": "秘鲁新索尔", + "currency-display-name-pgk": "巴布亚新几内亚基那", + "currency-display-name-php": "菲律宾比索", + "currency-display-name-pkr": "巴基斯坦卢比", + "currency-display-name-pln": "波兰兹罗提", + "currency-display-name-pyg": "巴拉圭瓜拉尼", + "currency-display-name-qar": "卡塔尔里亚尔", + "currency-display-name-ron": "罗马尼亚列伊", + "currency-display-name-rsd": "突尼斯第纳尔", + "currency-display-name-rub": "俄罗斯卢布", + "currency-display-name-sar": "沙特阿拉伯里亚尔", + "currency-display-name-sek": "瑞典克朗", + "currency-display-name-sgd": "新加坡元", + "currency-display-name-thb": "泰国泰铢", + "currency-display-name-try": "土耳其里拉", + "currency-display-name-ttd": "特立尼达和多巴哥元", + "currency-display-name-twd": "新台币", + "currency-display-name-tzs": "坦桑尼亚先令", + "currency-display-name-uah": "乌克兰格里夫纳", + "currency-display-name-ugx": "乌干达先令", + "currency-display-name-usd": "美元", + "currency-display-name-uyu": "乌拉圭比索", + "currency-display-name-vef": "委内瑞拉玻利瓦尔", + "currency-display-name-vnd": "越南盾", + "currency-display-name-zar": "南非兰德", + "current-network": "当前网络", + "current-pin": "输入PIN码", + "current-pin-description": "输入您的PIN码以继续", + "custom": "自 定义", + "custom-networks": "自定义网络", + "dapp": "ÐApp", + "dapp-would-like-to-connect-wallet": "想连接到您的钱包吗", + "dapps": "ÐApps", + "dapps-permissions": "DApp权限", + "data": "数据", + "datetime-ago": "前", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "datetime-day": { + "other": "天" + }, + "datetime-hour": { + "other": "小时" + }, + "datetime-minute": { + "other": "分钟" + }, + "datetime-second": { + "other": "秒" + }, + "datetime-today": "今天", + "datetime-yesterday": "昨天", + "decimals": "小数点", + "decryption-failed-content": "我们无法解密您的数据,您可能需要创建新帐户并且点击 “套用” 来清除旧数据。如果点击 “取消”,系统将再尝试一次。", + "default": "默认", + "delete": "刪除", + "delete-and-leave-group": "删除并离开群组", + "delete-bootnode": "删除引导节点", + "delete-bootnode-are-you-sure": "您确定要删除这个引导节点吗?", + "delete-bootnode-title": "删除 bootnode", + "close-chat": "刪除聊天", + "close-chat-confirmation": "您确定要删除此聊天记录吗?", + "delete-confirmation": "刪除", + "delete-mailserver": "删除邮件服务器", + "delete-mailserver-are-you-sure": "您确定要删除此邮件服务器吗?", + "delete-mailserver-title": "删除邮件服务器", + "delete-message": "删除消息", + "delete-network-confirmation": "您确定要删除此网络吗?", + "delete-network-error": "请在删除此网络之前连接到其他网络", + "delete-network-title": "删除网络?", + "deny": "拒绝", + "description": "简介", + "dev-mode": "开发模式", + "devices": "设备", + "disable": "禁用", + "disabled": "禁用", + "disconnected": "正在连接到对等方..。", + "discover": "发现", + "done": "完成", + "edit": "编辑", + "edit-profile": "编辑个人资料", + "empty-chat-description": "此聊天中还没有消息", + "empty-chat-description-one-to-one": "您在这里发送的任何邮件都是加密的, 只能由您读取并", + "empty-chat-description-public": "最后{{quiet-hours}}在这里{{quiet-hours}} 。开始对话或", + "empty-chat-description-public-share-this": "分享此聊天。", + "enable": "启用", + "encrypt-with-password": "", + "ens-10-SNT": "10 SNT", + "ens-add-username": "添加用户名", + "ens-agree-to": "同意", + "ens-chat-settings": "聊天设置", + "ens-custom-domain": "自定义域名", + "ens-custom-username-hints": "输入完整用户名,包括自定义域,例如username.domain.eth", + "ens-custom-username-taken": "用户名不属于您:(", + "ens-deposit": "充值", + "ens-displayed-with": "您的消息会显示给其他人", + "ens-get-name": "获取通用用户名", + "ens-got-it": "好的, 明白了", + "ens-locked": "用户名已锁定。您将无法在{{date}}之前释放它", + "ens-network-restriction": "仅适用于主网或ropsten", + "ens-no-usernames": "您没有关联任何用户名", + "ens-powered-by": "由以太坊名称服务提供支持", + "ens-primary-username": "主用户名", + "ens-register": "注册", + "ens-registration-failed": "要注册用户名,请重试。", + "ens-registration-failed-title": "交易失败", + "ens-release-username": "释放用户名", + "ens-remove-hints": "删除将从密钥中分离用户名。", + "ens-remove-username": "删除用户名", + "ens-saved": " 现在已与您的密钥相关联,可以在Status中使用了。", + "ens-saved-title": "用户名已添加", + "ens-show-username": "在聊天中显示我的ENS用户名", + "ens-terms-header": "名称注册条款", + "ens-terms-point-1": "资金存入1年。您的 snt 将被锁定, 但不会被花费。", + "ens-terms-point-10": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e(ENS注册表)。", + "ens-terms-point-2": "1 年后,您可以释放名称并赎回您的押金,或者不采取任何措施保留该名称。", + "ens-terms-point-3": "如果合约条款发生变化(例如,Status升级合约),用户有权释放用户名,无论持有时间长短。", + "ens-terms-point-4": "合约控制者无法访问您缴纳的押金。它们只能原路返回发送它们的钱包地址。", + "ens-terms-point-5": "您的地址将与您的ENS名称公开关联。", + "ens-terms-point-6": "用户名创建为stateofus.eth的子节点,并受ENS智能合约条款的约束。", + "ens-terms-point-7": "您授权合约代表您转发 SNT。仅当您批准交易以授权转移时,才会出现这种情况。", + "ens-terms-point-8": "这些条款由地址的智能合约逻辑保证:", + "ens-terms-point-9": "{{address}} (Status用户名注册器)", + "ens-terms-registration": "名称注册条款。", + "ens-test-message": "嘿", + "ens-transaction-pending": "交易待确定......", + "ens-understand": "我明白我的钱包地址将公开连接到我的用户名。", + "ens-username-connected": "此用户名归您所有,并与您的聊天密钥相关联。", + "ens-username-hints": "至少 4 个字符。仅限拉丁字母、数字和小写字母。", + "ens-username-invalid": "只限字母和数字", + "ens-username-owned": "✓用户名归您所有。", + "ens-username-available": "✓用户名可用!", + "ens-username-taken": "用户名已被占用:(", + "ens-usernames": "ENS用户名", + "ens-usernames-details": "注册通用用户名,以便其他用户轻松找到你", + "wallet-address": "钱包地址", + "ens-want-custom-domain": "我在另一个域名上拥有一个名称", + "ens-want-domain": "我想要一个stateofus.eth域名", + "ens-welcome-hints": "ENS名称将那些冗长的地址转换为唯一的用户名。", + "ens-your-username": "您的用户名", + "ens-your-usernames": "您的用户名", + "ens-your-your-name": "您的ENS名称", + "enter-12-words": "输入您的助记词中的12个单词,并使用单个空格隔开", + "enter-contact-code": "输入联系人代码或用户名", + "enter-pair-code": "输入配对码", + "enter-pair-code-description": "需要将你的卡连接到此设备", + "enter-password": "输入密码", + "enter-pin": "输入PIN码", + "enter-puk-code": "输入PUK码", + "enter-puk-code-description": "PIN码已锁定。 \n请输入PUK码以解锁PIN码。", + "enter-url": "输入网址", + "enter-word": "输入单词", + "enter-your-password": "", + "error": "错误", + "error-unable-to-get-balance": "无法获取余额", + "error-unable-to-get-prices": "货币转换错误,请刷新屏幕以重试。", + "error-unable-to-get-token-balance": "无法获取代币余额", + "errors": "错误", + "eth": "ETH", + "ethereum-node-started-incorrectly-description": "以太网节点启动配置不正确,应用程序将停止从该条件恢复。已配置的网络ID = {{network-id}} ,实际网络ID = {{fetched-network-id}}", + "ethereum-node-started-incorrectly-title": "以太坊节点启动不正确", + "etherscan-lookup": "在Etherscan上查看", + "export-account": "导出帐户", + "failed": "失败", + "faq": "常见问题", + "fetch-messages": "↓获取消息", + "find": "查找", + "finishing-card-setup": "卡片设置完成", + "fleet": "组别", + "fleet-settings": "组别设置", + "from": "从", + "gas-limit": "Gas 限制", + "gas-price": "Gas 价格", + "gas-used": "使用的 Gas", + "generate-a-key": "", + "generate-a-new-key": "", + "generating-codes-for-pairing": "正在生成与您的Status帐户配对的代码。", + "generating-keys": "", + "generating-mnemonic": "生成助记词", + "get-started": "开始", + "get-status-at": "在http:\/\/status.im获取Status", + "get-stickers": "获取贴纸", + "go-to-settings": "前往设置", + "got-it": "知道了", + "group-chat": "群聊", + "group-chat-admin": "管理员", + "group-chat-admin-added": "* {{member}} *已成为管理员", + "group-chat-created": "* {{member}} *创建了群* {{name}} *", + "group-chat-decline-invitation": "拒绝邀请", + "group-chat-member-added": "* {{member}} *加入了群", + "group-chat-member-joined": "* {{member}} *已加入该群组", + "group-chat-member-removed": "* {{member}} *离开了群", + "group-chat-members-count": "{{selected}} \/ {{max}}成员", + "group-chat-name-changed": "* {{member}} *将群名称更改为* {{name}} *", + "group-chat-no-contacts": "您还没有任何联系人。 \n邀请您的朋友开始聊天", + "group-info": "群信息", + "gwei": "GWEI", + "hash": "哈希", + "help": "帮助", + "help-capitalized": "帮助", + "help-center": "帮助中心", + "history": "历史记录", + "hold-card": "将卡放在手机背面", + "home": "消息", + "hooks": "挂钩", + "identifier": "识别码", + "image-remove-current": "删除当前照片", + "image-source-gallery": "从图库中选择", + "image-source-make-photo": "拍摄", + "image-source-title": "个人资料图片", + "importing-keycard-account": "导入keycard帐户", + "in-contacts": "已添加联系人", + "incoming": "呼入", + "incorrect-code": [ + "str", + "抱歉,代码不正确,请重新输入" + ], + "initialization": "初始化", + "install": "安装", + "intro-message1": "欢迎来到Status\n点击该消息来设置你的密码并开始!", + "intro-privacy-policy-note1": "", + "intro-privacy-policy-note2": "", + "intro-text": "Status 是您通向分散网络的门户", + "intro-text1": "", + "intro-text2": "", + "intro-text3": "", + "intro-title1": "", + "intro-title2": "", + "intro-title3": "", + "intro-wizard-text1": "", + "intro-wizard-text2": "", + "intro-wizard-text3": "", + "intro-wizard-text4": "", + "intro-wizard-text6": "", + "intro-wizard-title-alt4": "", + "intro-wizard-title-alt5": "", + "intro-wizard-title1": "", + "intro-wizard-title2": "", + "intro-wizard-title3": "", + "intro-wizard-title4": "", + "intro-wizard-title5": "", + "intro-wizard-title6": "", + "invalid-format": "无效的格式\n必须是{{format}}", + "invalid-key-confirm": "应用", + "invalid-key-content": "为了保护自己,您需要创建新帐号并通过点击“应用”来清除旧数据。如果您已有帐号并想保存助记词,请选择“取消”,备份并重新启动应用程序。我们强烈建议您创建新帐号,因为旧帐号未加密存储。", + "invalid-number": "无效号码", + "invalid-pairing-password": "配对密码无效", + "invalid-range": "无效的格式\n必须是在{{min}}与{{max}}之间", + "invite-friends": "邀请朋友", + "invited": "已邀请", + "join-group-chat": "加入群", + "join-group-chat-description": "{{username}}邀请您加入群组{{group-name}}", + "joined-group-chat-description": "您通过来自{{username}}的邀请加入{{group-name}}", + "key": "密钥", + "keycard": "Keycard", + "keycard-applet-install-instructions": "要安装applet,请按照https:\/\/github.com\/status-im\/keycard-cli#keycard-applet-installation上的说明进行操作。", + "keycard-blocked": "Keycard已被冻结。 \n您需要重置卡片才能继续使用它。", + "keycard-cancel-setup-text": "", + "keycard-cancel-setup-title": "", + "keycard-desc": "", + "keycard-has-multiaccount-on-it": "此卡上已有帐户。如果您想更改它,请先登录并重置您的卡。如果您要导入Keycard帐户,请使用“添加现有帐户”", + "keycard-onboarding-finishing-header": "", + "keycard-onboarding-intro-header": "", + "keycard-onboarding-intro-text": "", + "keycard-onboarding-pairing-header": "", + "keycard-onboarding-preparing-header": "", + "keycard-onboarding-puk-code-header": "", + "keycard-onboarding-recovery-phrase-description": "", + "keycard-onboarding-recovery-phrase-header": "", + "keycard-onboarding-recovery-phrase-text": "", + "keycard-onboarding-start-header": "", + "keycard-onboarding-start-step1": "", + "keycard-onboarding-start-step1-text": "", + "keycard-onboarding-start-step2": "", + "keycard-onboarding-start-step2-text": "", + "keycard-onboarding-start-step3": "", + "keycard-onboarding-start-step3-text": "", + "keycard-onboarding-start-text": "", + "keycard-recovery-phrase-confirm-header": "", + "keycard-recovery-phrase-confirmation-text": "", + "keycard-recovery-phrase-confirmation-title": "", + "keycard-unauthorized-operation": "您未经授权执行此操作。 \n请选择有效卡,然后重试。", + "learn-more": "学到更多", + "learn-more-about-keycard": "", + "leave": "离开", + "leave-group": "退群", + "left": "剩余", + "linked-on": "已与{{date}}关联", + "load-messages-before": "{{date}} 之前", + "load-more-messages": "↓获取更多消息", + "loading": "载入中...", + "log-level": "日志级别", + "log-level-settings": "日志级别设置", + "logging": "日志记录", + "logging-enabled": "启用日志记录吗?", + "login-pin-description": "输入您的PIN码并登录\n到您的帐户", + "logout": "登出", + "logout-app-content": "该帐户将被注销。再次登录时,将使用所选的网络", + "logout-are-you-sure": "您确定您要登出吗?", + "logout-title": "登出?", + "mailserver-address": "邮件服务器地址", + "mailserver-automatic": "自动选择", + "mailserver-connection-error": "无法连接到邮件服务器", + "mailserver-details": "邮件服务器详细信息", + "mailserver-error-content": "无法访问您选择的邮件服务器。", + "mailserver-error-title": "连接到邮件服务器时出错", + "mailserver-format": "enode:\/\/{enode-id}:{password}@{ip-address}:{port}", + "mailserver-pick-another": "选择其他邮件服务器", + "mailserver-reconnect": "无法连接到邮件服务器,请点击重新连接", + "mailserver-request-error-content": "邮件服务器返回以下错误: {{error}}", + "mailserver-request-error-status": "获取历史消息时发生错误,请检查日志以获取详细信息", + "mailserver-request-error-title": "邮件服务器请求错误", + "mailserver-request-retry": "重试请求", + "mailserver-retry": "重试", + "main-currency": "主要货币", + "main-networks": "主网", + "main-wallet": "主钱包", + "mainnet-network": "主网", + "make-admin": "设置管理员", + "members": { + "other": "{{count}} 个成员" + }, + "members-active": { + "other": "{{count}} 个成员" + }, + "members-active-none": "没有成员", + "members-title": "成员", + "message": "信息", + "message-not-sent": "信息未发送", + "message-options-cancel": "取消", + "message-reply": "回复", + "messages": "消息", + "might-break": "可能会破坏一些ÐApp", + "migrations-failed-content": "{{message}} \n架构版本:初始{{initial-version}} ,当前{{current-version}} ,最后{{last-version}} \n\n请在#status公共聊天中告诉我们此问题。如果按“取消”按钮,则不会产生任何后果。如果按“ {{erase-accounts-data-button-text}} ”按钮,帐户的数据库将被删除,您将能够解锁帐户。所有帐户的数据都将丢失。", + "mobile-network-ask-me": "当在移动网络上时询问我", + "mobile-network-continue-syncing": "继续同步", + "mobile-network-continue-syncing-details": "您可以稍后在设置中更改此设置", + "mobile-network-go-to-settings": "前往设置", + "mobile-network-settings": "移动数据", + "mobile-network-sheet-configure": "您可以配置更多同步\n细节", + "mobile-network-sheet-offline": "离线,等待Wi-Fi", + "mobile-network-sheet-offline-details": "使用移动网络同步已关闭", + "mobile-network-sheet-remember-choice": "记住我的选择", + "mobile-network-sheet-settings": "设置", + "mobile-network-start-syncing": "开始同步", + "mobile-network-stop-syncing": "停止同步", + "mobile-network-stop-syncing-details": "直到连接到Wi-Fi?", + "mobile-network-use-mobile": "使用移动数据", + "mobile-network-use-mobile-data": "在同步聊天时,Status 会使用大量数据流量。您可以选择不在移动网络上同步", + "mobile-syncing-sheet-details": "在同步聊天时,Status 会使用大量数据流量。您可以选择不在移动网络上同步", + "mobile-syncing-sheet-title": "使用移动数据同步", + "more": "更多", + "name": "名称", + "name-of-token": "代币的名称", + "need-help": "需要帮助?", + "network": "网络", + "network-chain": "网络链", + "network-details": "网络详细信息", + "network-fee": "网络费", + "network-id": "网络 ID", + "network-invalid-network-id": "指定的网络ID与RPC url的网络ID不对应", + "network-invalid-status-code": "无效状态码: {{code}}", + "network-invalid-url": "无效网络网址", + "network-settings": "网络设置", + "new": "新建", + "new-chat": "新的聊天", + "new-contact": "新的联系人", + "new-contract": "新合约", + "new-group": "新增群组", + "new-group-chat": "新的群聊", + "new-network": "新建网络", + "new-pin-description": "输入新的PIN码", + "new-public-group-chat": "加入公共聊天", + "next": "下一个", + "no": "否", + "no-collectibles": "没有可用的收藏品", + "no-contacts": "还没有联系人", + "no-keycard-applet-on-card": "卡上没有Keycard小程序", + "no-messages": "无消息", + "no-pairing-slots-available": "没有可用配对位。 \n你可以解除已经与卡配对的设备配对", + "no-result": "没有结果", + "no-tokens-found": "没有找到代币", + "node-info": "节点信息", + "nonce": "随机数", + "none": "无", + "not-applicable": "对未签名交易不可用", + "notifications": "通知", + "notify": "通知", + "off": "关闭", + "offline": "离线", + "offline-messaging": "邮件服务器", + "offline-messaging-settings": "邮件服务器设置", + "ok": "确定", + "ok-continue": "好的,继续", + "ok-got-it": "好的, 明白了", + "okay": "确定", + "on": "开启", + "open": "打开", + "open-dapp": "打开ÐApp", + "open-dapp-store": "发现ÐApps", + "open-nfc-settings": "", + "open-on-etherscan": "打开 Etherscan.io", + "optional": "可选", + "other-accounts": "其他帐号", + "outgoing": "呼出", + "pair": "配对设备", + "pair-card": "配对卡", + "pair-code": "配对码", + "pair-code-explanation": "将卡与另一台具有相同Status帐户的设备配对", + "pair-this-device": "配对此设备", + "pair-this-device-description": "将您的设备配对以同步联系人并与他们聊天", + "paired-devices": "配对设备", + "pairing": "配对", + "pairing-card": "配对卡", + "pairing-go-to-installation": "配对设置", + "pairing-maximum-number-reached-content": "请在启用新设备之前禁用其中一个设备。", + "pairing-maximum-number-reached-title": "达到最大设备数", + "pairing-new-installation-detected-content": "已检测到新设备。 \n为了正确使用您的设备,在使用之前配对并启用它们。 \n请找到设置菜单下的设备项以配对您的设备。", + "pairing-new-installation-detected-title": "检测到新设备", + "pairing-no-info": "没有信息", + "pairing-please-set-a-name": "请为您的设备设置名称。", + "passphrase": "密码", + "password": "密码", + "password_error1": "密码不匹配。", + "password-description": "您需要此密码才能启用应用程序并确认交易。", + "password-placeholder2": "确认你的密码", + "paste": "粘贴", + "paste-json": "粘贴 JSON", + "pay-to-chat": "付钱聊天", + "peers": "对等方", + "pending": "等待中", + "pending-confirmation": "待确认...", + "permissions": "权限", + "phone-e164": "国际1", + "photos-access-error": "要授予所需的照片许可,请转到系统设置,并确保选中了 “Status” > “照片”。", + "pin-changed": "PIN码已更改", + "pin-code": "PIN 码", + "pin-mismatch": "PIN码不匹配", + "pin-retries-left": "您还剩{{number}}次重试机会", + "preview-privacy": "预览隐私模式", + "privacy-policy": "隐私权政策", + "processing": "处理中", + "product-information": "产品信息", + "profile": "个人资料", + "public-chat": "公聊", + "public-chats": "公共聊天", + "public-group-status": "公共", + "public-group-topic": "话题", + "public-key": "公钥", + "puk-and-pairing-codes-displayed": "显示PUK和配对码", + "puk-code": "PUK码", + "puk-code-explanation": "如果您失去访问权限,请解锁卡", + "puk-mismatch": "PUK码不匹配", + "quiet-days": "{{quiet-days}}天", + "quiet-hours": "{{quiet-hours}}小时", + "receive": "接收", + "receive-transaction": "接收交易", + "recent": "最近", + "recent-recipients": "联系人", + "recently-used-stickers": "最近使用的贴纸将出现在这里", + "recipient": "接收方", + "recipient-code": "输入收件人地址", + "recover": "恢复", + "recover-key": "", + "recover-keycard-multiaccount-not-supported": "不支持使用密码恢复keycard帐户", + "recovery-confirm-phrase": "确认密码", + "recovery-phrase": "恢复短语", + "recovery-typo-dialog-description": "如果输入错误的单词,您将创建一个新帐号,而不是恢复旧帐号。", + "recovery-typo-dialog-title": "此助记词正确吗?", + "remind-me-later": "", + "remove": "删除", + "remove-from-chat": "从聊天中删除", + "remove-network": "移除网络", + "remove-token": "删除代币", + "removed": "已删除", + "repeat-pin": "重复你的PIN码", + "report-bug-email-template": "1.问题描述\n {{description}} \n\n\n 2.重现的步骤\n {{steps}} \n\n\n 3.附上可以演示问题的屏幕截图\n", + "request-transaction": "请求交易", + "required-field": "必填字段", + "resend-message": "重新发送", + "reset-card": "重置卡片", + "reset-card-description": "此操作将卡片重置为初始状态。它将清除所有数据,包括私钥。操作不可逆。", + "retry": "重试", + "revoke-access": "撤消访问权限", + "rpc-url": "RPC 链接", + "save": "保存", + "save-password": "保存密码直到注销", + "save-password-unavailable": "设置设备码以保存密码", + "save-password-unavailable-android": "保存密码不可用:您的设备可能已被root或缺少必要的安全功能。", + "scan-qr": "扫描二维码", + "scan-qr-code": "扫描钱包地址的 QR 码", + "search": "搜索", + "secret-keys-confirmation-text": "请立即记录,你无法再一次查看本页面", + "secret-keys-confirmation-title": "你抄写下来了吗?", + "see-details": "查看详细信息", + "see-it-again": "再次核对", + "select-chat": "", + "selected": "选择", + "send-logs": "报告一个错误", + "send-logs-to": "向{{email}}报告错误", + "send-message": "发送消息", + "send-request": "发送请求", + "send-request-amount": "金额", + "send-request-amount-max-decimals": "最大小数位数为{{asset-decimals}}", + "send-request-unknown-token": "未知代币 - {{asset}}", + "send-sending-to": "到", + "send-transaction": "发送交易", + "sending": "正在发送...", + "sent-at": "发送于", + "set-a-topic": "创建主题", + "set-currency": "设置货币", + "settings": "设置", + "share": "分享", + "share-address": "", + "share-chat": "共享聊天", + "share-contact-code": "共享我的联系人代码", + "share-dapp-text": "查看我在Status上使用的这个DApp: {{link}}", + "share-link": "共享链接", + "share-my-profile": "分享我的个人资料", + "share-profile": "分享个人资料", + "share-profile-link": "共享配置文件链接", + "share-public-chat-text": "在Status应用中查看此公共聊天: {{link}}", + "sharing-copied-to-clipboard": "复制到剪贴板", + "sharing-copy-to-clipboard": "复制到剪贴板", + "sharing-share": "分享...", + "show-less": "收起", + "show-more": "显示更多", + "show-qr": "显示二维码", + "sign-in": "登录", + "sign-message": "签名消息", + "sign-with": "", + "sign-with-password": "使用密码签名", + "sign-you-in": "签入..。", + "signing": "签名", + "signing-a-message": "输入讯息...", + "signing-phrase": "签名短语", + "something-went-wrong": "出错", + "soon": "不久", + "specify-address": "指定地址", + "specify-name": "指定名称", + "specify-network-id": "指定网络ID", + "specify-rpc-url": "指定一个 RPC 链接", + "start-chat": "开始聊天", + "start-conversation": "开始对话", + "start-group-chat": "开始群聊", + "start-new-chat": "开始新对话", + "status": "状态", + "status-confirmed": "确定", + "status-hardwallet": "Status硬件钱包", + "status-keycard": "Status Keycard", + "status-not-sent-click": "未发送", + "status-not-sent-tap": "未发送。点击选项", + "status-pending": "等待中", + "status-sent": "已发送", + "status-tx-not-found": "未找到 TX", + "step-i-of-n": "步骤{{step}}\/{{number}}", + "sticker-market": "贴纸市场", + "submit": "", + "submit-bug": "提交错误", + "success": "成功", + "symbol": "符号", + "sync-all-devices": "同步所有设备", + "sync-in-progress": "正在同步...", + "sync-synced": "已同步", + "syncing-devices": "正在同步...", + "tag-was-lost": "标签丢失", + "test-networks": "测试网络", + "text-input-disabled": "请稍候...", + "this-device": "", + "this-device-desc": "", + "this-is-you-signing": "", + "this-will-take-few-seconds": "这将需要几秒钟", + "three-words-description": "", + "three-words-description-2": "", + "to": "到", + "to-block": "屏蔽", + "to-see-this-message": "查看此消息,", + "token-auto-validate-decimals-error": "地址{{address}}中的代币 {{symbol}}小数位错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-name-error": "地址{{address}}中的代币 {{symbol}}名称错误 - 设置为{{expected}}但检测为{{actual}}", + "token-auto-validate-symbol-error": "地址{{address}}中的代币 {{symbol}}符号错误 - 设置为{{expected}}但检测为{{actual}}", + "token-details": "代币详细信息", + "topic-name-error": "主题名称仅可使用小写字母( a 到 z )和短划线( - )", + "transaction": "交易", + "transaction-description": "请等待达到至少12个确认,来确保交易已被安全地处理。", + "transaction-details": "交易明细", + "transaction-failed": "交易失败", + "transaction-history": "交易记录", + "transaction-request": "交易请求", + "transaction-sent": "发送的交易", + "transactions": "交易", + "transactions-filter-select-all": "全部选中", + "transactions-filter-title": "过滤历史记录", + "type": "类型", + "transactions-history": "历史记录", + "transactions-history-empty": "暂无交易历史记录", + "transactions-sign": "签名", + "tribute-required-by-multiaccount": "{{multiaccount-name}}要求SNT开始聊天。", + "tribute-state-paid": "Tribute已付款", + "tribute-state-pending": "见面礼等待中", + "tribute-state-required": "需要{{snt-amount}} SNT致敬", + "tribute-to-talk": "见面礼对话", + "tribute-to-talk-add-friends": "添加朋友作为联系人以允许聊天而无需支付费用。", + "tribute-to-talk-are-you-friends": "你们是朋友吗?", + "tribute-to-talk-ask-to-be-added": "请求添加为联系人", + "tribute-to-talk-contact-received-your-tribute": "收到你的见面礼。你可以安全地互相聊天。", + "tribute-to-talk-desc": "通过收取陌生人首次与你聊天时支付的SNT,来货币化你的注意力。", + "tribute-to-talk-disabled": "见面礼对话未启用", + "tribute-to-talk-disabled-note": "从现在开始,新人可以在不发送SNT的情况下与您聊天。", + "tribute-to-talk-enabled": "您已启用Tribute to Talk。", + "tribute-to-talk-finish-desc": "从现在开始,您只会收到来自联系人和付款人的聊天信息 ", + "tribute-to-talk-learn-more-1": "您的时间和精力是您最宝贵的资产。 Tribute to Talk可让您设置陌生人与您开始聊天所需的SNT数量。", + "tribute-to-talk-learn-more-2": "任何不在您的联系人列表中的人都会被要求付款,您可以在他们付款后回复。", + "tribute-to-talk-learn-more-3": "您可以随时退款,但为了确保朋友可以自由联系您,请先将其添加为联系人。", + "tribute-to-talk-paywall-learn-more-1": "我们的时间和精力是我们最宝贵的资产。 Tribute to Talk让您联系新朋友以换取SNT付款。", + "tribute-to-talk-paywall-learn-more-2": "要与设置了Tribute的人开始聊天,只需支付所需的SNT,您就会被添加为联系人。", + "tribute-to-talk-paywall-learn-more-3": "如果你认识他们,则可以在Status之外分享您的个人资料以免费添加好友。", + "tribute-to-talk-pending": "见面礼等待确认", + "tribute-to-talk-pending-note": "见面礼交易正在等待网络确认。您可以在交易历史记录中查看其状态", + "tribute-to-talk-removing-note": "删除Tribute to Talk将允许陌生人在不发送SNT的情况下开始聊天。需要进行交易才能生效。", + "tribute-to-talk-set-snt-amount": "设置陌生人与你开始聊天所需的SNT数量", + "tribute-to-talk-signing": "正在等待签名交易", + "tribute-to-talk-transaction-failed-note": "交易失败,你的见面礼谈话设置未更改", + "tribute-to-talk-tribute-received1": "Tribute收到了. You and ", + "tribute-to-talk-tribute-received2": "现在是联系人,可以安全地互相聊天。", + "tribute-to-talk-you-require-snt": "您需要收到 SNT 才能允许新人与您聊天。", + "try-again": "再试一次", + "turn-nfc-on": "开启NFC", + "type-a-message": "输入讯息...", + "unable-to-read-this-code": "无法读取此代码", + "unblock-contact": "取消屏蔽联系人", + "unknown-status-go-error": "未知的 status-go 错误", + "unlock": "", + "unpair-card": "未配对卡片", + "unpair-card-confirmation": "此操作将取消当前设备的卡。需要PIN授权。你想继续吗?", + "update": "更新", + "url": "链接", + "usd-currency": "USD", + "use-valid-contact-code": "请输入或扫描有效的联系人代码或用户名", + "validation-amount-invalid-number": "金额不是一个有效的数字", + "validation-amount-is-too-precise": "金额过于精确,所能发送的最小单位是1 Wei (1x10^-18 ETH)", + "version": "版本", + "view-cryptokitties": "在CryptoKitties中查看", + "view-cryptostrikers": "在 CryptoStrikers 中查看", + "view-etheremon": "在Etheremon中查看", + "view-gitcoin": "在Gitcoin中查看", + "view-profile": "查看个人资料", + "view-signing": "查看签名短语", + "view-superrare": "在 SuperRare 中查看", + "waiting-for-wifi": "历史记录同步离线, 等待 Wi-Fi。", + "waiting-for-wifi-change": "更改", + "waiting-to-sign": "正在等待签名交易......", + "wallet": "钱包", + "wallet-asset": "资产", + "wallet-assets": "资产", + "wallet-backup-recovery-title": "备份助记词", + "wallet-choose-recipient": "选择接收方", + "wallet-collectibles": "收藏品", + "wallet-insufficient-funds": "资金不足", + "wallet-insufficient-gas": "ETH不足以支付燃料费", + "wallet-invalid-address": "无效的地址: \n {{data}}", + "wallet-invalid-address-checksum": "地址错误: \n {{data}}", + "wallet-invalid-chain-id": "网络不匹配: \n {{data}}而当前链是{{chain}}", + "wallet-manage-assets": "管理资产", + "wallet-request": "请求", + "wallet-send": "发送", + "wallet-send-min-wei": "最小1wei", + "wallet-settings": "钱包设置", + "wallet-total-value": "总值", + "wallet-transaction-total-fee": "总费用", + "wants-to-access-profile": "想要访问您的个人资料", + "warning": "警告", + "warning-message": "抱歉,我们限制快速连续发送多条消息。请稍后再试", + "web-view-error": "糟糕,出错了", + "welcome-to-status": "欢迎来到Status", + "welcome-to-status-description": "点按加号(+)按钮即可开始使用", + "word-n": "字# {{number}}", + "word-n-description": "为了确认您是否正确备份助记词,请在上方输入单词 #{{number}} 。", + "write-down-and-store-securely": "写下来并安全的存储起来", + "wrong-address": "错误的地址", + "wrong-card": "错误的卡片", + "wrong-card-text": "您已点击了与您选择的帐户不对应的卡片。请再试一次。", + "wrong-contract": "错误的合约", + "wrong-password": "密码错误", + "wrong-word": "错误的单词", + "yes": "是", + "You": "你", + "you": "你", + "you-already-have-an-asset": "您已拥有资产{{value}}", + "you-are-all-set": "你已完成所有设置", + "you-are-all-set-description": "现在,如果您丢失了手机,则可以使用助记词恢复您的帐号和钱包。", + "you-dont-have-stickers": "你还没有任何贴纸", + "your-contact-code": "授予此DApp访问权限以查看您的联系人代码", + "your-data-belongs-to-you": "如果你丢失了你的助记词, 你也同时失去了你的数据和资金", + "your-data-belongs-to-you-description": "如果丢失了您的助记词,Status 将无法帮助您恢复您的帐户。您最好的保障是您自行负责数据安全性,并且备份助记词。", + "your-recovery-phrase": "您的助记词", + "your-recovery-phrase-description": "这是你的助记词。已此来证明这是你的钱包。你只能查看一次!请将其写在纸上并保存在安全的地方。如果丢失或重新安装钱包,您将需要用到这些助记词。" +} diff --git a/translations/zh_hant.json b/translations/zh_hant.json new file mode 100644 index 00000000000..1315517c36d --- /dev/null +++ b/translations/zh_hant.json @@ -0,0 +1,195 @@ +{ + "validation-amount-invalid-number": "金額不是一個有效的數字", + "transaction-details": "交易明細", + "confirm": "確認", + "description": "簡介", + "amount": "金額", + "open": "打開", + "close-app-title": "警告!", + "members-active": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "chat-name": "聊天名稱", + "phew-here-is-your-passphrase": "嗨,真不容易。這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳户。", + "public-group-topic": "話題", + "chat-settings": "對話設置", + "offline": "離線", + "invited": "已邀請", + "address": "地址", + "new-public-group-chat": "加入公共聊天", + "datetime-hour": { + "one": "小時", + "other": "小時" + }, + "wallet-settings": "錢包設置", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "確認", + "block": "塊", + "camera-access-error": "要授予所需的攝像機許可,請轉到系統設置,並確定選中了 “Status” > “攝像機”。", + "wallet-invalid-address": "無效的地址: \n {{data}}", + "remove": "刪除", + "add-members": "添加成員", + "yes": "是", + "dapps": "ÐApps", + "network-settings": "網絡設置", + "photos-access-error": "要授予所需的照片許可,請轉到系統設置,並確保選中了 “Status” > “照片”。", + "hash": "哈希", + "done": "完成", + "close-chat": "刪除聊天", + "new-group-chat": "新的羣聊", + "wallet": "錢包", + "wallet-request": "請求", + "sign-in": "登錄", + "datetime-yesterday": "昨天", + "create-new-account": "創建新賬户", + "datetime-ago": "前", + "contacts": "聯繫人", + "got-it": "知道了", + "public-chats": "公共聊天", + "not-applicable": "對未簽名交易不可用", + "active-online": "在線", + "password": "密碼", + "send-request": "發送請求", + "paste-json": "粘貼 JSON", + "browsing-title": "瀏覽", + "transactions-history-empty": "暫無交易歷史記錄", + "discover": "發現", + "browsing-cancel": "取消", + "intro-status": "跟我聊天,以設置你的帳户並更改你的設置!", + "name": "名稱", + "gas-price": "Gas價格", + "validation-amount-is-too-precise": "金額過於精確,所能發送的最小單位是1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "複製交易哈希", + "show-qr": "顯示二維碼", + "connect": "連接", + "edit": "編輯", + "account-generation-message": "給我一點時間,我得瘋狂地計算一下,才能生成你的帳户!", + "remove-network": "移除網絡", + "no-messages": "無消息", + "passphrase": "密碼", + "recipient": "接收方", + "members-title": "成員", + "new-group": "新增羣組", + "phone-e164": "國際1", + "connected": "已連接", + "rpc-url": "RPC 鏈接", + "settings": "設置", + "specify-rpc-url": "指定一個 RPC 鏈接", + "gas-limit": "Gas限制", + "delete": "刪除", + "chats": "聊天", + "transaction-sent": "發送的交易", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "拍攝", + "chat": "聊天", + "start-conversation": "開始對話", + "save": "保存", + "all": "全部", + "confirmations-helper-text": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "sharing-copy-to-clipboard": "複製到剪貼板", + "sync-in-progress": "正在同步...", + "enter-password": "輸入密碼", + "send-transaction": "發送交易", + "confirmations": "確認", + "incorrect-code": [ + "str", + "抱歉,代碼不正確,請重新輸入" + ], + "image-source-gallery": "從圖庫中選擇", + "sync-synced": "已同步", + "currency": "貨幣", + "status-pending": "等待中", + "connecting-requires-login": "連接其它網絡需要登錄", + "datetime-day": { + "one": "天", + "other": "天" + }, + "request-transaction": "請求交易", + "wallet-send": "發送", + "scan-qr": "掃描二維碼", + "contact-s": { + "one": "聯繫人", + "other": "聯繫人" + }, + "gas-used": "使用的Gas", + "type": "類型", + "next": "下一個", + "recent": "最近", + "open-on-etherscan": "打開 Etherscan.io", + "share": "分享", + "status": "狀態", + "from": "從", + "wrong-password": "密碼錯誤", + "in-contacts": "已添加聯繫人", + "transactions-sign": "簽名", + "sharing-share": "分享...", + "type-a-message": "輸入訊息...", + "usd-currency": "USD", + "url": "鏈接", + "add-network": "添加網絡", + "unknown-status-go-error": "未知的 status-go 錯誤", + "clear-history": "清空歷史記錄", + "no-contacts": "還沒有聯繫人", + "soon": "不久", + "close-app-content": "應用將會停止並關閉。當你重新打開應用,選中的網絡將會被使用", + "datetime-today": "今天", + "web-view-error": "糟糕,出錯了", + "error": "錯誤", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "不能添加自己", + "transaction-description": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "add-to-contacts": "添加到聯繫人", + "available": "可用", + "You": "你", + "main-wallet": "主錢包", + "transactions": "交易", + "members": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "intro-message1": "歡迎來到 Status\n點擊該消息來設置你的密碼並開始!", + "eth": "ETH", + "transactions-history": "歷史記錄", + "new-contact": "新的聯繫人", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "恢復", + "wallet-total-value": "總值", + "nonce": "隨機數", + "new-network": "新建網絡", + "datetime-minute": { + "one": "分鐘", + "other": "分鐘" + }, + "browsing-open-in-android-web-browser": "在網絡瀏覽器中打開", + "browsing-open-in-ios-web-browser": "在網絡瀏覽器中打開", + "wallet-insufficient-funds": "資金不足", + "edit-profile": "編輯個人資料", + "active-unknown": "未知", + "transaction-failed": "交易失敗", + "public-key": "公鑰", + "profile": "個人資料", + "wallet-choose-recipient": "選擇接收方", + "none": "無", + "removed": "已刪除", + "no": "否", + "transactions-filter-select-all": "全部選中", + "transactions-filter-title": "過濾歷史記錄", + "message": "信息", + "here-is-your-passphrase": "這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳户。", + "wallet-assets": "資產", + "image-source-title": "個人資料圖片", + "current-network": "當前網絡", + "left": "剩餘", + "to": "到", + "data": "數據", + "status-sent": "已發送", + "cost-fee": "成本/費用" +} diff --git a/translations/zh_hant_hk.json b/translations/zh_hant_hk.json new file mode 100644 index 00000000000..1315517c36d --- /dev/null +++ b/translations/zh_hant_hk.json @@ -0,0 +1,195 @@ +{ + "validation-amount-invalid-number": "金額不是一個有效的數字", + "transaction-details": "交易明細", + "confirm": "確認", + "description": "簡介", + "amount": "金額", + "open": "打開", + "close-app-title": "警告!", + "members-active": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "chat-name": "聊天名稱", + "phew-here-is-your-passphrase": "嗨,真不容易。這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳户。", + "public-group-topic": "話題", + "chat-settings": "對話設置", + "offline": "離線", + "invited": "已邀請", + "address": "地址", + "new-public-group-chat": "加入公共聊天", + "datetime-hour": { + "one": "小時", + "other": "小時" + }, + "wallet-settings": "錢包設置", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "確認", + "block": "塊", + "camera-access-error": "要授予所需的攝像機許可,請轉到系統設置,並確定選中了 “Status” > “攝像機”。", + "wallet-invalid-address": "無效的地址: \n {{data}}", + "remove": "刪除", + "add-members": "添加成員", + "yes": "是", + "dapps": "ÐApps", + "network-settings": "網絡設置", + "photos-access-error": "要授予所需的照片許可,請轉到系統設置,並確保選中了 “Status” > “照片”。", + "hash": "哈希", + "done": "完成", + "close-chat": "刪除聊天", + "new-group-chat": "新的羣聊", + "wallet": "錢包", + "wallet-request": "請求", + "sign-in": "登錄", + "datetime-yesterday": "昨天", + "create-new-account": "創建新賬户", + "datetime-ago": "前", + "contacts": "聯繫人", + "got-it": "知道了", + "public-chats": "公共聊天", + "not-applicable": "對未簽名交易不可用", + "active-online": "在線", + "password": "密碼", + "send-request": "發送請求", + "paste-json": "粘貼 JSON", + "browsing-title": "瀏覽", + "transactions-history-empty": "暫無交易歷史記錄", + "discover": "發現", + "browsing-cancel": "取消", + "intro-status": "跟我聊天,以設置你的帳户並更改你的設置!", + "name": "名稱", + "gas-price": "Gas價格", + "validation-amount-is-too-precise": "金額過於精確,所能發送的最小單位是1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "複製交易哈希", + "show-qr": "顯示二維碼", + "connect": "連接", + "edit": "編輯", + "account-generation-message": "給我一點時間,我得瘋狂地計算一下,才能生成你的帳户!", + "remove-network": "移除網絡", + "no-messages": "無消息", + "passphrase": "密碼", + "recipient": "接收方", + "members-title": "成員", + "new-group": "新增羣組", + "phone-e164": "國際1", + "connected": "已連接", + "rpc-url": "RPC 鏈接", + "settings": "設置", + "specify-rpc-url": "指定一個 RPC 鏈接", + "gas-limit": "Gas限制", + "delete": "刪除", + "chats": "聊天", + "transaction-sent": "發送的交易", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "拍攝", + "chat": "聊天", + "start-conversation": "開始對話", + "save": "保存", + "all": "全部", + "confirmations-helper-text": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "sharing-copy-to-clipboard": "複製到剪貼板", + "sync-in-progress": "正在同步...", + "enter-password": "輸入密碼", + "send-transaction": "發送交易", + "confirmations": "確認", + "incorrect-code": [ + "str", + "抱歉,代碼不正確,請重新輸入" + ], + "image-source-gallery": "從圖庫中選擇", + "sync-synced": "已同步", + "currency": "貨幣", + "status-pending": "等待中", + "connecting-requires-login": "連接其它網絡需要登錄", + "datetime-day": { + "one": "天", + "other": "天" + }, + "request-transaction": "請求交易", + "wallet-send": "發送", + "scan-qr": "掃描二維碼", + "contact-s": { + "one": "聯繫人", + "other": "聯繫人" + }, + "gas-used": "使用的Gas", + "type": "類型", + "next": "下一個", + "recent": "最近", + "open-on-etherscan": "打開 Etherscan.io", + "share": "分享", + "status": "狀態", + "from": "從", + "wrong-password": "密碼錯誤", + "in-contacts": "已添加聯繫人", + "transactions-sign": "簽名", + "sharing-share": "分享...", + "type-a-message": "輸入訊息...", + "usd-currency": "USD", + "url": "鏈接", + "add-network": "添加網絡", + "unknown-status-go-error": "未知的 status-go 錯誤", + "clear-history": "清空歷史記錄", + "no-contacts": "還沒有聯繫人", + "soon": "不久", + "close-app-content": "應用將會停止並關閉。當你重新打開應用,選中的網絡將會被使用", + "datetime-today": "今天", + "web-view-error": "糟糕,出錯了", + "error": "錯誤", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "不能添加自己", + "transaction-description": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "add-to-contacts": "添加到聯繫人", + "available": "可用", + "You": "你", + "main-wallet": "主錢包", + "transactions": "交易", + "members": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "intro-message1": "歡迎來到 Status\n點擊該消息來設置你的密碼並開始!", + "eth": "ETH", + "transactions-history": "歷史記錄", + "new-contact": "新的聯繫人", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "恢復", + "wallet-total-value": "總值", + "nonce": "隨機數", + "new-network": "新建網絡", + "datetime-minute": { + "one": "分鐘", + "other": "分鐘" + }, + "browsing-open-in-android-web-browser": "在網絡瀏覽器中打開", + "browsing-open-in-ios-web-browser": "在網絡瀏覽器中打開", + "wallet-insufficient-funds": "資金不足", + "edit-profile": "編輯個人資料", + "active-unknown": "未知", + "transaction-failed": "交易失敗", + "public-key": "公鑰", + "profile": "個人資料", + "wallet-choose-recipient": "選擇接收方", + "none": "無", + "removed": "已刪除", + "no": "否", + "transactions-filter-select-all": "全部選中", + "transactions-filter-title": "過濾歷史記錄", + "message": "信息", + "here-is-your-passphrase": "這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳户。", + "wallet-assets": "資產", + "image-source-title": "個人資料圖片", + "current-network": "當前網絡", + "left": "剩餘", + "to": "到", + "data": "數據", + "status-sent": "已發送", + "cost-fee": "成本/費用" +} diff --git a/translations/zh_hant_sg.json b/translations/zh_hant_sg.json new file mode 100644 index 00000000000..6a3bdef8ed4 --- /dev/null +++ b/translations/zh_hant_sg.json @@ -0,0 +1,195 @@ +{ + "validation-amount-invalid-number": "金額不是一個有效的數字", + "transaction-details": "交易明細", + "confirm": "確認", + "description": "簡介", + "amount": "金額", + "open": "開啟", + "close-app-title": "警告!", + "members-active": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "chat-name": "聊天名稱", + "phew-here-is-your-passphrase": "嗨,真不容易。這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳戶。", + "public-group-topic": "話題", + "chat-settings": "對話設定", + "offline": "離線", + "invited": "已邀請", + "address": "地址", + "new-public-group-chat": "加入公共聊天", + "datetime-hour": { + "one": "小時", + "other": "小時" + }, + "wallet-settings": "錢包設定", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "確認", + "block": "塊", + "camera-access-error": "要授予所需的攝像機許可,請轉到系統設定,並確定選中了 “Status” > “攝像機”。", + "wallet-invalid-address": "無效的地址: \n {{data}}", + "remove": "刪除", + "add-members": "新增成員", + "yes": "是", + "dapps": "ÐApps", + "network-settings": "網路設定", + "photos-access-error": "要授予所需的照片許可,請轉到系統設定,並確保選中了 “Status” > “照片”。", + "hash": "雜湊", + "done": "完成", + "close-chat": "刪除聊天", + "new-group-chat": "新的群聊", + "wallet": "錢包", + "wallet-request": "請求", + "sign-in": "登入", + "datetime-yesterday": "昨天", + "create-new-account": "建立新賬戶", + "datetime-ago": "前", + "contacts": "聯絡人", + "got-it": "知道了", + "public-chats": "公共聊天", + "not-applicable": "對未簽名交易不可用", + "active-online": "線上", + "password": "密碼", + "send-request": "傳送請求", + "paste-json": "貼上 JSON", + "browsing-title": "瀏覽", + "transactions-history-empty": "暫無交易歷史記錄", + "discover": "發現", + "browsing-cancel": "取消", + "intro-status": "跟我聊天,以設定你的帳戶並更改你的設定!", + "name": "名稱", + "gas-price": "Gas 價格", + "validation-amount-is-too-precise": "金額過於精確,所能傳送的最小單位是1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "複製交易雜湊", + "show-qr": "顯示二維碼", + "connect": "連線", + "edit": "編輯", + "account-generation-message": "給我一點時間,我得瘋狂地計算一下,才能生成你的帳戶!", + "remove-network": "移除網路", + "no-messages": "無訊息", + "passphrase": "密碼", + "recipient": "接收方", + "members-title": "成員", + "new-group": "新增群組", + "phone-e164": "國際1", + "connected": "已連線", + "rpc-url": "RPC 連結", + "settings": "設定", + "specify-rpc-url": "指定一個 RPC 連結", + "gas-limit": "Gas 限制", + "delete": "刪除", + "chats": "聊天", + "transaction-sent": "傳送的交易", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "拍攝", + "chat": "聊天", + "start-conversation": "開始對話", + "save": "儲存", + "all": "全部", + "confirmations-helper-text": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "sharing-copy-to-clipboard": "複製到剪貼簿", + "sync-in-progress": "正在同步...", + "enter-password": "輸入密碼", + "send-transaction": "傳送交易", + "confirmations": "確認", + "incorrect-code": [ + "str", + "抱歉,程式碼不正確,請重新輸入" + ], + "image-source-gallery": "從相簿中選擇", + "sync-synced": "已同步", + "currency": "貨幣", + "status-pending": "等待中", + "connecting-requires-login": "連線其它網路需要登入", + "datetime-day": { + "one": "天", + "other": "天" + }, + "request-transaction": "請求交易", + "wallet-send": "傳送", + "scan-qr": "掃描二維碼", + "contact-s": { + "one": "聯絡人", + "other": "聯絡人" + }, + "gas-used": "使用的 Gas", + "type": "型別", + "next": "下一個", + "recent": "最近", + "open-on-etherscan": "開啟 Etherscan.io", + "share": "分享", + "status": "狀態", + "from": "從", + "wrong-password": "密碼錯誤", + "in-contacts": "已新增聯絡人", + "transactions-sign": "簽名", + "sharing-share": "分享...", + "type-a-message": "輸入訊息...", + "usd-currency": "USD", + "url": "連結", + "add-network": "新增網路", + "unknown-status-go-error": "未知的 status-go 錯誤", + "clear-history": "清空歷史記錄", + "no-contacts": "還沒有聯絡人", + "soon": "不久", + "close-app-content": "應用將會停止並關閉。當你重新開啟應用,選中的網路將會被使用", + "datetime-today": "今天", + "web-view-error": "糟糕,出錯了", + "error": "錯誤", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "不能新增自己", + "transaction-description": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "add-to-contacts": "新增到聯絡人", + "available": "可用", + "You": "你", + "main-wallet": "主錢包", + "transactions": "交易", + "members": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "intro-message1": "歡迎來到 Status\n點選該訊息來設定你的密碼並開始!", + "eth": "ETH", + "transactions-history": "歷史記錄", + "new-contact": "新的聯絡人", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "恢復", + "wallet-total-value": "總值", + "nonce": "隨機數", + "new-network": "新建網路", + "datetime-minute": { + "one": "分鐘", + "other": "分鐘" + }, + "browsing-open-in-android-web-browser": "在網路瀏覽器中開啟", + "browsing-open-in-ios-web-browser": "在網路瀏覽器中開啟", + "wallet-insufficient-funds": "資金不足", + "edit-profile": "編輯個人資料", + "active-unknown": "未知", + "transaction-failed": "交易失敗", + "public-key": "公鑰", + "profile": "個人資料", + "wallet-choose-recipient": "選擇接收方", + "none": "無", + "removed": "已刪除", + "no": "否", + "transactions-filter-select-all": "全部選中", + "transactions-filter-title": "過濾歷史記錄", + "message": "資訊", + "here-is-your-passphrase": "這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳戶。", + "wallet-assets": "資產", + "image-source-title": "個人資料圖片", + "current-network": "當前網路", + "left": "剩餘", + "to": "到", + "data": "資料", + "status-sent": "已傳送", + "cost-fee": "成本/費用" +} diff --git a/translations/zh_hant_tw.json b/translations/zh_hant_tw.json new file mode 100644 index 00000000000..6a3bdef8ed4 --- /dev/null +++ b/translations/zh_hant_tw.json @@ -0,0 +1,195 @@ +{ + "validation-amount-invalid-number": "金額不是一個有效的數字", + "transaction-details": "交易明細", + "confirm": "確認", + "description": "簡介", + "amount": "金額", + "open": "開啟", + "close-app-title": "警告!", + "members-active": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "chat-name": "聊天名稱", + "phew-here-is-your-passphrase": "嗨,真不容易。這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳戶。", + "public-group-topic": "話題", + "chat-settings": "對話設定", + "offline": "離線", + "invited": "已邀請", + "address": "地址", + "new-public-group-chat": "加入公共聊天", + "datetime-hour": { + "one": "小時", + "other": "小時" + }, + "wallet-settings": "錢包設定", + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "close-app-button": "確認", + "block": "塊", + "camera-access-error": "要授予所需的攝像機許可,請轉到系統設定,並確定選中了 “Status” > “攝像機”。", + "wallet-invalid-address": "無效的地址: \n {{data}}", + "remove": "刪除", + "add-members": "新增成員", + "yes": "是", + "dapps": "ÐApps", + "network-settings": "網路設定", + "photos-access-error": "要授予所需的照片許可,請轉到系統設定,並確保選中了 “Status” > “照片”。", + "hash": "雜湊", + "done": "完成", + "close-chat": "刪除聊天", + "new-group-chat": "新的群聊", + "wallet": "錢包", + "wallet-request": "請求", + "sign-in": "登入", + "datetime-yesterday": "昨天", + "create-new-account": "建立新賬戶", + "datetime-ago": "前", + "contacts": "聯絡人", + "got-it": "知道了", + "public-chats": "公共聊天", + "not-applicable": "對未簽名交易不可用", + "active-online": "線上", + "password": "密碼", + "send-request": "傳送請求", + "paste-json": "貼上 JSON", + "browsing-title": "瀏覽", + "transactions-history-empty": "暫無交易歷史記錄", + "discover": "發現", + "browsing-cancel": "取消", + "intro-status": "跟我聊天,以設定你的帳戶並更改你的設定!", + "name": "名稱", + "gas-price": "Gas 價格", + "validation-amount-is-too-precise": "金額過於精確,所能傳送的最小單位是1 Wei (1x10^-18 ETH)", + "copy-transaction-hash": "複製交易雜湊", + "show-qr": "顯示二維碼", + "connect": "連線", + "edit": "編輯", + "account-generation-message": "給我一點時間,我得瘋狂地計算一下,才能生成你的帳戶!", + "remove-network": "移除網路", + "no-messages": "無訊息", + "passphrase": "密碼", + "recipient": "接收方", + "members-title": "成員", + "new-group": "新增群組", + "phone-e164": "國際1", + "connected": "已連線", + "rpc-url": "RPC 連結", + "settings": "設定", + "specify-rpc-url": "指定一個 RPC 連結", + "gas-limit": "Gas 限制", + "delete": "刪除", + "chats": "聊天", + "transaction-sent": "傳送的交易", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "拍攝", + "chat": "聊天", + "start-conversation": "開始對話", + "save": "儲存", + "all": "全部", + "confirmations-helper-text": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "sharing-copy-to-clipboard": "複製到剪貼簿", + "sync-in-progress": "正在同步...", + "enter-password": "輸入密碼", + "send-transaction": "傳送交易", + "confirmations": "確認", + "incorrect-code": [ + "str", + "抱歉,程式碼不正確,請重新輸入" + ], + "image-source-gallery": "從相簿中選擇", + "sync-synced": "已同步", + "currency": "貨幣", + "status-pending": "等待中", + "connecting-requires-login": "連線其它網路需要登入", + "datetime-day": { + "one": "天", + "other": "天" + }, + "request-transaction": "請求交易", + "wallet-send": "傳送", + "scan-qr": "掃描二維碼", + "contact-s": { + "one": "聯絡人", + "other": "聯絡人" + }, + "gas-used": "使用的 Gas", + "type": "型別", + "next": "下一個", + "recent": "最近", + "open-on-etherscan": "開啟 Etherscan.io", + "share": "分享", + "status": "狀態", + "from": "從", + "wrong-password": "密碼錯誤", + "in-contacts": "已新增聯絡人", + "transactions-sign": "簽名", + "sharing-share": "分享...", + "type-a-message": "輸入訊息...", + "usd-currency": "USD", + "url": "連結", + "add-network": "新增網路", + "unknown-status-go-error": "未知的 status-go 錯誤", + "clear-history": "清空歷史記錄", + "no-contacts": "還沒有聯絡人", + "soon": "不久", + "close-app-content": "應用將會停止並關閉。當你重新開啟應用,選中的網路將會被使用", + "datetime-today": "今天", + "web-view-error": "糟糕,出錯了", + "error": "錯誤", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "不能新增自己", + "transaction-description": "請等待達到至少12個確認,來確保交易已被安全地處理。", + "add-to-contacts": "新增到聯絡人", + "available": "可用", + "You": "你", + "main-wallet": "主錢包", + "transactions": "交易", + "members": { + "one": "1 個成員", + "other": "{{count}} 個成員", + "zero": "無成員" + }, + "intro-message1": "歡迎來到 Status\n點選該訊息來設定你的密碼並開始!", + "eth": "ETH", + "transactions-history": "歷史記錄", + "new-contact": "新的聯絡人", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "恢復", + "wallet-total-value": "總值", + "nonce": "隨機數", + "new-network": "新建網路", + "datetime-minute": { + "one": "分鐘", + "other": "分鐘" + }, + "browsing-open-in-android-web-browser": "在網路瀏覽器中開啟", + "browsing-open-in-ios-web-browser": "在網路瀏覽器中開啟", + "wallet-insufficient-funds": "資金不足", + "edit-profile": "編輯個人資料", + "active-unknown": "未知", + "transaction-failed": "交易失敗", + "public-key": "公鑰", + "profile": "個人資料", + "wallet-choose-recipient": "選擇接收方", + "none": "無", + "removed": "已刪除", + "no": "否", + "transactions-filter-select-all": "全部選中", + "transactions-filter-title": "過濾歷史記錄", + "message": "資訊", + "here-is-your-passphrase": "這是你的密碼,*寫下來並好好保管它!* 你需要用它來恢復你的帳戶。", + "wallet-assets": "資產", + "image-source-title": "個人資料圖片", + "current-network": "當前網路", + "left": "剩餘", + "to": "到", + "data": "資料", + "status-sent": "已傳送", + "cost-fee": "成本/費用" +} diff --git a/translations/zh_wuu.json b/translations/zh_wuu.json new file mode 100644 index 00000000000..19b1a17f3cb --- /dev/null +++ b/translations/zh_wuu.json @@ -0,0 +1,131 @@ +{ + "confirm": "确认", + "amount": "金额", + "members-active": { + "one": "1个会员,1个活跃成员", + "other": "{{count}} 会员, {{count}} 活跃成员", + "zero": "无会员" + }, + "chat-name": "聊天名称", + "phew-here-is-your-passphrase": "*唷* 是很难的,这是您的口令短语,*写下来并保证安全!* 您将需要它来恢复您的帐户。", + "public-group-topic": "主题", + "chat-settings": "聊天设置", + "offline": "离线", + "invited": "已邀请", + "address": "地址", + "new-public-group-chat": "加入公开聊天", + "datetime-hour": { + "one": "小时", + "other": "小时" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "要授予所需的摄像机许可,请转到系统设置,并确定选择了“状态”>“摄像机”。", + "remove": "移动", + "add-members": "添加会员", + "photos-access-error": "要授予所需的照片许可,请转到系统设置,并确保选择“状态“>“照片“。", + "done": "完成", + "close-chat": "刪除聊天", + "new-group-chat": "新的群聊", + "sign-in": "登录", + "datetime-yesterday": "昨天", + "create-new-account": "建立新帐户", + "datetime-ago": "之前", + "contacts": "联系人", + "got-it": "得到了", + "active-online": "在线", + "password": "密码", + "browsing-title": "浏览", + "discover": "发现", + "browsing-cancel": "取消", + "intro-status": "与我聊天设置您的帐户,并更改您的设置!", + "name": "名称", + "show-qr": "显示QR", + "connect": "连接", + "edit": "编辑", + "account-generation-message": "给我一秒,我要做一些疯狂的计算生成您的帐号!", + "no-messages": "无信息", + "passphrase": "口令短语", + "recipient": "收件人", + "members-title": "会员", + "new-group": "新增群組", + "phone-e164": "国际1", + "settings": "设置", + "delete": "刪除", + "chats": "聊天", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "截图", + "start-conversation": "开始对话", + "save": "保存", + "sharing-copy-to-clipboard": "复制到剪贴板", + "sync-in-progress": "同步中...", + "send-transaction": "发送交易", + "incorrect-code": [ + "str", + "对不起,代码不正确,请再输入一次" + ], + "image-source-gallery": "从相册中选择", + "sync-synced": "同步", + "status-pending": "待定", + "datetime-day": { + "one": "日", + "other": "日" + }, + "scan-qr": "扫描QR", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "next": "下一个", + "recent": "最近", + "status": "状态", + "from": "从", + "wrong-password": "错误的密码", + "in-contacts": "在联系人", + "sharing-share": "分享...", + "type-a-message": "输入讯息...", + "clear-history": "清除历史", + "no-contacts": "暂无联系人", + "datetime-today": "今天", + "web-view-error": "啊哦,错误", + "error": "错误", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "您不能添加您自己", + "add-to-contacts": "添加到联系人", + "available": "可用", + "You": "您", + "main-wallet": "主要钱包", + "members": { + "one": "1人", + "other": "{{count}}会员", + "zero": "无会员" + }, + "intro-message1": "欢迎来到\n点击这一消息设置您的密码并开始!", + "new-contact": "新的联系人", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "恢复", + "datetime-minute": { + "one": "分钟", + "other": "分钟" + }, + "browsing-open-in-android-web-browser": "在网络浏览器中打开", + "browsing-open-in-ios-web-browser": "在网络浏览器中打开", + "edit-profile": "编辑个人资料", + "active-unknown": "未知", + "public-key": "公共密钥", + "profile": "个人资料", + "none": "无", + "removed": "已移除", + "message": "消息", + "here-is-your-passphrase": "这是您的口令短语,*写下来并保证安全!* 您将需要它来恢复您的帐户。", + "image-source-title": "个人资料照片", + "current-network": "当前网络", + "left": "离开", + "to": "至", + "status-sent": "已发送", + "data": "数据" +} diff --git a/translations/zh_yue.json b/translations/zh_yue.json new file mode 100644 index 00000000000..eb8b81ad78d --- /dev/null +++ b/translations/zh_yue.json @@ -0,0 +1,131 @@ +{ + "confirm": "確認", + "amount": "金額", + "members-active": { + "one": "1位成員, 1位活躍", + "other": "{{count}}位成員, {{count}}位活躍", + "zero": "暫無成員" + }, + "chat-name": "用戶名稱", + "phew-here-is-your-passphrase": "*啊* 那可真不簡單。 這是你的臨時登入碼。 *請記錄並保存於安全地方!* 你將會需要它,以恢復你的帳戶。", + "public-group-topic": "主題", + "chat-settings": "聊天設置", + "offline": "離線", + "invited": "邀請", + "address": "地址", + "new-public-group-chat": "加入公開聊天", + "datetime-hour": { + "one": "小時", + "other": "小時" + }, + "datetime-ago-format": "{{number}} {{time-intervals}} {{ago}}", + "camera-access-error": "要授予所需的攝像機許可,請轉到系統設置,並確定選擇了“狀態”>“攝像機”。", + "remove": "刪除", + "add-members": "增添成員", + "photos-access-error": "要授予所需的照片許可,請轉到系統設置,並確保選擇“狀態“>“照片“。", + "done": "完成", + "close-chat": "刪除對話", + "new-group-chat": "新增群聊", + "sign-in": "登入", + "datetime-yesterday": "昨天", + "create-new-account": "建立新帳號", + "datetime-ago": "之前", + "contacts": "聯絡人", + "got-it": "得到了", + "active-online": "在線", + "password": "密碼", + "browsing-title": "瀏覽", + "discover": "新發現", + "browsing-cancel": "取消", + "intro-status": "如需設置新帳戶或更改現有設置,請與我聊天!", + "name": "名稱", + "show-qr": "暫無聯絡人", + "connect": "連接", + "edit": "編輯", + "account-generation-message": "請給我一秒鐘。我正在瘋狂地運算,以啟動你的帳戶!", + "no-messages": "沒有新訊息", + "passphrase": "臨時登入碼", + "recipient": "收件人", + "members-title": "會員", + "new-group": "新增群組", + "phone-e164": "國際1", + "settings": "設置", + "delete": "刪除", + "chats": "聊天史", + "transaction": "交易", + "public-group-status": "公共", + "image-source-make-photo": "捕獲照片", + "start-conversation": "開始對話", + "save": "儲存", + "sharing-copy-to-clipboard": "複製到剪貼板", + "sync-in-progress": "正在同步...", + "send-transaction": "發送交易", + "incorrect-code": [ + "str", + "對不起,代碼不正確,請重新輸入" + ], + "image-source-gallery": "從圖庫中選取", + "sync-synced": "已同步", + "status-pending": "待定", + "datetime-day": { + "one": "天", + "other": "天" + }, + "scan-qr": "掃描 QR", + "contact-s": { + "one": "contact", + "other": "contacts" + }, + "next": "下一個", + "recent": "最近發現", + "status": "狀態", + "from": "從", + "wrong-password": "密碼錯誤", + "in-contacts": "在聯絡資訊", + "sharing-share": "分享...", + "type-a-message": "輸入訊息...", + "clear-history": "清除歷史記錄", + "no-contacts": "No contacts yet", + "datetime-today": "今天", + "web-view-error": "抱歉,錯誤", + "error": "錯誤", + "more": "更多", + "cancel": "取消", + "can-not-add-yourself": "你不能添加自己", + "add-to-contacts": "添加到通訊錄", + "available": "有空", + "You": "你", + "main-wallet": "主錢包", + "members": { + "one": "1位成員", + "other": "{{count}} 位成員", + "zero": "暫無成員" + }, + "intro-message1": "歡迎來到Status\n請點擊此短訊,以設置你的密碼及開始!", + "new-contact": "新增聯絡", + "datetime-second": { + "one": "秒", + "other": "秒" + }, + "recover": "還原", + "datetime-minute": { + "one": "分鐘", + "other": "分鐘" + }, + "browsing-open-in-android-web-browser": "在網絡瀏覽器中打開", + "browsing-open-in-ios-web-browser": "在網絡瀏覽器中打開", + "edit-profile": "編輯個人資料", + "active-unknown": "未知", + "public-key": "公共鑰匙", + "profile": "用戶簡介", + "none": "不存在", + "removed": "刪除", + "message": "短訊", + "here-is-your-passphrase": "這是你的臨時登入碼。 *請記錄並保存於安全地方!* 你將會需要它,以恢復你的帳戶。", + "image-source-title": "封面照片", + "current-network": "當前網絡", + "left": "離開", + "to": "至", + "status-sent": "發送成功", + "data": "數據" +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000000..714506024fa --- /dev/null +++ b/yarn.lock @@ -0,0 +1,11860 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" + integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.12.tgz#b4eb2d7ebc3449b062381644c93050db545b70ee" + integrity sha512-44ODe6O1IVz9s2oJE3rZ4trNNKTX9O7KpQpfAP4t8QII/zwrVRHL7i2pxhqtcY7tqMLrrKfMlBKnm1QlrRFs5w== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.12" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-module-transforms" "^7.17.12" + "@babel/helpers" "^7.17.9" + "@babel/parser" "^7.17.12" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.12" + "@babel/types" "^7.17.12" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.20.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.17.12", "@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/generator@^7.20.0", "@babel/generator@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.15.tgz#1564189c7ec94cb8f77b5e8a90c4d200d21b2339" + integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA== + dependencies: + "@babel/types" "^7.22.15" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" + integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== + dependencies: + "@babel/types" "^7.21.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.4.0", "@babel/generator@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" + integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== + dependencies: + "@babel/types" "^7.9.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/generator@^7.7.2": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-builder-react-jsx@^7.20.0": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.22.10.tgz#591b1b44a80eb16123b46ad55e9ba42335d6f103" + integrity sha512-cZr0nzCwrMp7Z8owt+YN8OncOqhG1eZLp/aRT5ftBnkLJTCB3Dnq/t52vSfWc6sGRWdDeawbksuh3pYQGCzVwA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/types" "^7.22.10" + +"@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz#b04d915ce92ce363666f816a884cdcfc9be04953" + integrity sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5" + integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz#82c825cadeeeee7aad237618ebbe8fa1710015d7" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + +"@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-function-name@^7.9.5": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" + integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.9.5" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz#b95a144896f6d491ca7863576f820f3628818621" + integrity sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-member-expression-to-functions@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== + dependencies: + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.17.12", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": + version "7.22.17" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz#7edf129097a51ccc12443adbc6320e90eab76693" + integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-plugin-utils@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-plugin-utils@^7.12.13": + version "7.13.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" + integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== + +"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-plugin-utils@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": + version "7.22.17" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz#dabaa50622b3b4670bd6546fc8db23eb12d89da0" + integrity sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.17" + +"@babel/helper-replace-supers@^7.16.7": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== + dependencies: + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-replace-supers@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-identifier@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044" + integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" + integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helper-wrap-function@^7.22.17": + version "7.22.17" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz#222ac3ff9cc8f9b617cc1e5db75c0b538e722801" + integrity sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.17" + +"@babel/helpers@^7.17.9", "@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16" + integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + +"@babel/parser@^7.13.16": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" + integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw== + +"@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": + version "7.22.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95" + integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== + +"@babel/parser@^7.16.7", "@babel/parser@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" + integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== + +"@babel/parser@^7.17.12", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/parser@^7.18.10": + version "7.20.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2" + integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg== + +"@babel/parser@^7.20.7", "@babel/parser@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" + integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + +"@babel/plugin-proposal-async-generator-functions@^7.0.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.13.0", "@babel/plugin-proposal-class-properties@^7.18.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-export-default-from@^7.0.0": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz#091f4794dbce4027c03cf4ebc64d3fb96b75c206" + integrity sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-default-from" "^7.18.6" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.20.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" + integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz#8df076711a4818c4ce4f23e61d622b0ba2ff84bc" + integrity sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" + integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-jsx@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" + integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" + integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-typescript@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-typescript@^7.23.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" + integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz#3b153af4a6b779f340d5b80d3f634f55820aefa3" + integrity sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-block-scoping@^7.20.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz#494eb82b87b5f8b1d8f6f28ea74078ec0a10a841" + integrity sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz#e7404ea5bb3387073b9754be654eecb578324694" + integrity sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.20.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" + integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.22.5" + +"@babel/plugin-transform-flow-strip-types@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" + integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" + integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== + dependencies: + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz#b11810117ed4ee7691b29bd29fd9f3f98276034f" + integrity sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg== + dependencies: + "@babel/helper-module-transforms" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz#3386be5875d316493b517207e8f1931d93154bb1" + integrity sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-assign@^7.16.7": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.23.3.tgz#64177e8cf943460c7f0e1c410277546804f59625" + integrity sha512-TPJ6O7gVC2rlQH2hvQGRH273G1xdoloCj9Pc07Q7JbIZYDi+Sv5gaE2fu+r5E7qK4zyt6vj0FbZaZTRU5C3OMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" + +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz#d7a5996c2f7ca4ad2ad16dbb74444e5c4385b1ba" + integrity sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.0.0": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz#ec98d4a9baafc5a1eb398da4cf94afbb40254a54" + integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.19.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz#88578ae8331e5887e8ce28e4c9dc83fb29da0b86" + integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" + integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.21.0" + +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9" + integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.19.0" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" + integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.4.tgz#587eaf6a39edb8c06215e550dc939faeadd750bf" + integrity sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-typescript" "^7.17.12" + +"@babel/plugin-transform-typescript@^7.21.3", "@babel/plugin-transform-typescript@^7.5.0": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-typescript@^7.23.3": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" + integrity sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.23.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.23.3" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.0.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.20.0": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.15.tgz#142716f8e00bc030dae5b2ac6a46fbd8b3e18ff8" + integrity sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.15" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.15" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.15" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-systemjs" "^7.22.11" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.22.15" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.22.15" + babel-plugin-polyfill-corejs2 "^0.4.5" + babel-plugin-polyfill-corejs3 "^0.8.3" + babel-plugin-polyfill-regenerator "^0.5.2" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-flow@^7.13.13": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.21.4.tgz#a5de2a1cafa61f0e0b3af9b30ff0295d38d3608f" + integrity sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-flow-strip-types" "^7.21.0" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.13.0": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz#b913ac8e6aa8932e47c21b01b4368d8aa239a529" + integrity sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-syntax-jsx" "^7.21.4" + "@babel/plugin-transform-modules-commonjs" "^7.21.2" + "@babel/plugin-transform-typescript" "^7.21.3" + +"@babel/preset-typescript@^7.16.7": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" + integrity sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/plugin-transform-modules-commonjs" "^7.23.3" + "@babel/plugin-transform-typescript" "^7.23.3" + +"@babel/preset-typescript@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz#40269e0a0084d56fc5731b6c40febe1c9a4a3e8c" + integrity sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-typescript" "^7.17.12" + +"@babel/register@7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827" + integrity sha512-f/+CRmaCe7rVEvcvPvxeA8j5aJhHC3aJie7YuqcMDhUOuyWLA7J/aNrTaHIzoWPEhpHA54mec4Mm8fv8KBlv3g== + dependencies: + core-js "^2.5.7" + find-cache-dir "^1.0.0" + home-or-tmp "^3.0.0" + lodash "^4.17.10" + mkdirp "^0.5.1" + pirates "^4.0.0" + source-map-support "^0.5.9" + +"@babel/register@^7.13.16": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.21.0.tgz#c97bf56c2472e063774f31d344c592ebdcefa132" + integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.5" + source-map-support "^0.5.16" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.3.1": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a" + integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q== + dependencies: + regenerator-runtime "^0.13.10" + +"@babel/runtime@^7.8.4": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.0.0", "@babel/template@^7.18.10", "@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/template@^7.3.3": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/template@^7.4.0", "@babel/template@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.17.12", "@babel/traverse@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.20.0": + version "7.22.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.17.tgz#b23c203ab3707e3be816043081b4a994fcacec44" + integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.16" + "@babel/types" "^7.22.17" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.2": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" + integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.3" + "@babel/types" "^7.21.3" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.4.3": + version "7.9.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" + integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.5" + "@babel/helper-function-name" "^7.9.5" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.5": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.12.tgz#1210690a516489c0200f355d87619157fbbd69a0" + integrity sha512-rH8i29wcZ6x9xjzI5ILHL/yZkbQnCERdHlogKuIb4PUr7do4iT8DPekrTbBLWTnRQm6U0GYABbTMSzijmEqlAg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@babel/types@^7.18.10", "@babel/types@^7.18.2", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.22.10", "@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@babel/types@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" + integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/shims@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/shims/-/shims-5.7.0.tgz#ee32e543418595774029c5ea6123ea8995e7e154" + integrity sha512-WeDptc6oAprov5CCN2LJ/6/+dC9gTonnkdAtLepm/7P5Z+3PRxS5NpfVWmOMs1yE4Vitl2cU8bOPWC0GvGSbVg== + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@firebase/analytics-compat@0.2.17": + version "0.2.17" + resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.17.tgz#c3cfc8ffb863d574ec26d86f9c8344d752832995" + integrity sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww== + dependencies: + "@firebase/analytics" "0.10.11" + "@firebase/analytics-types" "0.8.3" + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/analytics-types@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.3.tgz#d08cd39a6209693ca2039ba7a81570dfa6c1518f" + integrity sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg== + +"@firebase/analytics@0.10.11": + version "0.10.11" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.11.tgz#6896413e92613573af775c45050af889a43676da" + integrity sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/app-check-compat@0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.18.tgz#abe63858fca86b61ea431e0d9e58ccb8bac1b275" + integrity sha512-qjozwnwYmAIdrsVGrJk+hnF1WBois54IhZR6gO0wtZQoTvWL/GtiA2F31TIgAhF0ayUiZhztOv1RfC7YyrZGDQ== + dependencies: + "@firebase/app-check" "0.8.11" + "@firebase/app-check-types" "0.5.3" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/app-check-interop-types@0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.3.tgz#ed9c4a4f48d1395ef378f007476db3940aa5351a" + integrity sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A== + +"@firebase/app-check-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.3.tgz#38ba954acf4bffe451581a32fffa20337f11d8e5" + integrity sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng== + +"@firebase/app-check@0.8.11": + version "0.8.11" + resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.11.tgz#3c67148046fea0a0a9a1eecf1a17fdc31a76eda7" + integrity sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/app-compat@0.2.48": + version "0.2.48" + resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.48.tgz#4cc013dc53b12c9c2ebda6369bbeb99f3cc59975" + integrity sha512-wVNU1foBIaJncUmiALyRxhHHHC3ZPMLIETTAk+2PG87eP9B/IDBsYUiTpHyboDPEI8CgBPat/zN2v+Snkz6lBw== + dependencies: + "@firebase/app" "0.10.18" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/app-types@0.9.3": + version "0.9.3" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.3.tgz#8408219eae9b1fb74f86c24e7150a148460414ad" + integrity sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw== + +"@firebase/app@0.10.18": + version "0.10.18" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.10.18.tgz#219d897beedcc833ab6d7bdc4ea810ece9e32df6" + integrity sha512-VuqEwD/QRisKd/zsFsqgvSAx34mZ3WEF47i97FD6Vw4GWAhdjepYf0Hmi6K0b4QMSgWcv/x0C30Slm5NjjERXg== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/auth-compat@0.5.17": + version "0.5.17" + resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.5.17.tgz#60d9222dae734fb8740ac565e342dc11f92d2392" + integrity sha512-Shi6rqLqzU9KLXnUCmlLvVByq1kiG3oe7Wpbf5m1CgS7NiRx2pSSn0HLaRRozdkaizNzMGGj+3oHmNYQ7kU6xA== + dependencies: + "@firebase/auth" "1.8.2" + "@firebase/auth-types" "0.12.3" + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/auth-interop-types@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.4.tgz#176a08686b0685596ff03d7879b7e4115af53de0" + integrity sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA== + +"@firebase/auth-types@0.12.3": + version "0.12.3" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.12.3.tgz#650e54a36060b5ea012075ddbd3cb26566334c41" + integrity sha512-Zq9zI0o5hqXDtKg6yDkSnvMCMuLU6qAVS51PANQx+ZZX5xnzyNLEBO3GZgBUPsV5qIMFhjhqmLDxUqCbnAYy2A== + +"@firebase/auth@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-1.8.2.tgz#4559dfabe40bc7a0605fb2a73f401d83cb32fe80" + integrity sha512-q+071y2LWe0bVnjqaX3BscqZwzdP0GKN2YBKapLq4bV88MPfCtWwGKmDhNDEDUmioOjudGXkUY5cvvKqk3mlUg== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/component@0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.12.tgz#08905a534e9b769164e7e1b1e80f6e7611eb67f3" + integrity sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw== + dependencies: + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/data-connect@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/data-connect/-/data-connect-0.2.0.tgz#7133cb40096466dc17ad01a50a5f2c383605df20" + integrity sha512-7OrZtQoLSk2fiGijhIdUnTSqEFti3h1EMhw9nNiSZ6jJGduw4Pz6jrVvxjpZJtGH/JiljbMkBnPBS2h8CTRKEw== + dependencies: + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/database-compat@2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-2.0.2.tgz#9ddf474b593766a41ea576185cdf115e28f0cb50" + integrity sha512-5zvdnMsfDHvrQAVM6jBS7CkBpu+z3YbpFdhxRsrK1FP45IEfxlzpeuEUb17D/tpM10vfq4Ok0x5akIBaCv7gfA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/database" "1.0.11" + "@firebase/database-types" "1.0.8" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/database-types@1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.8.tgz#eddcce594be118bf9aebb043b5a6d51cfb6de620" + integrity sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g== + dependencies: + "@firebase/app-types" "0.9.3" + "@firebase/util" "1.10.3" + +"@firebase/database@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.11.tgz#5b9960a07a0d49361f67fc69affc779cae4e07e3" + integrity sha512-gLrw/XeioswWUXgpVKCPAzzoOuvYNqK5fRUeiJTzO7Mlp9P6ylFEyPJlRBl1djqYye641r3MX6AmIeMXwjgwuQ== + dependencies: + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + faye-websocket "0.11.4" + tslib "^2.1.0" + +"@firebase/firestore-compat@0.3.41": + version "0.3.41" + resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.41.tgz#434d86fd603b5ebcde19b5695b9b2a53bb23be8b" + integrity sha512-J/PgWKEt0yugETOE7lOabT16hsV21cLzSxERD7ZhaiwBQkBTSf0Mx9RhjZRT0Ttqe4weM90HGZFyUBqYA73fVA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/firestore" "4.7.6" + "@firebase/firestore-types" "3.0.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/firestore-types@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-3.0.3.tgz#7d0c3dd8850c0193d8f5ee0cc8f11961407742c1" + integrity sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q== + +"@firebase/firestore@4.7.6": + version "4.7.6" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-4.7.6.tgz#877a37b615d86c61ac9ba7ddd0a967feb99380ac" + integrity sha512-aVDboR+upR/44qZDLR4tnZ9pepSOFBbDJnwk7eWzmTyQq2nZAVG+HIhrqpQawmUVcDRkuJv2K2UT2+oqR8F8TA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + "@firebase/webchannel-wrapper" "1.0.3" + "@grpc/grpc-js" "~1.9.0" + "@grpc/proto-loader" "^0.7.8" + tslib "^2.1.0" + +"@firebase/functions-compat@0.3.18": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.18.tgz#c6a4f6b0762c6990db0aab244420c3e1240fda2b" + integrity sha512-N7+RN5GVus2ORB8cqfSNhfSn4iaYws6F8uCCfn4mtjC7zYS/KH6muzNAhZUdUqlv5YazbVmvxlAoYYF39i8Qzg== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/functions" "0.12.1" + "@firebase/functions-types" "0.6.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/functions-types@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.3.tgz#f5faf770248b13f45d256f614230da6a11bfb654" + integrity sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg== + +"@firebase/functions@0.12.1": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.12.1.tgz#09ca7386619b0c50c535f6695e5be0712d3e4730" + integrity sha512-QucRiFrvMMmIGTRhL7ZK2IeBnAWP7lAmfFREMpEtX47GjVqDqGxdFs+Mg7XBzxSc9UjDO4Rxf+aE9xJHU6bGwg== + dependencies: + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/auth-interop-types" "0.2.4" + "@firebase/component" "0.6.12" + "@firebase/messaging-interop-types" "0.2.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/installations-compat@0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.12.tgz#ee6396f3cc787c0dd4fc5dd87fec1db9dbb40c97" + integrity sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/installations-types" "0.5.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/installations-types@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.3.tgz#cac8a14dd49f09174da9df8ae453f9b359c3ef2f" + integrity sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA== + +"@firebase/installations@0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.12.tgz#6d9ad14e60caa8fae4ec0120c0e46ceb9d6fbdae" + integrity sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/logger@0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.4.tgz#29e8379d20fd1149349a195ee6deee4573a86f48" + integrity sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g== + dependencies: + tslib "^2.1.0" + +"@firebase/messaging-compat@0.2.16": + version "0.2.16" + resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.16.tgz#533af4542a54b932146d175d5687aedd428be972" + integrity sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/messaging" "0.12.16" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/messaging-interop-types@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.3.tgz#e647c9cd1beecfe6a6e82018a6eec37555e4da3e" + integrity sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q== + +"@firebase/messaging@0.12.16": + version "0.12.16" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.16.tgz#bd8a768274bdc4368396bd9eaa356bffb998bef2" + integrity sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/messaging-interop-types" "0.2.3" + "@firebase/util" "1.10.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/performance-compat@0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.12.tgz#069284005e3f29339b570ee517b813d9bdbc0a89" + integrity sha512-DyCbDTIwtBTGsEiQxTz/TD23a0na2nrDozceQ5kVkszyFYvliB0YK/9el0wAGIG91SqgTG9pxHtYErzfZc0VWw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/performance" "0.6.12" + "@firebase/performance-types" "0.2.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/performance-types@0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.3.tgz#5ce64e90fa20ab5561f8b62a305010cf9fab86fb" + integrity sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ== + +"@firebase/performance@0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.12.tgz#58763cbbe31673351e1494875a5c10c6b68e1322" + integrity sha512-8mYL4z2jRlKXAi2hjk4G7o2sQLnJCCuTbyvti/xmHf5ZvOIGB01BZec0aDuBIXO+H1MLF62dbye/k91Fr+yc8g== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/remote-config-compat@0.2.12": + version "0.2.12" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.12.tgz#ae0b597b3228deef0e3c6b2c6e631f19213eca4c" + integrity sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/remote-config" "0.5.0" + "@firebase/remote-config-types" "0.4.0" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/remote-config-types@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.4.0.tgz#91b9a836d5ca30ced68c1516163b281fbb544537" + integrity sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg== + +"@firebase/remote-config@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.5.0.tgz#30212fa77adba8a62fc6408eb32122147ae80790" + integrity sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/installations" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/storage-compat@0.3.15": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.15.tgz#02a18e0e1866849206dba7b075a4dcd99489aae7" + integrity sha512-Z9afjrK2O9o1ZHWCpprCGZ1BTc3BbvpZvi6tkSteC8H3W/fMM6x+RoSunlzD3hEVV5bkbwdJIqNClLMchvyoPA== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/storage" "0.13.5" + "@firebase/storage-types" "0.8.3" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/storage-types@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.3.tgz#2531ef593a3452fc12c59117195d6485c6632d3d" + integrity sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg== + +"@firebase/storage@0.13.5": + version "0.13.5" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.13.5.tgz#108c86c9cd359aebd306882eb61ce6a8b1deb417" + integrity sha512-sB/7HNuW0N9tITyD0RxVLNCROuCXkml5i/iPqjwOGKC0xiUfpCOjBE+bb0ABMoN1qYZfqk0y9IuI2TdomjmkNw== + dependencies: + "@firebase/component" "0.6.12" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/util@1.10.3": + version "1.10.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.10.3.tgz#63fc5fea7b36236219c4875731597494416678d1" + integrity sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A== + dependencies: + tslib "^2.1.0" + +"@firebase/vertexai@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@firebase/vertexai/-/vertexai-1.0.3.tgz#815efed8c16105676ea090daed963be72a01fb68" + integrity sha512-SQHg/RPb3LwQs/xiLcvAZYz9NXyDSZUIIwvgsKh6e4wdULAfyPCZIu6Y2ZYIhZLfk9Q44cKZ+++7RPTaqQJdYA== + dependencies: + "@firebase/app-check-interop-types" "0.3.3" + "@firebase/component" "0.6.12" + "@firebase/logger" "0.4.4" + "@firebase/util" "1.10.3" + tslib "^2.1.0" + +"@firebase/webchannel-wrapper@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.3.tgz#a73bab8eb491d7b8b7be2f0e6c310647835afe83" + integrity sha512-2xCRM9q9FlzGZCdgDMJwc0gyUkWFtkosy7Xxr6sFgQwn+wMNIWd7xIvYNauU1r64B5L5rsGKy/n9TKJ0aAFeqQ== + +"@grpc/grpc-js@~1.9.0": + version "1.9.15" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.15.tgz#433d7ac19b1754af690ea650ab72190bd700739b" + integrity sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ== + dependencies: + "@grpc/proto-loader" "^0.7.8" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.7.8": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.5" + yargs "^17.7.2" + +"@hapi/hoek@^9.0.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.0.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" + integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== + dependencies: + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== + dependencies: + jest-get-type "^28.0.2" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== + dependencies: + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + lolex "^5.0.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^25.1.0": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" + integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.0.0": + version "29.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a" + integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@json-rpc-tools/types@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" + integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" + integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== + dependencies: + "@json-rpc-tools/types" "^1.7.6" + "@pedrouid/environment" "^1.0.1" + +"@mapbox/node-pre-gyp@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.9.tgz#09a8781a3a036151cdebbe8719d6f8b25d4058bc" + integrity sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw== + dependencies: + detect-libc "^2.0.0" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.7" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" + +"@parcel/watcher-android-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" + integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== + +"@parcel/watcher-darwin-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" + integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== + +"@parcel/watcher-darwin-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" + integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== + +"@parcel/watcher-freebsd-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" + integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== + +"@parcel/watcher-linux-arm-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" + integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== + +"@parcel/watcher-linux-arm64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" + integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== + +"@parcel/watcher-linux-arm64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" + integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== + +"@parcel/watcher-linux-x64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" + integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== + +"@parcel/watcher-linux-x64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" + integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== + +"@parcel/watcher-wasm@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz#c4353e4fdb96ee14389856f7f6f6d21b7dcef9e1" + integrity sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA== + dependencies: + is-glob "^4.0.3" + micromatch "^4.0.5" + napi-wasm "^1.1.0" + +"@parcel/watcher-win32-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" + integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== + +"@parcel/watcher-win32-ia32@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" + integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== + +"@parcel/watcher-win32-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" + integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== + +"@parcel/watcher@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" + integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.1" + "@parcel/watcher-darwin-arm64" "2.4.1" + "@parcel/watcher-darwin-x64" "2.4.1" + "@parcel/watcher-freebsd-x64" "2.4.1" + "@parcel/watcher-linux-arm-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-musl" "2.4.1" + "@parcel/watcher-linux-x64-glibc" "2.4.1" + "@parcel/watcher-linux-x64-musl" "2.4.1" + "@parcel/watcher-win32-arm64" "2.4.1" + "@parcel/watcher-win32-ia32" "2.4.1" + "@parcel/watcher-win32-x64" "2.4.1" + +"@pedrouid/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" + integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@react-native-async-storage/async-storage@1.19.3": + version "1.19.3" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz#ad5fe3ed0a82d4624aa4500321c1e09c02daeb46" + integrity sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA== + dependencies: + merge-options "^3.0.4" + +"@react-native-camera-roll/camera-roll@7.5.2": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@react-native-camera-roll/camera-roll/-/camera-roll-7.5.2.tgz#2b248a835fbb8b53d04fc0c2957adba1474d9c99" + integrity sha512-XiVIrW17EFXrFzqB48q6cQOaYeVnw0iC3tH+Jhl+MAHDYGLJp+ulzxCNNwngaMvnVAA5Q2mUMzRocUiJPy8q0g== + +"@react-native-clipboard/clipboard@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@react-native-clipboard/clipboard/-/clipboard-1.13.2.tgz#28adcfc43ed2addddf79a59198ec1b25087c115e" + integrity sha512-uVM55oEGc6a6ZmSATDeTcMm55A/C1km5X47g0xaoF0Zagv7N/8RGvLceA5L/izPwflIy78t7XQeJUcnGSib0nA== + +"@react-native-community/audio-toolkit@git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6": + version "2.0.3" + resolved "git+https://github.com/tbenr/react-native-audio-toolkit.git#7ae9055cf6169b30f5089bda7bfcfc1c40a715e5" + dependencies: + async "^2.6.3" + eventemitter3 "^1.2.0" + lodash "^4.17.15" + +"@react-native-community/blur@4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/blur/-/blur-4.4.1.tgz#72cbc0be5a84022c33091683ec6888925ebcca6e" + integrity sha512-XBSsRiYxE/MOEln2ayunShfJtWztHwUxLFcSL20o+HNNRnuUDv+GXkF6FmM2zE8ZUfrnhQ/zeTqvnuDPGw6O8A== + +"@react-native-community/cli-clean@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz#e8a7910bebc97266fd5068649013a03958021fc4" + integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + +"@react-native-community/cli-config@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.6.tgz#5f0be68270217908a739c32e3155a0e354773251" + integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + cosmiconfig "^5.1.0" + deepmerge "^4.3.0" + glob "^7.1.3" + joi "^17.2.1" + +"@react-native-community/cli-debugger-ui@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz#418027a1ae76850079684d309a732eb378c7f690" + integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== + dependencies: + serve-static "^1.13.1" + +"@react-native-community/cli-doctor@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz#f68b51bbc6554ff4837269d98e9e405044e6f1b9" + integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== + dependencies: + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + command-exists "^1.2.8" + deepmerge "^4.3.0" + envinfo "^7.10.0" + execa "^5.0.0" + hermes-profile-transformer "^0.0.6" + node-stream-zip "^1.9.1" + ora "^5.4.1" + semver "^7.5.2" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + yaml "^2.2.1" + +"@react-native-community/cli-hermes@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz#5ac2c9ee26c69e1ce6b5047ba0f399984a6dea16" + integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== + dependencies: + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + hermes-profile-transformer "^0.0.6" + +"@react-native-community/cli-platform-android@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz#e1103692c659ff0b72ee6f00b7c72578db7376ec" + integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.2.4" + glob "^7.1.3" + logkitty "^0.7.1" + +"@react-native-community/cli-platform-ios@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz#e7decb5ee764f5fdc7a6ad1ba5e15de8929d54a5" + integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== + dependencies: + "@react-native-community/cli-tools" "12.3.6" + chalk "^4.1.2" + execa "^5.0.0" + fast-xml-parser "^4.0.12" + glob "^7.1.3" + ora "^5.4.1" + +"@react-native-community/cli-plugin-metro@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz#ae62de18e998478db60a3fe10dc746162c272dbd" + integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== + +"@react-native-community/cli-server-api@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz#cd78122954a02d22c7821c365938635b51ddd1bd" + integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== + dependencies: + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + compression "^1.7.1" + connect "^3.6.5" + errorhandler "^1.5.1" + nocache "^3.0.1" + pretty-format "^26.6.2" + serve-static "^1.13.1" + ws "^7.5.1" + +"@react-native-community/cli-tools@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz#c39965982347635dfaf1daa7b3c0133b3bd45e64" + integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== + dependencies: + appdirsjs "^1.2.4" + chalk "^4.1.2" + find-up "^5.0.0" + mime "^2.4.1" + node-fetch "^2.6.0" + open "^6.2.0" + ora "^5.4.1" + semver "^7.5.2" + shell-quote "^1.7.3" + sudo-prompt "^9.0.0" + +"@react-native-community/cli-types@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.6.tgz#239de348800fe1ffba3eb1fe0edbeb9306981e57" + integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== + dependencies: + joi "^17.2.1" + +"@react-native-community/cli@12.3.6": + version "12.3.6" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.6.tgz#7a323b78725b959bb8a31cca1145918263ff3c8d" + integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== + dependencies: + "@react-native-community/cli-clean" "12.3.6" + "@react-native-community/cli-config" "12.3.6" + "@react-native-community/cli-debugger-ui" "12.3.6" + "@react-native-community/cli-doctor" "12.3.6" + "@react-native-community/cli-hermes" "12.3.6" + "@react-native-community/cli-plugin-metro" "12.3.6" + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-types" "12.3.6" + chalk "^4.1.2" + commander "^9.4.1" + deepmerge "^4.3.0" + execa "^5.0.0" + find-up "^4.1.0" + fs-extra "^8.1.0" + graceful-fs "^4.1.3" + prompts "^2.4.2" + semver "^7.5.2" + +"@react-native-community/hooks@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/hooks/-/hooks-3.0.0.tgz#af5f2ca32eea59b792ce9e3d9a4cf0354f9b195f" + integrity sha512-g2OyxXHfwIytXUJitBR6Z/ISoOfp0WKx5FOv+NqJ/CrWjRDcTw6zXE5I1C9axfuh30kJqzWchVfCDrkzZYTxqg== + +"@react-native-community/masked-view@^0.1.6": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.9.tgz#383aca2fb053e3e14405c99cce2d5805df730821" + integrity sha512-nUtzbiLeXU0K9oVed6rc/WVrjGJwDSL4q1RTDkpZYU4j0FeovfuzcNUIDesD2r728LYfIop+uAgQdm+6qBOCug== + +"@react-native-community/netinfo@^4.4.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-4.7.0.tgz#7482d36836cac69d0a0ae25581f65bc472639930" + integrity sha512-a/sDB+AsLEUNmhAUlAaTYeXKyQdFGBUfatqKkX5jluBo2CB3OAuTHfm7rSjcaLB9EmG5iSq3fOTpync2E7EYTA== + +"@react-native-community/push-notification-ios@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@react-native-community/push-notification-ios/-/push-notification-ios-1.4.1.tgz#02b46fb793926f34aa275605ed49f03015e893b3" + integrity sha512-Y+4LS10R+yc17wu54tlDcxgW/SugEAz2dNjmil9I7KUtaZIOc0hTvAE8dUvYTEDvYQ9uYrXI+OqdElTE3FJ3FA== + dependencies: + invariant "^2.2.4" + +"@react-native-community/slider@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-3.0.0.tgz#ffbf78689fc0572fb5c1e2ccb61b2ef074d3dcd2" + integrity sha512-deNc3JHBHz24YN+0DTAocXfrYFIFc1DvsIriMJSsJlR/MvsLzoq2+qwaEN+0/LJ37pstv85wZWY0pNugk4e41g== + +"@react-native-firebase/app@^21.7.2": + version "21.7.2" + resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-21.7.2.tgz#f45c237522d11165ac0cf283031155f043f8920f" + integrity sha512-9lwuRSKdS5Zv5iaVu2HIbgdOrVozC3J7xW8xlcQOBGU/iygDWtt0wXA12UqeFO96qPFYFrmFPO8CU15FTsM/Hw== + dependencies: + firebase "11.2.0" + +"@react-native-firebase/messaging@^21.7.2": + version "21.7.2" + resolved "https://registry.yarnpkg.com/@react-native-firebase/messaging/-/messaging-21.7.2.tgz#12f751d83071880e731d14c77c4082e6b3a3f8fb" + integrity sha512-Kapksse0VjitdCm3gS5aGoCnYb6tEyqOVQYdZg8Sx/eT+iNDZo5fv6+aeV0zALGLjRSZ8GMzTPTFVd5Cu78nEA== + +"@react-native/assets-registry@0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" + integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== + +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.73.2": + version "0.73.2" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.2.tgz#58af4e4c3098f0e6338e88ec64412c014dd51519" + integrity sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.17": + version "0.73.17" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz#37b381a8b503a3296eaa6727e0c52ea8835add28" + integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.6" + "@react-native-community/cli-tools" "12.3.6" + "@react-native/dev-middleware" "0.73.8" + "@react-native/metro-babel-transformer" "0.73.15" + chalk "^4.0.0" + execa "^5.1.1" + metro "^0.80.3" + metro-config "^0.80.3" + metro-core "^0.80.3" + node-fetch "^2.2.0" + readline "^1.3.0" + +"@react-native/debugger-frontend@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" + integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== + +"@react-native/dev-middleware@0.73.8": + version "0.73.8" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" + integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.73.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^1.0.0" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + open "^7.0.3" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/gradle-plugin@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz#aa55784a8c2b471aa89934db38c090d331baf23b" + integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== + +"@react-native/js-polyfills@0.73.1": + version "0.73.1" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" + integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== + +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== + dependencies: + "@babel/core" "^7.20.0" + "@react-native/babel-preset" "0.73.21" + hermes-parser "0.15.0" + nullthrows "^1.1.1" + +"@react-native/metro-config@0.73.5": + version "0.73.5" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.73.5.tgz#791242ca93057d7299ce18379ea11d3bdb368ea9" + integrity sha512-3bNWoHzOzP/+qoLJtRhOVXrnxKmSY3i4y5PXyMQlIvvOI/GQbXulPpEZxK/yUrf1MmeXHLLFufFbQWlfDEDoxA== + dependencies: + "@react-native/js-polyfills" "0.73.1" + "@react-native/metro-babel-transformer" "0.73.15" + metro-config "^0.80.3" + metro-runtime "^0.80.3" + +"@react-native/normalize-color@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" + integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== + +"@react-native/normalize-colors@0.73.2", "@react-native/normalize-colors@^0.73.0": + version "0.73.2" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz#cc8e48fbae2bbfff53e12f209369e8d2e4cf34ec" + integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== + +"@react-native/virtualized-lists@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz#640e594775806f63685435b5d9c3d05c378ccd8c" + integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@reown/walletkit@^1.0.0": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@reown/walletkit/-/walletkit-1.1.2.tgz#6c2a61b483ef50090d0b7c07fb086407f80904c2" + integrity sha512-JcrO8d7FLMG8R99TeUTDpm7lhZjD2oqKuIs6TWK2obLrnpXtD0/S+FdoJoBXffjDzhv38npCMqYs0QGUu1Fo0A== + dependencies: + "@walletconnect/core" "2.17.3" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/sign-client" "2.17.3" + "@walletconnect/types" "2.17.3" + "@walletconnect/utils" "2.17.3" + +"@sideway/address@^4.1.3": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" + integrity sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sinonjs/commons@^1.7.0": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" + integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/ed25519@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" + integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== + dependencies: + "@stablelib/random" "^1.0.2" + "@stablelib/sha512" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" + integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + dependencies: + "@stablelib/hash" "^1.0.1" + "@stablelib/hmac" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hmac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" + integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha256@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha512@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" + integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@testing-library/jest-native@^5.4.3": + version "5.4.3" + resolved "https://registry.yarnpkg.com/@testing-library/jest-native/-/jest-native-5.4.3.tgz#9334c68eaf45db9eb20d0876728cc5d7fc2c3ea2" + integrity sha512-/sSDGaOuE+PJ1Z9Kp4u7PQScSVVXGud59I/qsBFFJvIbcn4P6yYw6cBnBmbPF+X9aRIsTJRDl6gzw5ZkJNm66w== + dependencies: + chalk "^4.1.2" + jest-diff "^29.0.1" + jest-matcher-utils "^29.0.1" + pretty-format "^29.0.3" + redent "^3.0.0" + +"@testing-library/react-native@^12.4.2": + version "12.4.2" + resolved "https://registry.yarnpkg.com/@testing-library/react-native/-/react-native-12.4.2.tgz#1f3e200351ac664ae78169c754c54fe36009a0ef" + integrity sha512-6Uu3M+ga1iDgleS55mGBqI1GHjvKu1T0aESSHkT8dL+M3nIZkW8jZ9HqDSj2UohkMA1hlb+7PRxS+EjwllyANA== + dependencies: + jest-matcher-utils "^29.7.0" + pretty-format "^29.7.0" + redent "^3.0.0" + +"@tsconfig/react-native@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/react-native/-/react-native-3.0.2.tgz#f7db242eee4820f5a3d0edcc86c920bb7d9ec0f2" + integrity sha512-F7IoHEqf741lut4Z2K+IkWQRvXAhBiZMeY5L7BysG7Z2Z3MlIyFR+AagD8jQ/CqC1vowGnRwfLjeuwIpaeoJxA== + +"@types/babel__core@^7.1.14": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" + integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.10" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.10.tgz#d9a99f017317d9b3d1abc2ced45d3bca68df0daf" + integrity sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw== + dependencies: + "@babel/types" "^7.3.0" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/hammerjs@^2.0.36": + version "2.0.36" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" + integrity sha512-7TUK/k2/QGpEAv/BCwSHlYu3NXZhQ9ZwBYpzr9tjlPIL2C5BeGhH3DmVavRx3ZNyELX5TLC91JTz/cen6AAtIQ== + +"@types/hast@^2.0.0": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^28.1.6": + version "28.1.8" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.8.tgz#6936409f3c9724ea431efd412ea0238a0f03b09b" + integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw== + dependencies: + expect "^28.0.0" + pretty-format "^28.0.0" + +"@types/node@*": + version "18.11.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.9.tgz#02d013de7058cea16d36168ef2fc653464cfbad4" + integrity sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg== + +"@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "22.13.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.1.tgz#a2a3fefbdeb7ba6b89f40371842162fac0934f33" + integrity sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew== + dependencies: + undici-types "~6.20.0" + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react-test-renderer@^18.0.0": + version "18.0.1" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.1.tgz#d3f308912fcc4491e4fbc134b906bb65bdee73f6" + integrity sha512-LjEF+jTUCjzd+Qq4eWqsmZvEWPA/l4L0my+YWN5US8Fo3wZOMiyrpBshHDFbkO8usjdO1B430mEWNU/i1MF7Qg== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.21" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.21.tgz#774c37fd01b522d0b91aed04811b58e4e0514ed9" + integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^18.2.6": + version "18.2.45" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.45.tgz#253f4fac288e7e751ab3dc542000fb687422c15c" + integrity sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/unist@*": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" + integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76" + integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg== + dependencies: + "@types/yargs-parser" "*" + +"@walletconnect/core@2.17.3": + version "2.17.3" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.3.tgz#e59045a666951e9fc2e8420130c4f93221bd2492" + integrity sha512-57uv0FW4L6H/tmkb1kS2nG41MDguyDgZbGR58nkDUd1TO/HydyiTByVOhFzIxgN331cnY/1G1rMaKqncgdnOFA== + dependencies: + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.16" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.3" + "@walletconnect/utils" "2.17.3" + "@walletconnect/window-getters" "1.0.1" + events "3.3.0" + lodash.isequal "4.5.0" + uint8arrays "3.1.0" + +"@walletconnect/environment@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" + integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== + dependencies: + tslib "1.14.1" + +"@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" + integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== + dependencies: + keyvaluestorage-interface "^1.0.0" + tslib "1.14.1" + +"@walletconnect/heartbeat@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" + integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== + dependencies: + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + events "^3.3.0" + +"@walletconnect/jsonrpc-provider@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" + integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + +"@walletconnect/jsonrpc-types@1.0.4", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" + integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== + dependencies: + events "^3.3.0" + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" + integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== + dependencies: + "@walletconnect/environment" "^1.0.1" + "@walletconnect/jsonrpc-types" "^1.0.3" + tslib "1.14.1" + +"@walletconnect/jsonrpc-ws-connection@1.0.16": + version "1.0.16" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz#666bb13fbf32a2d4f7912d5b4d0bdef26a1d057b" + integrity sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" + integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== + dependencies: + "@walletconnect/safe-json" "^1.0.1" + idb-keyval "^6.2.1" + unstorage "^1.9.0" + +"@walletconnect/logger@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" + integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== + dependencies: + "@walletconnect/safe-json" "^1.0.2" + pino "7.11.0" + +"@walletconnect/react-native-compat@2.17.3": + version "2.17.3" + resolved "https://registry.yarnpkg.com/@walletconnect/react-native-compat/-/react-native-compat-2.17.3.tgz#e26d3f584176d3111f247dfaeea14687e8c2c195" + integrity sha512-lHKwXKoB0rdDH1ukxUx7o86xosWbttWIHYMZ8tgAQC1k9VH3CZZCoBcHOAAX8iBzyb0n0UP3/9zRrOcJE5nz7Q== + dependencies: + events "3.3.0" + fast-text-encoding "1.0.6" + react-native-url-polyfill "2.0.0" + +"@walletconnect/relay-api@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + +"@walletconnect/relay-auth@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" + integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== + dependencies: + "@stablelib/ed25519" "^1.0.2" + "@stablelib/random" "^1.0.1" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + tslib "1.14.1" + uint8arrays "^3.0.0" + +"@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" + integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== + dependencies: + tslib "1.14.1" + +"@walletconnect/sign-client@2.17.3": + version "2.17.3" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.3.tgz#86c116bc927946bffa8415ca8d92d3ef412082e1" + integrity sha512-OzOWxRTfVGCHU3OOF6ibPkgPfDpivFJjuknfcOUt9PYWpTAv6YKOmT4cyfBPhc7llruyHpV44fYbykMcLIvEcg== + dependencies: + "@walletconnect/core" "2.17.3" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/logger" "2.1.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.3" + "@walletconnect/utils" "2.17.3" + events "3.3.0" + +"@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" + integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== + dependencies: + tslib "1.14.1" + +"@walletconnect/types@2.17.3": + version "2.17.3" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.3.tgz#906f25cf0c9691704b9161eaa305262b0e7626d0" + integrity sha512-5eFxnbZGJJx0IQyCS99qz+OvozpLJJYfVG96dEHGgbzZMd+C9V1eitYqVClx26uX6V+WQVqVwjpD2Dyzie++Wg== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + events "3.3.0" + +"@walletconnect/utils@2.17.3": + version "2.17.3" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.3.tgz#a22938567febc3e3771efae8eb351adf3d499a8d" + integrity sha512-tG77UpZNeLYgeOwViwWnifpyBatkPlpKSSayhN0gcjY1lZAUNqtYslpm4AdTxlrA3pL61MnyybXgWYT5eZjarw== + dependencies: + "@ethersproject/hash" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@stablelib/chacha20poly1305" "1.0.1" + "@stablelib/hkdf" "1.0.1" + "@stablelib/random" "1.0.2" + "@stablelib/sha256" "1.0.1" + "@stablelib/x25519" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.3" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" + detect-browser "5.3.0" + elliptic "6.6.1" + query-string "7.1.3" + uint8arrays "3.1.0" + +"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" + integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== + dependencies: + tslib "1.14.1" + +"@walletconnect/window-metadata@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" + integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== + dependencies: + "@walletconnect/window-getters" "^1.0.1" + tslib "1.14.1" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abs-svg-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" + integrity sha1-32Acjo0roQ1KdtYl4japo5wnI78= + +accepts@^1.3.7, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.11.3: + version "8.12.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" + integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== + +acorn@^8.8.2: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-fragments@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ansi-fragments/-/ansi-fragments-0.2.1.tgz#24409c56c4cc37817c3d7caa99d8969e2de5a05e" + integrity sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w== + dependencies: + colorette "^1.0.7" + slice-ansi "^2.0.0" + strip-ansi "^5.0.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +anymatch@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +appdirsjs@^1.2.4: + version "1.2.7" + resolved "https://registry.yarnpkg.com/appdirsjs/-/appdirsjs-1.2.7.tgz#50b4b7948a26ba6090d4aede2ae2dc2b051be3b3" + integrity sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw== + +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== + dependencies: + default-require-extensions "^2.0.0" + +"aproba@^1.0.3 || ^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1, assert@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-jest@^29.6.3, babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs2@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz#8097b4cb4af5b64a1d11332b6fb72ef5e64a054c" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-corejs3@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" + integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.31.0" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-plugin-polyfill-regenerator@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz#80d0f3e1098c080c8b5a65f41e9427af692dc326" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base-64@0.1.0, base-64@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" + integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= + +base-64@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a" + integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big-integer@1.6.51: + version "1.6.51" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +"bignumber.js@git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status": + version "4.0.2" + resolved "git+https://github.com/status-im/bignumber.js.git#cc066a0a3d6bfe0c436c9957f4ea8344bf963c89" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0, browserify-sign@^4.0.4: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.21.10, browserslist@^4.21.9: + version "4.21.10" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" + integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + dependencies: + caniuse-lite "^1.0.30001517" + electron-to-chromium "^1.4.477" + node-releases "^2.0.13" + update-browserslist-db "^1.0.11" + +browserslist@^4.21.3, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0, buffer@^4.9.1: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.4.3, buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +caching-transform@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-3.0.2.tgz#601d46b91eca87687a281e71cef99791b0efca70" + integrity sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w== + dependencies: + hasha "^3.0.0" + make-dir "^2.0.0" + package-hash "^3.0.0" + write-file-atomic "^2.4.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001449: + version "1.0.30001469" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz#3dd505430c8522fdc9f94b4a19518e330f5c945a" + integrity sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g== + +caniuse-lite@^1.0.30001517: + version "1.0.30001532" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz#c6a4d5d2da6d2b967f0ee5e12e7f680db6ad2fca" + integrity sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw== + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chance@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.4.tgz#d8743bf8e40bb05e024c305ca1ff441195eb23db" + integrity sha512-pXPDSu3knKlb6H7ahQfpq//J9mSOxYK8SMtp8MV/nRJh8aLRDIl0ipLH8At8+nVogVwtvPZzyIzY/EbcY/cLuQ== + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.2.tgz#4e6404e32200095fdce7f6a1e1004f9bd36fa5da" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#0443083074715a13c669530b35df7bfea33b1509" + integrity sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.6.2.tgz#362ea15378f1c39378ba786affbc1c9ef015ecfd" + integrity sha512-lVZdhvbEudris15CLytp2u6Y0p5EKfztae9Fqa189MfNmln9F33XuH69v5fvNfiRN5/0eAUz2yJL3mo+nhaRKg== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +citty@^0.1.5, citty@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.6.tgz#0f7904da1ed4625e1a9ea7e0fa780981aab7c5e4" + integrity sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ== + dependencies: + consola "^3.2.3" + +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.8.0.tgz#e97a3e2bd00e6d85aa0c13d7f9e3ce236f7787fc" + integrity sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ== + +clipboardy@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-4.0.0.tgz#e73ced93a76d19dd379ebf1f297565426dffdca1" + integrity sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w== + dependencies: + execa "^8.0.1" + is-wsl "^3.1.0" + is64bit "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colord@2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + +colorette@^1.0.7: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + +confbox@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" + integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +connect@^3.6.5: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +consola@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" + integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-control-strings@^1.0.0, console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.1.0.tgz#68f8d9f48aeb5a534f3896f80e792760d3d20def" + integrity sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw== + +core-js-compat@^3.25.1: + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" + integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== + dependencies: + browserslist "^4.21.5" + +core-js-compat@^3.31.0: + version "3.32.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" + integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== + dependencies: + browserslist "^4.21.10" + +core-js@^2.5.7: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cp-file@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.2.0.tgz#40d5ea4a1def2a9acdd07ba5c0b0246ef73dc10d" + integrity sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA== + dependencies: + graceful-fs "^4.1.2" + make-dir "^2.0.0" + nested-error-stacks "^2.0.0" + pify "^4.0.1" + safe-buffer "^5.0.1" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA== + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crossws@^0.2.0, crossws@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.2.4.tgz#82a8b518bff1018ab1d21ced9e35ffbe1681ad03" + integrity sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg== + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-js@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csstype@^3.0.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== + +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + +dayjs@^1.8.15: + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + +debug@2.6.9, debug@^2.2.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +dedent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" + integrity sha512-cSfRWjXJtZQeRuZGVvDrJroCR5V2UvBNUMHsPCdNYzuAG8b9V8aAy3KUcdQrGQPXs17Y+ojbPh1aOCplg9YR9g== + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +deepmerge@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= + dependencies: + strip-bom "^3.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defu@^6.1.3, defu@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" + integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-2.3.0.tgz#c10c6ee75ff2b6de94bb127f142b814e6e08d9ab" + integrity sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA== + dependencies: + "@react-native/normalize-color" "*" + invariant "*" + prop-types "*" + +deprecated-react-native-prop-types@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" + integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== + dependencies: + "@react-native/normalize-colors" "^0.73.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destr@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.3.tgz#7f9e97cb3d16dbdca7be52aca1644ce402cfe449" + integrity sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-browser@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" + integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +detect-libc@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd" + integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + +diff-sequences@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.3.1.tgz#104b5b95fe725932421a9c6e5b4bef84c3f2249e" + integrity sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexify@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" + integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.2" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.284: + version "1.4.340" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz#3a6d7414c1fc2dbf84b6f7af3ec24270606c85b8" + integrity sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg== + +electron-to-chromium@^1.4.477: + version "1.4.513" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz#41a50bf749aa7d8058ffbf7a131fc3327a7b1675" + integrity sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojilib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/emojilib/-/emojilib-2.4.0.tgz#ac518a8bb0d5f76dda57289ccb2fdf9d39ae721e" + integrity sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +envinfo@^7.10.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" + integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +errorhandler@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.1.tgz#b9ba5d17cf90744cd1e851357a6e75bf806a9a91" + integrity sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A== + dependencies: + accepts "~1.3.7" + escape-html "~1.0.3" + +es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-phishing-detect@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eth-phishing-detect/-/eth-phishing-detect-1.2.0.tgz#11b357776b2d1b98a9ac594a1343e5184fc26bf0" + integrity sha512-+M7D4dhu5tkSA9b5eiBwDeJCjwy+7Lv49nuTEw8fNZIZUAVZC3d2XHatBq1MOW7J8kxNGbBdgBuIf65opI7Tkg== + dependencies: + fast-levenshtein "^2.0.6" + +ethers@5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + +events@3.3.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +execa@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" + integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^8.0.1" + human-signals "^5.0.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^4.1.0" + strip-final-newline "^3.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== + dependencies: + "@jest/types" "^25.5.0" + ansi-styles "^4.0.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" + +expect@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== + dependencies: + "@jest/expect-utils" "^28.1.3" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +fast-base64-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418" + integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q== + +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fast-redact@^3.0.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" + integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== + +fast-text-encoding@1.0.6, fast-text-encoding@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" + integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== + +fast-xml-parser@^4.0.12: + version "4.2.7" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz#871f2ca299dc4334b29f8da3658c164e68395167" + integrity sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig== + dependencies: + strnum "^1.0.5" + +fast-xml-parser@^4.2.4: + version "4.3.2" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz#761e641260706d6e13251c4ef8e3f5694d4b0d79" + integrity sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg== + dependencies: + strnum "^1.0.5" + +fault@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13" + integrity sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA== + dependencies: + format "^0.2.0" + +faye-websocket@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg== + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +firebase@11.2.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-11.2.0.tgz#843de48382fcaf8050a4a278f35d094fb9960fda" + integrity sha512-ztwPhBLAZMVNZjBeQzzTM4rk2rsRXmdFYcnvjAXh+StbiFVshHKaPO9VRGMUzF48du4Mkz6jN1wkmYCuUJPxLA== + dependencies: + "@firebase/analytics" "0.10.11" + "@firebase/analytics-compat" "0.2.17" + "@firebase/app" "0.10.18" + "@firebase/app-check" "0.8.11" + "@firebase/app-check-compat" "0.3.18" + "@firebase/app-compat" "0.2.48" + "@firebase/app-types" "0.9.3" + "@firebase/auth" "1.8.2" + "@firebase/auth-compat" "0.5.17" + "@firebase/data-connect" "0.2.0" + "@firebase/database" "1.0.11" + "@firebase/database-compat" "2.0.2" + "@firebase/firestore" "4.7.6" + "@firebase/firestore-compat" "0.3.41" + "@firebase/functions" "0.12.1" + "@firebase/functions-compat" "0.3.18" + "@firebase/installations" "0.6.12" + "@firebase/installations-compat" "0.2.12" + "@firebase/messaging" "0.12.16" + "@firebase/messaging-compat" "0.2.16" + "@firebase/performance" "0.6.12" + "@firebase/performance-compat" "0.2.12" + "@firebase/remote-config" "0.5.0" + "@firebase/remote-config-compat" "0.2.12" + "@firebase/storage" "0.13.5" + "@firebase/storage-compat" "0.3.15" + "@firebase/util" "1.10.3" + "@firebase/vertexai" "1.0.3" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@0.*: + version "0.202.1" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.202.1.tgz#3f87222e6910f6790bb2ce4648c20e1b87d6f9d7" + integrity sha512-IA8mhyNEUtzAKh+lj1yNDLFiUr1NSwPC+exQgghQNARFU/DeWGpoNmuYYzMDFIYsOdVdDoTJTxRc+/cS9CVvNg== + +flow-parser@^0.206.0: + version "0.206.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.206.0.tgz#f4f794f8026535278393308e01ea72f31000bfef" + integrity sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w== + +foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-port-please@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.2.tgz#502795e56217128e4183025c89a48c71652f4e49" + integrity sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ== + +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA== + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" + integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.1: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.6: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== + dependencies: + ini "2.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA== + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.1.3, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +h3@^1.10.2, h3@^1.11.1: + version "1.12.0" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.12.0.tgz#9d7f05f08a997d263e484b02436cb027df3026d8" + integrity sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA== + dependencies: + cookie-es "^1.1.0" + crossws "^0.2.4" + defu "^6.1.4" + destr "^2.0.3" + iron-webcrypto "^1.1.1" + ohash "^1.1.3" + radix3 "^1.1.2" + ufo "^1.5.3" + uncrypto "^0.1.3" + unenv "^1.9.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasha@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-3.0.0.tgz#52a32fab8569d41ca69a61ff1a214f8eb7c8bd39" + integrity sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk= + dependencies: + is-stream "^1.0.1" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +hast-util-parse-selector@^2.0.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hastscript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640" + integrity sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + +hermes-estree@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" + integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== + +hermes-estree@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.18.2.tgz#fd450fa1659cf074ceaa2ddeeb21674f3b2342f3" + integrity sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ== + +hermes-parser@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.15.0.tgz#f611a297c2a2dbbfbce8af8543242254f604c382" + integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== + dependencies: + hermes-estree "0.15.0" + +hermes-parser@0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.18.2.tgz#50f15e2fcd559a48c68cd7af259d4292298bd14d" + integrity sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew== + dependencies: + hermes-estree "0.18.2" + +hermes-profile-transformer@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz#bd0f5ecceda80dd0ddaae443469ab26fb38fc27b" + integrity sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ== + dependencies: + source-map "^0.7.3" + +highlight.js@^10.4.1, highlight.js@~10.7.0: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@3.x.x, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +home-or-tmp@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb" + integrity sha512-pj6ktgQDedSIbzwrC108F9aZadnF2ZJ8mP8QbGq2nLPOmqpdqKWMoU4JPJaFEzpoTl6X/jOwE8BlkTOfVPR98A== + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.9" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.9.tgz#b817b3ca0edea6236225000d795378707c169cec" + integrity sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw== + +http-shutdown@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f" + integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw== + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +human-signals@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" + integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== + +i18n-js@^3.3.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/i18n-js/-/i18n-js-3.5.1.tgz#9787450894059bec1af791123231e59898eb97c1" + integrity sha512-nJgbE5Vj9qzOQfjdVd/uoMoO8ppVaB/3LB6KOmMfD8IQ1vNNh307iHyQLK8ZnLYWkAszfPvVpYmUt1Le/RuHMQ== + +idb-keyval@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.1.tgz#94516d625346d16f56f3b33855da11bfded2db33" + integrity sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg== + +idb@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= + +image-size@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" + integrity sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg== + dependencies: + queue "6.0.2" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +invariant@*, invariant@2.2.4, invariant@^2.2.2, invariant@^2.2.4, invariant@^2.2.x: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +iron-webcrypto@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" + integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== + +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-docker@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" + integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-inside-container@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" + integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== + dependencies: + is-docker "^3.0.0" + +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-wsl@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-3.1.0.tgz#e1c657e39c10090afcbedec61720f6b924c3cbd2" + integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== + dependencies: + is-inside-container "^1.0.0" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +is64bit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is64bit/-/is64bit-2.0.0.tgz#198c627cbcb198bbec402251f88e5e1a51236c07" + integrity sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw== + dependencies: + system-architecture "^0.1.0" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-hook@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz#c95695f383d4f8f60df1f04252a9550e15b5b133" + integrity sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA== + dependencies: + append-transform "^1.0.0" + +istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== + dependencies: + html-escaper "^2.0.0" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-diff@^29.0.1, jest-diff@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.3.1.tgz#d8215b72fed8f1e647aed2cae6c752a89e757527" + integrity sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.6.3, jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + +jest-get-type@^29.2.0: + version "29.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408" + integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-image-snapshot@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-5.2.0.tgz#4af046935b465f0460aa73e890717bbc25d431e9" + integrity sha512-msKQqsxr4ZS8S3FQ6ot1SPlDKc4pCfyKY3SxU9LEoASj1zoEfglDYjmxNX53pxpNf7Fp7CJZvwP4xkNXVQgEXA== + dependencies: + chalk "^1.1.3" + get-stdin "^5.0.1" + glur "^1.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + rimraf "^2.6.2" + ssim.js "^3.1.1" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== + dependencies: + chalk "^3.0.0" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-matcher-utils@^29.0.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz#6e7f53512f80e817dfa148672bd2d5d04914a572" + integrity sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.3.1" + jest-get-type "^29.2.0" + pretty-format "^29.3.1" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== + dependencies: + "@jest/types" "^25.5.0" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-silent-reporter@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jest-silent-reporter/-/jest-silent-reporter-0.5.0.tgz#5fd8ccd61665227e3bf19d908b7350719d06ff38" + integrity sha512-epdLt8Oj0a1AyRiR6F8zx/1SVT1Mi7VU3y4wB2uOBHs/ohIquC7v2eeja7UN54uRPyHInIKWdL+RdG228n5pJQ== + dependencies: + chalk "^4.0.0" + jest-util "^26.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + make-dir "^3.0.0" + +jest-util@^26.0.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3, jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^29.6.3, jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +joi@^17.2.1: + version "17.9.1" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.9.1.tgz#74899b9fa3646904afa984a11df648eca66c9018" + integrity sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.3" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz#141c14fbb43791e88d5dc64e85a374575a83477a" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json5@^2.2.1, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz#aef90f9e97cd81db367c7634292ee22079280aaa" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +listhen@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.7.2.tgz#66b81740692269d5d8cafdc475020f2fc51afbae" + integrity sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g== + dependencies: + "@parcel/watcher" "^2.4.1" + "@parcel/watcher-wasm" "^2.4.1" + citty "^0.1.6" + clipboardy "^4.0.0" + consola "^3.2.3" + crossws "^0.2.0" + defu "^6.1.4" + get-port-please "^3.1.2" + h3 "^1.10.2" + http-shutdown "^1.2.2" + jiti "^1.21.0" + mlly "^1.6.1" + node-forge "^1.3.1" + pathe "^1.1.2" + std-env "^3.7.0" + ufo "^1.4.0" + untun "^0.1.3" + uqr "^0.1.2" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +lodash.isequal@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash@4.17.x, lodash@^4.17.10, lodash@^4.17.21, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +logkitty@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/logkitty/-/logkitty-0.7.1.tgz#8e8d62f4085a826e8d38987722570234e33c6aa7" + integrity sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ== + dependencies: + ansi-fragments "^0.2.1" + dayjs "^1.8.15" + yargs "^15.1.0" + +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + +long@^5.0.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.4.tgz#ee651d5c7c25901cfca5e67220ae9911695e99b2" + integrity sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lottie-ios@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/lottie-ios/-/lottie-ios-3.2.3.tgz#d5a029ccce611603d178ea7ba725c1446f2310b4" + integrity sha512-mubYMN6+1HXa8z3EJKBvNBkl4UoVM4McjESeB2PgvRMSngmJtC5yUMRdhbbrIAn5Liu3hFGao/14s5hQIgtkRQ== + +lottie-react-native@^5.1.3: + version "5.1.6" + resolved "https://registry.yarnpkg.com/lottie-react-native/-/lottie-react-native-5.1.6.tgz#6ae72829c3c0b95952dddd3d78c043f4dfbcb487" + integrity sha512-vhdeZstXMfuVKwnddYWjJgQ/1whGL58IJEJu/iSf0XQ5gAb4pp/+vy91mdYQLezlb8Aw4Vu3fKnqErJL2hwchg== + dependencies: + invariant "^2.2.2" + react-native-safe-modules "^1.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowlight@^1.17.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/lowlight/-/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888" + integrity sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw== + dependencies: + fault "^1.0.0" + highlight.js "~10.7.0" + +lru-cache@^10.2.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b" + integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + dependencies: + semver "^6.0.0" + +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +memoize-one@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +metro-babel-transformer@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.80.4.tgz#67dd300dd794d35ce24e22c17f317750669dd2b2" + integrity sha512-QP1kjYLap4O3w9tA4bYO8iyuNpR65If5Z97Ku37O4CwQPAwQaTmg67g4OdABS4BVK10fsxdExKp+fC37XirPow== + dependencies: + "@babel/core" "^7.20.0" + hermes-parser "0.18.2" + nullthrows "^1.1.1" + +metro-cache-key@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.80.4.tgz#dc92ca7aa251b9f6ed232fef98a4649fcc5d614e" + integrity sha512-okOOSRFou7Mxaaigoi+KxdFIU/ZJtvDCC6l8BYKsdMx86JDlVdvtIgFU4tFrY1yEkv0wnn7WH0X3xSz4mHKwoQ== + +metro-cache@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.80.4.tgz#3bfe8176353dd1e44fef4361339bd8ee992d5900" + integrity sha512-Dj+GoYt4PvsnnE4GdXhqV9PxEF7GPilY5NPeoTgptWZLlaDuTT2+cJQoDOOit1SfRjnF0zqABtVvB6GGBWdtaQ== + dependencies: + metro-core "0.80.4" + rimraf "^3.0.2" + +metro-config@0.80.4, metro-config@^0.80.3: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.80.4.tgz#f14fe1465bf8812cd9a930f9a1667350161050cf" + integrity sha512-X3/3tleFYB4SdoxXg8uJ+qc8eITKiLnXs3Ev6pihM4jIM5JD89riwUsSLKVsovfZs8ETqKtjevzfe6jQ2O5NtQ== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + jest-validate "^29.6.3" + metro "0.80.4" + metro-cache "0.80.4" + metro-core "0.80.4" + metro-runtime "0.80.4" + +metro-core@0.80.4, metro-core@^0.80.3: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.80.4.tgz#1421e432f2f9ec69d82ea1f19832a0544a3ce294" + integrity sha512-HRb+zydAhI7QyLpK4D6ARZsKjaBwEn+kCrJEjnVFij8wjJxIIHVilgNCETgg9NWvKJFUoZZCG7ewHkxQ9Qpd8Q== + dependencies: + lodash.throttle "^4.1.1" + metro-resolver "0.80.4" + +metro-file-map@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.80.4.tgz#22d2e1fc1110490ab1a6c3ab4de4c21fef1951af" + integrity sha512-EvBC31JI5vsyebeQ8PWpGENuAWy2Ka7sLqEW7OInW+aLVWmBq02h0BNl33xRgAMz0gwvMf2nKie82hmefYF6ew== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.80.4.tgz#008a4874f6167a4da5d24c90d4281b56f09ba684" + integrity sha512-cuxfRZWDWGKjh+Z6t4KJkrvmV4JUKXfvQuAX7Pa7U0Mf1YJdLtoGQ5iVOu/6MkfYGXbppqGk2qmFECrRGRh0cA== + dependencies: + terser "^5.15.0" + +metro-resolver@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.80.4.tgz#c04f2bf3995e11ee0484a067b7a51904ccee9964" + integrity sha512-PCiVWN+d3gtWlobf8jPypwKx9T1QrZmhLJAyqIWLoOsZbpSfj1dn5h0ajCr8rYi9LNzIHm58GGYJK8VFHNn8Cw== + +metro-runtime@0.80.4, metro-runtime@^0.80.3: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.80.4.tgz#24fe3e332cfbe303f944fc6d5f0c28bef6704ee1" + integrity sha512-CWIvf0zmL4jKHSj81zjUAbEwjTqFQmETI0NIQvN4JNwTSHiz50WPOuHnUUcmwM6Dye/ta6KNTELnERp0tKEYYg== + dependencies: + "@babel/runtime" "^7.0.0" + +metro-source-map@0.80.4, metro-source-map@^0.80.3: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.80.4.tgz#809d7d0eb36ccf912eecb4dc80ab50177f9fb5e1" + integrity sha512-x+0By55ml6IcGqY9x9HE0hyU0S+uDssrTQ0bPvuydG+iKCX85DzGnlT8k0Vs+EYgZl3KMWcvQ9TpGHW4LRL4GQ== + dependencies: + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + invariant "^2.2.4" + metro-symbolicate "0.80.4" + nullthrows "^1.1.1" + ob1 "0.80.4" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-symbolicate@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.80.4.tgz#1c72c5c7b29941ecd95e53f2a25570e61dfd4eec" + integrity sha512-UmtH96G5TrcAgbIqdE4xA8MBS9fbZW9Pln+n7eJ0tQ0Fw0M/jzdpiZzhx3bIB2zzqbdm6Nv/kB1+aEo0WvXdyg== + dependencies: + invariant "^2.2.4" + metro-source-map "0.80.4" + nullthrows "^1.1.1" + source-map "^0.5.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.80.4.tgz#fd76d62f080d556a8626ec6a92f55d033aa64283" + integrity sha512-cvmTLBA9ET64h+tgHt6prHlvOq98zBA1Glc9+wLZihPJo+Qmu9i3nQ1g4O+4aUnHivDlp+4C00BMNC+aC/buRQ== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + nullthrows "^1.1.1" + +metro-transform-worker@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.80.4.tgz#33cab53b0cc527b627f7f7ef9c07a41dd15682d3" + integrity sha512-hLCrlxXyyaV64XQNSiyY/0jMVvGXrgXMkpJ4KwH2t4clxbxyt6TBW+4TqmgAeU9WGclY0OuQ0HzfvIZiONcUOw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + metro "0.80.4" + metro-babel-transformer "0.80.4" + metro-cache "0.80.4" + metro-cache-key "0.80.4" + metro-source-map "0.80.4" + metro-transform-plugins "0.80.4" + nullthrows "^1.1.1" + +metro@0.80.4, metro@^0.80.3: + version "0.80.4" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.80.4.tgz#5f8cd8f7b730418ec6e7b377611caf620be33158" + integrity sha512-fBhZKU1z44KdhS6sH6Sk97595A66EOniH+jI9OjKDu6piH1SIEqQgdWAuWfJJMzgBHcJceRRvJY1zzsOT/Zx0g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.0" + "@babel/parser" "^7.20.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.20.0" + "@babel/types" "^7.20.0" + accepts "^1.3.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.18.2" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + lodash.throttle "^4.1.1" + metro-babel-transformer "0.80.4" + metro-cache "0.80.4" + metro-cache-key "0.80.4" + metro-config "0.80.4" + metro-core "0.80.4" + metro-file-map "0.80.4" + metro-minify-terser "0.80.4" + metro-resolver "0.80.4" + metro-runtime "0.80.4" + metro-source-map "0.80.4" + metro-symbolicate "0.80.4" + metro-transform-plugins "0.80.4" + metro-transform-worker "0.80.4" + mime-types "^2.1.27" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + rimraf "^3.0.2" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.1" + yargs "^17.6.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +micromatch@^4.0.5: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.2, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^3.0.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" + integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mlly@^1.6.1, mlly@^1.7.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f" + integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.1.1" + ufo "^1.5.3" + +mri@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multiformats@^9.4.2: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +napi-wasm@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" + integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nested-error-stacks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nocache@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" + integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.0.tgz#71f609369379c08e251c558527a107107b5e0fdb" + integrity sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-fetch-native@^1.6.1, node-fetch-native@^1.6.2, node-fetch-native@^1.6.3: + version "1.6.4" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.4.tgz#679fc8fd8111266d47d7e72c379f1bed9acff06e" + integrity sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ== + +node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-libs-react-native@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-libs-react-native/-/node-libs-react-native-1.2.1.tgz#c9fd1d1b2cd2573d3e75633cea8bccd53b334f24" + integrity sha512-2LkPntNVa5MInMxtP7fW9F/uGo7KZCURI5/YoNn9/qOGIQpxEqnsndQWAPipsw8+ZVrIxPGkKEgJ2sSdvz0NKQ== + dependencies: + assert "^1.4.1" + base-64 "^0.1.0" + browserify-zlib "^0.2.0" + buffer "^6.0.3" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^2.1.0" + querystring-es3 "^0.2.0" + react-native-crypto "^2.0.1" + react-native-randombytes "^3.5.1" + readable-stream "^2.2.9" + stream-http "^2.3.1" + string_decoder "^1.0.3" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +node-stream-zip@^1.9.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea" + integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw== + +nodemon@^2.0.16: + version "2.0.16" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.16.tgz#d71b31bfdb226c25de34afea53486c8ef225fdef" + integrity sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w== + dependencies: + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.8" + semver "^5.7.1" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + update-notifier "^5.1.0" + +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== + dependencies: + abbrev "1" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-svg-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.0.1.tgz#6f729ad6b70bb4ca4eff2fe4b107489efe1d56fe" + integrity sha1-b3Ka1rcLtMpO/y/ksQdInv4dVv4= + dependencies: + svg-arc-to-cubic-bezier "^3.0.0" + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== + dependencies: + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +nyc@^14.1.1: + version "14.1.1" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-14.1.1.tgz#151d64a6a9f9f5908a1b73233931e4a0a3075eeb" + integrity sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw== + dependencies: + archy "^1.0.0" + caching-transform "^3.0.2" + convert-source-map "^1.6.0" + cp-file "^6.2.0" + find-cache-dir "^2.1.0" + find-up "^3.0.0" + foreground-child "^1.5.6" + glob "^7.1.3" + istanbul-lib-coverage "^2.0.5" + istanbul-lib-hook "^2.0.7" + istanbul-lib-instrument "^3.3.0" + istanbul-lib-report "^2.0.8" + istanbul-lib-source-maps "^3.0.6" + istanbul-reports "^2.2.4" + js-yaml "^3.13.1" + make-dir "^2.1.0" + merge-source-map "^1.1.0" + resolve-from "^4.0.0" + rimraf "^2.6.3" + signal-exit "^3.0.2" + spawn-wrap "^1.4.2" + test-exclude "^5.2.3" + uuid "^3.3.2" + yargs "^13.2.2" + yargs-parser "^13.0.0" + +ob1@0.80.4: + version "0.80.4" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.4.tgz#a2e77e2dbe144c76356c834b994e147e19bb472f" + integrity sha512-Lku8OBpq+fhF1ZdKUjbPnTNeqG+3OL0psGAEVJ8zcUiCB5/DPGR/rm3kLcjKDylzC9Rfv540/7I08+oImzfrhw== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +ofetch@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.4.tgz#7ea65ced3c592ec2b9906975ae3fe1d26a56f635" + integrity sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw== + dependencies: + destr "^2.0.3" + node-fetch-native "^1.6.3" + ufo "^1.5.3" + +ohash@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" + integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw== + +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +open@^6.2.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== + dependencies: + is-wsl "^1.1.0" + +open@^7.0.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-3.0.0.tgz#50183f2d36c9e3e528ea0a8605dff57ce976f88e" + integrity sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA== + dependencies: + graceful-fs "^4.1.15" + hasha "^3.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-svg-path@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb" + integrity sha1-en7A0esG+lMlx9PgCbhZoJtdSes= + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pbkdf2@3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.8.tgz#2f8abf16ebecc82277945d748aba1d78761f61e2" + integrity sha1-L4q/FuvsyCJ3lF10irodeHYfYeI= + dependencies: + create-hmac "^1.1.2" + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.0.5: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + +pirates@^4.0.0, pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pirates@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pixelmatch@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" + integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== + dependencies: + pngjs "^6.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw== + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-types@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.1.tgz#07b626880749beb607b0c817af63aac1845a73f2" + integrity sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ== + dependencies: + confbox "^0.1.7" + mlly "^1.7.0" + pathe "^1.1.2" + +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" + integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-plugin-sort-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/prettier-plugin-sort-json/-/prettier-plugin-sort-json-4.0.0.tgz#b72a44b57183dd7f8cef5c07a0614f21d29a0e4a" + integrity sha512-zV5g+bWFD2zAqyQ8gCkwUTC49o9FxslaUdirwivt5GZHcf57hCocavykuyYqbExoEsuBOg8IU36OY7zmVEMOWA== + +prettier@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + +pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.5.2, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.0.3, pretty-format@^29.3.1: + version "29.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.3.1.tgz#1841cac822b02b4da8971dacb03e8a871b4722da" + integrity sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg== + dependencies: + "@jest/schemas" "^29.0.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +prismjs@^1.27.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" + integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== + +prismjs@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.27.0.tgz#bb6ee3138a0b438a3653dd4d6ce0cc6510a45057" + integrity sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-warning@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + +process@0.11.10, process@^0.11.0, process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" + integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.4" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@*, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +prop-types@15.x.x, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +property-information@^5.0.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + +protobufjs@^7.2.5: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + +pure-rand@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== + +query-string@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +radix3@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" + integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-devtools-core@^4.27.7: + version "4.28.5" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" + integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-dom@18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.0.0.tgz#26b88534f8f1dbb80853e1eabe752f24100d8023" + integrity sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.21.0" + +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.1.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-lifecycles-compat@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-2.0.0.tgz#71d9c4cde47114c4102454f76da055c2bc48c948" + integrity sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ== + +react-native-background-timer@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-native-background-timer/-/react-native-background-timer-2.2.0.tgz#ff82d30899209b924983cc00e6ce174b8de5054a" + integrity sha512-Y7N6diSFko/FCJPMmB0PoBlmY1kEcma7qDVwn8t7zi12GLqpe/Vwls97onkSD8/QL+BR33BygUHOrLTPwgeKfg== + +react-native-biometrics@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/react-native-biometrics/-/react-native-biometrics-3.0.1.tgz#23c5a0bdbae1fcb1e08b22936223fe0fc4af846e" + integrity sha512-Ru80gXRa9KG04sl5AB9HyjLjVbduhqZVjA+AiOSGqr+fNqCDmCu9y5WEksnjbnniNLmq1yGcw+qcLXmR1ddLDQ== + +react-native-blob-util@^0.13.18: + version "0.13.18" + resolved "https://registry.yarnpkg.com/react-native-blob-util/-/react-native-blob-util-0.13.18.tgz#7b924d55607bda380d6e9862b621ed1ac0c007ec" + integrity sha512-f9NyydQKMd24QiyW+LZmDg2rjCTi4GBff3UJzP1BDgEQ8aoHMs4MZmPs5erNH4E577qhEFp5v7HGzXVRQL8SnQ== + dependencies: + base-64 "0.1.0" + glob "^7.1.6" + +"react-native-camera-kit@git+https://github.com/status-im/react-native-camera-kit.git#refs/tags/v14.0.0-beta15-status-v1": + version "14.0.0-beta15" + resolved "git+https://github.com/status-im/react-native-camera-kit.git#90821bc45c950c98119acc896651997a5357dd4f" + +react-native-config@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/react-native-config/-/react-native-config-1.5.0.tgz#ff5a78fbbc2c2a0525788e5f3c86101110651ba4" + integrity sha512-slecooA/0tCwhb+RuWEbwLqtKirGh9vWPRpgDfH7uPAraCciqHNH2XjS9ylW+Spn4FUrHg5KWTqUGs9BdBADHg== + +react-native-crypto@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-native-crypto/-/react-native-crypto-2.2.0.tgz#c999ed7c96064f830e1f958687f53d0c44025770" + integrity sha512-eZu9Y8pa8BN9FU2pIex7MLRAi+Cd1Y6bsxfiufKh7sfraAACJvjQTeW7/zcQAT93WMfM+D0OVk+bubvkrbrUkw== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.4" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "3.0.8" + public-encrypt "^4.0.0" + randomfill "^1.0.3" + +react-native-dialogs@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/react-native-dialogs/-/react-native-dialogs-1.1.2.tgz#28f6173e381c9354002b1c7839aa23dec4c5f71b" + integrity sha512-W0y22JpiywLNVYny32Z85h2zETkY9Neh48zndHJ4Byx/vS96Ex/0fhZ55hRS7XER7SBH3SHo5+TBTuX7ECHrLw== + +react-native-draggable-flatlist@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-native-draggable-flatlist/-/react-native-draggable-flatlist-4.0.1.tgz#2f027d387ba4b8f3eb0907340e32cb85e6460df2" + integrity sha512-ZO1QUTNx64KZfXGXeXcBfql67l38X7kBcJ3rxUVZzPHt5r035GnGzIC0F8rqSXp6zgnwgUYMfB6zQc5PKmPL9Q== + dependencies: + "@babel/preset-typescript" "^7.17.12" + +react-native-fast-image@^8.5.11: + version "8.5.11" + resolved "https://registry.yarnpkg.com/react-native-fast-image/-/react-native-fast-image-8.5.11.tgz#e3dc969d0e4e8df026646bf18194465aa55cbc2b" + integrity sha512-cNW4bIJg3nvKaheG8vGMfqCt5LMWX9MS5+wMudgKIHbGO51spRr4sgnlhVgwHLcZ5aeNOVJ8CPRxDIWKRq/0QA== + +react-native-fs@^2.14.1: + version "2.16.6" + resolved "https://registry.yarnpkg.com/react-native-fs/-/react-native-fs-2.16.6.tgz#2901789a43210a35a0ef0a098019bbef3af395fd" + integrity sha512-ZWOooD1AuFoAGY3HS2GY7Qx2LZo4oIg6AK0wbC68detxwvX75R/q9lRqThXNKP6vIo2VHWa0fYUo/SrLw80E8w== + dependencies: + base-64 "^0.1.0" + utf8 "^3.0.0" + +react-native-gesture-handler@2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.14.1.tgz#930640231024b7921435ab476aa501dd4a6b2e01" + integrity sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + lodash "^4.17.21" + prop-types "^15.7.2" + +react-native-get-random-values@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.11.0.tgz#1ca70d1271f4b08af92958803b89dccbda78728d" + integrity sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ== + dependencies: + fast-base64-decode "^1.0.0" + +react-native-gifted-charts@^1.3.2: + version "1.3.6" + resolved "https://registry.yarnpkg.com/react-native-gifted-charts/-/react-native-gifted-charts-1.3.6.tgz#dc2d527bf46d7abdc1672fcdd86bfd54bed9edb1" + integrity sha512-jU3ikdxltRtpzcxRmCQGuovQ8dWnai8S+xScU0TgMMpfDuyLNHAFOi2Vu//7TPDWwtSWR2sIOHTtJLKJTqrriw== + +react-native-hole-view@^3.0.0-alpha4: + version "3.0.0-alpha4" + resolved "https://registry.yarnpkg.com/react-native-hole-view/-/react-native-hole-view-3.0.0-alpha4.tgz#b5f54df380636c3b4dfacd5c297117f068fa4531" + integrity sha512-pAIQCA13Dn42xLFsVziFXHRtTgRJ13SBrb1vwFG7cIFslMjmBhPdFlUrqYcN+wMTt2+OnZhRxgM4Yaf4+gARDg== + +react-native-image-crop-picker@0.41.2: + version "0.41.2" + resolved "https://registry.npmjs.org/react-native-image-crop-picker/-/react-native-image-crop-picker-0.41.2.tgz#824fa8fee8391fbb3e0b5ae2973221a2dff0cafb" + integrity sha512-GcDu/adXU/1y/MrxsbOfqcGRGWC2pTttt5VGy/jyRJ6GXfoC29fTQf8SG5kGtc5schSR6K+mKYO4uW6eJPljlQ== + +react-native-image-resizer@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/react-native-image-resizer/-/react-native-image-resizer-1.2.3.tgz#21cb2b158ff950e55a0fc01c2cb61375bd5a03ba" + integrity sha512-RDPNJglRmWDZ/7hvu+CbpsKYl6AQmseL8cWX4UkLAHxQWNc5ZdYhP/9avC5xCfyiwkRw+Zmkmv78HO0kt0ewhQ== + +react-native-keychain@8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/react-native-keychain/-/react-native-keychain-8.1.2.tgz#34291ae472878e5124d081211af5ede7d810e64f" + integrity sha512-bhHEui+yMp3Us41NMoRGtnWEJiBE0g8tw5VFpq4mpmXAx6XJYahuM6K3WN5CsUeUl83hYysSL9oFZNKSTPSvYw== + +react-native-linear-gradient@3.0.0-alpha.1: + version "3.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-3.0.0-alpha.1.tgz#fa1914462536f052faa211c34240be3ab1856bdd" + integrity sha512-vo9ks7m2VTLtbdAIMqwk944SB65+rc0U1a2R1CAQetT282DnH4rI3GKenaa+Gj2gPngF1l7Mc3Jxk9+6IZDraA== + +react-native-lottie-splash-screen@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/react-native-lottie-splash-screen/-/react-native-lottie-splash-screen-1.1.2.tgz#7d044cb6aede33dc30611da7a7d9edcb14ee005f" + integrity sha512-5V4sk46UlU2MbRDlncT0O3qtBdqjxKfcW5/VXceU82CPcO0z0ItcaX34L74Zt5fqkR80OW1VCccrsIGly1y0lw== + dependencies: + lottie-ios "3.2.3" + lottie-react-native "^5.1.3" + +react-native-mmkv@2.12.2: + version "2.12.2" + resolved "https://registry.npmjs.org/react-native-mmkv/-/react-native-mmkv-2.12.2.tgz#4bba0f5f04e2cf222494cce3a9794ba6a4894dee" + integrity sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg== + +react-native-navigation@7.43.0: + version "7.43.0" + resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-7.43.0.tgz#533920672578b43f6a1884894c89584bc5452e61" + integrity sha512-OZe6yRrO91xLDeCRWqNkXYz2dQyCipmYicybQkjfUtdZEQDmOANLa3BoQOpOCRv3d38PX4qiGEleglJm16yUBQ== + dependencies: + hoist-non-react-statics "3.x.x" + lodash "4.17.x" + prop-types "15.x.x" + react-lifecycles-compat "2.0.0" + tslib "1.9.3" + +react-native-orientation-locker@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/react-native-orientation-locker/-/react-native-orientation-locker-1.5.0.tgz#324853937eed4835ecd1c8613ab2206135d908ac" + integrity sha512-4XOCGmNN4BXg5JUFjUuXpsfhPJmbA3LkQilJO1ed+6vL97teTdG2w5IEevKiqL9/hPjeWE8YYtX/YW+yp53hkg== + +react-native-pdf@^6.7.5: + version "6.7.5" + resolved "https://registry.yarnpkg.com/react-native-pdf/-/react-native-pdf-6.7.5.tgz#1bc5479f2161189f938912b4080ea9eef8a9d84d" + integrity sha512-d1S76p2Vwax2iG+kTnjINiUMvpjtJJvtMiYwHRbgGczT8GJjtXH49YCWOd+HfnUAU29cB+knzsKGYoZBMQM8Ow== + dependencies: + crypto-js "4.2.0" + deprecated-react-native-prop-types "^2.3.0" + +react-native-permissions@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/react-native-permissions/-/react-native-permissions-4.1.5.tgz#db4d1ddbf076570043f4fd4168f54bb6020aec92" + integrity sha512-r6VMRacASmtRHS+GZ+5HQCp9p9kiE+UU9magHOZCXZLTJitdTuVHWZRrb4v4oqZGU+zAp3mZhTQftuMMv+WLUg== + +react-native-randombytes@^3.5.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-native-randombytes/-/react-native-randombytes-3.6.1.tgz#cac578093b5ca38e3e085becffdc6cbcf6f0d654" + integrity sha512-qxkwMbOZ0Hff1V7VqpaWrR6ItkA+oF6bnI79Qp9F3Tk8WBsdKDi6m1mi3dEdFWePoRLrhJ2L03rU0yabst1tVw== + dependencies: + buffer "^4.9.1" + sjcl "^1.0.3" + +react-native-reanimated@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.6.1.tgz#5add41efafac6d0befd9786e752e7f26dbe903b7" + integrity sha512-F4vG9Yf9PKmE3GaWtVGUpzj3SM6YY2cx1yRHCwiMd1uY7W0gU017LfcVUorboJnj0y5QZqEriEK1Usq2Y8YZqg== + dependencies: + "@babel/plugin-transform-object-assign" "^7.16.7" + "@babel/preset-typescript" "^7.16.7" + convert-source-map "^2.0.0" + invariant "^2.2.4" + +react-native-redash@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-native-redash/-/react-native-redash-18.1.0.tgz#ebebace19d0d2ed877cb6836b8c824b49354eb93" + integrity sha512-bdCFl/ZB7Rf2raIlU6SLV+Dc/rL6UXsQNjEVwTGBukHMeSKp1zs4zVtWaGimbN8P22N4qYvb9Jmw/K94ZWYG0Q== + dependencies: + abs-svg-path "^0.1.1" + normalize-svg-path "^1.0.1" + parse-svg-path "^0.1.2" + +react-native-safe-area-context@4.14.1: + version "4.14.1" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.14.1.tgz#980c3c9db02a2314fa8ceb07f614728802320367" + integrity sha512-+tUhT5WBl8nh5+P+chYhAjR470iCByf9z5EYdCEbPaAK3Yfzw+o8VRPnUgmPAKlSccOgQBxx3NOl/Wzckn9ujg== + +react-native-safe-modules@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/react-native-safe-modules/-/react-native-safe-modules-1.0.3.tgz#f5f29bb9d09d17581193843d4173ad3054f74890" + integrity sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA== + dependencies: + dedent "^0.6.0" + +react-native-shadow-2@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/react-native-shadow-2/-/react-native-shadow-2-7.0.8.tgz#df365ba1d8d22b7c63f1afc66d75308c3d6af4e1" + integrity sha512-6QlmbJvHCmDGa85jwtfrVxhro1oGm/ezTlciom0A+i0UFAzxlvmRiMHyKXg1hEB2PQkKPoG6ZpANju4mpqPqGA== + dependencies: + colord "2.9.2" + +react-native-shake@^3.3.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/react-native-shake/-/react-native-shake-3.4.0.tgz#3fa8f682651104b39c0b6c199bfa2ab10b36ce28" + integrity sha512-jOPrCC3VW/f8xYL6Yrv4XlSklVepMNF/ZdZ/5e0RzRPY+fexuNr0/Z1bQsPpaGjBd75Tk4WKpS/I/+Bj9oVXxg== + dependencies: + invariant "^2.2.x" + +react-native-share@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/react-native-share/-/react-native-share-10.0.2.tgz#ba517d20a3bf20385eeeea32d9be9b41395f4dc7" + integrity sha512-EZs4MtsyauAI1zP8xXT1hIFB/pXOZJNDCKcgCpEfTZFXgCUzz8MDVbI1ocP2hA59XHRSkqAQdbJ0BFTpjxOBlg== + +"react-native-status-keycard@git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.6": + version "2.6.6" + resolved "git+https://github.com/status-im/react-native-status-keycard.git#c27b8059b53312f60281bd7ae782173be3ac2c74" + +react-native-svg@13.10.0: + version "13.10.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.10.0.tgz#d3c6222ea9cc1e21e2af0fd59dfbeafe7a3d0dc1" + integrity sha512-D/oYTmUi5nsA/2Nw4WYlF1UUi3vZqhpESpiEhpYCIFB/EMd6vz4A/uq3tIzZFcfa5z2oAdGSxRU1TaYr8IcPlQ== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + +react-native-system-navigation-bar@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/react-native-system-navigation-bar/-/react-native-system-navigation-bar-2.6.4.tgz#34edee7051dea01531ff2be95dc14f9fa8a540b7" + integrity sha512-4pysgADW53PiuHv+2glzNLJnHSxqDszZvLoitLFI5os4D+gCDfxmR36VSET4EnXkzSf8X9mbeFkHYDypDHJyZA== + +react-native-url-polyfill@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-native-url-polyfill/-/react-native-url-polyfill-2.0.0.tgz#db714520a2985cff1d50ab2e66279b9f91ffd589" + integrity sha512-My330Do7/DvKnEvwQc0WdcBnFPploYKp9CYlefDXzIdEaA+PAhDYllkvGeEroEzvc4Kzzj2O4yVdz8v6fjRvhA== + dependencies: + whatwg-url-without-unicode "8.0.0-3" + +react-native-webview@13.6.3: + version "13.6.3" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.6.3.tgz#f3d26e942ef5cc5a07547f2e47903aa81a68e25e" + integrity sha512-IApO0JSj0uAWsBGKWagyfgDYoX29piiMYLmkHtRjKeL1rIVjLoR/bMe7KJ/0X47y86b//a6u3cYQtphyay+F2A== + dependencies: + escape-string-regexp "2.0.0" + invariant "2.2.4" + +react-native@0.73.5: + version "0.73.5" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.5.tgz#724fd1ae8ec8fee1dcf619c82bdd1695d3cff463" + integrity sha512-iHgDArmF4CrhL0qTj+Rn+CBN5pZWUL9lUGl8ub+V9Hwu/vnzQQh8rTMVSwVd2sV6N76KjpE5a4TfIAHkpIHhKg== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native-community/cli" "12.3.6" + "@react-native-community/cli-platform-android" "12.3.6" + "@react-native-community/cli-platform-ios" "12.3.6" + "@react-native/assets-registry" "0.73.1" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.17" + "@react-native/gradle-plugin" "0.73.4" + "@react-native/js-polyfills" "0.73.1" + "@react-native/normalize-colors" "0.73.2" + "@react-native/virtualized-lists" "0.73.4" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + base64-js "^1.5.1" + chalk "^4.0.0" + deprecated-react-native-prop-types "^5.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.80.3" + metro-source-map "^0.80.3" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^26.5.2" + promise "^8.3.0" + react-devtools-core "^4.27.7" + react-refresh "^0.14.0" + react-shallow-renderer "^16.15.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.2" + yargs "^17.6.2" + +react-refresh@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" + integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== + +react-shallow-renderer@^16.15.0: + version "16.15.0" + resolved "https://registry.yarnpkg.com/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz#48fb2cf9b23d23cde96708fe5273a7d3446f4457" + integrity sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA== + dependencies: + object-assign "^4.1.1" + react-is "^16.12.0 || ^17.0.0 || ^18.0.0" + +react-syntax-highlighter@^15.5.0: + version "15.5.0" + resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz#4b3eccc2325fa2ec8eff1e2d6c18fa4a9e07ab20" + integrity sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg== + dependencies: + "@babel/runtime" "^7.3.1" + highlight.js "^10.4.1" + lowlight "^1.17.0" + prismjs "^1.27.0" + refractor "^3.6.0" + +react-test-renderer@18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.1.0.tgz#35b75754834cf9ab517b6813db94aee0a6b545c3" + integrity sha512-OfuueprJFW7h69GN+kr4Ywin7stcuqaYAt1g7airM5cUgP0BoF5G5CXsPGmXeDeEkncb2fqYNECO4y18sSqphg== + dependencies: + react-is "^18.1.0" + react-shallow-renderer "^16.15.0" + scheduler "^0.22.0" + +react@18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readline-sync@^1.4.7: + version "1.4.10" + resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" + integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +refractor@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" + integrity sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA== + dependencies: + hastscript "^6.0.0" + parse-entities "^2.0.0" + prismjs "~1.27.0" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= + dependencies: + es6-error "^4.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve@^1.10.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.16.1.tgz#49fac5d8bacf1fd53f200fa51247ae736175832c" + integrity sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig== + dependencies: + path-parse "^1.0.6" + +resolve@^1.14.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.20.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rxjs@^7.0.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" + integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-stable-stringify@^2.1.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz#5dddc60e29f91cd7f8b983d7ce4a99c2202d178f" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +scheduler@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" + integrity sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ== + dependencies: + loose-envify "^1.1.0" + +scheduler@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" + integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== + dependencies: + loose-envify "^1.1.0" + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.6.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.2, semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shadow-cljs-jar@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz#0939d91c468b4bc5eab5a958f79e7ef5696fdf62" + integrity sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA== + +shadow-cljs@2.26.2: + version "2.26.2" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.26.2.tgz#c9d443940d679c33696009598b01e02a176f6a67" + integrity sha512-xBJxBxSpfoVQLSDA+WN+ZgtnyA5qYf3EE4ARZpov0JOz0YBTdIQajnNYMs5+5OzCbbNfhWGLybyu/Pj4dIwsWw== + dependencies: + node-libs-browser "^2.2.1" + readline-sync "^1.4.7" + shadow-cljs-jar "1.3.4" + source-map-support "^0.4.15" + which "^1.3.1" + ws "^7.4.6" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + +shell-quote@^1.7.3: + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sisteransi@^1.0.4, sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +sjcl@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.8.tgz#f2ec8d7dc1f0f21b069b8914a41a8f236b0e252a" + integrity sha512-LzIjEQ0S0DpIgnxMEayM1rq9aGwGRG4OnZhCdjx7glTaJtf4zRfpg87ImfjSJjoW9vKpagd82McDOwbRT5kQKQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.16, source-map-support@^0.5.9, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + +spawn-wrap@^1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.3.tgz#81b7670e170cca247d80bf5faf0cfb713bdcf848" + integrity sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw== + dependencies: + foreground-child "^1.5.6" + mkdirp "^0.5.0" + os-homedir "^1.0.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + which "^1.3.0" + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssim.js@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" + integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== + +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +std-env@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.3.1, stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.0.0, string_decoder@^1.0.3, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +sudo-prompt@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" + integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0, supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-arc-to-cubic-bezier@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6" + integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g== + +system-architecture@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/system-architecture/-/system-architecture-0.1.0.tgz#71012b3ac141427d97c67c56bc7921af6bff122d" + integrity sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA== + +tar@^6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +terser@^5.15.0: + version "5.19.4" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd" + integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +timers-browserify@^2.0.2: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +tslib@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslib@^2.0.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tslib@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +ufo@^1.4.0, ufo@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" + integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== + +uint8arrays@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" + integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +unenv@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312" + integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g== + dependencies: + consola "^3.2.3" + defu "^6.1.3" + mime "^3.0.0" + node-fetch-native "^1.6.1" + pathe "^1.1.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unstorage@^1.9.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.10.2.tgz#fb7590ada8b30e83be9318f85100158b02a76dae" + integrity sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ== + dependencies: + anymatch "^3.1.3" + chokidar "^3.6.0" + destr "^2.0.3" + h3 "^1.11.1" + listhen "^1.7.2" + lru-cache "^10.2.0" + mri "^1.2.0" + node-fetch-native "^1.6.2" + ofetch "^1.3.3" + ufo "^1.4.0" + +untun@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6" + integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ== + dependencies: + citty "^0.1.5" + consola "^3.2.3" + pathe "^1.1.1" + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== + dependencies: + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +uqr@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" + integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-to-istanbul@^9.0.1: + version "9.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +walker@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@^1.0.35: + version "1.0.35" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.35.tgz#374197207d7d4cc4c36cbf8a1bb886ee52a07885" + integrity sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.63" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-fetch@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url-without-unicode@8.0.0-3: + version "8.0.0-3" + resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" + integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== + dependencies: + buffer "^5.4.3" + punycode "^2.1.1" + webidl-conversions "^5.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" + integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^7.5.1: + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.2.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.2.tgz#f522db4313c671a0ca963a75670f1c12ea909144" + integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== + +yargs-parser@^13.0.0, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^13.2.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.1.0: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==