背景
随着工作和学习的全球化,跨语言的沟通变得尤为重要。对于使用电子表格进行数据处理和分析的用户来说,表格中的内容可能涉及不同的语言。尤其是在处理多语言数据时,翻译表格内容成为了一个高频的需求。
传统的翻译方法可能需要手动复制粘贴,或者依赖外部工具,这样的方式既繁琐又浪费时间。为了解决这个问题,我们开发了一个基于AI的自动翻译工具——AI Cell Translator,它能在 Univer Sheets 中自动翻译选定的单元格内容,支持批量翻译(最多100个单元格)并支持英语和中文的相互翻译。
方案
AI Cell Translator脚本通过集成AI技术,利用GLM-4 API来实现快速且高效的翻译功能。该脚本可以嵌入到 Univer Go 中,用户只需要选择一个或多个单元格,然后点击工具栏或右键菜单中的翻译选项,脚本就会自动完成翻译操作。翻译结果将会被填充回原始单元格,极大提高了数据处理效率。
Univer Go 是一款功能强大的脚本编写与执行工具,适用于跨平台环境,帮助开发者创建和运行自动化脚本、数据库连接、以及自定义应用。通过简洁的界面和高效的操作流程,Univer Go 提供了易于使用的编程环境,适合无论是初学者还是专业开发者使用。
主要功能:
- 支持直接翻译选中的单元格内容。
- 支持批量翻译(最多100个单元格)。
- 提供英文和中文两种语言的翻译选择。
- 通过工具栏和右键菜单便捷访问。
使用步骤:
- 选择一个或多个包含文本的单元格。
- 在工具栏或右键菜单中选择翻译选项(“Translate to English”或“Translate to 中文”)。
通过该方案,用户不再需要手动进行翻译工作,节省了大量时间和精力。
实现
下面是AI Cell Translator脚本的详细实现,包括关键方法的解析:
脚本主要部分解读
1. API 配置
const AI_ENDPOINT = "https://open.bigmodel.cn/api/paas/v4";
const AI_KEY = "[YOUR_API_KEY]";
- AI_ENDPOINT:该变量定义了AI翻译API的端点地址。
- AI_KEY:存储了用于访问API的密钥。注意:此密钥是演示用的API密钥,建议用户注册并替换为自己的API密钥。
2. onOpen
函数
function onOpen() {
univerAPI.createMenu({
id: 'translate-to-en',
title: 'Translate to English',
action: () => translateSelectedCells("English"),
}).appendTo('ribbon.start.others');
univerAPI.createMenu({
id: 'translate-to-cn',
title: 'Translate to 中文',
action: () => translateSelectedCells("中文"),
}).appendTo('ribbon.start.others');
}
- 该函数在Univer Sheets打开时自动运行,创建了两个菜单项,分别是“Translate to English”和“Translate to 中文”。
- 用户可以通过工具栏轻松访问翻译功能。
3. translate
函数
async function translate(text, target = "中文") {
const prompt = `
# You are a translation expert.
## Rules
Please return the translation result only, without any other text.
## Job
Please translate the following text into ${target} language:
${text}
`;
const response = await fetch(AI_ENDPOINT + '/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + AI_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'glm-4-flash',
messages: [
{
role: 'user',
content: prompt
}
]
})
}).then(response => response.json())
return response.choices[0].message.content;
}
- translate函数是核心翻译函数,接收文本和目标语言(默认为中文)作为输入。
- 使用GLM-4 API对选定文本进行翻译,并返回翻译结果。
4. translateSelectedCells
函数
async function translateSelectedCells(target = "中文") {
if (isTranslating) {
showMessage({ content: 'A translation task is already running. Please wait.' });
return;
}
const workbook = univerAPI.getActiveWorkbook();
const sheet = workbook.getActiveSheet();
const activeRange = workbook.getActiveRange();
const cells = activeRange.getValues();
if (!cells.length) {
showMessage({ content: 'Please select a range' });
return;
}
const totalCells = cells.reduce((count, row) =>
count + row.filter(cell => cell).length, 0);
if (totalCells > 100) {
showMessage({
content: 'Too many cells selected (max: 100). Please select fewer cells.'
});
return;
}
try {
isTranslating = true;
const offsetX = activeRange.getRange().startColumn;
const offsetY = activeRange.getRange().startRow;
for (let i = 0; i < cells.length; i++) {
const rows = cells[i];
for (let j = 0; j < rows.length; j++) {
const cell = rows[j];
if (!cell) continue;
const result = await translate(cell, target);
sheet.getRange(offsetY + i, offsetX + j).setValue(result);
}
}
setTimeout(() => showMessage({ content: 'Translation completed successfully' }), 100);
} catch (error) {
showMessage({ content: `Translation failed: ${error.message}` });
} finally {
isTranslating = false;
}
}
- translateSelectedCells函数是主函数,处理翻译逻辑。首先检查是否有翻译任务在运行,然后获取选中的单元格内容。
- 如果选中单元格超过100个,函数会提示用户减少选择的单元格数量。
- 然后,逐个翻译选中的单元格内容,并将翻译结果填充回原单元格。
总结
通过AI Cell Translator脚本,用户可以高效地翻译 Univer Sheets 中的内容,极大提高了跨语言工作中的效率。通过简单的UI接口,用户无需离开表格界面就能完成翻译任务,减少了重复性的工作。
在生产环境中,建议用户替换API密钥并使用商业级翻译服务,以确保翻译的稳定性和准确性。如果你也需要在Univer Sheets中使用翻译功能,不妨试试这个强大的AI翻译工具!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。