@dshtrading/dsh-i18n 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,75 @@
1
+ Copyright (c) 2026 zhu1090093659 (dsh-trading)
2
+
3
+ # PolyForm Noncommercial License 1.0.0
4
+
5
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
6
+
7
+ ## Acceptance
8
+
9
+ In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
10
+
11
+ ## Copyright License
12
+
13
+ The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
14
+
15
+ ## Distribution License
16
+
17
+ The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
18
+
19
+ ## Notices
20
+
21
+ You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
22
+
23
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
24
+
25
+ ## Changes and New Works License
26
+
27
+ The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
28
+
29
+ ## Patent License
30
+
31
+ The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
32
+
33
+ ## Noncommercial Purposes
34
+
35
+ Any noncommercial purpose is a permitted purpose.
36
+
37
+ ## Personal Uses
38
+
39
+ Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
40
+
41
+ ## Noncommercial Organizations
42
+
43
+ Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
44
+
45
+ ## Fair Use
46
+
47
+ You may have "fair use" rights for the software under the law. These terms do not limit them.
48
+
49
+ ## No Other Rights
50
+
51
+ These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
52
+
53
+ ## Patent Defense
54
+
55
+ If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
56
+
57
+ ## Violations
58
+
59
+ The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
60
+
61
+ ## No Liability
62
+
63
+ ***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
64
+
65
+ ## Definitions
66
+
67
+ The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
68
+
69
+ **You** refers to the individual or entity agreeing to these terms.
70
+
71
+ **Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
72
+
73
+ **Your licenses** are all the licenses granted to you for the software under these terms.
74
+
75
+ **Use** means anything you do with the software requiring one of your licenses.
package/lib/client.js ADDED
@@ -0,0 +1,785 @@
1
+ window.__ModuleLoader__.load({
2
+ id: "@dshtrading/dsh-i18n",
3
+ factory: (require) => {
4
+ var module = { exports: {} };
5
+ var exports = module.exports;
6
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
+ //#region ../client-ui-trading/lib/client/locales.js
8
+ const zh$3 = {
9
+ "tab.watch": "自选",
10
+ "tab.crypto": "加密货币",
11
+ "tab.us": "美股",
12
+ "tab.cn": "A股",
13
+ "tab.hk": "港股",
14
+ "sidebar.addPlaceholder": "输入代码,回车加入自选",
15
+ "sidebar.add": "添加",
16
+ "sidebar.addMarketHint": "点击切换目标市场(加密货币→美股→A股→港股)",
17
+ "sidebar.empty": "暂无标的",
18
+ "sidebar.emptyHint": "在上方输入代码加入自选(可切换目标市场)",
19
+ "sidebar.loadFailed": "行情桥不可用(未装市场包?)",
20
+ "sidebar.retry": "重试",
21
+ "sidebar.markets": "市场与自选",
22
+ "sidebar.fold": "收起自选",
23
+ "sidebar.expand": "展开自选",
24
+ "header.symbol": "名称代码",
25
+ "header.trend": "走势",
26
+ "header.priceChange": "最新价/涨跌幅",
27
+ "row.remove": "移除",
28
+ "row.select": "查看行情",
29
+ "quote.empty": "选择左侧标的查看行情",
30
+ "quote.emptyHint": "左栏点击任意标的,这里展示 K 线与关键报价",
31
+ "quote.open": "开",
32
+ "quote.high": "高",
33
+ "quote.low": "低",
34
+ "quote.prevClose": "昨收",
35
+ "quote.volume": "量",
36
+ "quote.updated": "更新",
37
+ "quote.loadFailed": "K线加载失败",
38
+ "quote.loadFailedColon": "K线加载失败:{error}",
39
+ "quote.noData": "暂无数据",
40
+ "quote.sendToAgent": "发给 Agent",
41
+ "quote.sendToAgentHint": "把当前标的行情与图表截图填入会话输入框(可继续编辑,自行发送)",
42
+ "quote.sendSending": "填入中…",
43
+ "quote.sendSent": "已填入输入框",
44
+ "quote.sendFailed": "填入失败",
45
+ "quote.tab.chart": "图表",
46
+ "quote.tab.fundamentals": "基本面",
47
+ "quote.tab.derivatives": "衍生品",
48
+ "quote.tab.news": "新闻",
49
+ "quote.tab.announcements": "公告",
50
+ "fundamentals.peTtm": "市盈率(TTM)",
51
+ "fundamentals.peDynamic": "动态市盈率",
52
+ "fundamentals.pb": "市净率",
53
+ "fundamentals.marketCap": "总市值",
54
+ "fundamentals.floatMarketCap": "流通市值",
55
+ "fundamentals.turnoverRate": "换手率",
56
+ "fundamentals.dividendYield": "股息率",
57
+ "fundamentals.fiftyTwoWeekHigh": "52周最高",
58
+ "fundamentals.fiftyTwoWeekLow": "52周最低",
59
+ "fundamentals.unavailable": "该市场数据源未提供基本面字段,以下为行情派生数据",
60
+ "fundamentals.source": "数据来源",
61
+ "fundamentals.unit.cn": "元",
62
+ "fundamentals.unit.us": "美元",
63
+ "fundamentals.unit.hk": "港元",
64
+ "fundamentals.unit.crypto": "美元",
65
+ "fundamentals.scale": "万",
66
+ "fund.page.empty": "请在左侧自选栏选择标的以查看基本面与多期财报档案",
67
+ "fund.page.loading": "正在从官方数据源动态拉取 {symbol} 财务与估值矩阵...",
68
+ "fund.pill.peTtm": "PE(TTM):",
69
+ "fund.pill.peDynamic": "动态PE:",
70
+ "fund.pill.pb": "PB:",
71
+ "fund.pill.marketCap": "总市值:",
72
+ "fund.pill.dividendYield": "股息率:",
73
+ "fund.pill.turnover": "换手:",
74
+ "fund.pill.floatCap": "流通市值:",
75
+ "fund.pill.rank": "全球排名:",
76
+ "fund.nav.financials": "财务",
77
+ "fund.nav.key": "关键指标",
78
+ "fund.nav.income": "利润表",
79
+ "fund.nav.balance": "资产负债表",
80
+ "fund.nav.cashflow": "现金流量表",
81
+ "fund.nav.forecast": "预测",
82
+ "fund.nav.forecastItem": "盈利预测",
83
+ "fund.nav.reports": "晨星研报",
84
+ "fund.nav.reportsItem": "机构研报",
85
+ "fund.nav.valuation": "估值",
86
+ "fund.nav.valuationItem": "估值分析",
87
+ "fund.nav.biz": "经营分析",
88
+ "fund.nav.bizSegments": "主营构成",
89
+ "fund.nav.bizEfficiency": "经营效率",
90
+ "fund.nav.smartMoney": "聪明钱",
91
+ "fund.nav.shareholders": "股东持股",
92
+ "fund.nav.insider": "股东增减持",
93
+ "fund.nav.institutional": "机构持股",
94
+ "fund.nav.profile": "简况",
95
+ "fund.nav.profileOverview": "公司概况",
96
+ "fund.nav.profileExecutives": "公司高管",
97
+ "fund.nav.actions": "公司行动",
98
+ "fund.nav.dividends": "分红派息",
99
+ "fund.nav.buybacks": "回购",
100
+ "fund.nav.splits": "拆股并股",
101
+ "fund.chart.reportTitle": "{period} 财报",
102
+ "fund.chart.showYoy": "显示同比: {state}",
103
+ "fund.chart.yoyLegend": "同比增长率 (%)",
104
+ "fund.switch.on": "开",
105
+ "fund.switch.off": "关",
106
+ "fund.matrix.currency": "币种: {currency}",
107
+ "fund.matrix.clickHint": "点击指标行可在上方图表联动查看趋势",
108
+ "fund.matrix.indicator": "指标名称",
109
+ "fund.matrix.emptyTitle": "财务数据提示",
110
+ "fund.matrix.emptyHint": "当前标的暂未生成多期标准财报矩阵(可能为加密数字资产或该市场未提供公开季报端点),请参考估值与公司简况面板。",
111
+ "fund.forecast.title": "机构盈利预测与评级一致预期",
112
+ "fund.forecast.subtitle": "聚合券商研报盈利预测(EPS/营收/净利)与评级统计",
113
+ "fund.forecast.epsCurrent": "当年预期 EPS",
114
+ "fund.forecast.epsNext": "次年预期 EPS",
115
+ "fund.forecast.targetPrice": "一致预期目标价",
116
+ "fund.forecast.orgCount": "覆盖机构数",
117
+ "fund.forecast.col.year": "预测年度",
118
+ "fund.forecast.col.eps": "每股收益 EPS (元)",
119
+ "fund.forecast.col.revenue": "营业收入 (亿元)",
120
+ "fund.forecast.col.netProfit": "归母净利润 (亿元)",
121
+ "fund.forecast.col.orgs": "预测机构数",
122
+ "fund.forecast.empty": "当前标的暂未公开主流券商一致盈利预测数据,请关注公司定期公告与业绩快报。",
123
+ "fund.reports.title": "机构研究报告精选",
124
+ "fund.reports.subtitle": "券商机构最新深度调研、盈利预测与投资评级",
125
+ "fund.reports.analyst": "分析师: {author}",
126
+ "fund.reports.empty": "暂未检索到该标的的公开机构研报,您可在对话框向 Agent 提问进行个股深度财务核查。",
127
+ "fund.valuation.title": "估值核心诊断与历史分位",
128
+ "fund.valuation.subtitle": "基于多周期市盈率、市净率与价格区间综合诊断",
129
+ "fund.valuation.range52w": "52 周价格区间",
130
+ "fund.valuation.low52w": "52周最低: {price}",
131
+ "fund.valuation.high52w": "52周最高: {price}",
132
+ "fund.valuation.peNote": "估值评注: {note}",
133
+ "fund.valuation.undervalued": "🟢 相对低估",
134
+ "fund.valuation.fair": "🟡 估值合理",
135
+ "fund.valuation.overvalued": "🔴 相对偏高",
136
+ "fund.valuation.assessing": "评估中",
137
+ "fund.valuation.peTtm": "滚动市盈率 PE (TTM)",
138
+ "fund.valuation.peDynamic": "动态市盈率 PE (动)",
139
+ "fund.valuation.peStatic": "静态市盈率 PE (静)",
140
+ "fund.valuation.pb": "市净率 PB",
141
+ "fund.valuation.marketCap": "总市值",
142
+ "fund.valuation.floatCap": "流通市值",
143
+ "fund.valuation.dividendYield": "股息率 (TTM)",
144
+ "fund.valuation.turnover": "换手率",
145
+ "fund.segments.title": "主营业务构成分析",
146
+ "fund.segments.subtitle": "按产品、行业及地区分类拆解业务收入与毛利率结构",
147
+ "fund.segments.all": "全部",
148
+ "fund.segments.byProduct": "按产品",
149
+ "fund.segments.byIndustry": "按行业",
150
+ "fund.segments.byRegion": "按地区",
151
+ "fund.segments.col.segment": "主营分类 / 项目",
152
+ "fund.segments.col.revenue": "主营收入 (元)",
153
+ "fund.segments.col.revenueRatio": "收入占比",
154
+ "fund.segments.col.profit": "主营利润 (元)",
155
+ "fund.segments.col.grossMargin": "毛利率",
156
+ "fund.segments.empty": "暂未获取到当期详细主营构成拆解明细,请参考利润表营业收入科目。",
157
+ "fund.efficiency.title": "运营与周转效率",
158
+ "fund.efficiency.subtitle": "存货周转天数、应收账款周转天数、营业周期与盈利质量",
159
+ "fund.efficiency.inventoryDays": "存货周转天数",
160
+ "fund.efficiency.receivableDays": "应收账款周转天数",
161
+ "fund.efficiency.operatingCycle": "净营业周期",
162
+ "fund.efficiency.assetTurnover": "总资产周转率",
163
+ "fund.efficiency.grossMargin": "销售毛利率",
164
+ "fund.efficiency.netMargin": "销售净利率",
165
+ "fund.efficiency.currentRatio": "流动比率",
166
+ "fund.efficiency.quickRatio": "速动比率",
167
+ "fund.efficiency.summary": "本期存货周转天数约为 {inventory} 天,应收账款周转天数约为 {receivable} 天,净营业周期为 {cycle} 天。",
168
+ "fund.efficiency.empty": "经营效率明细数据暂未获取到(数据源未覆盖该报告期),不做推断性描述。",
169
+ "fund.holders.title": "十大流通股东穿透表",
170
+ "fund.holders.subtitle": "核心机构、战略股东、股东户数与筹码集中度",
171
+ "fund.holders.totalHolders": "股东总户数",
172
+ "fund.holders.avgShares": "户均持股数",
173
+ "fund.holders.avgValue": "户均持股市值",
174
+ "fund.holders.concentration": "筹码集中度",
175
+ "fund.holders.moderate": "适中",
176
+ "fund.holders.col.rank": "排名",
177
+ "fund.holders.col.name": "股东名称",
178
+ "fund.holders.col.shares": "持股数 (股)",
179
+ "fund.holders.col.ratio": "占流通股比",
180
+ "fund.holders.col.change": "持股变动",
181
+ "fund.holders.unchanged": "不变",
182
+ "fund.holders.empty": "当前标的暂未公开当期十大流通股东穿透名录,可参考流通市值与换手率变动。",
183
+ "fund.insider.title": "重要股东及高管持股变动明细",
184
+ "fund.insider.subtitle": "主要股东、董监高近期持股变动与交易记录",
185
+ "fund.insider.col.holder": "股东全称",
186
+ "fund.insider.col.type": "变动类型",
187
+ "fund.insider.col.shares": "持股数量 (股)",
188
+ "fund.insider.col.ratio": "持股比例",
189
+ "fund.insider.col.date": "披露日期",
190
+ "fund.insider.empty": "暂无股东增减持明细数据(数据源未覆盖或该报告期无披露记录)。",
191
+ "fund.institutional.title": "机构投资者持仓分布",
192
+ "fund.institutional.subtitle": "投资公司、公募基金、外资QFII、保险资管等机构持股汇总",
193
+ "fund.institutional.col.org": "机构全称",
194
+ "fund.institutional.col.type": "机构类型",
195
+ "fund.institutional.col.shares": "持股数 (股)",
196
+ "fund.institutional.col.ratio": "占流通股比",
197
+ "fund.institutional.col.value": "持股市值 (元)",
198
+ "fund.institutional.col.change": "本期变动",
199
+ "fund.institutional.empty": "机构持股总数与持仓明细已在十大流通股东穿透中体现,涵盖主流公募及指数基金。",
200
+ "fund.profile.title": "标的档案与公司基本概况",
201
+ "fund.profile.subtitle": "法定代表、管理团队、注册资本与官方渠道",
202
+ "fund.profile.fullName": "公司全称",
203
+ "fund.profile.nameEn": "英文名称",
204
+ "fund.profile.industry": "所属行业",
205
+ "fund.profile.registeredCapital": "注册资本",
206
+ "fund.profile.employees": "员工规模",
207
+ "fund.profile.address": "办公 / 注册地址",
208
+ "fund.profile.website": "官方网站",
209
+ "fund.profile.description": "公司简介与历史沿革:",
210
+ "fund.profile.descriptionFallback": "{symbol} 公司详细业务介绍与产业历史。",
211
+ "fund.executives.title": "管理团队与高管名录",
212
+ "fund.executives.subtitle": "董事长、总经理、财务总监及核心董监高",
213
+ "fund.executives.chairman": "董事长",
214
+ "fund.executives.generalManager": "总经理 / CEO",
215
+ "fund.executives.legalRep": "法定代表人",
216
+ "fund.executives.boardSecretary": "董事会秘书",
217
+ "fund.dividends.title": "历年分红派息记录",
218
+ "fund.dividends.subtitle": "历次利润分配方案、除权除息日与股息分红",
219
+ "fund.dividends.col.year": "方案年度",
220
+ "fund.dividends.col.plan": "分配方案",
221
+ "fund.dividends.col.cash": "每股派现 (元)",
222
+ "fund.dividends.col.exDate": "除权除息日",
223
+ "fund.dividends.col.recordDate": "股权登记日",
224
+ "fund.dividends.empty": "暂未获取到公开历史分红派息方案记录。",
225
+ "fund.buybacks.title": "股份回购方案与股本管理",
226
+ "fund.buybacks.subtitle": "公司股份回购方案、回购资金规模、股本结构与实施状态",
227
+ "fund.buybacks.col.date": "公告日期",
228
+ "fund.buybacks.col.amount": "回购规模 / 金额",
229
+ "fund.buybacks.col.shares": "回购股份 (股)",
230
+ "fund.buybacks.col.priceRange": "价格区间",
231
+ "fund.buybacks.col.status": "当前状态",
232
+ "fund.buybacks.empty": "暂无回购记录数据(数据源未覆盖或该标的确实未公告回购),以下字段留空以待数据补齐;不做推测性描述。",
233
+ "fund.splits.title": "拆股、并股与送转股历史",
234
+ "fund.splits.subtitle": "历次股本拆分、送股与公积金转增股本记录",
235
+ "fund.splits.col.date": "除权除息日",
236
+ "fund.splits.col.ratio": "送转股方案",
237
+ "fund.splits.col.description": "实施说明与进度",
238
+ "fund.splits.empty": "暂无拆股并股或送转股记录数据(数据源未覆盖或该标的确实无相关事件)。",
239
+ "fund.unit.orgs": "家",
240
+ "fund.unit.days": "{n} 天",
241
+ "fund.unit.times": "{n} 次",
242
+ "fund.unit.holders": "{n}万户",
243
+ "fund.unit.shares": "{n} 股",
244
+ "fund.unit.wanCny": "¥{n}万",
245
+ "fund.unit.yiCny": "¥{n}亿",
246
+ "marker.signal.toggle": "信号",
247
+ "marker.signal.toggleTitle": "策略信号标记",
248
+ "marker.signal.entryReason": "EMA(12/26) 金叉买入价 {cur}{price}",
249
+ "marker.signal.exitReason": "EMA(12/26) 死叉卖出价 {cur}{price}",
250
+ "marker.knowledge.toggle": "事件",
251
+ "marker.knowledge.toggleTitle": "知识事件图钉",
252
+ "marker.knowledge.batched": "{title} (等{count}条)",
253
+ "tooltip.signal.entry": "买入信号",
254
+ "tooltip.signal.exit": "卖出信号",
255
+ "tooltip.label.price": "价格",
256
+ "tooltip.label.time": "时间",
257
+ "tooltip.label.return": "收益率",
258
+ "tooltip.label.profit": "盈亏",
259
+ "tooltip.label.holding": "持仓",
260
+ "tooltip.unit.bars": "{n} 根",
261
+ "tooltip.knowledge.header": "知识事件",
262
+ "tooltip.credibility.high": "高可信度",
263
+ "tooltip.credibility.medium": "中可信度",
264
+ "tooltip.credibility.low": "低可信度",
265
+ "news.time.justNow": "刚刚",
266
+ "news.time.minutesAgo": "{n}分钟前",
267
+ "news.time.hoursAgo": "{n}小时前",
268
+ "news.time.daysAgo": "{n}天前",
269
+ "news.time.monthsAgo": "{n}个月前",
270
+ "news.time.yearsAgo": "{n}年前",
271
+ "news.source.eastmoneyAnnouncement": "公司公告",
272
+ "news.source.eastmoney": "东方财富",
273
+ "news.source.hkexAnnouncement": "港交所披露",
274
+ "news.source.cninfoAnnouncement": "巨潮公告",
275
+ "news.source.secEdgar": "SEC 披露",
276
+ "news.source.binance": "币安公告",
277
+ "news.source.okx": "欧易公告",
278
+ "news.source.yahoo": "Yahoo 财经",
279
+ "news.source.google": "Google 新闻",
280
+ "news.source.coindesk": "CoinDesk",
281
+ "news.source.theblock": "The Block",
282
+ "news.source.cointelegraph": "CoinTelegraph",
283
+ "news.source.decrypt": "Decrypt",
284
+ "news.empty.exchangeNotReady": "公告源未就绪",
285
+ "news.empty.mediaNotActive": "新闻源未激活",
286
+ "news.empty.noAnnouncements": "暂无相关公告",
287
+ "news.empty.noNews": "暂无相关新闻",
288
+ "news.sendToAgentTitle": "发送给 Agent 分析",
289
+ "news.degraded": "部分数据源不可用: {sources}",
290
+ "compose.opener": "看一下我正在看的行情:{title}",
291
+ "compose.prevClose": "昨收 {price}",
292
+ "compose.priceLine": "现价",
293
+ "compose.candleLine": "当根K线 开 {open} 高 {high} 低 {low} 收 {close} 量 {volume}",
294
+ "compose.indicatorsLine": "已开启指标:{titles}",
295
+ "compose.listSeparator": "、",
296
+ "compose.deltaWrap": "(|)",
297
+ "compose.prevSep": ",",
298
+ "compose.withScreenshot": "随消息附当前图表截图,请结合分析。",
299
+ "compose.withoutScreenshot": "请结合当前行情继续分析。",
300
+ "card.order.rejected": "已拒绝",
301
+ "card.order.dryRun": "模拟单",
302
+ "card.order.live": "实盘单",
303
+ "card.order.priceLabel": "价格",
304
+ "card.order.quantityLabel": "数量",
305
+ "card.order.refPriceLabel": "参考价",
306
+ "card.watchlist.selected": "已切换选中",
307
+ "card.watchlist.added": "已加入自选",
308
+ "card.watchlist.already": "已在自选中",
309
+ "derivatives.title": "衍生品",
310
+ "derivatives.oi": "持仓量",
311
+ "derivatives.oiValue": "持仓价值",
312
+ "derivatives.funding": "资金费率",
313
+ "derivatives.fundingPositive": "多头付资金",
314
+ "derivatives.fundingNegative": "空头付资金",
315
+ "derivatives.longShort": "多空人数比",
316
+ "derivatives.topLongShort": "大户多空比",
317
+ "derivatives.taker": "主动买卖比",
318
+ "derivatives.ratioLong": "偏多",
319
+ "derivatives.ratioShort": "偏空",
320
+ "derivatives.predicted": "预测费率",
321
+ "derivatives.countdown": "距结算",
322
+ "derivatives.markPrice": "标记价格",
323
+ "derivatives.indexPrice": "指数价格",
324
+ "derivatives.basis": "基差",
325
+ "derivatives.oiChange24h": "24h 持仓变化",
326
+ "derivatives.fundingHistory": "费率历史(近 30 期)",
327
+ "derivatives.oiTrend": "持仓量趋势(近 30 日)",
328
+ "derivatives.historyUnavailable": "该数据源未提供历史序列",
329
+ "derivatives.analyze": "分析资金面",
330
+ "derivatives.analyzeBody": "请分析 {symbol} 永续合约的资金面与多空拥挤度(数据源 {source}):\n{lines}\n请结合费率走向、OI 变化与多空比给出拥挤度判断和风险提示(不构成投资建议)。",
331
+ "derivatives.analyzeHint": "把衍生品快照发给 Agent,按资金面流程分析",
332
+ "derivatives.perpSource": "数据来自对应永续合约(现货标的自动映射)",
333
+ "derivatives.hint.oi": "未平仓合约总量(币数),反映市场杠杆规模;点击查看趋势",
334
+ "derivatives.hint.oiValue": "未平仓合约总价值(USD)",
335
+ "derivatives.hint.funding": "正费率=多头付空头(多头拥挤);点击查看预测与结算倒计时",
336
+ "derivatives.hint.longShort": "多空持仓人数比,>1 偏多;点击查看详情",
337
+ "derivatives.hint.topLongShort": "大户持仓多空比,>1 大户偏多",
338
+ "derivatives.hint.taker": "主动买入/卖出成交量比,>1 买方主动性强",
339
+ "derivatives.hint.basis": "(标记价-指数价)/指数价;正基差=永续升水",
340
+ "orderbook.title": "盘口与分笔",
341
+ "orderbook.close": "关闭盘口",
342
+ "orderbook.unavailable": "该市场数据源未提供盘口",
343
+ "orderbook.buyForce": "买盘",
344
+ "orderbook.sellForce": "卖盘",
345
+ "orderbook.spread": "价差",
346
+ "orderbook.trades": "逐笔成交",
347
+ "orderbook.toggle": "盘口",
348
+ "trade.toggle": "交易",
349
+ "trade.title": "交易工作台",
350
+ "trade.dryRunOnly": "Dry-Run 模拟(GUI 不提供实盘通道)",
351
+ "trade.close": "关闭交易台",
352
+ "trade.buy": "买入",
353
+ "trade.sell": "卖出",
354
+ "trade.long": "多",
355
+ "trade.short": "空",
356
+ "trade.market": "市价",
357
+ "trade.limit": "限价",
358
+ "trade.price": "价格",
359
+ "trade.quantity": "数量",
360
+ "trade.dryRunSubmit": "模拟下单",
361
+ "trade.submitting": "提交中…",
362
+ "trade.submitFailed": "提交失败:服务未挂载或参数被拒绝",
363
+ "trade.dryRunFilled": "已模拟成交",
364
+ "trade.liveHint": "实盘下单唯一通道是 Agent 会话(显式 liveTrading + 统一审批闸门);本面板只做模拟与只读查询。",
365
+ "trade.positions": "当前持仓",
366
+ "trade.openOrders": "活动委托",
367
+ "trade.fills": "成交历史",
368
+ "trade.balances": "余额",
369
+ "trade.credentialHint": "凭证未配置或不可用(fail-closed)——配置后可查看",
370
+ "trade.unavailable": "数据面未提供",
371
+ "trade.empty": "暂无数据",
372
+ "trade.symbol": "标的",
373
+ "trade.side": "方向",
374
+ "trade.type": "类型",
375
+ "trade.size": "数量",
376
+ "trade.entryPrice": "开仓均价",
377
+ "trade.unrealizedPnl": "未实现盈亏",
378
+ "trade.filled": "已成交",
379
+ "trade.time": "时间",
380
+ "trade.action": "操作",
381
+ "trade.cancel": "撤单",
382
+ "trade.canceling": "撤单中…",
383
+ "trade.cancelSuccess": "撤单成功",
384
+ "trade.cancelFailed": "撤单失败",
385
+ "trade.submit": "确认下单",
386
+ "trade.orderSuccess": "下单已提交",
387
+ "trade.drawer.collapse": "收起资产抽屉",
388
+ "trade.drawer.expand": "展开资产抽屉",
389
+ "trade.sideOrder": "快速下单",
390
+ "trade.liveChannel": "实盘通道",
391
+ "trade.fillCurrentPrice": "填入现价",
392
+ "trade.marketExecuteHint": "以市场最优对手价即刻成交",
393
+ "trade.estimatedAmount": "预估金额",
394
+ "trade.unit.shares": "股",
395
+ "trade.unit.coin": "币",
396
+ "trade.drawer.available": "可用余额",
397
+ "trade.drawer.locked": "冻结金额",
398
+ "trade.drawer.total": "总计",
399
+ "trade.drawer.asset": "币种/资产",
400
+ "trade.mode.live": "实盘交易",
401
+ "trade.mode.paper": "模拟交易",
402
+ "trade.paper.tag": "模拟盘",
403
+ "trade.paper.reset": "重置模拟金",
404
+ "trade.paper.resetConfirm": "确认将模拟账户重置为初始资产 (100,000) 吗?",
405
+ "trade.paper.available": "可用模拟资金",
406
+ "trade.paper.buyAction": "模拟买入",
407
+ "trade.paper.sellAction": "模拟卖出",
408
+ "trade.paper.drawerTag": "模拟盘账本",
409
+ "trade.paper.initialBalance": "初始模拟金",
410
+ "trade.paper.totalPnl": "模拟总盈亏",
411
+ "quote.rangeStats": "区间统计",
412
+ "quote.rangeStatsHint": "在图上拖拽框选一段K线,统计区间涨跌",
413
+ "range.change": "区间涨跌幅",
414
+ "range.changeAbs": "区间涨跌",
415
+ "range.high": "区间最高",
416
+ "range.low": "区间最低",
417
+ "range.amplitude": "区间振幅",
418
+ "range.volume": "区间成交量",
419
+ "range.bars": "K线数",
420
+ "range.upDays": "上涨",
421
+ "range.downDays": "下跌",
422
+ "range.closePanel": "关闭",
423
+ "interval.1m": "1分",
424
+ "interval.3m": "3分",
425
+ "interval.5m": "5分",
426
+ "interval.10m": "10分",
427
+ "interval.15m": "15分",
428
+ "interval.30m": "30分",
429
+ "interval.1h": "1小时",
430
+ "interval.4h": "4小时",
431
+ "interval.1d": "日K",
432
+ "interval.1w": "周K",
433
+ "interval.1M": "月K",
434
+ "status.trading": "交易中",
435
+ "status.closed": "已收盘",
436
+ "status.midday": "午间休市",
437
+ "status.preMarket": "盘前",
438
+ "status.afterHours": "盘后",
439
+ "status.auction": "集合竞价",
440
+ "index.shComposite": "上证指数",
441
+ "index.szComponent": "深证成指",
442
+ "index.chinext": "创业板指",
443
+ "index.hangSeng": "恒生指数",
444
+ "index.hangSengTech": "恒生科技",
445
+ "index.hscei": "国企指数",
446
+ "index.sp500": "标普500",
447
+ "index.nasdaq": "纳斯达克",
448
+ "index.dowJones": "道琼斯",
449
+ "index.btc": "BTC",
450
+ "index.eth": "ETH",
451
+ "index.sol": "SOL",
452
+ "browser.history": "历史会话",
453
+ "browser.historyEmpty": "该工作区还没有会话",
454
+ "browser.showMore": "展开其余 {n} 条",
455
+ "browser.showLess": "收起",
456
+ "browser.menu.aria": "会话操作",
457
+ "browser.menu.rename": "重命名",
458
+ "browser.menu.fork": "分叉会话",
459
+ "browser.menu.archive": "归档会话",
460
+ "entry.new": "新会话",
461
+ "entry.settings": "设置",
462
+ "chat.fold": "折叠会话列",
463
+ "chat.expand": "展开会话列",
464
+ "chat.resize": "拖拽调整会话列宽度(双击复位,方向键微调)",
465
+ "stage.quote": "行情",
466
+ "stage.strategy": "策略",
467
+ "stage.knowledge": "知识库",
468
+ "indicator.picker": "技术指标",
469
+ "indicator.group.main": "主图指标",
470
+ "indicator.group.sub": "副图指标",
471
+ "indicator.empty": "暂无可用指标(未安装指标插件?)",
472
+ "indicator.params": "参数",
473
+ "indicator.apply": "应用",
474
+ "indicator.cancel": "取消",
475
+ "indicator.delete": "删除",
476
+ "indicator.deleteConfirm": "确定删除该自定义指标?已持久化的定义将从指标库移除。"
477
+ };
478
+ //#endregion
479
+ //#region ../client-ui-settings/lib/client/locales.js
480
+ const zh$2 = {
481
+ "nav": "交易",
482
+ "lead": "选择每个市场使用的数据/交易所提供方。行情面板保存即生效;Agent 会话于新建会话生效(切换不中断当前会话)。",
483
+ "tabs": "市场",
484
+ "empty": "没有可配置的市场。",
485
+ "save": "保存",
486
+ "discard": "放弃",
487
+ "saved": "已保存",
488
+ "saveFailed": "保存失败",
489
+ "current": "当前:{provider}",
490
+ "default": "默认",
491
+ "custom": "自定义({provider},由第三方连接器提供)",
492
+ "newsKeyLabel": "CryptoPanic API Key(可选)——新闻工具 crypto_get_news 的 B 增强源;留空则用公共源。",
493
+ "newsKeyPlaceholder": "粘贴 CryptoPanic free API token(私钥,仅本地存储)",
494
+ "newsSaved": "已保存",
495
+ "newsSaveFailed": "保存失败",
496
+ "colorMode.label": "涨跌配色",
497
+ "colorMode.redUp": "红涨绿跌(国内习惯)",
498
+ "colorMode.greenUp": "绿涨红跌(国际习惯)",
499
+ "market.crypto": "加密货币",
500
+ "market.us": "美国股票",
501
+ "market.cn": "中国 A 股",
502
+ "market.hk": "香港股票",
503
+ "credential.btn": "配置 API 凭证",
504
+ "credential.btnFold": "收起配置",
505
+ "credential.configured": "已配置凭证",
506
+ "credential.notConfigured": "未配置",
507
+ "credential.save": "保存凭证",
508
+ "credential.delete": "清除/删除凭证",
509
+ "credential.saved": "API 凭证已保存",
510
+ "credential.deleted": "API 凭证已删除",
511
+ "credential.saveFailed": "凭证保存失败",
512
+ "credential.deleteFailed": "凭证清除失败",
513
+ "type.public": "免密公共源",
514
+ "type.gateway": "本地网关",
515
+ "type.commercial": "商业 API",
516
+ "field.action.hide": "隐藏",
517
+ "field.action.show": "显示",
518
+ "provider.docsLink": "官方指引与文档",
519
+ "provider.envPrefix": "环境变量:",
520
+ "provider.binance": "Binance (币安)",
521
+ "provider.okx": "OKX (欧易)",
522
+ "provider.bybit": "Bybit",
523
+ "provider.ccxt": "CCXT (跨所聚合 100+)",
524
+ "provider.yahoo": "Yahoo Finance",
525
+ "provider.alpaca": "Alpaca",
526
+ "provider.fmp": "FMP (Financial Modeling Prep)",
527
+ "provider.finnhub": "Finnhub",
528
+ "provider.polygon": "Polygon.io (Massive)",
529
+ "provider.ibkr": "IBKR (盈透证券)",
530
+ "provider.stooq": "Stooq",
531
+ "provider.tencent": "腾讯 (Tencent)",
532
+ "provider.eastmoney": "东方财富 (Eastmoney)",
533
+ "provider.tushare": "Tushare Pro",
534
+ "provider.akshare": "AkShare (宏观/另类量化)",
535
+ "provider.qmt": "MiniQMT (迅投券商实盘)",
536
+ "provider.futu": "Futu (富途 OpenD)",
537
+ "provider.longbridge": "Longbridge (长桥)",
538
+ "provider.tiger": "Tiger Trade (老虎证券)",
539
+ "field.label.apiKey": "API Key",
540
+ "field.label.apiSecret": "API Secret",
541
+ "field.label.secretKey": "Secret Key",
542
+ "field.label.passphrase": "Passphrase",
543
+ "field.label.token": "Pro Token",
544
+ "field.label.apiUrl": "HTTP 服务地址",
545
+ "field.label.qmtUrl": "MiniQMT 服务地址",
546
+ "field.label.futuHost": "OpenD IP",
547
+ "field.label.futuPort": "OpenD 端口",
548
+ "field.label.ibkrUrl": "CP Gateway 地址",
549
+ "field.label.appKey": "App Key",
550
+ "field.label.appSecret": "App Secret",
551
+ "field.label.accessToken": "Access Token",
552
+ "field.label.tigerId": "Tiger ID",
553
+ "field.label.tigerPrivateKey": "RSA 私钥",
554
+ "field.placeholder.binanceKey": "BINANCE_API_KEY (留空走免密公共行情)",
555
+ "field.placeholder.binanceSecret": "BINANCE_API_SECRET",
556
+ "field.placeholder.okxKey": "OKX_API_KEY (留空走免密公共行情)",
557
+ "field.placeholder.okxSecret": "OKX_SECRET_KEY",
558
+ "field.placeholder.okxPassphrase": "OKX_PASSPHRASE",
559
+ "field.placeholder.bybitKey": "BYBIT_API_KEY (留空走免密公共行情)",
560
+ "field.placeholder.bybitSecret": "BYBIT_API_SECRET",
561
+ "field.placeholder.ccxtKey": "CCXT_API_KEY",
562
+ "field.placeholder.ccxtSecret": "CCXT_API_SECRET",
563
+ "field.placeholder.alpacaKey": "ALPACA_API_KEY",
564
+ "field.placeholder.alpacaSecret": "ALPACA_SECRET_KEY",
565
+ "field.placeholder.fmpKey": "FMP_API_KEY",
566
+ "field.placeholder.finnhubKey": "FINNHUB_API_KEY",
567
+ "field.placeholder.polygonKey": "POLYGON_API_KEY",
568
+ "field.placeholder.tushareToken": "TUSHARE_TOKEN",
569
+ "field.placeholder.akshareUrl": "http://127.0.0.1:8080 (默认内置)",
570
+ "field.placeholder.qmtUrl": "http://127.0.0.1:5800",
571
+ "field.placeholder.futuHost": "127.0.0.1",
572
+ "field.placeholder.futuPort": "11111",
573
+ "field.placeholder.ibkrUrl": "https://localhost:5000",
574
+ "field.placeholder.longbridgeAppKey": "LONGBRIDGE_APP_KEY",
575
+ "field.placeholder.longbridgeAppSecret": "LONGBRIDGE_APP_SECRET",
576
+ "field.placeholder.longbridgeAccessToken": "LONGBRIDGE_ACCESS_TOKEN",
577
+ "field.placeholder.tigerId": "TIGER_ID",
578
+ "field.placeholder.tigerPrivateKey": "TIGER_PRIVATE_KEY"
579
+ };
580
+ //#endregion
581
+ //#region ../client-ui-strategies/lib/client/locales.js
582
+ const zh$1 = {
583
+ "sv.section.screener": "选股策略",
584
+ "sv.section.quant": "量化策略",
585
+ "sv.horizon.short": "短线交易",
586
+ "sv.horizon.swing": "波段操作",
587
+ "sv.horizon.long": "长线投资",
588
+ "sv.run": "运行回测",
589
+ "sv.running": "回测计算中...",
590
+ "sv.symbolLabel": "标的:",
591
+ "sv.intervalDaily": "(日K)",
592
+ "sv.error.noKlines": "未能获取到该标的的 K 线数据,无法执行回测",
593
+ "sv.error.failed": "策略计算异常",
594
+ "sv.metrics.totalReturn": "累计收益率",
595
+ "sv.metrics.cagr": "年化复合增长率 (CAGR)",
596
+ "sv.metrics.maxDrawdown": "最大回撤 (MDD)",
597
+ "sv.metrics.sharpe": "夏普比率 (Sharpe)",
598
+ "sv.metrics.winRate": "胜率 (Win Rate)",
599
+ "sv.metrics.profitFactor": "盈亏比 (Profit Factor)",
600
+ "sv.metrics.tradeCount": "交易笔数",
601
+ "sv.metrics.tradeUnit": "笔",
602
+ "sv.metrics.exposure": "市场暴露度 (Exposure)",
603
+ "sv.trades.title": "交易明细流水",
604
+ "sv.trades.empty": "回测区间内未触发交易信号",
605
+ "sv.trades.entryTime": "开仓时间",
606
+ "sv.trades.exitTime": "平仓时间",
607
+ "sv.trades.entryPrice": "开仓均价",
608
+ "sv.trades.exitPrice": "平仓均价",
609
+ "sv.trades.holdingBars": "持仓根数",
610
+ "sv.trades.netReturn": "单笔净收益率",
611
+ "sv.trades.exitReason": "离场原因",
612
+ "sv.empty.hint": "选择上方策略与参数后,点击「运行回测」查看绩效与权益曲线",
613
+ "sv.screener.run": "运行选股",
614
+ "sv.screener.stop": "停止",
615
+ "sv.screener.scanLimit": "扫描池上限",
616
+ "sv.screener.universePrefix": "标的名册",
617
+ "sv.screener.scanned": "已扫描",
618
+ "sv.screener.hits": "命中",
619
+ "sv.screener.failed": "失败",
620
+ "sv.screener.noUniverse": "当前数据源未提供标的全集,选股功能不可用(Binance/OKX 等提供名册的连接器可用)",
621
+ "sv.screener.noHits": "扫描完成:没有标的满足当前条件",
622
+ "sv.screener.scanning": "扫描中,命中将实时出现在下方...",
623
+ "sv.screener.emptyHint": "选择上方选股器与参数后,点击「运行选股」扫描全市场标的",
624
+ "sv.screener.col.symbol": "代码",
625
+ "sv.screener.col.name": "名称",
626
+ "sv.screener.col.price": "现价",
627
+ "sv.screener.col.reason": "信号说明",
628
+ "sv.author.failed": "策略校验未通过",
629
+ "strat.donchian-breakout": "唐奇安通道突破",
630
+ "strat.donchian-breakout.summary": "收盘价突破前 N1 根最高价做多,跌破前 N2 根最低价离场(海龟经典简化版)",
631
+ "strat.donchian-breakout.param.lookbackEntry": "突破周期 (N1)",
632
+ "strat.donchian-breakout.param.lookbackExit": "离场周期 (N2)",
633
+ "strat.donchian-breakout.reason.entry": "收盘价 ({close}) 突破前 {n} 根最高价 ({high})",
634
+ "strat.donchian-breakout.reason.exit": "收盘价 ({close}) 跌破前 {n} 根最低价 ({low})",
635
+ "strat.rsi-reversion": "RSI 短线极值回归",
636
+ "strat.rsi-reversion.summary": "短周期 RSI(2) 进入极端超卖区抄底,快速反弹后止盈(经典均值回归)",
637
+ "strat.rsi-reversion.param.rsiPeriod": "RSI 周期",
638
+ "strat.rsi-reversion.param.entryThreshold": "入场超卖阈值",
639
+ "strat.rsi-reversion.param.exitThreshold": "出场止盈阈值",
640
+ "strat.rsi-reversion.reason.entry": "RSI({period}) 达到极端超卖值 ({val} < {thresh}),触发反弹买入",
641
+ "strat.rsi-reversion.reason.exit": "RSI({period}) 回升至目标位 ({val} > {thresh}),止盈离场",
642
+ "strat.ema-crossover": "EMA 双均线趋势跟踪",
643
+ "strat.ema-crossover.summary": "快线 EMA 上穿慢线 EMA 金叉做多,死叉平仓(经典中线波段趋势策略)",
644
+ "strat.ema-crossover.param.fastPeriod": "快线周期 (Fast)",
645
+ "strat.ema-crossover.param.slowPeriod": "慢线周期 (Slow)",
646
+ "strat.ema-crossover.reason.entry": "EMA({fastP}) ({fast}) 上穿 EMA({slowP}) ({slow}) 形成金叉",
647
+ "strat.ema-crossover.reason.exit": "EMA({fastP}) ({fast}) 下穿 EMA({slowP}) ({slow}) 形成死叉",
648
+ "strat.bollinger-reversion": "布林带下轨均值回归",
649
+ "strat.bollinger-reversion.summary": "价格跌破布林线下轨时介入抄底,反弹至中轨(基准均线)时平仓(波段通道回归)",
650
+ "strat.bollinger-reversion.param.period": "布林周期",
651
+ "strat.bollinger-reversion.param.multiplier": "标准差倍数 (k)",
652
+ "strat.bollinger-reversion.reason.entry": "收盘价 ({close}) 跌破布林下轨 ({band}),触发波段均值回归",
653
+ "strat.bollinger-reversion.reason.exit": "收盘价 ({close}) 成功回归至布林中轨 ({mid}),完成目标止盈",
654
+ "strat.sma-baseline": "200 日均线牛熊择时基线",
655
+ "strat.sma-baseline.summary": "收盘价站上 SMA200 均线做多,跌破均线空仓避险(长线资产配置经典基线)",
656
+ "strat.sma-baseline.param.period": "长期均线周期",
657
+ "strat.sma-baseline.reason.entry": "收盘价 ({close}) 站上长期基线 SMA({period}) ({sma}),确立多头趋势",
658
+ "strat.sma-baseline.reason.exit": "收盘价 ({close}) 跌破长期基线 SMA({period}) ({sma}),转入防御避险",
659
+ "strat.momentum-12m": "12 个月动量择时",
660
+ "strat.momentum-12m.summary": "近 12 个月动量为正且站上年线做多,动量转负或破位离场(低换手长线动量)",
661
+ "strat.momentum-12m.param.lookbackBars": "动量回溯周期 (K线)",
662
+ "strat.momentum-12m.reason.entry": "近 {n} 周期动量为正 (+{pct}%) 且位于均线 ({sma}) 之上,确认强动量",
663
+ "strat.momentum-12m.reason.exit": "{cause} ({pct}% / SMA {sma}),动量衰减平仓",
664
+ "scr.ma-bull-align": "均线多头排列",
665
+ "scr.ma-bull-align.summary": "现价站上三线且 SMA(短) > SMA(中) > SMA(长),筛选趋势结构完整的标的",
666
+ "scr.ma-bull-align.param.n1": "短期均线",
667
+ "scr.ma-bull-align.param.n2": "中期均线",
668
+ "scr.ma-bull-align.param.n3": "长期均线",
669
+ "scr.ma-bull-align.col.distLongPct": "距长期均线",
670
+ "scr.ma-bull-align.reason": "现价站上三线且 SMA({n1}) > SMA({n2}) > SMA({n3}),多头排列",
671
+ "scr.volume-breakout": "放量突破",
672
+ "scr.volume-breakout.summary": "收盘价创 N 日新高且成交量 ≥ 均量 M 倍,量价配合的突破筛选",
673
+ "scr.volume-breakout.param.lookback": "突破窗口(日)",
674
+ "scr.volume-breakout.param.volMultiple": "量能倍数",
675
+ "scr.volume-breakout.col.volRatio": "量比(倍)",
676
+ "scr.volume-breakout.col.breakoutPct": "突破幅度",
677
+ "scr.volume-breakout.reason": "放量 {ratio} 倍突破 {n} 日高点",
678
+ "scr.rsi-oversold": "RSI 超卖",
679
+ "scr.rsi-oversold.summary": "RSI 跌入超卖区(默认 <30),筛选值得盯的反转候选(逆势信号)",
680
+ "scr.rsi-oversold.param.period": "RSI 周期",
681
+ "scr.rsi-oversold.param.threshold": "超卖阈值",
682
+ "scr.rsi-oversold.col.rsi": "RSI",
683
+ "scr.rsi-oversold.reason": "RSI({period}) = {val},进入超卖区(逆势信号)",
684
+ "scr.near-high": "接近一年新高",
685
+ "scr.near-high.summary": "现价距 N 日最高价不超过 X%,强势整理/突破前夜的动量筛选",
686
+ "scr.near-high.param.window": "窗口(日)",
687
+ "scr.near-high.param.withinPct": "接近阈值(%)",
688
+ "scr.near-high.col.offHighPct": "距高点",
689
+ "scr.near-high.reason": "距 {n} 日高点仅 {pct}%,处于突破前夜",
690
+ "scr.above-ma": "站上牛熊线",
691
+ "scr.above-ma.summary": "现价站上长期均线且均线斜率向上,筛选长线多头环境的标的",
692
+ "scr.above-ma.param.period": "牛熊线周期",
693
+ "scr.above-ma.param.slopeBars": "斜率窗口(日)",
694
+ "scr.above-ma.col.aboveMaPct": "高于均线",
695
+ "scr.above-ma.col.maSlopePct": "均线斜率",
696
+ "scr.above-ma.reason": "现价高于 SMA({period}) {above}%,均线 {slope} 日斜率 +{slopePct}%",
697
+ "strat.momentum-12m.cause.momentumNegative": "动量转为负值",
698
+ "strat.momentum-12m.cause.belowBaseline": "跌破基准均线"
699
+ };
700
+ //#endregion
701
+ //#region ../client-ui-knowledge/lib/client/locales.js
702
+ const zh = {
703
+ "kv.search.placeholder": "搜索卡片标题、摘要、标签...",
704
+ "kv.filter.tag": "主题标签",
705
+ "kv.filter.allTags": "全部标签",
706
+ "kv.filter.author": "来源作者",
707
+ "kv.filter.allAuthors": "全部作者",
708
+ "kv.filter.credibility": "可信度",
709
+ "kv.filter.allCredibility": "全部评级",
710
+ "kv.filter.sourceType": "来源平台",
711
+ "kv.filter.allSourceTypes": "全部平台",
712
+ "kv.filter.reset": "重置筛选",
713
+ "kv.credibility.high": "高可信度 (High)",
714
+ "kv.credibility.medium": "中可信度 (Medium)",
715
+ "kv.credibility.low": "低可信度 (Low)",
716
+ "kv.sourceType.bilibili": "B站 (Bilibili)",
717
+ "kv.sourceType.wechat": "微信公众号 (WeChat)",
718
+ "kv.sourceType.manual": "手工录入 (Manual)",
719
+ "kv.empty.hint": "知识库暂无内容。把 B 站视频或公众号文章链接发给助手,说「沉淀到知识库」即可入库。",
720
+ "kv.empty.filtered": "未找到匹配当前筛选条件的知识卡片",
721
+ "kv.stats.cards": "张卡片",
722
+ "kv.stats.clusters": "个主题簇",
723
+ "kv.drawer.title": "知识卡片详情",
724
+ "kv.drawer.coreClaims": "核心论点",
725
+ "kv.drawer.factCheck": "事实核查 (三桶分类)",
726
+ "kv.drawer.verified": "经核实真实 (Verified)",
727
+ "kv.drawer.discrepancies": "有出入/夸大 (Discrepancies)",
728
+ "kv.drawer.unverifiable": "无法核实 (Unverifiable)",
729
+ "kv.drawer.takeaways": "可复用分析经验",
730
+ "kv.drawer.boundaries": "适用边界与避坑",
731
+ "kv.drawer.tickers": "关联标的",
732
+ "kv.drawer.related": "关联卡片",
733
+ "kv.drawer.openSource": "打开原始链接",
734
+ "kv.drawer.publishedAt": "发布日期",
735
+ "kv.drawer.author": "来源作者"
736
+ };
737
+ //#endregion
738
+ //#region src/client/index.ts
739
+ /** Required services:宿主 locale 服务(语言目录 + 词典注册表)。 */
740
+ const inject = ["locale"];
741
+ /** 命名空间 → zh 词典映射(audit 依此核对覆盖面)。 */
742
+ const PACKAGES = [
743
+ ["dshtrading.market", zh$3],
744
+ ["dshtrading.settings", zh$2],
745
+ ["dshtrading.strategies", zh$1],
746
+ ["dshtrading.knowledge", zh]
747
+ ];
748
+ /** 语言目录注册项(id 持久化为 locale preference;label 用该语言自述)。 */
749
+ const LANGUAGES = [{
750
+ id: "zh-CN",
751
+ label: "简体中文",
752
+ fallback: "zh"
753
+ }];
754
+ /** 注册语言目录 + 全部命名空间的 zh-CN 词典(幂等:可重复 apply)。 */
755
+ function apply(ctx) {
756
+ const disposers = [];
757
+ let disposed = false;
758
+ ctx.effect(() => {
759
+ for (const language of LANGUAGES) try {
760
+ disposers.push(ctx.locale.addLanguage(language));
761
+ } catch (error) {
762
+ console.warn(`[dsh-i18n] addLanguage(${language.id}) skipped:`, error);
763
+ }
764
+ for (const [ns, dict] of PACKAGES) try {
765
+ disposers.push(ctx.locale.register(ns, "zh-CN", dict));
766
+ } catch (error) {
767
+ console.warn(`[dsh-i18n] register(${ns}, zh-CN) skipped:`, error);
768
+ }
769
+ return () => {
770
+ if (disposed) return;
771
+ disposed = true;
772
+ for (const dispose of disposers.reverse()) dispose();
773
+ };
774
+ }, "dsh-i18n: zh-CN language pack");
775
+ }
776
+ //#endregion
777
+ exports.LANGUAGES = LANGUAGES;
778
+ exports.PACKAGES = PACKAGES;
779
+ exports.apply = apply;
780
+ exports.inject = inject;
781
+ return module.exports;
782
+ }
783
+ });
784
+
785
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":["zh","zh","zh","marketZh","settingsZh","strategiesZh","knowledgeZh"],"sources":["../../client-ui-trading/lib/client/locales.js","../../client-ui-settings/lib/client/locales.js","../../client-ui-strategies/lib/client/locales.js","../../client-ui-knowledge/lib/client/locales.js","../src/client/index.ts"],"sourcesContent":["//#region src/client/locales.ts\nconst zh = {\n\t\"tab.watch\": \"自选\",\n\t\"tab.crypto\": \"加密货币\",\n\t\"tab.us\": \"美股\",\n\t\"tab.cn\": \"A股\",\n\t\"tab.hk\": \"港股\",\n\t\"sidebar.addPlaceholder\": \"输入代码,回车加入自选\",\n\t\"sidebar.add\": \"添加\",\n\t\"sidebar.addMarketHint\": \"点击切换目标市场(加密货币→美股→A股→港股)\",\n\t\"sidebar.empty\": \"暂无标的\",\n\t\"sidebar.emptyHint\": \"在上方输入代码加入自选(可切换目标市场)\",\n\t\"sidebar.loadFailed\": \"行情桥不可用(未装市场包?)\",\n\t\"sidebar.retry\": \"重试\",\n\t\"sidebar.markets\": \"市场与自选\",\n\t\"sidebar.fold\": \"收起自选\",\n\t\"sidebar.expand\": \"展开自选\",\n\t\"header.symbol\": \"名称代码\",\n\t\"header.trend\": \"走势\",\n\t\"header.priceChange\": \"最新价/涨跌幅\",\n\t\"row.remove\": \"移除\",\n\t\"row.select\": \"查看行情\",\n\t\"quote.empty\": \"选择左侧标的查看行情\",\n\t\"quote.emptyHint\": \"左栏点击任意标的,这里展示 K 线与关键报价\",\n\t\"quote.open\": \"开\",\n\t\"quote.high\": \"高\",\n\t\"quote.low\": \"低\",\n\t\"quote.prevClose\": \"昨收\",\n\t\"quote.volume\": \"量\",\n\t\"quote.updated\": \"更新\",\n\t\"quote.loadFailed\": \"K线加载失败\",\n\t\"quote.loadFailedColon\": \"K线加载失败:{error}\",\n\t\"quote.noData\": \"暂无数据\",\n\t\"quote.sendToAgent\": \"发给 Agent\",\n\t\"quote.sendToAgentHint\": \"把当前标的行情与图表截图填入会话输入框(可继续编辑,自行发送)\",\n\t\"quote.sendSending\": \"填入中…\",\n\t\"quote.sendSent\": \"已填入输入框\",\n\t\"quote.sendFailed\": \"填入失败\",\n\t\"quote.tab.chart\": \"图表\",\n\t\"quote.tab.fundamentals\": \"基本面\",\n\t\"quote.tab.derivatives\": \"衍生品\",\n\t\"quote.tab.news\": \"新闻\",\n\t\"quote.tab.announcements\": \"公告\",\n\t\"fundamentals.peTtm\": \"市盈率(TTM)\",\n\t\"fundamentals.peDynamic\": \"动态市盈率\",\n\t\"fundamentals.pb\": \"市净率\",\n\t\"fundamentals.marketCap\": \"总市值\",\n\t\"fundamentals.floatMarketCap\": \"流通市值\",\n\t\"fundamentals.turnoverRate\": \"换手率\",\n\t\"fundamentals.dividendYield\": \"股息率\",\n\t\"fundamentals.fiftyTwoWeekHigh\": \"52周最高\",\n\t\"fundamentals.fiftyTwoWeekLow\": \"52周最低\",\n\t\"fundamentals.unavailable\": \"该市场数据源未提供基本面字段,以下为行情派生数据\",\n\t\"fundamentals.source\": \"数据来源\",\n\t\"fundamentals.unit.cn\": \"元\",\n\t\"fundamentals.unit.us\": \"美元\",\n\t\"fundamentals.unit.hk\": \"港元\",\n\t\"fundamentals.unit.crypto\": \"美元\",\n\t\"fundamentals.scale\": \"万\",\n\t\"fund.page.empty\": \"请在左侧自选栏选择标的以查看基本面与多期财报档案\",\n\t\"fund.page.loading\": \"正在从官方数据源动态拉取 {symbol} 财务与估值矩阵...\",\n\t\"fund.pill.peTtm\": \"PE(TTM):\",\n\t\"fund.pill.peDynamic\": \"动态PE:\",\n\t\"fund.pill.pb\": \"PB:\",\n\t\"fund.pill.marketCap\": \"总市值:\",\n\t\"fund.pill.dividendYield\": \"股息率:\",\n\t\"fund.pill.turnover\": \"换手:\",\n\t\"fund.pill.floatCap\": \"流通市值:\",\n\t\"fund.pill.rank\": \"全球排名:\",\n\t\"fund.nav.financials\": \"财务\",\n\t\"fund.nav.key\": \"关键指标\",\n\t\"fund.nav.income\": \"利润表\",\n\t\"fund.nav.balance\": \"资产负债表\",\n\t\"fund.nav.cashflow\": \"现金流量表\",\n\t\"fund.nav.forecast\": \"预测\",\n\t\"fund.nav.forecastItem\": \"盈利预测\",\n\t\"fund.nav.reports\": \"晨星研报\",\n\t\"fund.nav.reportsItem\": \"机构研报\",\n\t\"fund.nav.valuation\": \"估值\",\n\t\"fund.nav.valuationItem\": \"估值分析\",\n\t\"fund.nav.biz\": \"经营分析\",\n\t\"fund.nav.bizSegments\": \"主营构成\",\n\t\"fund.nav.bizEfficiency\": \"经营效率\",\n\t\"fund.nav.smartMoney\": \"聪明钱\",\n\t\"fund.nav.shareholders\": \"股东持股\",\n\t\"fund.nav.insider\": \"股东增减持\",\n\t\"fund.nav.institutional\": \"机构持股\",\n\t\"fund.nav.profile\": \"简况\",\n\t\"fund.nav.profileOverview\": \"公司概况\",\n\t\"fund.nav.profileExecutives\": \"公司高管\",\n\t\"fund.nav.actions\": \"公司行动\",\n\t\"fund.nav.dividends\": \"分红派息\",\n\t\"fund.nav.buybacks\": \"回购\",\n\t\"fund.nav.splits\": \"拆股并股\",\n\t\"fund.chart.reportTitle\": \"{period} 财报\",\n\t\"fund.chart.showYoy\": \"显示同比: {state}\",\n\t\"fund.chart.yoyLegend\": \"同比增长率 (%)\",\n\t\"fund.switch.on\": \"开\",\n\t\"fund.switch.off\": \"关\",\n\t\"fund.matrix.currency\": \"币种: {currency}\",\n\t\"fund.matrix.clickHint\": \"点击指标行可在上方图表联动查看趋势\",\n\t\"fund.matrix.indicator\": \"指标名称\",\n\t\"fund.matrix.emptyTitle\": \"财务数据提示\",\n\t\"fund.matrix.emptyHint\": \"当前标的暂未生成多期标准财报矩阵(可能为加密数字资产或该市场未提供公开季报端点),请参考估值与公司简况面板。\",\n\t\"fund.forecast.title\": \"机构盈利预测与评级一致预期\",\n\t\"fund.forecast.subtitle\": \"聚合券商研报盈利预测(EPS/营收/净利)与评级统计\",\n\t\"fund.forecast.epsCurrent\": \"当年预期 EPS\",\n\t\"fund.forecast.epsNext\": \"次年预期 EPS\",\n\t\"fund.forecast.targetPrice\": \"一致预期目标价\",\n\t\"fund.forecast.orgCount\": \"覆盖机构数\",\n\t\"fund.forecast.col.year\": \"预测年度\",\n\t\"fund.forecast.col.eps\": \"每股收益 EPS (元)\",\n\t\"fund.forecast.col.revenue\": \"营业收入 (亿元)\",\n\t\"fund.forecast.col.netProfit\": \"归母净利润 (亿元)\",\n\t\"fund.forecast.col.orgs\": \"预测机构数\",\n\t\"fund.forecast.empty\": \"当前标的暂未公开主流券商一致盈利预测数据,请关注公司定期公告与业绩快报。\",\n\t\"fund.reports.title\": \"机构研究报告精选\",\n\t\"fund.reports.subtitle\": \"券商机构最新深度调研、盈利预测与投资评级\",\n\t\"fund.reports.analyst\": \"分析师: {author}\",\n\t\"fund.reports.empty\": \"暂未检索到该标的的公开机构研报,您可在对话框向 Agent 提问进行个股深度财务核查。\",\n\t\"fund.valuation.title\": \"估值核心诊断与历史分位\",\n\t\"fund.valuation.subtitle\": \"基于多周期市盈率、市净率与价格区间综合诊断\",\n\t\"fund.valuation.range52w\": \"52 周价格区间\",\n\t\"fund.valuation.low52w\": \"52周最低: {price}\",\n\t\"fund.valuation.high52w\": \"52周最高: {price}\",\n\t\"fund.valuation.peNote\": \"估值评注: {note}\",\n\t\"fund.valuation.undervalued\": \"🟢 相对低估\",\n\t\"fund.valuation.fair\": \"🟡 估值合理\",\n\t\"fund.valuation.overvalued\": \"🔴 相对偏高\",\n\t\"fund.valuation.assessing\": \"评估中\",\n\t\"fund.valuation.peTtm\": \"滚动市盈率 PE (TTM)\",\n\t\"fund.valuation.peDynamic\": \"动态市盈率 PE (动)\",\n\t\"fund.valuation.peStatic\": \"静态市盈率 PE (静)\",\n\t\"fund.valuation.pb\": \"市净率 PB\",\n\t\"fund.valuation.marketCap\": \"总市值\",\n\t\"fund.valuation.floatCap\": \"流通市值\",\n\t\"fund.valuation.dividendYield\": \"股息率 (TTM)\",\n\t\"fund.valuation.turnover\": \"换手率\",\n\t\"fund.segments.title\": \"主营业务构成分析\",\n\t\"fund.segments.subtitle\": \"按产品、行业及地区分类拆解业务收入与毛利率结构\",\n\t\"fund.segments.all\": \"全部\",\n\t\"fund.segments.byProduct\": \"按产品\",\n\t\"fund.segments.byIndustry\": \"按行业\",\n\t\"fund.segments.byRegion\": \"按地区\",\n\t\"fund.segments.col.segment\": \"主营分类 / 项目\",\n\t\"fund.segments.col.revenue\": \"主营收入 (元)\",\n\t\"fund.segments.col.revenueRatio\": \"收入占比\",\n\t\"fund.segments.col.profit\": \"主营利润 (元)\",\n\t\"fund.segments.col.grossMargin\": \"毛利率\",\n\t\"fund.segments.empty\": \"暂未获取到当期详细主营构成拆解明细,请参考利润表营业收入科目。\",\n\t\"fund.efficiency.title\": \"运营与周转效率\",\n\t\"fund.efficiency.subtitle\": \"存货周转天数、应收账款周转天数、营业周期与盈利质量\",\n\t\"fund.efficiency.inventoryDays\": \"存货周转天数\",\n\t\"fund.efficiency.receivableDays\": \"应收账款周转天数\",\n\t\"fund.efficiency.operatingCycle\": \"净营业周期\",\n\t\"fund.efficiency.assetTurnover\": \"总资产周转率\",\n\t\"fund.efficiency.grossMargin\": \"销售毛利率\",\n\t\"fund.efficiency.netMargin\": \"销售净利率\",\n\t\"fund.efficiency.currentRatio\": \"流动比率\",\n\t\"fund.efficiency.quickRatio\": \"速动比率\",\n\t\"fund.efficiency.summary\": \"本期存货周转天数约为 {inventory} 天,应收账款周转天数约为 {receivable} 天,净营业周期为 {cycle} 天。\",\n\t\"fund.efficiency.empty\": \"经营效率明细数据暂未获取到(数据源未覆盖该报告期),不做推断性描述。\",\n\t\"fund.holders.title\": \"十大流通股东穿透表\",\n\t\"fund.holders.subtitle\": \"核心机构、战略股东、股东户数与筹码集中度\",\n\t\"fund.holders.totalHolders\": \"股东总户数\",\n\t\"fund.holders.avgShares\": \"户均持股数\",\n\t\"fund.holders.avgValue\": \"户均持股市值\",\n\t\"fund.holders.concentration\": \"筹码集中度\",\n\t\"fund.holders.moderate\": \"适中\",\n\t\"fund.holders.col.rank\": \"排名\",\n\t\"fund.holders.col.name\": \"股东名称\",\n\t\"fund.holders.col.shares\": \"持股数 (股)\",\n\t\"fund.holders.col.ratio\": \"占流通股比\",\n\t\"fund.holders.col.change\": \"持股变动\",\n\t\"fund.holders.unchanged\": \"不变\",\n\t\"fund.holders.empty\": \"当前标的暂未公开当期十大流通股东穿透名录,可参考流通市值与换手率变动。\",\n\t\"fund.insider.title\": \"重要股东及高管持股变动明细\",\n\t\"fund.insider.subtitle\": \"主要股东、董监高近期持股变动与交易记录\",\n\t\"fund.insider.col.holder\": \"股东全称\",\n\t\"fund.insider.col.type\": \"变动类型\",\n\t\"fund.insider.col.shares\": \"持股数量 (股)\",\n\t\"fund.insider.col.ratio\": \"持股比例\",\n\t\"fund.insider.col.date\": \"披露日期\",\n\t\"fund.insider.empty\": \"暂无股东增减持明细数据(数据源未覆盖或该报告期无披露记录)。\",\n\t\"fund.institutional.title\": \"机构投资者持仓分布\",\n\t\"fund.institutional.subtitle\": \"投资公司、公募基金、外资QFII、保险资管等机构持股汇总\",\n\t\"fund.institutional.col.org\": \"机构全称\",\n\t\"fund.institutional.col.type\": \"机构类型\",\n\t\"fund.institutional.col.shares\": \"持股数 (股)\",\n\t\"fund.institutional.col.ratio\": \"占流通股比\",\n\t\"fund.institutional.col.value\": \"持股市值 (元)\",\n\t\"fund.institutional.col.change\": \"本期变动\",\n\t\"fund.institutional.empty\": \"机构持股总数与持仓明细已在十大流通股东穿透中体现,涵盖主流公募及指数基金。\",\n\t\"fund.profile.title\": \"标的档案与公司基本概况\",\n\t\"fund.profile.subtitle\": \"法定代表、管理团队、注册资本与官方渠道\",\n\t\"fund.profile.fullName\": \"公司全称\",\n\t\"fund.profile.nameEn\": \"英文名称\",\n\t\"fund.profile.industry\": \"所属行业\",\n\t\"fund.profile.registeredCapital\": \"注册资本\",\n\t\"fund.profile.employees\": \"员工规模\",\n\t\"fund.profile.address\": \"办公 / 注册地址\",\n\t\"fund.profile.website\": \"官方网站\",\n\t\"fund.profile.description\": \"公司简介与历史沿革:\",\n\t\"fund.profile.descriptionFallback\": \"{symbol} 公司详细业务介绍与产业历史。\",\n\t\"fund.executives.title\": \"管理团队与高管名录\",\n\t\"fund.executives.subtitle\": \"董事长、总经理、财务总监及核心董监高\",\n\t\"fund.executives.chairman\": \"董事长\",\n\t\"fund.executives.generalManager\": \"总经理 / CEO\",\n\t\"fund.executives.legalRep\": \"法定代表人\",\n\t\"fund.executives.boardSecretary\": \"董事会秘书\",\n\t\"fund.dividends.title\": \"历年分红派息记录\",\n\t\"fund.dividends.subtitle\": \"历次利润分配方案、除权除息日与股息分红\",\n\t\"fund.dividends.col.year\": \"方案年度\",\n\t\"fund.dividends.col.plan\": \"分配方案\",\n\t\"fund.dividends.col.cash\": \"每股派现 (元)\",\n\t\"fund.dividends.col.exDate\": \"除权除息日\",\n\t\"fund.dividends.col.recordDate\": \"股权登记日\",\n\t\"fund.dividends.empty\": \"暂未获取到公开历史分红派息方案记录。\",\n\t\"fund.buybacks.title\": \"股份回购方案与股本管理\",\n\t\"fund.buybacks.subtitle\": \"公司股份回购方案、回购资金规模、股本结构与实施状态\",\n\t\"fund.buybacks.col.date\": \"公告日期\",\n\t\"fund.buybacks.col.amount\": \"回购规模 / 金额\",\n\t\"fund.buybacks.col.shares\": \"回购股份 (股)\",\n\t\"fund.buybacks.col.priceRange\": \"价格区间\",\n\t\"fund.buybacks.col.status\": \"当前状态\",\n\t\"fund.buybacks.empty\": \"暂无回购记录数据(数据源未覆盖或该标的确实未公告回购),以下字段留空以待数据补齐;不做推测性描述。\",\n\t\"fund.splits.title\": \"拆股、并股与送转股历史\",\n\t\"fund.splits.subtitle\": \"历次股本拆分、送股与公积金转增股本记录\",\n\t\"fund.splits.col.date\": \"除权除息日\",\n\t\"fund.splits.col.ratio\": \"送转股方案\",\n\t\"fund.splits.col.description\": \"实施说明与进度\",\n\t\"fund.splits.empty\": \"暂无拆股并股或送转股记录数据(数据源未覆盖或该标的确实无相关事件)。\",\n\t\"fund.unit.orgs\": \"家\",\n\t\"fund.unit.days\": \"{n} 天\",\n\t\"fund.unit.times\": \"{n} 次\",\n\t\"fund.unit.holders\": \"{n}万户\",\n\t\"fund.unit.shares\": \"{n} 股\",\n\t\"fund.unit.wanCny\": \"¥{n}万\",\n\t\"fund.unit.yiCny\": \"¥{n}亿\",\n\t\"marker.signal.toggle\": \"信号\",\n\t\"marker.signal.toggleTitle\": \"策略信号标记\",\n\t\"marker.signal.entryReason\": \"EMA(12/26) 金叉买入价 {cur}{price}\",\n\t\"marker.signal.exitReason\": \"EMA(12/26) 死叉卖出价 {cur}{price}\",\n\t\"marker.knowledge.toggle\": \"事件\",\n\t\"marker.knowledge.toggleTitle\": \"知识事件图钉\",\n\t\"marker.knowledge.batched\": \"{title} (等{count}条)\",\n\t\"tooltip.signal.entry\": \"买入信号\",\n\t\"tooltip.signal.exit\": \"卖出信号\",\n\t\"tooltip.label.price\": \"价格\",\n\t\"tooltip.label.time\": \"时间\",\n\t\"tooltip.label.return\": \"收益率\",\n\t\"tooltip.label.profit\": \"盈亏\",\n\t\"tooltip.label.holding\": \"持仓\",\n\t\"tooltip.unit.bars\": \"{n} 根\",\n\t\"tooltip.knowledge.header\": \"知识事件\",\n\t\"tooltip.credibility.high\": \"高可信度\",\n\t\"tooltip.credibility.medium\": \"中可信度\",\n\t\"tooltip.credibility.low\": \"低可信度\",\n\t\"news.time.justNow\": \"刚刚\",\n\t\"news.time.minutesAgo\": \"{n}分钟前\",\n\t\"news.time.hoursAgo\": \"{n}小时前\",\n\t\"news.time.daysAgo\": \"{n}天前\",\n\t\"news.time.monthsAgo\": \"{n}个月前\",\n\t\"news.time.yearsAgo\": \"{n}年前\",\n\t\"news.source.eastmoneyAnnouncement\": \"公司公告\",\n\t\"news.source.eastmoney\": \"东方财富\",\n\t\"news.source.hkexAnnouncement\": \"港交所披露\",\n\t\"news.source.cninfoAnnouncement\": \"巨潮公告\",\n\t\"news.source.secEdgar\": \"SEC 披露\",\n\t\"news.source.binance\": \"币安公告\",\n\t\"news.source.okx\": \"欧易公告\",\n\t\"news.source.yahoo\": \"Yahoo 财经\",\n\t\"news.source.google\": \"Google 新闻\",\n\t\"news.source.coindesk\": \"CoinDesk\",\n\t\"news.source.theblock\": \"The Block\",\n\t\"news.source.cointelegraph\": \"CoinTelegraph\",\n\t\"news.source.decrypt\": \"Decrypt\",\n\t\"news.empty.exchangeNotReady\": \"公告源未就绪\",\n\t\"news.empty.mediaNotActive\": \"新闻源未激活\",\n\t\"news.empty.noAnnouncements\": \"暂无相关公告\",\n\t\"news.empty.noNews\": \"暂无相关新闻\",\n\t\"news.sendToAgentTitle\": \"发送给 Agent 分析\",\n\t\"news.degraded\": \"部分数据源不可用: {sources}\",\n\t\"compose.opener\": \"看一下我正在看的行情:{title}\",\n\t\"compose.prevClose\": \"昨收 {price}\",\n\t\"compose.priceLine\": \"现价\",\n\t\"compose.candleLine\": \"当根K线 开 {open} 高 {high} 低 {low} 收 {close} 量 {volume}\",\n\t\"compose.indicatorsLine\": \"已开启指标:{titles}\",\n\t\"compose.listSeparator\": \"、\",\n\t\"compose.deltaWrap\": \"(|)\",\n\t\"compose.prevSep\": \",\",\n\t\"compose.withScreenshot\": \"随消息附当前图表截图,请结合分析。\",\n\t\"compose.withoutScreenshot\": \"请结合当前行情继续分析。\",\n\t\"card.order.rejected\": \"已拒绝\",\n\t\"card.order.dryRun\": \"模拟单\",\n\t\"card.order.live\": \"实盘单\",\n\t\"card.order.priceLabel\": \"价格\",\n\t\"card.order.quantityLabel\": \"数量\",\n\t\"card.order.refPriceLabel\": \"参考价\",\n\t\"card.watchlist.selected\": \"已切换选中\",\n\t\"card.watchlist.added\": \"已加入自选\",\n\t\"card.watchlist.already\": \"已在自选中\",\n\t\"derivatives.title\": \"衍生品\",\n\t\"derivatives.oi\": \"持仓量\",\n\t\"derivatives.oiValue\": \"持仓价值\",\n\t\"derivatives.funding\": \"资金费率\",\n\t\"derivatives.fundingPositive\": \"多头付资金\",\n\t\"derivatives.fundingNegative\": \"空头付资金\",\n\t\"derivatives.longShort\": \"多空人数比\",\n\t\"derivatives.topLongShort\": \"大户多空比\",\n\t\"derivatives.taker\": \"主动买卖比\",\n\t\"derivatives.ratioLong\": \"偏多\",\n\t\"derivatives.ratioShort\": \"偏空\",\n\t\"derivatives.predicted\": \"预测费率\",\n\t\"derivatives.countdown\": \"距结算\",\n\t\"derivatives.markPrice\": \"标记价格\",\n\t\"derivatives.indexPrice\": \"指数价格\",\n\t\"derivatives.basis\": \"基差\",\n\t\"derivatives.oiChange24h\": \"24h 持仓变化\",\n\t\"derivatives.fundingHistory\": \"费率历史(近 30 期)\",\n\t\"derivatives.oiTrend\": \"持仓量趋势(近 30 日)\",\n\t\"derivatives.historyUnavailable\": \"该数据源未提供历史序列\",\n\t\"derivatives.analyze\": \"分析资金面\",\n\t\"derivatives.analyzeBody\": \"请分析 {symbol} 永续合约的资金面与多空拥挤度(数据源 {source}):\\n{lines}\\n请结合费率走向、OI 变化与多空比给出拥挤度判断和风险提示(不构成投资建议)。\",\n\t\"derivatives.analyzeHint\": \"把衍生品快照发给 Agent,按资金面流程分析\",\n\t\"derivatives.perpSource\": \"数据来自对应永续合约(现货标的自动映射)\",\n\t\"derivatives.hint.oi\": \"未平仓合约总量(币数),反映市场杠杆规模;点击查看趋势\",\n\t\"derivatives.hint.oiValue\": \"未平仓合约总价值(USD)\",\n\t\"derivatives.hint.funding\": \"正费率=多头付空头(多头拥挤);点击查看预测与结算倒计时\",\n\t\"derivatives.hint.longShort\": \"多空持仓人数比,>1 偏多;点击查看详情\",\n\t\"derivatives.hint.topLongShort\": \"大户持仓多空比,>1 大户偏多\",\n\t\"derivatives.hint.taker\": \"主动买入/卖出成交量比,>1 买方主动性强\",\n\t\"derivatives.hint.basis\": \"(标记价-指数价)/指数价;正基差=永续升水\",\n\t\"orderbook.title\": \"盘口与分笔\",\n\t\"orderbook.close\": \"关闭盘口\",\n\t\"orderbook.unavailable\": \"该市场数据源未提供盘口\",\n\t\"orderbook.buyForce\": \"买盘\",\n\t\"orderbook.sellForce\": \"卖盘\",\n\t\"orderbook.spread\": \"价差\",\n\t\"orderbook.trades\": \"逐笔成交\",\n\t\"orderbook.toggle\": \"盘口\",\n\t\"trade.toggle\": \"交易\",\n\t\"trade.title\": \"交易工作台\",\n\t\"trade.dryRunOnly\": \"Dry-Run 模拟(GUI 不提供实盘通道)\",\n\t\"trade.close\": \"关闭交易台\",\n\t\"trade.buy\": \"买入\",\n\t\"trade.sell\": \"卖出\",\n\t\"trade.long\": \"多\",\n\t\"trade.short\": \"空\",\n\t\"trade.market\": \"市价\",\n\t\"trade.limit\": \"限价\",\n\t\"trade.price\": \"价格\",\n\t\"trade.quantity\": \"数量\",\n\t\"trade.dryRunSubmit\": \"模拟下单\",\n\t\"trade.submitting\": \"提交中…\",\n\t\"trade.submitFailed\": \"提交失败:服务未挂载或参数被拒绝\",\n\t\"trade.dryRunFilled\": \"已模拟成交\",\n\t\"trade.liveHint\": \"实盘下单唯一通道是 Agent 会话(显式 liveTrading + 统一审批闸门);本面板只做模拟与只读查询。\",\n\t\"trade.positions\": \"当前持仓\",\n\t\"trade.openOrders\": \"活动委托\",\n\t\"trade.fills\": \"成交历史\",\n\t\"trade.balances\": \"余额\",\n\t\"trade.credentialHint\": \"凭证未配置或不可用(fail-closed)——配置后可查看\",\n\t\"trade.unavailable\": \"数据面未提供\",\n\t\"trade.empty\": \"暂无数据\",\n\t\"trade.symbol\": \"标的\",\n\t\"trade.side\": \"方向\",\n\t\"trade.type\": \"类型\",\n\t\"trade.size\": \"数量\",\n\t\"trade.entryPrice\": \"开仓均价\",\n\t\"trade.unrealizedPnl\": \"未实现盈亏\",\n\t\"trade.filled\": \"已成交\",\n\t\"trade.time\": \"时间\",\n\t\"trade.action\": \"操作\",\n\t\"trade.cancel\": \"撤单\",\n\t\"trade.canceling\": \"撤单中…\",\n\t\"trade.cancelSuccess\": \"撤单成功\",\n\t\"trade.cancelFailed\": \"撤单失败\",\n\t\"trade.submit\": \"确认下单\",\n\t\"trade.orderSuccess\": \"下单已提交\",\n\t\"trade.drawer.collapse\": \"收起资产抽屉\",\n\t\"trade.drawer.expand\": \"展开资产抽屉\",\n\t\"trade.sideOrder\": \"快速下单\",\n\t\"trade.liveChannel\": \"实盘通道\",\n\t\"trade.fillCurrentPrice\": \"填入现价\",\n\t\"trade.marketExecuteHint\": \"以市场最优对手价即刻成交\",\n\t\"trade.estimatedAmount\": \"预估金额\",\n\t\"trade.unit.shares\": \"股\",\n\t\"trade.unit.coin\": \"币\",\n\t\"trade.drawer.available\": \"可用余额\",\n\t\"trade.drawer.locked\": \"冻结金额\",\n\t\"trade.drawer.total\": \"总计\",\n\t\"trade.drawer.asset\": \"币种/资产\",\n\t\"trade.mode.live\": \"实盘交易\",\n\t\"trade.mode.paper\": \"模拟交易\",\n\t\"trade.paper.tag\": \"模拟盘\",\n\t\"trade.paper.reset\": \"重置模拟金\",\n\t\"trade.paper.resetConfirm\": \"确认将模拟账户重置为初始资产 (100,000) 吗?\",\n\t\"trade.paper.available\": \"可用模拟资金\",\n\t\"trade.paper.buyAction\": \"模拟买入\",\n\t\"trade.paper.sellAction\": \"模拟卖出\",\n\t\"trade.paper.drawerTag\": \"模拟盘账本\",\n\t\"trade.paper.initialBalance\": \"初始模拟金\",\n\t\"trade.paper.totalPnl\": \"模拟总盈亏\",\n\t\"quote.rangeStats\": \"区间统计\",\n\t\"quote.rangeStatsHint\": \"在图上拖拽框选一段K线,统计区间涨跌\",\n\t\"range.change\": \"区间涨跌幅\",\n\t\"range.changeAbs\": \"区间涨跌\",\n\t\"range.high\": \"区间最高\",\n\t\"range.low\": \"区间最低\",\n\t\"range.amplitude\": \"区间振幅\",\n\t\"range.volume\": \"区间成交量\",\n\t\"range.bars\": \"K线数\",\n\t\"range.upDays\": \"上涨\",\n\t\"range.downDays\": \"下跌\",\n\t\"range.closePanel\": \"关闭\",\n\t\"interval.1m\": \"1分\",\n\t\"interval.3m\": \"3分\",\n\t\"interval.5m\": \"5分\",\n\t\"interval.10m\": \"10分\",\n\t\"interval.15m\": \"15分\",\n\t\"interval.30m\": \"30分\",\n\t\"interval.1h\": \"1小时\",\n\t\"interval.4h\": \"4小时\",\n\t\"interval.1d\": \"日K\",\n\t\"interval.1w\": \"周K\",\n\t\"interval.1M\": \"月K\",\n\t\"status.trading\": \"交易中\",\n\t\"status.closed\": \"已收盘\",\n\t\"status.midday\": \"午间休市\",\n\t\"status.preMarket\": \"盘前\",\n\t\"status.afterHours\": \"盘后\",\n\t\"status.auction\": \"集合竞价\",\n\t\"index.shComposite\": \"上证指数\",\n\t\"index.szComponent\": \"深证成指\",\n\t\"index.chinext\": \"创业板指\",\n\t\"index.hangSeng\": \"恒生指数\",\n\t\"index.hangSengTech\": \"恒生科技\",\n\t\"index.hscei\": \"国企指数\",\n\t\"index.sp500\": \"标普500\",\n\t\"index.nasdaq\": \"纳斯达克\",\n\t\"index.dowJones\": \"道琼斯\",\n\t\"index.btc\": \"BTC\",\n\t\"index.eth\": \"ETH\",\n\t\"index.sol\": \"SOL\",\n\t\"browser.history\": \"历史会话\",\n\t\"browser.historyEmpty\": \"该工作区还没有会话\",\n\t\"browser.showMore\": \"展开其余 {n} 条\",\n\t\"browser.showLess\": \"收起\",\n\t\"browser.menu.aria\": \"会话操作\",\n\t\"browser.menu.rename\": \"重命名\",\n\t\"browser.menu.fork\": \"分叉会话\",\n\t\"browser.menu.archive\": \"归档会话\",\n\t\"entry.new\": \"新会话\",\n\t\"entry.settings\": \"设置\",\n\t\"chat.fold\": \"折叠会话列\",\n\t\"chat.expand\": \"展开会话列\",\n\t\"chat.resize\": \"拖拽调整会话列宽度(双击复位,方向键微调)\",\n\t\"stage.quote\": \"行情\",\n\t\"stage.strategy\": \"策略\",\n\t\"stage.knowledge\": \"知识库\",\n\t\"indicator.picker\": \"技术指标\",\n\t\"indicator.group.main\": \"主图指标\",\n\t\"indicator.group.sub\": \"副图指标\",\n\t\"indicator.empty\": \"暂无可用指标(未安装指标插件?)\",\n\t\"indicator.params\": \"参数\",\n\t\"indicator.apply\": \"应用\",\n\t\"indicator.cancel\": \"取消\",\n\t\"indicator.delete\": \"删除\",\n\t\"indicator.deleteConfirm\": \"确定删除该自定义指标?已持久化的定义将从指标库移除。\"\n};\nconst en = {\n\t\"tab.watch\": \"Watchlist\",\n\t\"tab.crypto\": \"Crypto\",\n\t\"tab.us\": \"US Stocks\",\n\t\"tab.cn\": \"China A\",\n\t\"tab.hk\": \"Hong Kong\",\n\t\"sidebar.addPlaceholder\": \"Symbol, Enter to add\",\n\t\"sidebar.add\": \"Add\",\n\t\"sidebar.addMarketHint\": \"Click to cycle target market (crypto→us→cn→hk)\",\n\t\"sidebar.empty\": \"No instruments\",\n\t\"sidebar.emptyHint\": \"Type a symbol above to add (cycle target market)\",\n\t\"sidebar.loadFailed\": \"Quote bridge unavailable (market bundle missing?)\",\n\t\"sidebar.retry\": \"Retry\",\n\t\"sidebar.markets\": \"Markets & watchlist\",\n\t\"sidebar.fold\": \"Collapse watchlist\",\n\t\"sidebar.expand\": \"Expand watchlist\",\n\t\"header.symbol\": \"Symbol\",\n\t\"header.trend\": \"Trend\",\n\t\"header.priceChange\": \"Price / Change\",\n\t\"row.remove\": \"Remove\",\n\t\"row.select\": \"View quote\",\n\t\"quote.empty\": \"Pick an instrument on the left\",\n\t\"quote.emptyHint\": \"Click any row in the sidebar to chart it here\",\n\t\"quote.open\": \"Open\",\n\t\"quote.high\": \"High\",\n\t\"quote.low\": \"Low\",\n\t\"quote.prevClose\": \"Prev close\",\n\t\"quote.volume\": \"Vol\",\n\t\"quote.updated\": \"Updated\",\n\t\"quote.loadFailed\": \"Failed to load klines\",\n\t\"quote.loadFailedColon\": \"Failed to load klines: {error}\",\n\t\"quote.noData\": \"No data\",\n\t\"quote.sendToAgent\": \"Send to agent\",\n\t\"quote.sendToAgentHint\": \"Fill the quote context and chart screenshot into the composer (edit freely, send yourself)\",\n\t\"quote.sendSending\": \"Filling…\",\n\t\"quote.sendSent\": \"Filled into composer\",\n\t\"quote.sendFailed\": \"Fill failed\",\n\t\"quote.tab.chart\": \"Chart\",\n\t\"quote.tab.fundamentals\": \"Fundamentals\",\n\t\"quote.tab.derivatives\": \"Derivatives\",\n\t\"quote.tab.news\": \"News\",\n\t\"quote.tab.announcements\": \"Announcements\",\n\t\"fundamentals.peTtm\": \"P/E (TTM)\",\n\t\"fundamentals.peDynamic\": \"Forward P/E\",\n\t\"fundamentals.pb\": \"P/B\",\n\t\"fundamentals.marketCap\": \"Market cap\",\n\t\"fundamentals.floatMarketCap\": \"Float cap\",\n\t\"fundamentals.turnoverRate\": \"Turnover\",\n\t\"fundamentals.dividendYield\": \"Dividend yield\",\n\t\"fundamentals.fiftyTwoWeekHigh\": \"52w high\",\n\t\"fundamentals.fiftyTwoWeekLow\": \"52w low\",\n\t\"fundamentals.unavailable\": \"This market provider carries no fundamentals — showing chart-derived stats\",\n\t\"fundamentals.source\": \"Source\",\n\t\"fundamentals.unit.cn\": \"CNY\",\n\t\"fundamentals.unit.us\": \"USD\",\n\t\"fundamentals.unit.hk\": \"HKD\",\n\t\"fundamentals.unit.crypto\": \"USD\",\n\t\"fundamentals.scale\": \"B\",\n\t\"fund.page.empty\": \"Pick an instrument on the left to view fundamentals and multi-period filings\",\n\t\"fund.page.loading\": \"Fetching {symbol} financials & valuation matrix from official sources...\",\n\t\"fund.pill.peTtm\": \"PE (TTM):\",\n\t\"fund.pill.peDynamic\": \"Fwd PE:\",\n\t\"fund.pill.pb\": \"PB:\",\n\t\"fund.pill.marketCap\": \"Mkt cap:\",\n\t\"fund.pill.dividendYield\": \"Div yield:\",\n\t\"fund.pill.turnover\": \"Turnover:\",\n\t\"fund.pill.floatCap\": \"Float cap:\",\n\t\"fund.pill.rank\": \"Global rank:\",\n\t\"fund.nav.financials\": \"Financials\",\n\t\"fund.nav.key\": \"Key metrics\",\n\t\"fund.nav.income\": \"Income\",\n\t\"fund.nav.balance\": \"Balance sheet\",\n\t\"fund.nav.cashflow\": \"Cash flow\",\n\t\"fund.nav.forecast\": \"Forecast\",\n\t\"fund.nav.forecastItem\": \"Earnings forecast\",\n\t\"fund.nav.reports\": \"Research\",\n\t\"fund.nav.reportsItem\": \"Analyst reports\",\n\t\"fund.nav.valuation\": \"Valuation\",\n\t\"fund.nav.valuationItem\": \"Valuation analysis\",\n\t\"fund.nav.biz\": \"Operations\",\n\t\"fund.nav.bizSegments\": \"Segments\",\n\t\"fund.nav.bizEfficiency\": \"Efficiency\",\n\t\"fund.nav.smartMoney\": \"Smart money\",\n\t\"fund.nav.shareholders\": \"Shareholders\",\n\t\"fund.nav.insider\": \"Insider trades\",\n\t\"fund.nav.institutional\": \"Institutions\",\n\t\"fund.nav.profile\": \"Profile\",\n\t\"fund.nav.profileOverview\": \"Company overview\",\n\t\"fund.nav.profileExecutives\": \"Executives\",\n\t\"fund.nav.actions\": \"Corp actions\",\n\t\"fund.nav.dividends\": \"Dividends\",\n\t\"fund.nav.buybacks\": \"Buybacks\",\n\t\"fund.nav.splits\": \"Splits\",\n\t\"fund.chart.reportTitle\": \"{period} report\",\n\t\"fund.chart.showYoy\": \"Show YoY: {state}\",\n\t\"fund.chart.yoyLegend\": \"YoY growth (%)\",\n\t\"fund.switch.on\": \"On\",\n\t\"fund.switch.off\": \"Off\",\n\t\"fund.matrix.currency\": \"Currency: {currency}\",\n\t\"fund.matrix.clickHint\": \"Click a row to chart its trend above\",\n\t\"fund.matrix.indicator\": \"Indicator\",\n\t\"fund.matrix.emptyTitle\": \"Financials note\",\n\t\"fund.matrix.emptyHint\": \"No multi-period standard report matrix for this symbol (crypto asset, or the market exposes no quarterly endpoint). See valuation & profile panels.\",\n\t\"fund.forecast.title\": \"Consensus earnings forecast & ratings\",\n\t\"fund.forecast.subtitle\": \"Aggregated broker EPS/revenue/net-profit forecasts with rating statistics\",\n\t\"fund.forecast.epsCurrent\": \"EPS this year (est.)\",\n\t\"fund.forecast.epsNext\": \"EPS next year (est.)\",\n\t\"fund.forecast.targetPrice\": \"Consensus target\",\n\t\"fund.forecast.orgCount\": \"Covering analysts\",\n\t\"fund.forecast.col.year\": \"Year\",\n\t\"fund.forecast.col.eps\": \"EPS (CNY)\",\n\t\"fund.forecast.col.revenue\": \"Revenue (100M)\",\n\t\"fund.forecast.col.netProfit\": \"Net profit (100M)\",\n\t\"fund.forecast.col.orgs\": \"Analysts\",\n\t\"fund.forecast.empty\": \"No consensus forecasts published for this symbol yet — watch company announcements and earnings flashes.\",\n\t\"fund.reports.title\": \"Featured research reports\",\n\t\"fund.reports.subtitle\": \"Latest broker deep-dives, earnings forecasts and ratings\",\n\t\"fund.reports.analyst\": \"Analyst: {author}\",\n\t\"fund.reports.empty\": \"No public research found for this symbol — ask the agent in chat for a deep fundamental review.\",\n\t\"fund.valuation.title\": \"Valuation diagnostics & percentiles\",\n\t\"fund.valuation.subtitle\": \"Multi-period P/E, P/B and price-range diagnostics\",\n\t\"fund.valuation.range52w\": \"52-week range\",\n\t\"fund.valuation.low52w\": \"52w low: {price}\",\n\t\"fund.valuation.high52w\": \"52w high: {price}\",\n\t\"fund.valuation.peNote\": \"PE note: {note}\",\n\t\"fund.valuation.undervalued\": \"🟢 Relatively cheap\",\n\t\"fund.valuation.fair\": \"🟡 Fairly valued\",\n\t\"fund.valuation.overvalued\": \"🔴 Relatively rich\",\n\t\"fund.valuation.assessing\": \"Assessing\",\n\t\"fund.valuation.peTtm\": \"Trailing P/E (TTM)\",\n\t\"fund.valuation.peDynamic\": \"Forward P/E\",\n\t\"fund.valuation.peStatic\": \"Static P/E\",\n\t\"fund.valuation.pb\": \"P/B\",\n\t\"fund.valuation.marketCap\": \"Market cap\",\n\t\"fund.valuation.floatCap\": \"Float cap\",\n\t\"fund.valuation.dividendYield\": \"Dividend yield (TTM)\",\n\t\"fund.valuation.turnover\": \"Turnover rate\",\n\t\"fund.segments.title\": \"Revenue breakdown by segment\",\n\t\"fund.segments.subtitle\": \"Business revenue & gross-margin structure by product, industry and region\",\n\t\"fund.segments.all\": \"All\",\n\t\"fund.segments.byProduct\": \"By product\",\n\t\"fund.segments.byIndustry\": \"By industry\",\n\t\"fund.segments.byRegion\": \"By region\",\n\t\"fund.segments.col.segment\": \"Segment / item\",\n\t\"fund.segments.col.revenue\": \"Revenue (CNY)\",\n\t\"fund.segments.col.revenueRatio\": \"Share\",\n\t\"fund.segments.col.profit\": \"Gross profit (CNY)\",\n\t\"fund.segments.col.grossMargin\": \"Gross margin\",\n\t\"fund.segments.empty\": \"No detailed segment breakdown for the current period — see revenue on the income statement.\",\n\t\"fund.efficiency.title\": \"Operating & turnover efficiency\",\n\t\"fund.efficiency.subtitle\": \"Inventory/receivable days, operating cycle and profitability quality\",\n\t\"fund.efficiency.inventoryDays\": \"Inventory turnover days\",\n\t\"fund.efficiency.receivableDays\": \"Receivable turnover days\",\n\t\"fund.efficiency.operatingCycle\": \"Net operating cycle\",\n\t\"fund.efficiency.assetTurnover\": \"Total asset turnover\",\n\t\"fund.efficiency.grossMargin\": \"Gross margin\",\n\t\"fund.efficiency.netMargin\": \"Net margin\",\n\t\"fund.efficiency.currentRatio\": \"Current ratio\",\n\t\"fund.efficiency.quickRatio\": \"Quick ratio\",\n\t\"fund.efficiency.summary\": \"Inventory turnover ≈ {inventory} days, receivables turnover ≈ {receivable} days, net operating cycle {cycle} days.\",\n\t\"fund.efficiency.empty\": \"Efficiency details unavailable for this reporting period (source not covered); no inference is made.\",\n\t\"fund.holders.title\": \"Top-10 float shareholders\",\n\t\"fund.holders.subtitle\": \"Core institutions, strategic holders, holder counts and concentration\",\n\t\"fund.holders.totalHolders\": \"Total holders\",\n\t\"fund.holders.avgShares\": \"Avg shares/holder\",\n\t\"fund.holders.avgValue\": \"Avg value/holder\",\n\t\"fund.holders.concentration\": \"Concentration\",\n\t\"fund.holders.moderate\": \"Moderate\",\n\t\"fund.holders.col.rank\": \"Rank\",\n\t\"fund.holders.col.name\": \"Holder\",\n\t\"fund.holders.col.shares\": \"Shares\",\n\t\"fund.holders.col.ratio\": \"% of float\",\n\t\"fund.holders.col.change\": \"Change\",\n\t\"fund.holders.unchanged\": \"Unchanged\",\n\t\"fund.holders.empty\": \"Top-10 float holder list not published for this symbol — see float cap and turnover trends.\",\n\t\"fund.insider.title\": \"Key shareholder & executive changes\",\n\t\"fund.insider.subtitle\": \"Recent holdings changes and trade records of major shareholders and executives\",\n\t\"fund.insider.col.holder\": \"Holder\",\n\t\"fund.insider.col.type\": \"Change type\",\n\t\"fund.insider.col.shares\": \"Shares changed\",\n\t\"fund.insider.col.ratio\": \"Holding %\",\n\t\"fund.insider.col.date\": \"Disclosed\",\n\t\"fund.insider.empty\": \"No insider change records (source not covered or no disclosures this period).\",\n\t\"fund.institutional.title\": \"Institutional holdings\",\n\t\"fund.institutional.subtitle\": \"Aggregate holdings of investment firms, mutual funds, QFII and insurers\",\n\t\"fund.institutional.col.org\": \"Institution\",\n\t\"fund.institutional.col.type\": \"Type\",\n\t\"fund.institutional.col.shares\": \"Shares\",\n\t\"fund.institutional.col.ratio\": \"% of float\",\n\t\"fund.institutional.col.value\": \"Value (CNY)\",\n\t\"fund.institutional.col.change\": \"Change\",\n\t\"fund.institutional.empty\": \"Institutional totals are reflected in the top-10 float holders, covering major funds and index ETFs.\",\n\t\"fund.profile.title\": \"Company profile\",\n\t\"fund.profile.subtitle\": \"Legal representative, management, registered capital and official channels\",\n\t\"fund.profile.fullName\": \"Full name\",\n\t\"fund.profile.nameEn\": \"English name\",\n\t\"fund.profile.industry\": \"Industry\",\n\t\"fund.profile.registeredCapital\": \"Registered capital\",\n\t\"fund.profile.employees\": \"Employees\",\n\t\"fund.profile.address\": \"Office / registered address\",\n\t\"fund.profile.website\": \"Website\",\n\t\"fund.profile.description\": \"Company description & history:\",\n\t\"fund.profile.descriptionFallback\": \"Detailed business introduction and history for {symbol}.\",\n\t\"fund.executives.title\": \"Management & executives\",\n\t\"fund.executives.subtitle\": \"Chairman, CEO, CFO and core officers\",\n\t\"fund.executives.chairman\": \"Chairman\",\n\t\"fund.executives.generalManager\": \"CEO / General Manager\",\n\t\"fund.executives.legalRep\": \"Legal representative\",\n\t\"fund.executives.boardSecretary\": \"Board secretary\",\n\t\"fund.dividends.title\": \"Dividend history\",\n\t\"fund.dividends.subtitle\": \"Past profit-distribution plans, ex-dividend dates and payouts\",\n\t\"fund.dividends.col.year\": \"Plan year\",\n\t\"fund.dividends.col.plan\": \"Plan\",\n\t\"fund.dividends.col.cash\": \"Cash/share (CNY)\",\n\t\"fund.dividends.col.exDate\": \"Ex-date\",\n\t\"fund.dividends.col.recordDate\": \"Record date\",\n\t\"fund.dividends.empty\": \"No public dividend plans on record.\",\n\t\"fund.buybacks.title\": \"Buyback plans & share management\",\n\t\"fund.buybacks.subtitle\": \"Buyback programs, capital scale, share structure and progress\",\n\t\"fund.buybacks.col.date\": \"Announced\",\n\t\"fund.buybacks.col.amount\": \"Amount\",\n\t\"fund.buybacks.col.shares\": \"Shares bought\",\n\t\"fund.buybacks.col.priceRange\": \"Price range\",\n\t\"fund.buybacks.col.status\": \"Status\",\n\t\"fund.buybacks.empty\": \"No buyback records (source not covered, or none announced). Fields stay empty until data lands; no speculation.\",\n\t\"fund.splits.title\": \"Split & bonus share history\",\n\t\"fund.splits.subtitle\": \"Share splits, bonus issues and capital-reserve conversions\",\n\t\"fund.splits.col.date\": \"Ex-date\",\n\t\"fund.splits.col.ratio\": \"Plan\",\n\t\"fund.splits.col.description\": \"Details & progress\",\n\t\"fund.splits.empty\": \"No split/bonus records (source not covered, or no such events).\",\n\t\"fund.unit.orgs\": \" orgs\",\n\t\"fund.unit.days\": \"{n} days\",\n\t\"fund.unit.times\": \"{n}x\",\n\t\"fund.unit.holders\": \"{n}K accounts\",\n\t\"fund.unit.shares\": \"{n} shares\",\n\t\"fund.unit.wanCny\": \"¥{n}K\",\n\t\"fund.unit.yiCny\": \"¥{n}M\",\n\t\"marker.signal.toggle\": \"Signals\",\n\t\"marker.signal.toggleTitle\": \"Strategy signal markers\",\n\t\"marker.signal.entryReason\": \"EMA(12/26) golden cross, entry at {cur}{price}\",\n\t\"marker.signal.exitReason\": \"EMA(12/26) death cross, exit at {cur}{price}\",\n\t\"marker.knowledge.toggle\": \"Events\",\n\t\"marker.knowledge.toggleTitle\": \"Knowledge event pins\",\n\t\"marker.knowledge.batched\": \"{title} (+{count})\",\n\t\"tooltip.signal.entry\": \"Buy signal\",\n\t\"tooltip.signal.exit\": \"Sell signal\",\n\t\"tooltip.label.price\": \"Price\",\n\t\"tooltip.label.time\": \"Time\",\n\t\"tooltip.label.return\": \"Return\",\n\t\"tooltip.label.profit\": \"P/L\",\n\t\"tooltip.label.holding\": \"Held\",\n\t\"tooltip.unit.bars\": \"{n} bars\",\n\t\"tooltip.knowledge.header\": \"Knowledge event\",\n\t\"tooltip.credibility.high\": \"High credibility\",\n\t\"tooltip.credibility.medium\": \"Medium credibility\",\n\t\"tooltip.credibility.low\": \"Low credibility\",\n\t\"news.time.justNow\": \"just now\",\n\t\"news.time.minutesAgo\": \"{n}m ago\",\n\t\"news.time.hoursAgo\": \"{n}h ago\",\n\t\"news.time.daysAgo\": \"{n}d ago\",\n\t\"news.time.monthsAgo\": \"{n}mo ago\",\n\t\"news.time.yearsAgo\": \"{n}y ago\",\n\t\"news.source.eastmoneyAnnouncement\": \"Company filings\",\n\t\"news.source.eastmoney\": \"Eastmoney\",\n\t\"news.source.hkexAnnouncement\": \"HKEXnews\",\n\t\"news.source.cninfoAnnouncement\": \"CNINFO\",\n\t\"news.source.secEdgar\": \"SEC EDGAR\",\n\t\"news.source.binance\": \"Binance\",\n\t\"news.source.okx\": \"OKX\",\n\t\"news.source.yahoo\": \"Yahoo Finance\",\n\t\"news.source.google\": \"Google News\",\n\t\"news.source.coindesk\": \"CoinDesk\",\n\t\"news.source.theblock\": \"The Block\",\n\t\"news.source.cointelegraph\": \"CoinTelegraph\",\n\t\"news.source.decrypt\": \"Decrypt\",\n\t\"news.empty.exchangeNotReady\": \"Announcement source not ready\",\n\t\"news.empty.mediaNotActive\": \"News source not active\",\n\t\"news.empty.noAnnouncements\": \"No related announcements\",\n\t\"news.empty.noNews\": \"No related news\",\n\t\"news.sendToAgentTitle\": \"Send to agent for analysis\",\n\t\"news.degraded\": \"Some sources unavailable: {sources}\",\n\t\"compose.opener\": \"Take a look at what I'm watching: {title}\",\n\t\"compose.prevClose\": \"prev close {price}\",\n\t\"compose.priceLine\": \"Last\",\n\t\"compose.candleLine\": \"Current bar O {open} H {high} L {low} C {close} V {volume}\",\n\t\"compose.indicatorsLine\": \"Indicators on: {titles}\",\n\t\"compose.listSeparator\": \", \",\n\t\"compose.deltaWrap\": \" (|)\",\n\t\"compose.prevSep\": \", \",\n\t\"compose.withScreenshot\": \"The current chart screenshot is attached — please factor it in.\",\n\t\"compose.withoutScreenshot\": \"Please continue the analysis from the quote context.\",\n\t\"card.order.rejected\": \"Rejected\",\n\t\"card.order.dryRun\": \"Dry-run\",\n\t\"card.order.live\": \"Live\",\n\t\"card.order.priceLabel\": \"Price\",\n\t\"card.order.quantityLabel\": \"Qty\",\n\t\"card.order.refPriceLabel\": \"Ref\",\n\t\"card.watchlist.selected\": \"Selection switched\",\n\t\"card.watchlist.added\": \"Added to watchlist\",\n\t\"card.watchlist.already\": \"Already in watchlist\",\n\t\"derivatives.title\": \"Derivatives\",\n\t\"derivatives.oi\": \"Open interest\",\n\t\"derivatives.oiValue\": \"OI value\",\n\t\"derivatives.funding\": \"Funding rate\",\n\t\"derivatives.fundingPositive\": \"longs pay\",\n\t\"derivatives.fundingNegative\": \"shorts pay\",\n\t\"derivatives.longShort\": \"L/S accounts\",\n\t\"derivatives.topLongShort\": \"Top L/S ratio\",\n\t\"derivatives.taker\": \"Taker buy/sell\",\n\t\"derivatives.ratioLong\": \"long-heavy\",\n\t\"derivatives.ratioShort\": \"short-heavy\",\n\t\"derivatives.predicted\": \"Predicted rate\",\n\t\"derivatives.countdown\": \"Settlement in\",\n\t\"derivatives.markPrice\": \"Mark price\",\n\t\"derivatives.indexPrice\": \"Index price\",\n\t\"derivatives.basis\": \"Basis\",\n\t\"derivatives.oiChange24h\": \"OI 24h change\",\n\t\"derivatives.fundingHistory\": \"Funding history (last 30)\",\n\t\"derivatives.oiTrend\": \"OI trend (30d)\",\n\t\"derivatives.historyUnavailable\": \"No history from this provider\",\n\t\"derivatives.analyze\": \"Analyze flows\",\n\t\"derivatives.analyzeBody\": \"Analyze the funding landscape and long/short crowding of the {symbol} perpetual (source {source}):\\n{lines}\\nWeigh funding direction, OI shifts and the L/S ratio; assess crowding and risks (not investment advice).\",\n\t\"derivatives.analyzeHint\": \"Send the derivatives snapshot to Agent for flow analysis\",\n\t\"derivatives.perpSource\": \"Perpetual swap data (spot symbols auto-mapped)\",\n\t\"derivatives.hint.oi\": \"Total open interest in base coins — market leverage size; click for trend\",\n\t\"derivatives.hint.oiValue\": \"Total open interest value in USD\",\n\t\"derivatives.hint.funding\": \"Positive = longs pay shorts (crowded longs); click for forecast & countdown\",\n\t\"derivatives.hint.longShort\": \"Long/short account ratio, >1 long-heavy; click for details\",\n\t\"derivatives.hint.topLongShort\": \"Top trader position ratio, >1 top traders long-heavy\",\n\t\"derivatives.hint.taker\": \"Taker buy/sell volume ratio, >1 aggressive buying\",\n\t\"derivatives.hint.basis\": \"(mark - index) / index; positive basis = perp trading at premium\",\n\t\"orderbook.title\": \"Orderbook & ticks\",\n\t\"orderbook.close\": \"Close orderbook\",\n\t\"orderbook.unavailable\": \"This market provider carries no orderbook\",\n\t\"orderbook.buyForce\": \"Bids\",\n\t\"orderbook.sellForce\": \"Asks\",\n\t\"orderbook.spread\": \"Spread\",\n\t\"orderbook.trades\": \"Recent trades\",\n\t\"orderbook.toggle\": \"Orderbook\",\n\t\"trade.toggle\": \"Trade\",\n\t\"trade.title\": \"Trade Desk\",\n\t\"trade.dryRunOnly\": \"Dry-run only (no live channel from GUI)\",\n\t\"trade.close\": \"Close trade desk\",\n\t\"trade.buy\": \"Buy\",\n\t\"trade.sell\": \"Sell\",\n\t\"trade.long\": \"Long\",\n\t\"trade.short\": \"Short\",\n\t\"trade.market\": \"Market\",\n\t\"trade.limit\": \"Limit\",\n\t\"trade.price\": \"Price\",\n\t\"trade.quantity\": \"Quantity\",\n\t\"trade.dryRunSubmit\": \"Simulate order\",\n\t\"trade.submitting\": \"Submitting…\",\n\t\"trade.submitFailed\": \"Submit failed: service not mounted or rejected\",\n\t\"trade.dryRunFilled\": \"Simulated fill\",\n\t\"trade.liveHint\": \"Live orders only go through the agent session (explicit liveTrading + unified approval gate); this panel is simulate/read-only.\",\n\t\"trade.positions\": \"Positions\",\n\t\"trade.openOrders\": \"Open orders\",\n\t\"trade.fills\": \"Trade history\",\n\t\"trade.balances\": \"Balances\",\n\t\"trade.credentialHint\": \"Credentials missing or unusable (fail-closed) — configure to view\",\n\t\"trade.unavailable\": \"Not provided\",\n\t\"trade.empty\": \"No data\",\n\t\"trade.symbol\": \"Symbol\",\n\t\"trade.side\": \"Side\",\n\t\"trade.type\": \"Type\",\n\t\"trade.size\": \"Size\",\n\t\"trade.entryPrice\": \"Entry\",\n\t\"trade.unrealizedPnl\": \"uPnL\",\n\t\"trade.filled\": \"Filled\",\n\t\"trade.time\": \"Time\",\n\t\"trade.action\": \"Action\",\n\t\"trade.cancel\": \"Cancel\",\n\t\"trade.canceling\": \"Canceling…\",\n\t\"trade.cancelSuccess\": \"Order Canceled\",\n\t\"trade.cancelFailed\": \"Cancel Failed\",\n\t\"trade.submit\": \"Place Order\",\n\t\"trade.orderSuccess\": \"Order Placed\",\n\t\"trade.drawer.collapse\": \"Collapse Drawer\",\n\t\"trade.drawer.expand\": \"Expand Drawer\",\n\t\"trade.sideOrder\": \"Quick Order\",\n\t\"trade.liveChannel\": \"Live Channel\",\n\t\"trade.fillCurrentPrice\": \"Last Price\",\n\t\"trade.marketExecuteHint\": \"Instant fill at best market price\",\n\t\"trade.estimatedAmount\": \"Est. Amount\",\n\t\"trade.unit.shares\": \"Shares\",\n\t\"trade.unit.coin\": \"Coins\",\n\t\"trade.drawer.available\": \"Available\",\n\t\"trade.drawer.locked\": \"Locked\",\n\t\"trade.drawer.total\": \"Total\",\n\t\"trade.drawer.asset\": \"Asset / Currency\",\n\t\"trade.mode.live\": \"Live Trading\",\n\t\"trade.mode.paper\": \"Paper Trading\",\n\t\"trade.paper.tag\": \"Paper\",\n\t\"trade.paper.reset\": \"Reset Balance\",\n\t\"trade.paper.resetConfirm\": \"Reset paper trading account to initial balance (100,000)?\",\n\t\"trade.paper.available\": \"Virtual Cash\",\n\t\"trade.paper.buyAction\": \"Paper Buy\",\n\t\"trade.paper.sellAction\": \"Paper Sell\",\n\t\"trade.paper.drawerTag\": \"Paper Ledger\",\n\t\"trade.paper.initialBalance\": \"Initial Cash\",\n\t\"trade.paper.totalPnl\": \"Total P&L\",\n\t\"quote.rangeStats\": \"Range stats\",\n\t\"quote.rangeStatsHint\": \"Drag on the chart to select a range and see its stats\",\n\t\"range.change\": \"Change\",\n\t\"range.changeAbs\": \"Change (abs)\",\n\t\"range.high\": \"Range high\",\n\t\"range.low\": \"Range low\",\n\t\"range.amplitude\": \"Amplitude\",\n\t\"range.volume\": \"Volume\",\n\t\"range.bars\": \"Bars\",\n\t\"range.upDays\": \"Up bars\",\n\t\"range.downDays\": \"Down bars\",\n\t\"range.closePanel\": \"Close\",\n\t\"interval.1m\": \"1m\",\n\t\"interval.3m\": \"3m\",\n\t\"interval.5m\": \"5m\",\n\t\"interval.10m\": \"10m\",\n\t\"interval.15m\": \"15m\",\n\t\"interval.30m\": \"30m\",\n\t\"interval.1h\": \"1H\",\n\t\"interval.4h\": \"4H\",\n\t\"interval.1d\": \"D\",\n\t\"interval.1w\": \"W\",\n\t\"interval.1M\": \"M\",\n\t\"status.trading\": \"Trading\",\n\t\"status.closed\": \"Closed\",\n\t\"status.midday\": \"Midday break\",\n\t\"status.preMarket\": \"Pre-market\",\n\t\"status.afterHours\": \"After-hours\",\n\t\"status.auction\": \"Auction\",\n\t\"index.shComposite\": \"SH Composite\",\n\t\"index.szComponent\": \"SZ Component\",\n\t\"index.chinext\": \"ChiNext\",\n\t\"index.hangSeng\": \"Hang Seng\",\n\t\"index.hangSengTech\": \"Hang Seng TECH\",\n\t\"index.hscei\": \"HSCEI\",\n\t\"index.sp500\": \"S&P 500\",\n\t\"index.nasdaq\": \"Nasdaq\",\n\t\"index.dowJones\": \"Dow Jones\",\n\t\"index.btc\": \"BTC\",\n\t\"index.eth\": \"ETH\",\n\t\"index.sol\": \"SOL\",\n\t\"browser.history\": \"History\",\n\t\"browser.historyEmpty\": \"No sessions in this workspace\",\n\t\"browser.showMore\": \"Show {n} more\",\n\t\"browser.showLess\": \"Show less\",\n\t\"browser.menu.aria\": \"Session actions\",\n\t\"browser.menu.rename\": \"Rename\",\n\t\"browser.menu.fork\": \"Fork session\",\n\t\"browser.menu.archive\": \"Archive session\",\n\t\"entry.new\": \"New session\",\n\t\"entry.settings\": \"Settings\",\n\t\"chat.fold\": \"Fold conversation panel\",\n\t\"chat.expand\": \"Expand conversation panel\",\n\t\"chat.resize\": \"Drag to resize conversation panel (double-click to reset, arrow keys to nudge)\",\n\t\"stage.quote\": \"Quote\",\n\t\"stage.strategy\": \"Strategies\",\n\t\"stage.knowledge\": \"Knowledge\",\n\t\"indicator.picker\": \"Indicators\",\n\t\"indicator.group.main\": \"Main chart\",\n\t\"indicator.group.sub\": \"Sub-chart\",\n\t\"indicator.empty\": \"No indicators available (indicator plugin missing?)\",\n\t\"indicator.params\": \"Params\",\n\t\"indicator.apply\": \"Apply\",\n\t\"indicator.cancel\": \"Cancel\",\n\t\"indicator.delete\": \"Delete\",\n\t\"indicator.deleteConfirm\": \"Delete this custom indicator? The persisted definition will be removed from the library.\"\n};\n//#endregion\nexport { en, zh };\n","//#region src/client/locales.ts\nconst zh = {\n\t\"nav\": \"交易\",\n\t\"lead\": \"选择每个市场使用的数据/交易所提供方。行情面板保存即生效;Agent 会话于新建会话生效(切换不中断当前会话)。\",\n\t\"tabs\": \"市场\",\n\t\"empty\": \"没有可配置的市场。\",\n\t\"save\": \"保存\",\n\t\"discard\": \"放弃\",\n\t\"saved\": \"已保存\",\n\t\"saveFailed\": \"保存失败\",\n\t\"current\": \"当前:{provider}\",\n\t\"default\": \"默认\",\n\t\"custom\": \"自定义({provider},由第三方连接器提供)\",\n\t\"newsKeyLabel\": \"CryptoPanic API Key(可选)——新闻工具 crypto_get_news 的 B 增强源;留空则用公共源。\",\n\t\"newsKeyPlaceholder\": \"粘贴 CryptoPanic free API token(私钥,仅本地存储)\",\n\t\"newsSaved\": \"已保存\",\n\t\"newsSaveFailed\": \"保存失败\",\n\t\"colorMode.label\": \"涨跌配色\",\n\t\"colorMode.redUp\": \"红涨绿跌(国内习惯)\",\n\t\"colorMode.greenUp\": \"绿涨红跌(国际习惯)\",\n\t\"market.crypto\": \"加密货币\",\n\t\"market.us\": \"美国股票\",\n\t\"market.cn\": \"中国 A 股\",\n\t\"market.hk\": \"香港股票\",\n\t\"credential.btn\": \"配置 API 凭证\",\n\t\"credential.btnFold\": \"收起配置\",\n\t\"credential.configured\": \"已配置凭证\",\n\t\"credential.notConfigured\": \"未配置\",\n\t\"credential.save\": \"保存凭证\",\n\t\"credential.delete\": \"清除/删除凭证\",\n\t\"credential.saved\": \"API 凭证已保存\",\n\t\"credential.deleted\": \"API 凭证已删除\",\n\t\"credential.saveFailed\": \"凭证保存失败\",\n\t\"credential.deleteFailed\": \"凭证清除失败\",\n\t\"type.public\": \"免密公共源\",\n\t\"type.gateway\": \"本地网关\",\n\t\"type.commercial\": \"商业 API\",\n\t\"field.action.hide\": \"隐藏\",\n\t\"field.action.show\": \"显示\",\n\t\"provider.docsLink\": \"官方指引与文档\",\n\t\"provider.envPrefix\": \"环境变量:\",\n\t\"provider.binance\": \"Binance (币安)\",\n\t\"provider.okx\": \"OKX (欧易)\",\n\t\"provider.bybit\": \"Bybit\",\n\t\"provider.ccxt\": \"CCXT (跨所聚合 100+)\",\n\t\"provider.yahoo\": \"Yahoo Finance\",\n\t\"provider.alpaca\": \"Alpaca\",\n\t\"provider.fmp\": \"FMP (Financial Modeling Prep)\",\n\t\"provider.finnhub\": \"Finnhub\",\n\t\"provider.polygon\": \"Polygon.io (Massive)\",\n\t\"provider.ibkr\": \"IBKR (盈透证券)\",\n\t\"provider.stooq\": \"Stooq\",\n\t\"provider.tencent\": \"腾讯 (Tencent)\",\n\t\"provider.eastmoney\": \"东方财富 (Eastmoney)\",\n\t\"provider.tushare\": \"Tushare Pro\",\n\t\"provider.akshare\": \"AkShare (宏观/另类量化)\",\n\t\"provider.qmt\": \"MiniQMT (迅投券商实盘)\",\n\t\"provider.futu\": \"Futu (富途 OpenD)\",\n\t\"provider.longbridge\": \"Longbridge (长桥)\",\n\t\"provider.tiger\": \"Tiger Trade (老虎证券)\",\n\t\"field.label.apiKey\": \"API Key\",\n\t\"field.label.apiSecret\": \"API Secret\",\n\t\"field.label.secretKey\": \"Secret Key\",\n\t\"field.label.passphrase\": \"Passphrase\",\n\t\"field.label.token\": \"Pro Token\",\n\t\"field.label.apiUrl\": \"HTTP 服务地址\",\n\t\"field.label.qmtUrl\": \"MiniQMT 服务地址\",\n\t\"field.label.futuHost\": \"OpenD IP\",\n\t\"field.label.futuPort\": \"OpenD 端口\",\n\t\"field.label.ibkrUrl\": \"CP Gateway 地址\",\n\t\"field.label.appKey\": \"App Key\",\n\t\"field.label.appSecret\": \"App Secret\",\n\t\"field.label.accessToken\": \"Access Token\",\n\t\"field.label.tigerId\": \"Tiger ID\",\n\t\"field.label.tigerPrivateKey\": \"RSA 私钥\",\n\t\"field.placeholder.binanceKey\": \"BINANCE_API_KEY (留空走免密公共行情)\",\n\t\"field.placeholder.binanceSecret\": \"BINANCE_API_SECRET\",\n\t\"field.placeholder.okxKey\": \"OKX_API_KEY (留空走免密公共行情)\",\n\t\"field.placeholder.okxSecret\": \"OKX_SECRET_KEY\",\n\t\"field.placeholder.okxPassphrase\": \"OKX_PASSPHRASE\",\n\t\"field.placeholder.bybitKey\": \"BYBIT_API_KEY (留空走免密公共行情)\",\n\t\"field.placeholder.bybitSecret\": \"BYBIT_API_SECRET\",\n\t\"field.placeholder.ccxtKey\": \"CCXT_API_KEY\",\n\t\"field.placeholder.ccxtSecret\": \"CCXT_API_SECRET\",\n\t\"field.placeholder.alpacaKey\": \"ALPACA_API_KEY\",\n\t\"field.placeholder.alpacaSecret\": \"ALPACA_SECRET_KEY\",\n\t\"field.placeholder.fmpKey\": \"FMP_API_KEY\",\n\t\"field.placeholder.finnhubKey\": \"FINNHUB_API_KEY\",\n\t\"field.placeholder.polygonKey\": \"POLYGON_API_KEY\",\n\t\"field.placeholder.tushareToken\": \"TUSHARE_TOKEN\",\n\t\"field.placeholder.akshareUrl\": \"http://127.0.0.1:8080 (默认内置)\",\n\t\"field.placeholder.qmtUrl\": \"http://127.0.0.1:5800\",\n\t\"field.placeholder.futuHost\": \"127.0.0.1\",\n\t\"field.placeholder.futuPort\": \"11111\",\n\t\"field.placeholder.ibkrUrl\": \"https://localhost:5000\",\n\t\"field.placeholder.longbridgeAppKey\": \"LONGBRIDGE_APP_KEY\",\n\t\"field.placeholder.longbridgeAppSecret\": \"LONGBRIDGE_APP_SECRET\",\n\t\"field.placeholder.longbridgeAccessToken\": \"LONGBRIDGE_ACCESS_TOKEN\",\n\t\"field.placeholder.tigerId\": \"TIGER_ID\",\n\t\"field.placeholder.tigerPrivateKey\": \"TIGER_PRIVATE_KEY\"\n};\nconst en = {\n\t\"nav\": \"Trading\",\n\t\"lead\": \"Choose the data/exchange provider for each market. Quote panels take effect immediately; agent sessions pick it up in new sessions (running sessions are not interrupted).\",\n\t\"tabs\": \"Markets\",\n\t\"empty\": \"No configurable markets.\",\n\t\"save\": \"Save\",\n\t\"discard\": \"Discard\",\n\t\"saved\": \"Saved\",\n\t\"saveFailed\": \"Save failed\",\n\t\"current\": \"Current: {provider}\",\n\t\"default\": \"default\",\n\t\"custom\": \"Custom ({provider}, provided by a third-party connector)\",\n\t\"newsKeyLabel\": \"CryptoPanic API key (optional) — B-source enrichment for the crypto_get_news tool; leave empty to use public sources.\",\n\t\"newsKeyPlaceholder\": \"Paste a CryptoPanic free API token (stored locally only)\",\n\t\"newsSaved\": \"Saved\",\n\t\"newsSaveFailed\": \"Save failed\",\n\t\"colorMode.label\": \"Price Color Scheme\",\n\t\"colorMode.redUp\": \"Red Up / Green Down (Chinese)\",\n\t\"colorMode.greenUp\": \"Green Up / Red Down (International)\",\n\t\"market.crypto\": \"Crypto\",\n\t\"market.us\": \"US Stocks\",\n\t\"market.cn\": \"China A-shares\",\n\t\"market.hk\": \"Hong Kong\",\n\t\"credential.btn\": \"Configure API Credentials\",\n\t\"credential.btnFold\": \"Hide Configuration\",\n\t\"credential.configured\": \"Configured\",\n\t\"credential.notConfigured\": \"Not Configured\",\n\t\"credential.save\": \"Save Credentials\",\n\t\"credential.delete\": \"Clear / Delete Credentials\",\n\t\"credential.saved\": \"API Credentials saved\",\n\t\"credential.deleted\": \"API Credentials cleared\",\n\t\"credential.saveFailed\": \"Failed to save credentials\",\n\t\"credential.deleteFailed\": \"Failed to clear credentials\",\n\t\"type.public\": \"Public source\",\n\t\"type.gateway\": \"Local gateway\",\n\t\"type.commercial\": \"Commercial API\",\n\t\"field.action.hide\": \"Hide\",\n\t\"field.action.show\": \"Show\",\n\t\"provider.docsLink\": \"Official docs & guides\",\n\t\"provider.envPrefix\": \"Env var: \",\n\t\"provider.binance\": \"Binance\",\n\t\"provider.okx\": \"OKX\",\n\t\"provider.bybit\": \"Bybit\",\n\t\"provider.ccxt\": \"CCXT (100+ exchanges)\",\n\t\"provider.yahoo\": \"Yahoo Finance\",\n\t\"provider.alpaca\": \"Alpaca\",\n\t\"provider.fmp\": \"FMP (Financial Modeling Prep)\",\n\t\"provider.finnhub\": \"Finnhub\",\n\t\"provider.polygon\": \"Polygon.io (Massive)\",\n\t\"provider.ibkr\": \"IBKR (Interactive Brokers)\",\n\t\"provider.stooq\": \"Stooq\",\n\t\"provider.tencent\": \"Tencent\",\n\t\"provider.eastmoney\": \"Eastmoney\",\n\t\"provider.tushare\": \"Tushare Pro\",\n\t\"provider.akshare\": \"AkShare (macro / alt-data)\",\n\t\"provider.qmt\": \"MiniQMT (broker gateway)\",\n\t\"provider.futu\": \"Futu (OpenD)\",\n\t\"provider.longbridge\": \"Longbridge\",\n\t\"provider.tiger\": \"Tiger Trade\",\n\t\"field.label.apiKey\": \"API Key\",\n\t\"field.label.apiSecret\": \"API Secret\",\n\t\"field.label.secretKey\": \"Secret Key\",\n\t\"field.label.passphrase\": \"Passphrase\",\n\t\"field.label.token\": \"Pro Token\",\n\t\"field.label.apiUrl\": \"HTTP endpoint\",\n\t\"field.label.qmtUrl\": \"MiniQMT endpoint\",\n\t\"field.label.futuHost\": \"OpenD IP\",\n\t\"field.label.futuPort\": \"OpenD port\",\n\t\"field.label.ibkrUrl\": \"CP Gateway URL\",\n\t\"field.label.appKey\": \"App Key\",\n\t\"field.label.appSecret\": \"App Secret\",\n\t\"field.label.accessToken\": \"Access Token\",\n\t\"field.label.tigerId\": \"Tiger ID\",\n\t\"field.label.tigerPrivateKey\": \"RSA private key\",\n\t\"field.placeholder.binanceKey\": \"BINANCE_API_KEY (leave empty for public quotes)\",\n\t\"field.placeholder.binanceSecret\": \"BINANCE_API_SECRET\",\n\t\"field.placeholder.okxKey\": \"OKX_API_KEY (leave empty for public quotes)\",\n\t\"field.placeholder.okxSecret\": \"OKX_SECRET_KEY\",\n\t\"field.placeholder.okxPassphrase\": \"OKX_PASSPHRASE\",\n\t\"field.placeholder.bybitKey\": \"BYBIT_API_KEY (leave empty for public quotes)\",\n\t\"field.placeholder.bybitSecret\": \"BYBIT_API_SECRET\",\n\t\"field.placeholder.ccxtKey\": \"CCXT_API_KEY\",\n\t\"field.placeholder.ccxtSecret\": \"CCXT_API_SECRET\",\n\t\"field.placeholder.alpacaKey\": \"ALPACA_API_KEY\",\n\t\"field.placeholder.alpacaSecret\": \"ALPACA_SECRET_KEY\",\n\t\"field.placeholder.fmpKey\": \"FMP_API_KEY\",\n\t\"field.placeholder.finnhubKey\": \"FINNHUB_API_KEY\",\n\t\"field.placeholder.polygonKey\": \"POLYGON_API_KEY\",\n\t\"field.placeholder.tushareToken\": \"TUSHARE_TOKEN\",\n\t\"field.placeholder.akshareUrl\": \"http://127.0.0.1:8080 (built-in default)\",\n\t\"field.placeholder.qmtUrl\": \"http://127.0.0.1:5800\",\n\t\"field.placeholder.futuHost\": \"127.0.0.1\",\n\t\"field.placeholder.futuPort\": \"11111\",\n\t\"field.placeholder.ibkrUrl\": \"https://localhost:5000\",\n\t\"field.placeholder.longbridgeAppKey\": \"LONGBRIDGE_APP_KEY\",\n\t\"field.placeholder.longbridgeAppSecret\": \"LONGBRIDGE_APP_SECRET\",\n\t\"field.placeholder.longbridgeAccessToken\": \"LONGBRIDGE_ACCESS_TOKEN\",\n\t\"field.placeholder.tigerId\": \"TIGER_ID\",\n\t\"field.placeholder.tigerPrivateKey\": \"TIGER_PRIVATE_KEY\"\n};\n//#endregion\nexport { en, zh };\n","//#region src/client/locales.ts\nconst zh = {\n\t\"sv.section.screener\": \"选股策略\",\n\t\"sv.section.quant\": \"量化策略\",\n\t\"sv.horizon.short\": \"短线交易\",\n\t\"sv.horizon.swing\": \"波段操作\",\n\t\"sv.horizon.long\": \"长线投资\",\n\t\"sv.run\": \"运行回测\",\n\t\"sv.running\": \"回测计算中...\",\n\t\"sv.symbolLabel\": \"标的:\",\n\t\"sv.intervalDaily\": \"(日K)\",\n\t\"sv.error.noKlines\": \"未能获取到该标的的 K 线数据,无法执行回测\",\n\t\"sv.error.failed\": \"策略计算异常\",\n\t\"sv.metrics.totalReturn\": \"累计收益率\",\n\t\"sv.metrics.cagr\": \"年化复合增长率 (CAGR)\",\n\t\"sv.metrics.maxDrawdown\": \"最大回撤 (MDD)\",\n\t\"sv.metrics.sharpe\": \"夏普比率 (Sharpe)\",\n\t\"sv.metrics.winRate\": \"胜率 (Win Rate)\",\n\t\"sv.metrics.profitFactor\": \"盈亏比 (Profit Factor)\",\n\t\"sv.metrics.tradeCount\": \"交易笔数\",\n\t\"sv.metrics.tradeUnit\": \"笔\",\n\t\"sv.metrics.exposure\": \"市场暴露度 (Exposure)\",\n\t\"sv.trades.title\": \"交易明细流水\",\n\t\"sv.trades.empty\": \"回测区间内未触发交易信号\",\n\t\"sv.trades.entryTime\": \"开仓时间\",\n\t\"sv.trades.exitTime\": \"平仓时间\",\n\t\"sv.trades.entryPrice\": \"开仓均价\",\n\t\"sv.trades.exitPrice\": \"平仓均价\",\n\t\"sv.trades.holdingBars\": \"持仓根数\",\n\t\"sv.trades.netReturn\": \"单笔净收益率\",\n\t\"sv.trades.exitReason\": \"离场原因\",\n\t\"sv.empty.hint\": \"选择上方策略与参数后,点击「运行回测」查看绩效与权益曲线\",\n\t\"sv.screener.run\": \"运行选股\",\n\t\"sv.screener.stop\": \"停止\",\n\t\"sv.screener.scanLimit\": \"扫描池上限\",\n\t\"sv.screener.universePrefix\": \"标的名册\",\n\t\"sv.screener.scanned\": \"已扫描\",\n\t\"sv.screener.hits\": \"命中\",\n\t\"sv.screener.failed\": \"失败\",\n\t\"sv.screener.noUniverse\": \"当前数据源未提供标的全集,选股功能不可用(Binance/OKX 等提供名册的连接器可用)\",\n\t\"sv.screener.noHits\": \"扫描完成:没有标的满足当前条件\",\n\t\"sv.screener.scanning\": \"扫描中,命中将实时出现在下方...\",\n\t\"sv.screener.emptyHint\": \"选择上方选股器与参数后,点击「运行选股」扫描全市场标的\",\n\t\"sv.screener.col.symbol\": \"代码\",\n\t\"sv.screener.col.name\": \"名称\",\n\t\"sv.screener.col.price\": \"现价\",\n\t\"sv.screener.col.reason\": \"信号说明\",\n\t\"sv.author.failed\": \"策略校验未通过\",\n\t\"strat.donchian-breakout\": \"唐奇安通道突破\",\n\t\"strat.donchian-breakout.summary\": \"收盘价突破前 N1 根最高价做多,跌破前 N2 根最低价离场(海龟经典简化版)\",\n\t\"strat.donchian-breakout.param.lookbackEntry\": \"突破周期 (N1)\",\n\t\"strat.donchian-breakout.param.lookbackExit\": \"离场周期 (N2)\",\n\t\"strat.donchian-breakout.reason.entry\": \"收盘价 ({close}) 突破前 {n} 根最高价 ({high})\",\n\t\"strat.donchian-breakout.reason.exit\": \"收盘价 ({close}) 跌破前 {n} 根最低价 ({low})\",\n\t\"strat.rsi-reversion\": \"RSI 短线极值回归\",\n\t\"strat.rsi-reversion.summary\": \"短周期 RSI(2) 进入极端超卖区抄底,快速反弹后止盈(经典均值回归)\",\n\t\"strat.rsi-reversion.param.rsiPeriod\": \"RSI 周期\",\n\t\"strat.rsi-reversion.param.entryThreshold\": \"入场超卖阈值\",\n\t\"strat.rsi-reversion.param.exitThreshold\": \"出场止盈阈值\",\n\t\"strat.rsi-reversion.reason.entry\": \"RSI({period}) 达到极端超卖值 ({val} < {thresh}),触发反弹买入\",\n\t\"strat.rsi-reversion.reason.exit\": \"RSI({period}) 回升至目标位 ({val} > {thresh}),止盈离场\",\n\t\"strat.ema-crossover\": \"EMA 双均线趋势跟踪\",\n\t\"strat.ema-crossover.summary\": \"快线 EMA 上穿慢线 EMA 金叉做多,死叉平仓(经典中线波段趋势策略)\",\n\t\"strat.ema-crossover.param.fastPeriod\": \"快线周期 (Fast)\",\n\t\"strat.ema-crossover.param.slowPeriod\": \"慢线周期 (Slow)\",\n\t\"strat.ema-crossover.reason.entry\": \"EMA({fastP}) ({fast}) 上穿 EMA({slowP}) ({slow}) 形成金叉\",\n\t\"strat.ema-crossover.reason.exit\": \"EMA({fastP}) ({fast}) 下穿 EMA({slowP}) ({slow}) 形成死叉\",\n\t\"strat.bollinger-reversion\": \"布林带下轨均值回归\",\n\t\"strat.bollinger-reversion.summary\": \"价格跌破布林线下轨时介入抄底,反弹至中轨(基准均线)时平仓(波段通道回归)\",\n\t\"strat.bollinger-reversion.param.period\": \"布林周期\",\n\t\"strat.bollinger-reversion.param.multiplier\": \"标准差倍数 (k)\",\n\t\"strat.bollinger-reversion.reason.entry\": \"收盘价 ({close}) 跌破布林下轨 ({band}),触发波段均值回归\",\n\t\"strat.bollinger-reversion.reason.exit\": \"收盘价 ({close}) 成功回归至布林中轨 ({mid}),完成目标止盈\",\n\t\"strat.sma-baseline\": \"200 日均线牛熊择时基线\",\n\t\"strat.sma-baseline.summary\": \"收盘价站上 SMA200 均线做多,跌破均线空仓避险(长线资产配置经典基线)\",\n\t\"strat.sma-baseline.param.period\": \"长期均线周期\",\n\t\"strat.sma-baseline.reason.entry\": \"收盘价 ({close}) 站上长期基线 SMA({period}) ({sma}),确立多头趋势\",\n\t\"strat.sma-baseline.reason.exit\": \"收盘价 ({close}) 跌破长期基线 SMA({period}) ({sma}),转入防御避险\",\n\t\"strat.momentum-12m\": \"12 个月动量择时\",\n\t\"strat.momentum-12m.summary\": \"近 12 个月动量为正且站上年线做多,动量转负或破位离场(低换手长线动量)\",\n\t\"strat.momentum-12m.param.lookbackBars\": \"动量回溯周期 (K线)\",\n\t\"strat.momentum-12m.reason.entry\": \"近 {n} 周期动量为正 (+{pct}%) 且位于均线 ({sma}) 之上,确认强动量\",\n\t\"strat.momentum-12m.reason.exit\": \"{cause} ({pct}% / SMA {sma}),动量衰减平仓\",\n\t\"scr.ma-bull-align\": \"均线多头排列\",\n\t\"scr.ma-bull-align.summary\": \"现价站上三线且 SMA(短) > SMA(中) > SMA(长),筛选趋势结构完整的标的\",\n\t\"scr.ma-bull-align.param.n1\": \"短期均线\",\n\t\"scr.ma-bull-align.param.n2\": \"中期均线\",\n\t\"scr.ma-bull-align.param.n3\": \"长期均线\",\n\t\"scr.ma-bull-align.col.distLongPct\": \"距长期均线\",\n\t\"scr.ma-bull-align.reason\": \"现价站上三线且 SMA({n1}) > SMA({n2}) > SMA({n3}),多头排列\",\n\t\"scr.volume-breakout\": \"放量突破\",\n\t\"scr.volume-breakout.summary\": \"收盘价创 N 日新高且成交量 ≥ 均量 M 倍,量价配合的突破筛选\",\n\t\"scr.volume-breakout.param.lookback\": \"突破窗口(日)\",\n\t\"scr.volume-breakout.param.volMultiple\": \"量能倍数\",\n\t\"scr.volume-breakout.col.volRatio\": \"量比(倍)\",\n\t\"scr.volume-breakout.col.breakoutPct\": \"突破幅度\",\n\t\"scr.volume-breakout.reason\": \"放量 {ratio} 倍突破 {n} 日高点\",\n\t\"scr.rsi-oversold\": \"RSI 超卖\",\n\t\"scr.rsi-oversold.summary\": \"RSI 跌入超卖区(默认 <30),筛选值得盯的反转候选(逆势信号)\",\n\t\"scr.rsi-oversold.param.period\": \"RSI 周期\",\n\t\"scr.rsi-oversold.param.threshold\": \"超卖阈值\",\n\t\"scr.rsi-oversold.col.rsi\": \"RSI\",\n\t\"scr.rsi-oversold.reason\": \"RSI({period}) = {val},进入超卖区(逆势信号)\",\n\t\"scr.near-high\": \"接近一年新高\",\n\t\"scr.near-high.summary\": \"现价距 N 日最高价不超过 X%,强势整理/突破前夜的动量筛选\",\n\t\"scr.near-high.param.window\": \"窗口(日)\",\n\t\"scr.near-high.param.withinPct\": \"接近阈值(%)\",\n\t\"scr.near-high.col.offHighPct\": \"距高点\",\n\t\"scr.near-high.reason\": \"距 {n} 日高点仅 {pct}%,处于突破前夜\",\n\t\"scr.above-ma\": \"站上牛熊线\",\n\t\"scr.above-ma.summary\": \"现价站上长期均线且均线斜率向上,筛选长线多头环境的标的\",\n\t\"scr.above-ma.param.period\": \"牛熊线周期\",\n\t\"scr.above-ma.param.slopeBars\": \"斜率窗口(日)\",\n\t\"scr.above-ma.col.aboveMaPct\": \"高于均线\",\n\t\"scr.above-ma.col.maSlopePct\": \"均线斜率\",\n\t\"scr.above-ma.reason\": \"现价高于 SMA({period}) {above}%,均线 {slope} 日斜率 +{slopePct}%\",\n\t\"strat.momentum-12m.cause.momentumNegative\": \"动量转为负值\",\n\t\"strat.momentum-12m.cause.belowBaseline\": \"跌破基准均线\"\n};\nconst en = {\n\t\"sv.section.screener\": \"Screener\",\n\t\"sv.section.quant\": \"Quantitative\",\n\t\"sv.horizon.short\": \"Short-term\",\n\t\"sv.horizon.swing\": \"Swing\",\n\t\"sv.horizon.long\": \"Long-term\",\n\t\"sv.run\": \"Run Backtest\",\n\t\"sv.running\": \"Running...\",\n\t\"sv.symbolLabel\": \"Symbol & Interval:\",\n\t\"sv.intervalDaily\": \"(Daily)\",\n\t\"sv.error.noKlines\": \"Failed to fetch klines for this symbol, cannot run backtest\",\n\t\"sv.error.failed\": \"Strategy compute error\",\n\t\"sv.metrics.totalReturn\": \"Total Return\",\n\t\"sv.metrics.cagr\": \"CAGR\",\n\t\"sv.metrics.maxDrawdown\": \"Max Drawdown\",\n\t\"sv.metrics.sharpe\": \"Sharpe Ratio\",\n\t\"sv.metrics.winRate\": \"Win Rate\",\n\t\"sv.metrics.profitFactor\": \"Profit Factor\",\n\t\"sv.metrics.tradeCount\": \"Trades\",\n\t\"sv.metrics.tradeUnit\": \"trades\",\n\t\"sv.metrics.exposure\": \"Market Exposure\",\n\t\"sv.trades.title\": \"Trade Log\",\n\t\"sv.trades.empty\": \"No trades generated in the backtest period\",\n\t\"sv.trades.entryTime\": \"Entry Time\",\n\t\"sv.trades.exitTime\": \"Exit Time\",\n\t\"sv.trades.entryPrice\": \"Entry Price\",\n\t\"sv.trades.exitPrice\": \"Exit Price\",\n\t\"sv.trades.holdingBars\": \"Holding Bars\",\n\t\"sv.trades.netReturn\": \"Net Return\",\n\t\"sv.trades.exitReason\": \"Exit Reason\",\n\t\"sv.empty.hint\": \"Select a strategy and parameters above, then click \\\"Run Backtest\\\"\",\n\t\"sv.screener.run\": \"Scan\",\n\t\"sv.screener.stop\": \"Stop\",\n\t\"sv.screener.scanLimit\": \"Scan Cap\",\n\t\"sv.screener.universePrefix\": \"Universe\",\n\t\"sv.screener.scanned\": \"Scanned\",\n\t\"sv.screener.hits\": \"Hits\",\n\t\"sv.screener.failed\": \"Failed\",\n\t\"sv.screener.noUniverse\": \"This data source does not provide a symbol universe; screening is unavailable (connectors like Binance/OKX do)\",\n\t\"sv.screener.noHits\": \"Scan finished: no symbols match the current criteria\",\n\t\"sv.screener.scanning\": \"Scanning, hits appear below in real time...\",\n\t\"sv.screener.emptyHint\": \"Pick a screener and parameters above, then click \\\"Scan\\\" to screen the market\",\n\t\"sv.screener.col.symbol\": \"Symbol\",\n\t\"sv.screener.col.name\": \"Name\",\n\t\"sv.screener.col.price\": \"Price\",\n\t\"sv.screener.col.reason\": \"Signal\",\n\t\"sv.author.failed\": \"Validation failed\",\n\t\"strat.donchian-breakout\": \"Donchian breakout\",\n\t\"strat.donchian-breakout.summary\": \"Go long when close breaks the N1-bar high; exit below the N2-bar low (classic turtle, simplified)\",\n\t\"strat.donchian-breakout.param.lookbackEntry\": \"Breakout lookback (N1)\",\n\t\"strat.donchian-breakout.param.lookbackExit\": \"Exit lookback (N2)\",\n\t\"strat.donchian-breakout.reason.entry\": \"Close ({close}) breaks the {n}-bar high ({high})\",\n\t\"strat.donchian-breakout.reason.exit\": \"Close ({close}) falls below the {n}-bar low ({low})\",\n\t\"strat.rsi-reversion\": \"RSI short-term reversion\",\n\t\"strat.rsi-reversion.summary\": \"Buy when short-period RSI(2) reaches extreme oversold; take profit on the quick bounce (classic mean reversion)\",\n\t\"strat.rsi-reversion.param.rsiPeriod\": \"RSI period\",\n\t\"strat.rsi-reversion.param.entryThreshold\": \"Entry oversold threshold\",\n\t\"strat.rsi-reversion.param.exitThreshold\": \"Exit take-profit threshold\",\n\t\"strat.rsi-reversion.reason.entry\": \"RSI({period}) at extreme oversold ({val} < {thresh}); bounce buy\",\n\t\"strat.rsi-reversion.reason.exit\": \"RSI({period}) recovered to target ({val} > {thresh}); take profit\",\n\t\"strat.ema-crossover\": \"EMA dual-MA trend following\",\n\t\"strat.ema-crossover.summary\": \"Long on fast-EMA/slow-EMA golden cross, flat on death cross (classic swing trend strategy)\",\n\t\"strat.ema-crossover.param.fastPeriod\": \"Fast period\",\n\t\"strat.ema-crossover.param.slowPeriod\": \"Slow period\",\n\t\"strat.ema-crossover.reason.entry\": \"EMA({fastP}) ({fast}) crosses above EMA({slowP}) ({slow}) — golden cross\",\n\t\"strat.ema-crossover.reason.exit\": \"EMA({fastP}) ({fast}) crosses below EMA({slowP}) ({slow}) — death cross\",\n\t\"strat.bollinger-reversion\": \"Bollinger lower-band reversion\",\n\t\"strat.bollinger-reversion.summary\": \"Buy when price pierces the lower band; exit at the middle band (swing channel reversion)\",\n\t\"strat.bollinger-reversion.param.period\": \"Bollinger period\",\n\t\"strat.bollinger-reversion.param.multiplier\": \"Std-dev multiple (k)\",\n\t\"strat.bollinger-reversion.reason.entry\": \"Close ({close}) pierces the lower band ({band}); swing reversion entry\",\n\t\"strat.bollinger-reversion.reason.exit\": \"Close ({close}) reverted to the middle band ({mid}); target profit taken\",\n\t\"strat.sma-baseline\": \"200-day SMA bull/bear baseline\",\n\t\"strat.sma-baseline.summary\": \"Long above SMA200, in cash below it (classic long-term allocation baseline)\",\n\t\"strat.sma-baseline.param.period\": \"Long MA period\",\n\t\"strat.sma-baseline.reason.entry\": \"Close ({close}) above the long baseline SMA({period}) ({sma}); bull trend established\",\n\t\"strat.sma-baseline.reason.exit\": \"Close ({close}) below the long baseline SMA({period}) ({sma}); defensive exit\",\n\t\"strat.momentum-12m\": \"12-month momentum timing\",\n\t\"strat.momentum-12m.summary\": \"Long when 12-month momentum is positive and price is above the yearly MA; exit on momentum decay (low-turnover long momentum)\",\n\t\"strat.momentum-12m.param.lookbackBars\": \"Momentum lookback (bars)\",\n\t\"strat.momentum-12m.reason.entry\": \"Positive {n}-bar momentum (+{pct}%) with price above the MA ({sma}); strong momentum confirmed\",\n\t\"strat.momentum-12m.reason.exit\": \"{cause} ({pct}% / SMA {sma}); momentum-decay exit\",\n\t\"scr.ma-bull-align\": \"MA bull alignment\",\n\t\"scr.ma-bull-align.summary\": \"Price above all three MAs with SMA(short) > SMA(mid) > SMA(long); screens intact uptrends\",\n\t\"scr.ma-bull-align.param.n1\": \"Short MA\",\n\t\"scr.ma-bull-align.param.n2\": \"Mid MA\",\n\t\"scr.ma-bull-align.param.n3\": \"Long MA\",\n\t\"scr.ma-bull-align.col.distLongPct\": \"Distance to long MA\",\n\t\"scr.ma-bull-align.reason\": \"Price above all three MAs, SMA({n1}) > SMA({n2}) > SMA({n3}) — bull alignment\",\n\t\"scr.volume-breakout\": \"Volume breakout\",\n\t\"scr.volume-breakout.summary\": \"Close at an N-bar high with volume ≥ M× average; volume-confirmed breakouts\",\n\t\"scr.volume-breakout.param.lookback\": \"Breakout window (bars)\",\n\t\"scr.volume-breakout.param.volMultiple\": \"Volume multiple\",\n\t\"scr.volume-breakout.col.volRatio\": \"Volume ratio (x)\",\n\t\"scr.volume-breakout.col.breakoutPct\": \"Breakout magnitude\",\n\t\"scr.volume-breakout.reason\": \"{ratio}x volume breakout of the {n}-bar high\",\n\t\"scr.rsi-oversold\": \"RSI oversold\",\n\t\"scr.rsi-oversold.summary\": \"RSI in oversold territory (default <30); reversal candidates to watch (contrarian)\",\n\t\"scr.rsi-oversold.param.period\": \"RSI period\",\n\t\"scr.rsi-oversold.param.threshold\": \"Oversold threshold\",\n\t\"scr.rsi-oversold.col.rsi\": \"RSI\",\n\t\"scr.rsi-oversold.reason\": \"RSI({period}) = {val}; oversold (contrarian)\",\n\t\"scr.near-high\": \"Near 52-week high\",\n\t\"scr.near-high.summary\": \"Price within X% of the N-bar high; consolidation / pre-breakout momentum\",\n\t\"scr.near-high.param.window\": \"Window (bars)\",\n\t\"scr.near-high.param.withinPct\": \"Proximity threshold (%)\",\n\t\"scr.near-high.col.offHighPct\": \"Off high\",\n\t\"scr.near-high.reason\": \"Within {pct}% of the {n}-bar high; pre-breakout\",\n\t\"scr.above-ma\": \"Above bull/bear line\",\n\t\"scr.above-ma.summary\": \"Price above the long MA with rising slope; screens long-term bull regimes\",\n\t\"scr.above-ma.param.period\": \"Bull/bear MA period\",\n\t\"scr.above-ma.param.slopeBars\": \"Slope window (bars)\",\n\t\"scr.above-ma.col.aboveMaPct\": \"Above MA\",\n\t\"scr.above-ma.col.maSlopePct\": \"MA slope\",\n\t\"scr.above-ma.reason\": \"Price {above}% above SMA({period}); {slope}-bar slope +{slopePct}%\",\n\t\"strat.momentum-12m.cause.momentumNegative\": \"momentum turned negative\",\n\t\"strat.momentum-12m.cause.belowBaseline\": \"fell below the baseline MA\"\n};\n//#endregion\nexport { en, zh };\n","//#region src/client/locales.ts\nconst zh = {\n\t\"kv.search.placeholder\": \"搜索卡片标题、摘要、标签...\",\n\t\"kv.filter.tag\": \"主题标签\",\n\t\"kv.filter.allTags\": \"全部标签\",\n\t\"kv.filter.author\": \"来源作者\",\n\t\"kv.filter.allAuthors\": \"全部作者\",\n\t\"kv.filter.credibility\": \"可信度\",\n\t\"kv.filter.allCredibility\": \"全部评级\",\n\t\"kv.filter.sourceType\": \"来源平台\",\n\t\"kv.filter.allSourceTypes\": \"全部平台\",\n\t\"kv.filter.reset\": \"重置筛选\",\n\t\"kv.credibility.high\": \"高可信度 (High)\",\n\t\"kv.credibility.medium\": \"中可信度 (Medium)\",\n\t\"kv.credibility.low\": \"低可信度 (Low)\",\n\t\"kv.sourceType.bilibili\": \"B站 (Bilibili)\",\n\t\"kv.sourceType.wechat\": \"微信公众号 (WeChat)\",\n\t\"kv.sourceType.manual\": \"手工录入 (Manual)\",\n\t\"kv.empty.hint\": \"知识库暂无内容。把 B 站视频或公众号文章链接发给助手,说「沉淀到知识库」即可入库。\",\n\t\"kv.empty.filtered\": \"未找到匹配当前筛选条件的知识卡片\",\n\t\"kv.stats.cards\": \"张卡片\",\n\t\"kv.stats.clusters\": \"个主题簇\",\n\t\"kv.drawer.title\": \"知识卡片详情\",\n\t\"kv.drawer.coreClaims\": \"核心论点\",\n\t\"kv.drawer.factCheck\": \"事实核查 (三桶分类)\",\n\t\"kv.drawer.verified\": \"经核实真实 (Verified)\",\n\t\"kv.drawer.discrepancies\": \"有出入/夸大 (Discrepancies)\",\n\t\"kv.drawer.unverifiable\": \"无法核实 (Unverifiable)\",\n\t\"kv.drawer.takeaways\": \"可复用分析经验\",\n\t\"kv.drawer.boundaries\": \"适用边界与避坑\",\n\t\"kv.drawer.tickers\": \"关联标的\",\n\t\"kv.drawer.related\": \"关联卡片\",\n\t\"kv.drawer.openSource\": \"打开原始链接\",\n\t\"kv.drawer.publishedAt\": \"发布日期\",\n\t\"kv.drawer.author\": \"来源作者\"\n};\nconst en = {\n\t\"kv.search.placeholder\": \"Search title, summary, tags...\",\n\t\"kv.filter.tag\": \"Topic Tag\",\n\t\"kv.filter.allTags\": \"All Tags\",\n\t\"kv.filter.author\": \"Author\",\n\t\"kv.filter.allAuthors\": \"All Authors\",\n\t\"kv.filter.credibility\": \"Credibility\",\n\t\"kv.filter.allCredibility\": \"All Credibility\",\n\t\"kv.filter.sourceType\": \"Platform\",\n\t\"kv.filter.allSourceTypes\": \"All Platforms\",\n\t\"kv.filter.reset\": \"Reset\",\n\t\"kv.credibility.high\": \"High\",\n\t\"kv.credibility.medium\": \"Medium\",\n\t\"kv.credibility.low\": \"Low\",\n\t\"kv.sourceType.bilibili\": \"Bilibili\",\n\t\"kv.sourceType.wechat\": \"WeChat\",\n\t\"kv.sourceType.manual\": \"Manual\",\n\t\"kv.empty.hint\": \"No knowledge cards yet. Send a Bilibili video or WeChat article link to the assistant and say \\\"Save to knowledge base\\\" to ingest.\",\n\t\"kv.empty.filtered\": \"No knowledge cards match the current filter criteria\",\n\t\"kv.stats.cards\": \"Cards\",\n\t\"kv.stats.clusters\": \"Clusters\",\n\t\"kv.drawer.title\": \"Knowledge Card Details\",\n\t\"kv.drawer.coreClaims\": \"Core Claims\",\n\t\"kv.drawer.factCheck\": \"Fact Check (3 Buckets)\",\n\t\"kv.drawer.verified\": \"Verified\",\n\t\"kv.drawer.discrepancies\": \"Discrepancies\",\n\t\"kv.drawer.unverifiable\": \"Unverifiable\",\n\t\"kv.drawer.takeaways\": \"Reusable Takeaways\",\n\t\"kv.drawer.boundaries\": \"Boundaries & Pitfalls\",\n\t\"kv.drawer.tickers\": \"Related Tickers\",\n\t\"kv.drawer.related\": \"Related Cards\",\n\t\"kv.drawer.openSource\": \"Open Original URL\",\n\t\"kv.drawer.publishedAt\": \"Published At\",\n\t\"kv.drawer.author\": \"Author\"\n};\n//#endregion\nexport { en, zh };\n","/**\n * dsh-i18n browser half: central language pack.\n *\n * 注册「简体中文」(zh-CN)进宿主 Settings → General → Language 语言目录\n * (宿主内置 zh=中文 / en=English,zh-CN fallback zh),并为全部 dshtrading\n * 命名空间注册 zh-CN 词典(untyped 单语言 overload——zh/en 由源包 typed\n * register 持有,(ns, locale) 单一占主语义允许语言包补第三语言)。\n *\n * 词典来源:构建期直接 import 各源包 src/client/locales.ts(纯数据模块,\n * 由 tsdown 打进本包 client bundle)——zh-CN 恒等于 zh,零漂移;源包键位\n * 变更经 typed register 编译期校验 + scripts/i18n-audit.mjs 门禁兜底,\n * 本包无需第二份拷贝。\n *\n * 新增语言范式(dsh-web dsh-i18n 同款):import 新语言词典模块(或手写字面量\n * 文件)→ 在 LANGUAGES 加一项 + PACKAGES 加一条映射。注册失败逐项 try/catch\n * (语言目录被占主等场景静默降级为宿主内置语言,不阻塞其余命名空间)。\n */\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport { zh as marketZh } from '@dshtrading/client-ui-trading/locales'\nimport { zh as settingsZh } from '@dshtrading/client-ui-settings/locales'\nimport { zh as strategiesZh } from '@dshtrading/client-ui-strategies/locales'\nimport { zh as knowledgeZh } from '@dshtrading/client-ui-knowledge/locales'\n\n/** Required services:宿主 locale 服务(语言目录 + 词典注册表)。 */\nexport const inject = ['locale']\n\n/** 命名空间 → zh 词典映射(audit 依此核对覆盖面)。 */\nexport const PACKAGES: ReadonlyArray<readonly [ns: string, dict: Record<string, string>]> = [\n ['dshtrading.market', marketZh],\n ['dshtrading.settings', settingsZh],\n ['dshtrading.strategies', strategiesZh],\n ['dshtrading.knowledge', knowledgeZh],\n]\n\n/** 语言目录注册项(id 持久化为 locale preference;label 用该语言自述)。 */\nexport const LANGUAGES: ReadonlyArray<{ id: string; label: string; fallback: string }> = [\n { id: 'zh-CN', label: '简体中文', fallback: 'zh' }, // i18n-allow: 语言自述名按目标语言书写(SDK 契约)\n]\n\n/** 注册语言目录 + 全部命名空间的 zh-CN 词典(幂等:可重复 apply)。 */\nexport function apply(ctx: ClientContext): void {\n const disposers: Array<() => void> = []\n let disposed = false\n\n ctx.effect(() => {\n for (const language of LANGUAGES) {\n try {\n disposers.push(ctx.locale.addLanguage(language))\n } catch (error) {\n // 语言目录项被占主(重复安装/宿主已含)→ 静默降级:词典仍注册,\n // 语言行维持宿主侧状态。\n console.warn(`[dsh-i18n] addLanguage(${language.id}) skipped:`, error)\n }\n }\n for (const [ns, dict] of PACKAGES) {\n try {\n disposers.push(ctx.locale.register(ns, 'zh-CN', dict))\n } catch (error) {\n console.warn(`[dsh-i18n] register(${ns}, zh-CN) skipped:`, error)\n }\n }\n return () => {\n if (disposed) return\n disposed = true\n for (const dispose of disposers.reverse()) dispose()\n }\n }, 'dsh-i18n: zh-CN language pack')\n}\n"],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { Context } from "@deepseek-ai/cordis";
2
+ //#region src/index.d.ts
3
+ declare const name = "dsh-i18n";
4
+ declare function apply(_ctx: Context): void;
5
+ //#endregion
6
+ export { apply, name };
package/lib/index.js ADDED
@@ -0,0 +1,5 @@
1
+ //#region src/index.ts
2
+ const name = "dsh-i18n";
3
+ function apply(_ctx) {}
4
+ //#endregion
5
+ export { apply, name };
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@dshtrading/dsh-i18n",
3
+ "description": "Central language-pack plugin for the dsh-trading trading GUI: registers Simplified Chinese (zh-CN) as a selectable language in the host Settings → General → Language row and carries the zh-CN dictionaries for all dshtrading locale namespaces. Source packages own their zh/en dictionaries (typed register); this plugin is the single home for additional languages — adding language #3 = importing its dictionary module and one register line.",
4
+ "version": "0.1.0",
5
+ "type": "module",
6
+ "main": "lib/index.js",
7
+ "types": "./lib/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/index.d.ts",
11
+ "default": "./lib/index.js"
12
+ },
13
+ "./client": {
14
+ "types": "./lib/types/client/index.d.ts",
15
+ "default": "./lib/client.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "files": [
20
+ "lib"
21
+ ],
22
+ "license": "PolyForm-Noncommercial-1.0.0",
23
+ "dependencies": {
24
+ "@dshtrading/client-ui-trading": "^0.1.0",
25
+ "@dshtrading/client-ui-settings": "^0.1.0",
26
+ "@dshtrading/client-ui-knowledge": "^0.1.0",
27
+ "@dshtrading/client-ui-strategies": "^0.1.0"
28
+ },
29
+ "peerDependencies": {
30
+ "@deepseek-ai/cordis": ">=4.0.0",
31
+ "@deepseek-ai/dsh-client-locale": ">=0.1.2-alpha.1"
32
+ },
33
+ "devDependencies": {
34
+ "@deepseek-ai/cordis": "^4.0.2",
35
+ "@deepseek-ai/dsh-client-locale": "0.1.2-alpha.3",
36
+ "tsdown": "^0.22.0",
37
+ "vitest": "^3.0.0"
38
+ },
39
+ "dsh": {
40
+ "client": {
41
+ "inject": [
42
+ "@deepseek-ai/dsh-client-locale"
43
+ ],
44
+ "platform": "web"
45
+ }
46
+ },
47
+ "scripts": {
48
+ "build": "tsdown && tsdown --config tsdown.client.config.mjs",
49
+ "test": "vitest run"
50
+ }
51
+ }