@agentscope-ai/i18n 0.1.4 → 0.1.5
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/package.json +1 -1
- package/skills/i18n-helper/SKILL.md +36 -14
package/package.json
CHANGED
|
@@ -105,29 +105,51 @@ description: 国际化(i18n)自动化助手。当用户要对项目目录执行i
|
|
|
105
105
|
|
|
106
106
|
使用 Chrome DevTools MCP 的 `new_page`(不要用 `navigate_page`,它会关闭当前页)打开上述 URL。
|
|
107
107
|
|
|
108
|
-
3.
|
|
108
|
+
3. **操作美杜莎页面(最小化交互次数)**
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
- `zh_CN` textarea
|
|
112
|
-
- `en_US` textarea(`value="当前英文值"`)
|
|
110
|
+
使用 `wait_for` 等待 `en_US` 或 `zh_CN` 文本出现(它会自动返回快照,无需再调 `take_snapshot`)。从快照中识别:
|
|
111
|
+
- `zh_CN` textarea、`en_US` textarea 的 uid
|
|
113
112
|
- 标签区域是否已有 `do_not_trans`
|
|
113
|
+
- 「保存」按钮 uid
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
**只修改用户指定的语言**,未指定的不要动。按以下顺序操作:
|
|
116
116
|
|
|
117
|
-
a. **填入文案** —
|
|
117
|
+
a. **填入文案** — 对每个需要修改的 textarea,通过 `evaluate_script` 设置值(可以在**一次调用**中同时处理多个 textarea):
|
|
118
118
|
```javascript
|
|
119
|
-
(
|
|
120
|
-
const
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
119
|
+
(zh, en) => {
|
|
120
|
+
const set = (el, v) => {
|
|
121
|
+
if (!el || v === null) return;
|
|
122
|
+
const setter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value').set;
|
|
123
|
+
setter.call(el, v);
|
|
124
|
+
el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
125
|
+
el.dispatchEvent(new Event('change', { bubbles: true }));
|
|
126
|
+
};
|
|
127
|
+
set(zh, '新中文值或null');
|
|
128
|
+
set(en, '新英文值或null');
|
|
129
|
+
return 'ok';
|
|
125
130
|
}
|
|
126
131
|
```
|
|
132
|
+
> 不需要修改的语言传 `null`,对应 `args` 中仍需传一个占位 uid(任意元素即可)。
|
|
127
133
|
|
|
128
|
-
b. **添加 do_not_trans
|
|
134
|
+
b. **添加 do_not_trans 标签**(如果快照中已有则**跳过此步**) — 通过 `evaluate_script` 一次完成:
|
|
135
|
+
```javascript
|
|
136
|
+
(combobox) => {
|
|
137
|
+
combobox.click();
|
|
138
|
+
return new Promise(resolve => {
|
|
139
|
+
setTimeout(() => {
|
|
140
|
+
const opt = [...document.querySelectorAll('[role="option"]')].find(el => el.textContent.trim() === 'do_not_trans');
|
|
141
|
+
if (opt) opt.click();
|
|
142
|
+
setTimeout(() => {
|
|
143
|
+
combobox.blur();
|
|
144
|
+
document.body.click();
|
|
145
|
+
resolve('done');
|
|
146
|
+
}, 200);
|
|
147
|
+
}, 300);
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
```
|
|
129
151
|
|
|
130
|
-
c. **保存并发布** —
|
|
152
|
+
c. **保存并发布** — 点击「保存」按钮(带 `includeSnapshot: true` 确认结果),然后截图展示当前状态,等待用户确认后再点击「立即发布」按钮。
|
|
131
153
|
|
|
132
154
|
## 注意事项
|
|
133
155
|
|