From d3182a7f8224740c393d0cf48049f524cabaeaf7 Mon Sep 17 00:00:00 2001 From: Overload3910 <135011493+Overload3910@users.noreply.github.com> Date: Wed, 28 Jun 2023 12:24:53 +0200 Subject: [PATCH 1/4] i18n: add Chinese translation (Simplified & Traditional) Imported Chinese Translations from Transifex --- src/i18n/languages.js | 16 + src/i18n/locales/zh-Hans/translation.json | 610 ++++++++++++++++++++++ src/i18n/locales/zh-Hant/translation.json | 610 ++++++++++++++++++++++ 3 files changed, 1236 insertions(+) create mode 100644 src/i18n/locales/zh-Hans/translation.json create mode 100644 src/i18n/locales/zh-Hant/translation.json diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 05837a431..6e6fd98ce 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -1,8 +1,14 @@ import en from './locales/en/translation.json' import fr from './locales/fr/translation.json' import pt_BR from './locales/pt_BR/translation.json' +import de from './locales/de/translation.json' const languages = [ + { + key: 'de', + description: 'Deutsch', + translation: de, + }, { key: 'en', description: 'English', @@ -18,6 +24,16 @@ const languages = [ description: 'Português (Brasil)', translation: pt_BR, }, + { + key: 'zh-Hans', + description: 'Chinese Simplified', + translation: zh - Hans, + }, + { + key: 'zh-Hant', + description: 'Chinese Traditional', + translation: zh - Hant, + }, ] export default languages diff --git a/src/i18n/locales/zh-Hans/translation.json b/src/i18n/locales/zh-Hans/translation.json new file mode 100644 index 000000000..166f7c2c6 --- /dev/null +++ b/src/i18n/locales/zh-Hans/translation.json @@ -0,0 +1,610 @@ +{ + "global": { + "loading": "正在加载", + "button_copy_text": "复制", + "button_copy_text_confirmed": "已复制", + "next": "继续", + "back": "返回", + "close": "关闭", + "abort": "终止", + "table": { + "pagination": { + "items_per_page": { + "label": "每页项目", + "text_option_show_all": "所有" + }, + "page_selector": { + "label_current": "页面", + "label_first": "首", + "label_previous": "前", + "label_next": "后", + "label_last": "末" + } + } + }, + "errors": { + "error_loading_wallet_failed": "加载钱包失败。{{ reason }}", + "error_reloading_wallet_failed": "重新加载钱包失败。{{ reason }}", + "reason_unknown": "未知原因。" + } + }, + "app": { + "alert_no_connection": "与后端无连接:{{ connectionError }}" + }, + "navbar": { + "title": "Jam", + "button_create_wallet": "创建钱包", + "tab_send": "发送", + "tab_receive": "接收", + "tab_earn": "收益", + "tab_sweep": "扫空", + "joining_in_progress": "Jamming", + "menu_mobile": "菜单", + "menu_mobile_settings": "设置" + }, + "footer": { + "warning": "这是测试版软件。
<1>使用前请先参阅。", + "warning_alert_title": "警告", + "warning_alert_text": "虽然 JoinMarket 已久经测试和检验,Jam 却非如此。它目前还是测试版软件,因此应谨慎使用。", + "warning_alert_button_ok": "没问题。", + "cheatsheet": "备忘单", + "connected": "已连接", + "disconnected": "已断连" + }, + "onboarding": { + "splashscreen_title": "Jam", + "splashscreen_subtitle": "为你和他人的隐私", + "splashscreen_button_get_started": "开始", + "splashscreen_button_skip_intro": "跳过入门", + "splashscreen_description_line1": "你的钱包,你的比特币。", + "splashscreen_description_line2": "100%开源和开放设计。", + "splashscreen_warning_title": "警告", + "splashscreen_warning_text": "虽然 JoinMarket 已久经测试和检验,Jam 却非如此。它目前还是测试版软件,因此请先<2>参阅文档并谨慎使用。你可以<1>在 GitHub 上帮我们改善这个项目。", + "screen_1_title": "欢迎来到 Jam for JoinMarket!", + "screen_1_description": "Jam 是一个 JoinMarket 的用户界面,JoinMarket 是一个以隐私为中心的软件解决方案,旨在改善比特币交易的机密性和隐私性。它的主要重点是促进通过点对点市场创建协作式交易。", + "screen_2_title": "协作式交易", + "screen_2_description": "要在比特币的开放且透明的环境中实现高度的隐私保证,必须使用一些特殊的交易。Jam 可以帮助你以简单而自动化的方式执行这些交易。", + "screen_3_title": "你始终保持掌控", + "screen_3_description": "Jam 是完全非托管的,这意味着你始终对自己的资金保持完全控制。JoinMarket 使用比特币的智能合约来确保交易原子质;你的资金始终是安全的。", + "screen_4_title": "没有受信第三方", + "screen_4_description": "JoinMarket 是一个点对点系统,因此从一开始就消除了受信第三方。这种独特的市场驱动方法将对等方风险降到最低。", + "screen_5_title": "为所有人的隐私", + "screen_5_description": "JoinMarket 是自由及开放源代码软件,没有单一故障点。任何人都可以自由地对其进行扩展、修补、检查、分配和建立。此外,你当然可以利用它来改善你和他人的隐私。", + "button_next": "继续", + "button_complete": "开始吧!" + }, + "error_page": { + "unknown_error": { + "title": "遇到未知错误", + "subtitle": "无法确定错误的来源。" + }, + "error_with_details": { + "title": "出错了 :(", + "subtitle": "" + }, + "heading_reason": "原因:", + "heading_stacktrace": "堆栈跟踪:", + "report_bug": "请在 <2>GitHub 上打开一个问题,以便在即将发布的版本中审查和解决此错误。" + }, + "wallets": { + "title": "你的钱包", + "subtitle_no_wallets": "看起来你目前还没有任何钱包。", + "text_loading": "正在加载钱包", + "button_new_wallet": "创建新钱包", + "alert_wallet_open": "只允许一个活跃钱包。如果你想要打开另一个钱包,请先锁上 '{{ currentWalletName }}'。", + "error_loading_failed": "加载钱包失败。", + "wallet_preview": { + "alert_wallet_already_unlocked": "{{ walletName }} 已经解锁了。", + "alert_other_wallet_unlocked": "{{ walletName }} 正在被使用,请先把它锁上。", + "alert_wallet_locked_successfully": "{{ walletName }} 已成功锁上。", + "alert_wallet_already_locked": "{{ walletName }} 已经被锁上了。", + "wallet_active": "活跃", + "wallet_inactive": "不活跃", + "placeholder_password": "密码", + "button_open": "打开", + "button_lock": "锁上", + "button_unlock": "解锁", + "button_locking": "正在上锁", + "button_unlocking": "正在解锁", + "feedback_missing_password": "请设置钱包密码。", + "modal_lock_wallet_title": "锁上钱包", + "modal_lock_wallet_maker_running_text": "收益处于活跃状态。钱包上锁将停止服务。", + "modal_lock_wallet_coinjoin_in_progress_text": "协作式交易正在进行中。钱包上锁将停止服务。", + "modal_lock_wallet_alternative_action_text": "你可以关闭浏览器窗口并让它在背景中运行。" + } + }, + "create_wallet": { + "title": "创建钱包", + "title_wallet_created": "钱包已成功创建!", + "subtitle_wallet_created": "请写下你的种子词和密码!没有这些信息,你将无法访问和恢复你的钱包!", + "alert_other_wallet_unlocked": "目前 <1>{{ walletName }} 正处于活跃状态。你必须先将它锁上。<3>返回。", + "feedback_valid": "看起来不错!", + "label_wallet_name": "钱包名称", + "placeholder_wallet_name": "你的钱包...", + "feedback_invalid_wallet_name": "请给钱包取个名称。", + "label_password": "解锁钱包的密码", + "placeholder_password": "选择一个安全的密码...", + "feedback_invalid_password": "请设一个密码。", + "label_password_confirm": "确认密码", + "placeholder_password_confirm": "重复密码...", + "feedback_invalid_password_confirm": "输入的密码不匹配。", + "button_create": "创建", + "button_creating": "正在创建中", + "alert_confirmation_failed": "钱包确认失败。", + "confirmation_label_wallet_name": "钱包名称", + "confirmation_label_password": "密码", + "confirmation_toggle_reveal_info": "显示敏感信息", + "confirmation_toggle_info_written_down": "我已经写下了以上的信息。", + "confirmation_button_fund_wallet": "充值钱包", + "confirm_backup_title": "确认种子词备份", + "confirm_backup_subtitle": "按顺序输入每个单词。", + "feedback_seed_confirmed": "种子词已确认。", + "back_button": "返回", + "skip_button": "跳过", + "next_button": "继续", + "placeholder_seed_word_input": "单词", + "hint_duration_text": "请耐心等待,这可能需要几分钟。" + }, + "current_wallet": { + "text_loading": "正在加载", + "button_deposit": "接收", + "button_withdraw": "发送", + "error_loading_failed": "加载钱包失败。", + "jar_tooltip": "进去看看", + "jar_tooltip_empty_jar_0": "接收", + "jars_title": "钱包分配", + "jars_title_popover": "罐子用于将你的聪分配至多个互相隔绝的部分中。这样有助于隐私。", + "account_heading_external_addresses": "用于存款的外部地址", + "account_heading_internal_addresses": "内部地址" + }, + "settings": { + "section_title_display": "显示", + "section_title_market": "市场", + "section_title_wallet": "钱包", + "section_title_community": "社群", + "section_title_dev": "开发和文档", + "show_balance": "显示余额", + "hide_balance": "隐藏余额", + "use_sats": "以聪为单位", + "use_btc": "以比特币为单位", + "use_dark_theme": "切换深色主题", + "use_light_theme": "切换浅色主题", + "text_help_translate": "找不到你的语言?帮我们做翻译!", + "show_seed": "显示种子词", + "hide_seed": "隐藏种子词", + "reveal_seed": "显示种子词", + "show_logs": "显示日志", + "show_fee_config": "调整费用限制", + "button_lock_wallet": "锁上钱包", + "button_locking_wallet": "正在上锁...", + "button_switch_wallet": "切换钱包", + "button_create_wallet": "创建新钱包", + "error_loading_seed_failed": "无法检索种子词。", + "seed_modal_info_text": "请写下你的种子词和密码!没有这些信息,你将无法访问和恢复你的钱包!", + "documentation": "文档", + "github": "GitHub", + "matrix": "Matrix", + "telegram": "Telegram", + "jm_twitter": "JoinMarket 推特", + "jam_twitter": "Jam 推特", + "confirm_locking_modal_title": "锁上钱包", + "confirm_locking_modal_body_earn": "收益处于活跃状态。钱包上锁将停止服务。你可以关闭浏览器窗口并让它在背景中运行。", + "confirm_locking_modal_body_jam": "协作式交易正在进行中。钱包上锁将停止服务。你可以关闭浏览器窗口并让它在背景中运行。", + "fees": { + "title": "费用限制", + "description": "按你的需求调整挖矿费和协作方费。挖矿费关联交易优先级和内存池状况。协作方费关联流动性价格和市场状况。每个交易的总费用取决于协作方数量。协作方越多,隐私程度越高,但同时也会增加费用。这些设置在 JoinMarket 重启时会被重置,例如系统重启时。有关更多信息,请<1>参阅关于费用的文档。", + "title_general_fee_settings": "挖矿费", + "radio_tx_fees_blocks": "区块目标", + "radio_tx_fees_satspervbyte": "聪/字节", + "label_tx_fees": "交易基本费用", + "description_tx_fees_blocks": "使用区块目标时,Jam 将使用 Bitcoin Core 的费用估计机制来根据内存池状况动态设置基本费用。默认:3。", + "description_tx_fees_satspervbyte": "设置聪/字节的基本费用将覆盖区块目标设置。检查你的内存池来相应地设置此费用。", + "feedback_invalid_tx_fees_blocks": "请提供一个有效的区块目标,从 {{ min }} 到 {{ max }}。", + "feedback_invalid_tx_fees_satspervbyte": "请提供一个有效的,以聪/字节为单位的交易费,从 {{ min }} 到 {{ max }}。", + "label_tx_fees_factor": "费用随机化", + "description_tx_fees_factor": "随机费用改善隐私。该百分比应理解为围绕基本费用的正负。例:如果将基本费用设为10聪/字节,并将随机化值设为30%,则将使用7到13聪/字节之间的费用。默认:20%。", + "feedback_invalid_tx_fees_factor": "请提供一个有效的费用随机化值,从{{ min }}到{{ max }}。", + "title_max_cj_fee_settings": "协作方费用", + "subtitle_max_cj_fee": "注意:只有当两个限制都被超过时才会拒绝报价。", + "label_max_cj_fee_abs": "绝对限制(每个协作方)", + "description_max_cj_fee_abs": "你愿意支付给每个协作方的最高费用。例:当设为3000聪时,在使用默认的9个协作方时最高费用则是27000聪。", + "feedback_invalid_max_cj_fee_abs": "请提供一个有效的,以聪为单位的最高绝对费用,从{{ min }}到{{ max }}。", + "label_max_cj_fee_rel": "相对限制(每个协作方)", + "description_max_cj_fee_rel": "你愿意支付给每个协作方的最高费用,作为交易金额的百分比。例:如果你发送2百万聪并把最高费用设为0.1%,那么你将最多支付每个协作方2000聪。", + "feedback_invalid_max_cj_fee_rel": "请提供一个有效的最高相对费用,从{{ min }}到{{ max }}。", + "text_button_cancel": "取消", + "text_button_submit": "保存", + "text_button_submitting": "正在保存...", + "error_loading_fee_config_failed": "加载费用配置值时出错了。", + "error_saving_fee_config_failed": "保存费用配置值时出错了。原因:{{ reason }}" + } + }, + "logs": { + "title": "日志", + "error_loading_logs_failed": "无法检索日志文件。" + }, + "send": { + "loading": "正在加载", + "title": "发送", + "subtitle": "使用协作式交易来提高安全性和隐秘性。", + "label_num_collaborators": "协作方数量:{{ numCollaborators }}", + "input_num_collaborators_placeholder": "其他", + "description_num_collaborators": "更高的数量会提高隐秘性,但同时也会增加交易费用。", + "error_invalid_num_collaborators": "请使用{{ minNumCollaborators }}到{{ maxNumCollaborators }}个协作方。", + "taker_error_message_max_fees_config_missing": "必须在你的 joinmarket.cfg 中先设置配置变量 'max_cj_fee_rel' 和 'max_cj_fee_abs' 才能发送协作式交易。请考虑手动将它们添加到你的配置中。", + "direct_payment_error_message_bad_request": "请仔细检查你的输入。", + "error_loading_min_makers_failed": "加载配置值 'minimum_makers' 失败了。", + "alert_payment_successful": "付款成功:在交易 {{ txid }} 中发送了 {{ amount }} 聪到 {{ address }}。", + "text_maker_running": "收益处于活跃状态。停止服务以发送协作式交易。", + "text_coinjoin_already_running": "协作式交易正在进行中。", + "label_recipient": "收款方", + "placeholder_recipient": "输入地址或从钱包中选择罐子...", + "feedback_reused_address": "这个地址已经被使用过了。为了保护你的隐私,请选另一个地址。", + "label_source_jar": "来源", + "title_jar_selector": "选择一个你自己钱包中的罐子作为收款方。", + "label_amount": "聪金额", + "placeholder_amount": "输入金额...", + "feedback_invalid_amount": "请输入有效的金额。", + "sending_options": "发送选项", + "toggle_coinjoin": "作为协作式交易发送", + "toggle_coinjoin_subtitle": "协作式交易增强你和他人的隐私程度。", + "button_send": "发送", + "button_send_despite_warning": "忽略警告并尝试发送", + "button_send_without_improved_privacy": "无隐私改善发送", + "text_sending": "正在发送", + "button_sweep": "扫空", + "button_clear_sweep": "清除", + "button_sweep_amount_breakdown": "这是如何计算的?", + "sweep_amount_breakdown_total_balance": "总余额", + "sweep_amount_breakdown_frozen_balance": "已冻结或已锁定的余额", + "sweep_amount_breakdown_estimated_amount": "预计要发送的金额", + "sweep_amount_breakdown_explanation": "扫空交易将消耗一个混币深度的所有 UTXO;除了<1>已冻结或<3>时间锁定的比特币之外,不会留下任何比特币。链上交易费用和市场挂单方费用将从总金额扣除,以消除找零。确切的交易金额只有当交易执行的那一刻才能被 JoinMarket 计算。因此预计金额可能与实际金额有所差异。请参阅 <5>JoinMarket 文档了解更多。", + "confirm_send_modal": { + "title": "确认付款", + "label_amount": "金额", + "text_sweep_balance": "扫空(<1>)", + "text_sweep_info_popover": "确切的交易金额只能在执行交易时通过 JoinMarket 计算。", + "label_recipient": "收款方", + "label_source_jar": "来源", + "text_source_jar": "罐子 {{ jarId }}", + "label_num_collaborators": "协作方", + "text_collaborative_tx_enabled": "改善隐私的付款", + "text_collaborative_tx_disabled": "无隐私改善的付款", + "label_estimated_max_collaborator_fee": "协作方费用", + "text_estimated_max_collaborator_fee_info_popover": "该值表示最高上限。 实际费用可能要低得多。", + "label_miner_fee": "挖矿费", + "text_miner_fee_in_satspervbyte_exact": "{{ value }} 聪/字节", + "text_miner_fee_in_satspervbyte_randomized": "{{ min }} - {{ max }} 聪/字节", + "text_miner_fee_in_targeted_blocks_one": "高优先级估计(下一个区块)", + "text_miner_fee_in_targeted_blocks_other": "正在使用置入第{{ count }}个区块的估计" + }, + "confirm_abort_modal": { + "title": "终止付款", + "text_body": "是否确定要终止协作式交易?" + }, + "coinjoin_precondition": { + "hint_missing_utxos": "要执行协作式交易你的来源罐子里必须具有至少{{ minConfirmations }}次确认的 UTXO。$t(send.coinjoin_precondition.nested_hint_fund_jar, {\"count\": {{ minConfirmations }} })", + "hint_missing_confirmations": "协作式交易要求你的 UTXO 具有至少{{ minConfirmations }}次确认。$t(send.coinjoin_precondition.nested_hint_wait_for_block, {\"count\": {{ amountOfMissingConfirmations }} })", + "hint_missing_retries": "连续过多次未能为该罐子获得承诺。处于安全原因,罐子里需要有新的 UTXO 才能重试。请参阅<1>文档了解更多。", + "hint_missing_retries_detail_one": "以下的 UTXO 因已被过多次使用不成功而无法重新使用:<1>", + "hint_missing_retries_detail_other": "以下的{{ count }}個 UTXOs 因已被过多次使用不成功而无法重新使用:<1>", + "nested_hint_wait_for_block": "选择另一个罐子作为来源或者再等一个区块。", + "nested_hint_wait_for_block_other": "选择另一个罐子作为来源或者再等{{ count }}个区块。", + "nested_hint_fund_jar": "选择另一个罐子作为来源或者充值这个罐子并再等一个区块。", + "nested_hint_fund_jar_other": "选择另一个罐子作为来源或者充值这个罐子并再等 {{ count }} 个区块。" + } + }, + "receive": { + "title": "接收", + "subtitle": "将聪发送到以下的地址来充值你的钱包。", + "error_loading_address_failed": "无法获取新地址。", + "error_copy_address_failed": "无法复制地址。", + "button_copy_address": "复制", + "text_copy_address_confirmed": "已复制", + "button_settings": "接收选项", + "label_amount": "要求的聪金额", + "feedback_invalid_amount": "请输入有效的金额。", + "button_new_address": "获取新地址", + "text_getting_address": "正在获取新地址" + }, + "earn": { + "title": "收益", + "subtitle": "通过向市场提供流动性,你帮助自己和他人改善隐私。你始终保持对你的资金的掌控,资金永远不会离开你的钱包。", + "market_explainer": "你可以选择要为你的报价收取多少费用。请注意你将在开放市场上参与和竞争 — 无法保证其他市场参与者会接受你的报价。被选中进行协作式交易可能需要一些时间。低费用会增加你的机会。", + "alert_empty_report": "报告是空的。", + "text_report_length": "正在显示{{ linesWithoutHeader }}个条目中的{{ visibleLines }}", + "error_loading_report_failed": "加载收入报告失败。", + "alert_starting": "服务正在开始。", + "alert_stopping": "服务正在停止。", + "alert_running": "正在提供流动性并以此赚取收益...", + "alert_coinjoin_in_progress": "协作式交易正在进行中。", + "button_settings": "报价选项", + "radio_abs_offer_label": "绝对报价", + "radio_rel_offer_label": "相对报价", + "label_rel_fee": "相对费用{{ fee }}", + "description_rel_fee": "向他人收取的费用,占交易金额的百分比。", + "feedback_invalid_rel_fee": "请提供一个从{{feeRelPercentageMin}}到 {{feeRelPercentageMax}}的相对费用。", + "label_abs_fee": "绝对费用{{ fee }}", + "description_abs_fee": "向他人收取的费用,以聪为单位的绝对金额。", + "feedback_invalid_abs_fee": "绝对费用无效。", + "label_min_amount": "最低聪金额", + "feedback_invalid_min_amount": "请输入最低金额。", + "button_start": "开始收益!", + "button_stop": "停止", + "text_starting": "正在开始", + "text_stopping": "正在停止", + "button_show_report": "显示收入报告", + "button_show_orderbook": "显示订单簿", + "current": { + "text_offer": "报价", + "text_cjfee": "费用", + "text_minsize": "最低金额", + "text_maxsize": "最高金额", + "text_txfee": "交易费", + "text_offer_type_absolute": "绝对", + "text_offer_type_relative": "相对" + }, + "report": { + "title": "收入报告", + "text_report_summary_one": "{{ count }}个条目", + "text_report_summary_other": "{{ count }}个条目", + "text_report_summary_filtered_one": "找到了{{ count }}个条目", + "text_report_summary_filtered_other": "找到了{{ count }}个条目", + "label_search": "搜索", + "placeholder_search": "搜索", + "heading_timestamp": "时间戳", + "heading_cj_amount": "交易金额", + "heading_input_count": "我的输入", + "heading_input_value": "我的输入金额", + "heading_earned": "收益", + "heading_notes": "笔记" + }, + "title_fidelity_bonds_zero": "创建保证金", + "title_fidelity_bonds_one": "你的保证金", + "title_fidelity_bonds_other": "你的保证金", + "subtitle_fidelity_bonds": "保证金是一个刻意使加密身份变得昂贵的长期存款。通过使用加密方式时间锁定资金,你向市场表示你是一个认真的市场参与者,而你的报价被接受的几率也会因此增加。", + "fidelity_bond": { + "error_freezing_utxos": "无法冻结 UTXOs。", + "error_unfreezing_utxos": "无法解冻 UTXOs。", + "error_loading_address": "无法加载时间锁地址。", + "error_creating_fidelity_bond": "创建保证金的交易失败了。", + "text_loading": "正在加载...", + "text_creating": "正在创建...", + "text_unfreezing": "正在解冻...", + "select_date": { + "text_primary_button": "继续", + "text_secondary_button": "取消", + "form_label_year": "年", + "form_label_month": "月", + "description": "保证金到期日期:" + }, + "select_jar": { + "text_primary_button": "继续", + "text_secondary_button": "取消", + "description": "选择保证金资金来源的罐子。" + }, + "select_utxos": { + "text_primary_button": "继续", + "text_primary_button_unsafe": "选择可能隐私性较弱的 UTXOs", + "text_secondary_button": "取消", + "description": "从罐子 {{ jar }} 选择单一或多个 UTXOs 以用于保证金。", + "utxo_card": { + "confirmations": "{{ confs }}次确认", + "label_frozen": "已冻结", + "label_locked": "已锁定", + "label_cj_out": "混币输出" + } + }, + "freeze_utxos": { + "text_primary_button": "冻结 UTXOs", + "text_primary_button_all_frozen": "回顾保证金配置", + "text_primary_button_error": "重新尝试", + "text_secondary_button": "取消", + "description_selected_utxos": "已选定的 UTXOs:", + "description_unselected_utxos": "以下的 UTXOs 不会用于保证金:", + "description_selected_utxos_to_freeze": "它们将会被冻结于罐子 {{ jar }}。你可以在创建保证金之后随时将它们解冻。" + }, + "review_inputs": { + "text_primary_button": "创建保证金", + "text_primary_button_unsafe": "用可能隐私性较弱的 UTXOs 创建保证金", + "text_primary_button_error": "重新尝试", + "text_secondary_button": "取消", + "description": "你如下配置了保证金:", + "label_lock_date": "锁定至", + "label_jar": "来源", + "label_jar_n": "罐子 {{ jar }}", + "label_amount": "将锁定的金额", + "label_address": "资金将被时间锁定并被发送至", + "label_selected_utxos": "将被时间锁定的 UTXOs:" + }, + "create_fidelity_bond": { + "success_text": "保证金已创建!", + "text_primary_button": "完成", + "text_primary_button_unfreeze": "解冻 UTXOs", + "text_primary_button_error": "重新开始", + "text_secondary_button": "完成", + "label_lock_date": "锁定至", + "label_address": "时间锁地址", + "label_utxos_to_unfreeze": "你是否想要解冻之前冻结的 UTXOs?" + }, + "unfreeze_utxos": { + "text_primary_button": "完成", + "done": "UTXOs 已解冻" + }, + "confirm_modal": { + "title": "创建保证金并时间锁定资金?", + "body": "在保证金到期之前将无法移动时间锁定的资金。到期日期是于 {{date}} 的 {{ humanReadableDuration }}。" + }, + "title": "配置保证金", + "title_fidelity_bond_exists": "配置额外的保证金", + "subtitle": "你的聪将被比特币协议所时间锁定。在保证金到期之前将无法移动资金。", + "subtitle_fidelity_bond_exists": "如果存在多个保证金,只有<0>价值最高的会被使用。", + "text_maker_running": "收益处于活跃状态。停止服务以创建保证金。", + "text_coinjoin_already_running": "协作式交易正在进行中。", + "create_form": { + "confirmation_toggle_title": "我已仔细检查了我的输入", + "confirmation_toggle_subtitle": "我了解锁定的资金在给定的期限内将无法使用", + "button_create": "创建保证金" + }, + "existing": { + "title_active": "保证金", + "title_expired": "保证金<1>已到期", + "label_locked_until": "锁定至", + "label_expired_on": "于此日期到期", + "label_address": "时间锁地址", + "button_spend": "解锁资金" + }, + "move": { + "title": "解锁资金", + "success_text": "已成功解锁保证金!", + "text_loading": "正在加载...", + "text_sending": "正在解锁...", + "text_button_cancel": "取消", + "text_button_submit": "解锁资金", + "text_button_done": "完成", + "error_fidelity_bond_still_locked": "该保证金仍然处于锁定状态。", + "error_loading_address": "无法获取新地址。", + "error_freezing_utxos": "无法冻结 UTXOs。", + "error_unfreezing_fidelity_bond": "解冻到期的保证金时出错了。", + "error_spending_fidelity_bond": "解锁到期的保证金时出错了。", + "select_jar": { + "description": "选择将到期的保证金移至的罐子。" + }, + "confirm_send_modal": { + "title": "确认解锁到期的保证金" + } + } + } + }, + "cheatsheet": { + "title": "备忘单", + "description": "按照以下步骤来增强你的财务隐私。建议在<2>以挂单方身份收益和<6>以吃单方身份发送两种模式中来回切换。<10>了解更多。", + "receive": { + "title": "<0>充值你的钱包。", + "description": "自己存入资金或从他人接收付款。" + }, + "send": { + "title": "<0>发送协作式交易到另一个罐子。", + "description": "协作式交易增强你和他人的隐私程度。" + }, + "bond": { + "title": "可选:<1>锁定保证金。", + "description": "保证金大幅度增加你获得收益的机会" + }, + "earn": { + "title": "提供流动性并以此<0>收益。", + "description": "向市场提供流动性并收取费用。无需信任或托管 — 你始终对你的资金保持完全控制。" + }, + "schedule": { + "title": "预定<1>扫空交易来清空你的钱包。", + "description": "自动执行一系列协作式交易。你可以把资金扫空到冷藏或用它打开闪电通道。" + }, + "repeat": { + "title": "冲洗并重复!", + "description": "还是一头雾水? 深入研究<2>文档。" + } + }, + "orderbook": { + "title": "订单簿", + "text_orderbook_summary_one": "来自{{ counterpartyCount }}个对等方的{{ count }}个报价", + "text_orderbook_summary_other": "来自{{ counterpartyCount }}个对等方的{{ count }}个报价", + "text_orderbook_summary_filtered_one": "找到了来自{{ counterpartyCount }}个对等方的{{ count }}个报价", + "text_orderbook_summary_filtered_other": "找到了来自{{ counterpartyCount }}个对等方的{{ count }}个报价", + "alert_empty_orderbook": "订单簿是空的", + "error_loading_orderbook_failed": "加载订单簿时出错了。有可能你目前的本地设置不支持获取订单簿。原因:{{ reason }}", + "text_offer_type_absolute": "绝对", + "text_offer_type_relative": "相对", + "label_search": "搜索", + "placeholder_search": "搜索", + "text_orderbook_filter_count": "{{ filterCount }}个条目符合给定的搜索条件", + "label_highlight_own_orders": "强调我的报价", + "table": { + "heading_type": "种类", + "heading_counterparty": "对等方", + "heading_order_id": "订单 ID", + "heading_fee": "费用", + "heading_miner_fee_contribution": "挖矿费贡献", + "heading_minimum_size": "最低金额", + "heading_maximum_size": "最高金额", + "heading_bond_value": "保证金价值" + } + }, + "scheduler": { + "title": "预定扫空(试验性)", + "subtitle": "使用随机金额和时间间隔执行多次交易,以此增加你和他人的隐私程度。每个预定的交易都是协作式交易。", + "error_starting_schedule_failed": "开始调度程序失败。", + "error_stopping_schedule_failed": "停止调度程序失败。", + "complete_wallet_title": "整个钱包", + "complete_wallet_subtitle": "这将使用你所有解冻的资金。", + "description_destination_addresses": "调度程序将把所有可用资金随机分配并发送到多个目的地。", + "feedback_invalid_destination_address": "请输入有效的目的地地址。", + "feedback_reused_destination_address": "这个地址已经被使用过了。为了保护你的隐私,请选另一个地址。", + "label_destination_input": "目的地 {{ destination }}", + "placeholder_destination_input": "输入目的地地址...", + "description_fees": "调度程序将自动支付所有产生的费用。", + "button_start": "开始调度程序", + "button_stop": "停止调度程序", + "progress_tldr_seconds": "在<3>{{ seconds }}秒的范围内预定了<1>{{ length }}个交易。", + "progress_tldr_hours": "在<3>{{ hours }}小时的范围内预定了<1>{{ length }}个交易。", + "progress_description": "此估计是最低等待时间。不计因网络通信或交易确认而造成的其他耽延。", + "progress_current_state": "正在等待处理 <3>{{ total }} 个交易中的第 <1>{{ current }}个交易...", + "progress_done": "所有交易都已成功完成。调度程序即将停止。", + "precondition": { + "hint_missing_utxos": "要运行调度程序你需要具有至少{{ minConfirmations }}次确认的 UTXOs。$t(scheduler.precondition.nested_hint_fund_wallet, {\"count\": {{ minConfirmations }} })", + "hint_missing_confirmations": "调度程序要求你的 UTXOs 具有至少{{ minConfirmations }}次确认。$t(scheduler.precondition.nested_hint_wait_for_block, {\"count\": {{ amountOfMissingConfirmations }} })", + "hint_missing_retries": "连续过多次未能为该罐子获得承诺。出于安全原因,罐子里需要有新的 UTXO 才能重试。请参阅<1>文档了解更多。", + "hint_missing_retries_detail_one": "以下的 UTXO 因已被过多次使用不成功而无法重新使用:<1>", + "hint_missing_retries_detail_other": "以下的 {{ count }} UTXOs 因已被过多次使用不成功而无法重新使用:<1>", + "nested_hint_wait_for_block": "等待一个区块。", + "nested_hint_wait_for_block_other": "等待{{ count }}个区块。", + "nested_hint_fund_wallet": "充值你的钱包并等待一个区块。", + "nested_hint_fund_wallet_other": "充值你的钱包并等待{{ count }}个区块。" + }, + "success": { + "title": "成功!", + "subtitle": "成功完成了一个预定的交易。", + "subtitle_other": "成功完成了{{ count }}个预订的交易。", + "text_button_submit": "继续" + } + }, + "modal": { + "confirm_button_accept": "确认", + "confirm_button_reject": "取消" + }, + "jar_details": { + "title_tab_utxos": "UTXOs", + "title_tab_jar_details": "详情", + "utxo_list": { + "title_zero": "罐子 {{ jar }} 内没有任何 UTXO", + "title_one": "罐子 {{ jar }} 内的{{ count }}UTXO", + "title_other": "罐子 {{ jar }} 内的{{ count }}UTXOs", + "text_balance_sum_total": "<0> 总额", + "text_balance_sum_selected": "<0> 所选", + "button_freeze": "冻结", + "button_unfreeze": "解冻", + "button_freeze_loading": "正在冻结...", + "button_unfreeze_loading": "正在解冻...", + "utxo_tooltip_locktime": "锁定至 {{ locktime }}", + "utxo_tag_frozen": "已冻结", + "utxo_tag_fb": "保证金", + "column_title_balance": "价值", + "column_title_address": "地址", + "column_title_confirmations": "确认", + "column_title_label_and_status": "标签", + "row_button_details": "详情", + "utxo_detail_label_id": "UTXO Id", + "utxo_detail_label_address": "地址", + "utxo_detail_label_path": "路径", + "utxo_detail_label_label": "地址标签", + "utxo_detail_label_value": "价值", + "utxo_detail_label_tries": "尝试", + "utxo_detail_label_tries_remaining": "剩余尝试", + "utxo_detail_label_jar": "罐子", + "utxo_detail_label_is_external": "是外部", + "utxo_detail_label_confirmations": "确认", + "utxo_detail_label_is_frozen": "已冻结", + "utxo_detail_label_locktime": "锁定时间", + "utxo_detail_label_status": "地址状态" + } + } +} diff --git a/src/i18n/locales/zh-Hant/translation.json b/src/i18n/locales/zh-Hant/translation.json new file mode 100644 index 000000000..828faf834 --- /dev/null +++ b/src/i18n/locales/zh-Hant/translation.json @@ -0,0 +1,610 @@ +{ + "global": { + "loading": "正在加載", + "button_copy_text": "複製", + "button_copy_text_confirmed": "已複製", + "next": "繼續", + "back": "返回", + "close": "關閉", + "abort": "終止", + "table": { + "pagination": { + "items_per_page": { + "label": "每頁項目", + "text_option_show_all": "所有" + }, + "page_selector": { + "label_current": "頁面", + "label_first": "首", + "label_previous": "前", + "label_next": "後", + "label_last": "末" + } + } + }, + "errors": { + "error_loading_wallet_failed": "加載錢包失敗。{{ reason }}", + "error_reloading_wallet_failed": "重新加載錢包失敗。{{ reason }}", + "reason_unknown": "未知原因。" + } + }, + "app": { + "alert_no_connection": "與後端無連結:{{ connectionError }}" + }, + "navbar": { + "title": "Jam", + "button_create_wallet": "創建錢包", + "tab_send": "發送", + "tab_receive": "接收", + "tab_earn": "收益", + "tab_sweep": "掃空", + "joining_in_progress": "Jamming", + "menu_mobile": "菜單", + "menu_mobile_settings": "設置" + }, + "footer": { + "warning": "這是測試版軟件。
<1>使用前請先閱讀。", + "warning_alert_title": "警告", + "warning_alert_text": "雖然 JoinMarket 已久經測試和檢驗,Jam 卻非如此。它目前還是測試版軟件,因此應謹慎使用。", + "warning_alert_button_ok": "沒問題。", + "cheatsheet": "備忘單", + "connected": "已連接", + "disconnected": "已斷連" + }, + "onboarding": { + "splashscreen_title": "Jam", + "splashscreen_subtitle": "為你和他人的隱私", + "splashscreen_button_get_started": "開始", + "splashscreen_button_skip_intro": "跳過入門", + "splashscreen_description_line1": "你的錢包,你的比特幣。", + "splashscreen_description_line2": "100%開源和開放設計。", + "splashscreen_warning_title": "警告", + "splashscreen_warning_text": "雖然 JoinMarket 已久經測試和檢驗,Jam 卻非如此。它目前還是測試版軟件,因此請先<2>參閱文檔並謹慎使用。你可以<1>在 GitHub 上幫我們改善這個項目。", + "screen_1_title": "歡迎來到 Jam for JoinMarket!", + "screen_1_description": "Jam 是一個 JoinMarket 的用戶界面,JoinMarket 是一個以隱私為中心的軟件解決方案,旨在改善比特幣交易的機密性和隱私性。它的主要重點是促進通過點對點市場創建協作式交易。", + "screen_2_title": "協作式交易", + "screen_2_description": "要在比特幣的開放且透明的環境中實現高度的隱私保證,必須使用一些特殊的交易。Jam 可以幫助你以簡單而自動化的方式執行這些交易。", + "screen_3_title": "你始終保持掌控", + "screen_3_description": "Jam 是完全非託管的,這意味著你始終對自己的資金保持完全控制。JoinMarket 使用比特幣的智能合約來確保交易的原子質;你的資金始終是安全的。", + "screen_4_title": "沒有受信第三方", + "screen_4_description": "JoinMarket 是一個點對點系統,因此從一開始就消除了受信第三方。這種獨特的市場驅動方法將對等方風險降到最低。", + "screen_5_title": "為所有人的意思", + "screen_5_description": "JoinMarket 是自由及開放源代碼軟件,沒有單一故障點。任何人都可以自由地對其進行擴展、修補、檢查、分配和建立。此外,你當然可以利用它來改善你和他人的隱私。", + "button_next": "繼續", + "button_complete": "開始吧!" + }, + "error_page": { + "unknown_error": { + "title": "遇到未知錯誤", + "subtitle": "無法確定錯誤的來源。" + }, + "error_with_details": { + "title": "出錯了 :(", + "subtitle": "" + }, + "heading_reason": "原因:", + "heading_stacktrace": "堆棧跟蹤:", + "report_bug": "請在 <2>GitHub 上打開一個問題,以便在即將發佈的版本中審查和解決此錯誤。" + }, + "wallets": { + "title": "你的錢包", + "subtitle_no_wallets": "看起來你目前還沒有任何錢包。", + "text_loading": "正在加載錢包", + "button_new_wallet": "創建新錢包", + "alert_wallet_open": "只允許一個活躍錢包。如果你想打開另一個錢包,請先鎖上 '{{ currentWalletName }}'。", + "error_loading_failed": "加載錢包失敗。", + "wallet_preview": { + "alert_wallet_already_unlocked": "{{ walletName }} 已經解鎖了。", + "alert_other_wallet_unlocked": "{{ walletName }} 正在被使用,請先把它鎖上。", + "alert_wallet_locked_successfully": "{{ walletName }} 已成功鎖上。", + "alert_wallet_already_locked": "{{ walletName }} 已經被鎖上了。", + "wallet_active": "活躍", + "wallet_inactive": "不活躍", + "placeholder_password": "密碼", + "button_open": "打開", + "button_lock": "鎖上", + "button_unlock": "解鎖", + "button_locking": "正在上鎖", + "button_unlocking": "正在解鎖", + "feedback_missing_password": "請設置錢包密碼。", + "modal_lock_wallet_title": "鎖上錢包", + "modal_lock_wallet_maker_running_text": "收益處於活躍狀態。錢包上鎖將停止服務。", + "modal_lock_wallet_coinjoin_in_progress_text": "協作式交易正在進行中。錢包上鎖將停止服務。", + "modal_lock_wallet_alternative_action_text": "你可以關閉瀏覽器窗口並讓它在背景中運行。" + } + }, + "create_wallet": { + "title": "創建錢包", + "title_wallet_created": "錢包已成功創建!", + "subtitle_wallet_created": "請寫下你的種子詞和密碼!沒有這些信息,你將無法訪問和恢復你的錢包!", + "alert_other_wallet_unlocked": "目前 <1>{{ walletName }} 正處於活躍狀態。你必須先把它鎖上。<3>返回。", + "feedback_valid": "看起來不錯!", + "label_wallet_name": "錢包名稱", + "placeholder_wallet_name": "你的錢包...", + "feedback_invalid_wallet_name": "請給錢包取個名稱。", + "label_password": "解鎖錢包的密碼。", + "placeholder_password": "選擇一個安全的密碼...", + "feedback_invalid_password": "請設一個密碼。", + "label_password_confirm": "確認密碼。", + "placeholder_password_confirm": "重複密碼...", + "feedback_invalid_password_confirm": "輸入的密碼不匹配。", + "button_create": "創建", + "button_creating": "正在創建中", + "alert_confirmation_failed": "錢包確認失敗。", + "confirmation_label_wallet_name": "錢包名稱", + "confirmation_label_password": "密碼", + "confirmation_toggle_reveal_info": "顯示敏感信息", + "confirmation_toggle_info_written_down": "我已經寫下了以上的信息。", + "confirmation_button_fund_wallet": "充值錢包", + "confirm_backup_title": "確認種子詞備份", + "confirm_backup_subtitle": "按順序輸入每個單詞。", + "feedback_seed_confirmed": "種子詞已確認。", + "back_button": "返回", + "skip_button": "跳過", + "next_button": "繼續", + "placeholder_seed_word_input": "單詞", + "hint_duration_text": "請耐心等待,這可能需要幾分鐘。" + }, + "current_wallet": { + "text_loading": "正在加載", + "button_deposit": "接收", + "button_withdraw": "發送", + "error_loading_failed": "加載錢包失敗。", + "jar_tooltip": "進去看看", + "jar_tooltip_empty_jar_0": "接收", + "jars_title": "錢包分佈", + "jars_title_popover": "罐子用於將你的聰分配至多個互相隔絕的部份中。這樣有助於隱私。", + "account_heading_external_addresses": "用於存款的外部地址", + "account_heading_internal_addresses": "內部地址" + }, + "settings": { + "section_title_display": "顯示", + "section_title_market": "市場", + "section_title_wallet": "錢包", + "section_title_community": "社群", + "section_title_dev": "開發和文檔", + "show_balance": "顯示餘額", + "hide_balance": "隱藏餘額", + "use_sats": "以聰為單位", + "use_btc": "以比特幣為單位", + "use_dark_theme": "切換深色主題", + "use_light_theme": "切換淺色主題", + "text_help_translate": "找不到你的語言?幫我們做翻譯!", + "show_seed": "顯示種子詞", + "hide_seed": "隱藏種子詞", + "reveal_seed": "顯示種子詞", + "show_logs": "顯示日誌", + "show_fee_config": "調整費用限制", + "button_lock_wallet": "鎖上錢包", + "button_locking_wallet": "正在上鎖...", + "button_switch_wallet": "切換錢包", + "button_create_wallet": "創建錢包", + "error_loading_seed_failed": "無法檢索種子詞", + "seed_modal_info_text": "請寫下你的種子詞和密碼!沒有這些信息,你將無法訪問和恢復你的錢包!", + "documentation": "文檔", + "github": "GitHub", + "matrix": "Matrix", + "telegram": "Telegram", + "jm_twitter": "JoinMarket 推特", + "jam_twitter": "Jam 推特", + "confirm_locking_modal_title": "鎖上錢包", + "confirm_locking_modal_body_earn": "收益處於活躍狀態。錢包上鎖將停止服務。你可以關閉瀏覽器窗口並讓它在背景中運行。", + "confirm_locking_modal_body_jam": "協作式交易正在進行中。錢包上鎖將停止服務。你可以關閉瀏覽器窗口並讓它在背景中運行。", + "fees": { + "title": "費用限制", + "description": "按你的需求調整挖礦費和協作方費。挖礦費關聯交易優先級和內存池狀況。協作方費關聯流動性價格和市場狀況。每個交易的總交易費取決於協作方數量。協作方越多,隱私程度越高,但同時也會增加費用。這些設置在 JoinMarket 重啟時會被重置嗎,例如協調重啟時。有關更多信息,請<1>參閱關於費用的文檔。", + "title_general_fee_settings": "挖礦費", + "radio_tx_fees_blocks": "區塊目標", + "radio_tx_fees_satspervbyte": "聰/字節", + "label_tx_fees": "交易基本費用", + "description_tx_fees_blocks": "使用區塊目標時,Jam 將使用 Bitcoin Core 的費用估計機制來根據內存池狀況動態設置基本費用。默認:3。", + "description_tx_fees_satspervbyte": "設置聰/字節的基本費用將覆蓋區塊目標設置。檢查你的內存池來相應地設置此費用。", + "feedback_invalid_tx_fees_blocks": "請提供一個有效的區塊目標,從{{ min }}到{{ max }}。", + "feedback_invalid_tx_fees_satspervbyte": "請提供一個有效的,以聰/字節為單位的交易費,從{{ min }}到{{ max }}。", + "label_tx_fees_factor": "費用隨機化", + "description_tx_fees_factor": "隨機費用改善隱私。該百分比應理解為圍繞基本費用的正負。例:如果將基本費用設為10聰/字節,並將隨機化值設為30%,則將使用7到13聰/字節之間的費用。默認:20%。", + "feedback_invalid_tx_fees_factor": "請提供一個有效的費用隨機化值,從{{ min }}到{{ max }}。", + "title_max_cj_fee_settings": "協作方費用", + "subtitle_max_cj_fee": "注意:只有當兩個限制都被超過時才會拒絕報價。", + "label_max_cj_fee_abs": "絕對限制(每個協作方)", + "description_max_cj_fee_abs": "你願意支付給每個協作方的最高費用。例:當設為3000聰時,在使用默認的9個協作方時最高費用則是27000聰。", + "feedback_invalid_max_cj_fee_abs": "請提供一個有效的,以聰為單位的最高絕對費用,從{{ min }}到{{ max }}。", + "label_max_cj_fee_rel": "相對限制(每個協作方)", + "description_max_cj_fee_rel": "你願意支付給每個協作方的最高費用,作為交易金額的百分比。例:如果你發送2百萬聰並把最高費用設為0.1%,那麼你將最多支付每個協作方2000聰。", + "feedback_invalid_max_cj_fee_rel": "請提供一個有效的最高相對費用,從{{ min }}到{{ max }}。", + "text_button_cancel": "取消", + "text_button_submit": "保存", + "text_button_submitting": "正在保存...", + "error_loading_fee_config_failed": "加載費用配置值時出錯了。", + "error_saving_fee_config_failed": "保存費用配置值時出錯了。原因:{{ reason }}" + } + }, + "logs": { + "title": "日誌", + "error_loading_logs_failed": "無法檢索日誌文件。" + }, + "send": { + "loading": "正在加載", + "title": "發送", + "subtitle": "使用協作式交易來提高安全性和隱秘性。", + "label_num_collaborators": "協作方數量:{{ numCollaborators }}", + "input_num_collaborators_placeholder": "其他", + "description_num_collaborators": "更高的數量會提高隱秘性,但同時也會增加交易費用。", + "error_invalid_num_collaborators": "請使用{{ minNumCollaborators }}到{{ maxNumCollaborators }}個協作方。", + "taker_error_message_max_fees_config_missing": "必須在你的 joinmarket.cfg 中先設置配置變量 'max_cj_fee_rel' 和 'max_cj_fee_abs' 才能發送協作式交易。請考慮手動將它們添加到你的配置中。", + "direct_payment_error_message_bad_request": "請仔細檢查你的輸入。", + "error_loading_min_makers_failed": "加載配置值 'minimum_makers' 失敗了。", + "alert_payment_successful": "付款成功:在交易 {{ txid }} 中發送了 {{ amount }} 聰到 {{ address }}。", + "text_maker_running": "收益處於活躍狀態。停止服務以發送協作式交易。", + "text_coinjoin_already_running": "協作式交易正在進行中。", + "label_recipient": "收款方", + "placeholder_recipient": "輸入地址或從錢包中選擇罐子...", + "feedback_reused_address": "這個地址已經被使用過了。為了保護你的隱私,請選另一個地址。", + "label_source_jar": "來源", + "title_jar_selector": "選擇一個你自己錢包中的罐子作為收款方。", + "label_amount": "聰金額", + "placeholder_amount": "輸入金額...", + "feedback_invalid_amount": "請輸入有效的金額。", + "sending_options": "發送選項", + "toggle_coinjoin": "作為協作式交易發送", + "toggle_coinjoin_subtitle": "協作式交易增強你和他人的隱私程度。", + "button_send": "發送", + "button_send_despite_warning": "忽略警告並嘗試發送", + "button_send_without_improved_privacy": "無隱私改善發送", + "text_sending": "正在發送", + "button_sweep": "掃空", + "button_clear_sweep": "清除", + "button_sweep_amount_breakdown": "這是如何計算的?", + "sweep_amount_breakdown_total_balance": "總餘額", + "sweep_amount_breakdown_frozen_balance": "已凍結或已鎖定的餘額", + "sweep_amount_breakdown_estimated_amount": "預計要發送的金額", + "sweep_amount_breakdown_explanation": "掃空交易將消耗一個混幣深度的所有 UTXO;除了<1>已凍結或<3>時間鎖定的比特幣之外,不會留下任何比特幣。鏈上交易費用和市場掛單方費用將從總金額扣除,以消除找零。確切的交易金額只有當交易執行的那一刻才能被 JoinMarket 計算。因此預計金額可能與實際金額有所差異。請參閱 <5>JoinMarket 文檔瞭解更多。", + "confirm_send_modal": { + "title": "確認付款", + "label_amount": "金額", + "text_sweep_balance": "掃空(<1>)", + "text_sweep_info_popover": "確切的交易金額只能在執行交易時通過 JoinMarket 計算。", + "label_recipient": "收款方", + "label_source_jar": "來源", + "text_source_jar": "罐子 {{ jarId }}", + "label_num_collaborators": "協作方", + "text_collaborative_tx_enabled": "改善隱私的付款", + "text_collaborative_tx_disabled": "無隱私改善的付款", + "label_estimated_max_collaborator_fee": "協作方費用", + "text_estimated_max_collaborator_fee_info_popover": "該值表示最高上限。實際費用可能要低得多。", + "label_miner_fee": "挖礦費", + "text_miner_fee_in_satspervbyte_exact": "{{ value }} 聰/字節", + "text_miner_fee_in_satspervbyte_randomized": "{{ min }} - {{ max }} 聰/字節", + "text_miner_fee_in_targeted_blocks_one": "高優先級估計(下一個區塊)", + "text_miner_fee_in_targeted_blocks_other": "正在使用置入第{{ count }}個區塊的估計" + }, + "confirm_abort_modal": { + "title": "終止付款", + "text_body": "是否確認要終止協作式交易?" + }, + "coinjoin_precondition": { + "hint_missing_utxos": "要執行協作式交易你的來源罐子裡必須具有至少{{ minConfirmations }}次確認的 UTXO。$t(send.coinjoin_precondition.nested_hint_fund_jar, {\"count\": {{ minConfirmations }} })", + "hint_missing_confirmations": "協作式交易要求你的 UTXO 具有至少{{ minConfirmations }}次確認。$t(send.coinjoin_precondition.nested_hint_wait_for_block, {\"count\": {{ amountOfMissingConfirmations }} })", + "hint_missing_retries": "連續過多次未能為該罐子獲得承諾。出於安全原因,罐子裡需要有新的 UTXO 才能重試。請參閱<1>文檔了解更多。", + "hint_missing_retries_detail_one": "以下的 UTXO 因已被過多次使用不成功而無法重新使用:<1>", + "hint_missing_retries_detail_other": "以下的{{ count }}個 UTXOs 因已被過多次使用不成功而無法重新使用:<1>", + "nested_hint_wait_for_block": "選擇另一個罐子作為來源或者再等一個區塊。", + "nested_hint_wait_for_block_other": "選擇另一個罐子作為來源或者再等{{ count }}個區塊。", + "nested_hint_fund_jar": "選擇另一個罐子作為來源或者充值這個罐子並再等一個區塊。", + "nested_hint_fund_jar_other": "選擇另一個罐子作為來源或者充值這個罐子並再等{{ count }}個區塊。" + } + }, + "receive": { + "title": "接收", + "subtitle": "將聰發送到以下的地址來充值你的錢包。", + "error_loading_address_failed": "無法獲取新地址。", + "error_copy_address_failed": "無法複製地址。", + "button_copy_address": "複製", + "text_copy_address_confirmed": "已複製", + "button_settings": "接收選項", + "label_amount": "要求的聰金額", + "feedback_invalid_amount": "請輸入有效的金額。", + "button_new_address": "獲取新地址", + "text_getting_address": "正在獲取新地址" + }, + "earn": { + "title": "收益", + "subtitle": "通過向市場提供流動性,你幫助自己和他人改善隱私。你始終保持對你的資金的掌控,資金永遠不會離開你的錢包。", + "market_explainer": "你可以選擇要為你的報價收取多少費用。請注意你將在開發市場上參與和競爭 — 無法保證其他市場參與者會接受你的報價。被選中進行協作式交易可能需要一些時間。低費用會增加你的機會。", + "alert_empty_report": "報告是空的。", + "text_report_length": "正在顯示{{ linesWithoutHeader }}個條目中的{{ visibleLines }}", + "error_loading_report_failed": "加載收入報告失敗。", + "alert_starting": "服務正在開始。", + "alert_stopping": "服務正在停止。", + "alert_running": "正在提供流動性並以此賺取收益...", + "alert_coinjoin_in_progress": "協作式交易正在進行中。", + "button_settings": "報價選項", + "radio_abs_offer_label": "絕對報價", + "radio_rel_offer_label": "相對報價", + "label_rel_fee": "相對費用{{ fee }}", + "description_rel_fee": "向他人收取的費用,占交易金額的百分比。", + "feedback_invalid_rel_fee": "請提供一個從{{feeRelPercentageMin}}到{{feeRelPercentageMax}}的相對費用。", + "label_abs_fee": "絕對費用{{ fee }}", + "description_abs_fee": "向他人收取的費用,以聰為單位的絕對金額。", + "feedback_invalid_abs_fee": "絕對費用無效。", + "label_min_amount": "最低聰金額", + "feedback_invalid_min_amount": "請輸入最低金額。", + "button_start": "開始收益!", + "button_stop": "停止", + "text_starting": "正在開始", + "text_stopping": "正在停止", + "button_show_report": "顯示收入報告", + "button_show_orderbook": "顯示訂單簿", + "current": { + "text_offer": "報價", + "text_cjfee": "費用", + "text_minsize": "最低金額", + "text_maxsize": "最高金額", + "text_txfee": "交易費", + "text_offer_type_absolute": "絕對", + "text_offer_type_relative": "相對" + }, + "report": { + "title": "收入報告", + "text_report_summary_one": "{{ count }}個條目", + "text_report_summary_other": "{{ count }}個條目", + "text_report_summary_filtered_one": "找到了{{ count }}個條目", + "text_report_summary_filtered_other": "找到了{{ count }}個條目", + "label_search": "搜索", + "placeholder_search": "搜索", + "heading_timestamp": "時間戳", + "heading_cj_amount": "交易金額", + "heading_input_count": "我的輸入", + "heading_input_value": "我的輸入金額", + "heading_earned": "收益", + "heading_notes": "筆記" + }, + "title_fidelity_bonds_zero": "創建保證金", + "title_fidelity_bonds_one": "你的保證金", + "title_fidelity_bonds_other": "你的保證金", + "subtitle_fidelity_bonds": "保證金是一個刻意使加密身份變得昂貴的長期存款。通過使用加密方式時間鎖定資金,你向市場表示你是一個認真的市場參與者,而你的報價被接受的機率也會因此增加。", + "fidelity_bond": { + "error_freezing_utxos": "無法凍結 UTXOs。", + "error_unfreezing_utxos": "無法解凍 UTXOs。", + "error_loading_address": "無法加載時間鎖地址。", + "error_creating_fidelity_bond": "創建保證金的交易失敗了。", + "text_loading": "正在加載...", + "text_creating": "正在創建...", + "text_unfreezing": "正在解凍...", + "select_date": { + "text_primary_button": "繼續", + "text_secondary_button": "取消", + "form_label_year": "年", + "form_label_month": "月", + "description": "保證金到期日期:" + }, + "select_jar": { + "text_primary_button": "繼續", + "text_secondary_button": "取消", + "description": "選擇保證金資金來源的罐子。" + }, + "select_utxos": { + "text_primary_button": "繼續", + "text_primary_button_unsafe": "選擇可能隱私性較弱的 UTXOs", + "text_secondary_button": "取消", + "description": "從罐子 {{ jar }} 選擇單一或多個 UTXOs 以用於保證金。", + "utxo_card": { + "confirmations": "{{ confs }}次確認", + "label_frozen": "已凍結", + "label_locked": "已鎖定", + "label_cj_out": "混幣輸出" + } + }, + "freeze_utxos": { + "text_primary_button": "凍結 UTXOs", + "text_primary_button_all_frozen": "回顧保證金配置", + "text_primary_button_error": "重新嘗試", + "text_secondary_button": "取消", + "description_selected_utxos": "已選定的 UTXOs:", + "description_unselected_utxos": "以下的 UTXOs 不會用於保證金:", + "description_selected_utxos_to_freeze": "它們將會被凍結於罐子 {{ jar }}。你可以在創建保證金之後隨時將它們解凍。" + }, + "review_inputs": { + "text_primary_button": "創建保證金", + "text_primary_button_unsafe": "用可能隱私性較弱的 UTXOs 創建保證金", + "text_primary_button_error": "重新嘗試", + "text_secondary_button": "取消", + "description": "你如下配置了保證金:", + "label_lock_date": "鎖定至", + "label_jar": "來源", + "label_jar_n": "罐子 {{ jar }}", + "label_amount": "將鎖定的金額", + "label_address": "資金將被時間鎖定並發送至", + "label_selected_utxos": "將被時間鎖定的 UTXOs:" + }, + "create_fidelity_bond": { + "success_text": "保證金已創建!", + "text_primary_button": "完成", + "text_primary_button_unfreeze": "解凍 UTXOs", + "text_primary_button_error": "重新開始", + "text_secondary_button": "完成", + "label_lock_date": "鎖定至", + "label_address": "時間鎖地址", + "label_utxos_to_unfreeze": "你是否想要解凍之前凍結的 UTXOs?" + }, + "unfreeze_utxos": { + "text_primary_button": "完成", + "done": "UTXOs 已解凍" + }, + "confirm_modal": { + "title": "創建保證金並時間鎖定資金?", + "body": "在保證金到期之前將無法移動時間鎖定的資金。到期日期是於 {{date}} 的 {{ humanReadableDuration }}。" + }, + "title": "配置保證金", + "title_fidelity_bond_exists": "配置額外的保證金", + "subtitle": "你的聰將被比特幣協議所時間鎖定。在保證金到期之前將無法移動資金。", + "subtitle_fidelity_bond_exists": "如果存在多個保證金,只有<0>價值最高的會被使用。", + "text_maker_running": "收益處於活躍狀態。停止服務以創建保證金。", + "text_coinjoin_already_running": "協作式交易正在進行中。", + "create_form": { + "confirmation_toggle_title": "我已經仔細檢查了我的輸入", + "confirmation_toggle_subtitle": "我了解鎖定的資金在給定的期限內將無法使用", + "button_create": "創建保證金" + }, + "existing": { + "title_active": "保證金", + "title_expired": "保證金<1>已到期", + "label_locked_until": "鎖定至", + "label_expired_on": "於此日期到期", + "label_address": "時間鎖地址", + "button_spend": "解鎖資金" + }, + "move": { + "title": "解鎖資金", + "success_text": "已成功解鎖保證金!", + "text_loading": "正在加載...", + "text_sending": "正在解鎖...", + "text_button_cancel": "取消", + "text_button_submit": "解鎖資金", + "text_button_done": "完成", + "error_fidelity_bond_still_locked": "該保證金仍然處於鎖定狀態。", + "error_loading_address": "無法獲取新地址。", + "error_freezing_utxos": "無法凍結 UTXOs。", + "error_unfreezing_fidelity_bond": "解凍到期的保證金時出錯了。", + "error_spending_fidelity_bond": "解鎖到期的保證金時出錯了。", + "select_jar": { + "description": "選擇將到期的保證金移至的罐子。" + }, + "confirm_send_modal": { + "title": "確認解鎖到期的保證金" + } + } + } + }, + "cheatsheet": { + "title": "備忘單", + "description": "按照以下的步驟來增強你的財務隱私。建議在<2>以掛單方身份收益和<6>以吃單方身份發送兩種模式中來回切換。<10>瞭解更多。", + "receive": { + "title": "<0>充值你的錢包。", + "description": "自己存入資金或從他人接收付款。" + }, + "send": { + "title": "<0>發送協作式交易到另一個罐子。", + "description": "協作式交易增強你和他人的隱私程度。" + }, + "bond": { + "title": "可選:<1>鎖定保證金。", + "description": "保證金大幅度增加你獲得收益的機會。" + }, + "earn": { + "title": "提供流動性並以此<0>收益。", + "description": "向市場提供流動性並收取費用。無須信任或託管 — 你始終對你的資金保持完全控制。" + }, + "schedule": { + "title": "預定<1>掃空交易來清空你的錢包。", + "description": "自動執行一系列協作式交易。你可以把資金掃空到冷藏或用它打開閃電通道。" + }, + "repeat": { + "title": "沖洗並重複!", + "description": "還是一頭霧水?深入研究<2>文檔。" + } + }, + "orderbook": { + "title": "訂單簿", + "text_orderbook_summary_one": "來自{{ counterpartyCount }}個對等方的{{ count }}個報價", + "text_orderbook_summary_other": "來自{{ counterpartyCount }}個對等方的{{ count }}個報價", + "text_orderbook_summary_filtered_one": "找到了來自{{ counterpartyCount }}個對等方的{{ count }}個報價", + "text_orderbook_summary_filtered_other": "找到了來自{{ counterpartyCount }}個對等方的{{ count }}個報價", + "alert_empty_orderbook": "訂單簿是空的", + "error_loading_orderbook_failed": "加載訂單簿時出錯了。有可能你的本地設置不支持獲取訂單簿。原因:{{ reason }}", + "text_offer_type_absolute": "絕對", + "text_offer_type_relative": "相對", + "label_search": "搜索", + "placeholder_search": "搜索", + "text_orderbook_filter_count": "{{ filterCount }}個條目符合給定的搜索條件", + "label_highlight_own_orders": "強調我的報價", + "table": { + "heading_type": "種類", + "heading_counterparty": "對等方", + "heading_order_id": "訂單 ID", + "heading_fee": "費用", + "heading_miner_fee_contribution": "挖礦費貢獻", + "heading_minimum_size": "最低金額", + "heading_maximum_size": "最高金額", + "heading_bond_value": "保證金價值" + } + }, + "scheduler": { + "title": "預定掃空(試驗性)", + "subtitle": "使用隨機金額和時間間隔執行多次交易,以此增加你和他人的隱私程度。每個預定的交易都是協作式交易。", + "error_starting_schedule_failed": "開始調度程序失敗。", + "error_stopping_schedule_failed": "停止調度程序失敗。", + "complete_wallet_title": "整個錢包", + "complete_wallet_subtitle": "這將使用你所有解凍的資金。", + "description_destination_addresses": "調度程序將把所有可用資金隨機分配並發送到多個目的地。", + "feedback_invalid_destination_address": "請輸入有效的目的地地址。", + "feedback_reused_destination_address": "這個地址已經被使用過了。為了保護你的隱私,請選另一個地址。", + "label_destination_input": "目的地 {{ destination }}", + "placeholder_destination_input": "輸入目的地地址...", + "description_fees": "調度程序將自動支付所有產生的費用。", + "button_start": "開始調度程序", + "button_stop": "停止調度程序", + "progress_tldr_seconds": "在<3>{{ seconds }}的範圍內預定了<1>{{ length }}個交易。", + "progress_tldr_hours": "在<3>{{ hours }}小時的範圍內預定了<1>{{ length }}個交易。", + "progress_description": "此估計是最低等待時間。不計因網路通信或交易確認而造成的其他耽延。", + "progress_current_state": "正在等待處理<3>{{ total }}個交易中的第<1>{{ current }}個交易...", + "progress_done": "所有交易都已成功完成。調度程序即將停止。", + "precondition": { + "hint_missing_utxos": "要運行調度程序你需要具有至少{{ minConfirmations }}次確認的 UTXOs。$t(scheduler.precondition.nested_hint_fund_wallet, {\"count\": {{ minConfirmations }} })", + "hint_missing_confirmations": "調度程序要求你的 UTXOs 具有至少{{ minConfirmations }}次確認。$t(scheduler.precondition.nested_hint_wait_for_block, {\"count\": {{ amountOfMissingConfirmations }} })", + "hint_missing_retries": "連續過多次未能為該罐子獲得承諾。出於安全原因,罐子裡需要有新的 UTXO 才能重試。請參閱<1>文檔瞭解更多。", + "hint_missing_retries_detail_one": "以下的 UTXO 因已過多次使用不成功而無法重新使用:<1>", + "hint_missing_retries_detail_other": "以下的{{ count }}個 UTXOs 因已被過多次使用不成功而無法重新使用:<1>", + "nested_hint_wait_for_block": "等待一個區塊。", + "nested_hint_wait_for_block_other": "等待{{ count }}個區塊。", + "nested_hint_fund_wallet": "充值你的錢包並等待一個區塊。", + "nested_hint_fund_wallet_other": "充值你的錢包並等待{{ count }}個區塊。" + }, + "success": { + "title": "成功!", + "subtitle": "成功完成了一個預定的交易。", + "subtitle_other": "成功完成了{{ count }}個預定的交易。", + "text_button_submit": "繼續" + } + }, + "modal": { + "confirm_button_accept": "確認", + "confirm_button_reject": "取消" + }, + "jar_details": { + "title_tab_utxos": "UTXOs", + "title_tab_jar_details": "詳情", + "utxo_list": { + "title_zero": "罐子 {{ jar }} 內沒有任何 UTXO", + "title_one": "罐子 {{ jar }} 內的{{ count }}個 UTXO", + "title_other": "罐子 {{ jar }} 內的{{ count }}個 UTXOs", + "text_balance_sum_total": "<0> 總額", + "text_balance_sum_selected": "<0> 所選", + "button_freeze": "凍結", + "button_unfreeze": "解凍", + "button_freeze_loading": "正在凍結...", + "button_unfreeze_loading": "正在解凍...", + "utxo_tooltip_locktime": "鎖定至 {{ locktime }}", + "utxo_tag_frozen": "已凍結", + "utxo_tag_fb": "保證金", + "column_title_balance": "價值", + "column_title_address": "地址", + "column_title_confirmations": "確認", + "column_title_label_and_status": "標籤", + "row_button_details": "詳情", + "utxo_detail_label_id": "UTXO Id", + "utxo_detail_label_address": "地址", + "utxo_detail_label_path": "路徑", + "utxo_detail_label_label": "地址標籤", + "utxo_detail_label_value": "價值", + "utxo_detail_label_tries": "嘗試", + "utxo_detail_label_tries_remaining": "剩餘嘗試", + "utxo_detail_label_jar": "罐子", + "utxo_detail_label_is_external": "是外部", + "utxo_detail_label_confirmations": "確認", + "utxo_detail_label_is_frozen": "已凍結", + "utxo_detail_label_locktime": "鎖定時間", + "utxo_detail_label_status": "地址狀態" + } + } +} From 2375048616dd45c77b5b5dc8f8d1eedb1d2f5492 Mon Sep 17 00:00:00 2001 From: Overload3910 <135011493+Overload3910@users.noreply.github.com> Date: Sun, 2 Jul 2023 10:36:52 +0200 Subject: [PATCH 2/4] i18n: fixes made to Chinese Translations Fixed import formatting and added missing lines Removed remnants of the not yet merged German translation that made it into the initial pull request due to an error in branch creation. --- src/i18n/languages.js | 12 ++++-------- .../locales/{zh-Hans => zh_Hans}/translation.json | 0 .../locales/{zh-Hant => zh_Hant}/translation.json | 0 3 files changed, 4 insertions(+), 8 deletions(-) rename src/i18n/locales/{zh-Hans => zh_Hans}/translation.json (100%) rename src/i18n/locales/{zh-Hant => zh_Hant}/translation.json (100%) diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 6e6fd98ce..6a9cb2d0e 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -1,14 +1,10 @@ import en from './locales/en/translation.json' import fr from './locales/fr/translation.json' import pt_BR from './locales/pt_BR/translation.json' -import de from './locales/de/translation.json' +import zh_Hans from './locales/zh_Hans/translation.json' +import zh_Hant from './locales/zh_Hant/translation.json' const languages = [ - { - key: 'de', - description: 'Deutsch', - translation: de, - }, { key: 'en', description: 'English', @@ -27,12 +23,12 @@ const languages = [ { key: 'zh-Hans', description: 'Chinese Simplified', - translation: zh - Hans, + translation: zh_Hans, }, { key: 'zh-Hant', description: 'Chinese Traditional', - translation: zh - Hant, + translation: zh_Hant, }, ] diff --git a/src/i18n/locales/zh-Hans/translation.json b/src/i18n/locales/zh_Hans/translation.json similarity index 100% rename from src/i18n/locales/zh-Hans/translation.json rename to src/i18n/locales/zh_Hans/translation.json diff --git a/src/i18n/locales/zh-Hant/translation.json b/src/i18n/locales/zh_Hant/translation.json similarity index 100% rename from src/i18n/locales/zh-Hant/translation.json rename to src/i18n/locales/zh_Hant/translation.json From 28e81ead0ab725f84524954f9dafdeac8c9666c0 Mon Sep 17 00:00:00 2001 From: Overload3910 <135011493+Overload3910@users.noreply.github.com> Date: Sun, 2 Jul 2023 10:50:01 +0200 Subject: [PATCH 3/4] i18n: translated description --- src/i18n/languages.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/languages.js b/src/i18n/languages.js index 6a9cb2d0e..a09f3a7da 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -22,12 +22,12 @@ const languages = [ }, { key: 'zh-Hans', - description: 'Chinese Simplified', + description: '简化字', translation: zh_Hans, }, { key: 'zh-Hant', - description: 'Chinese Traditional', + description: '繁体字', translation: zh_Hant, }, ] From 105f34bad2e0d7cac64509b73c941ba79e13939a Mon Sep 17 00:00:00 2001 From: Overload3910 <135011493+Overload3910@users.noreply.github.com> Date: Mon, 3 Jul 2023 11:47:53 +0200 Subject: [PATCH 4/4] i18n: slight tweak to description --- src/i18n/languages.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/languages.js b/src/i18n/languages.js index a09f3a7da..89987cfc1 100644 --- a/src/i18n/languages.js +++ b/src/i18n/languages.js @@ -22,12 +22,12 @@ const languages = [ }, { key: 'zh-Hans', - description: '简化字', + description: '中国语文科 (简化字)', translation: zh_Hans, }, { key: 'zh-Hant', - description: '繁体字', + description: '繁中国语文科 (繁体字)', translation: zh_Hant, }, ]