如何在Excel和WPS中进行翻译

发布于:2025-02-13 ⋅ 阅读:(10) ⋅ 点赞:(0)

文档翻译我们可以用在线翻译工具,Excel工作表的翻译使用在线翻译工具就不是特别方便,那么如何快速进行翻译呢,我们今天介绍在不同的场景下如何利用翻译函数和Python程序来实现单元格的快速翻译。

一、在wps中进行翻译

WPS是我们常用的办公软件,由金山公司出品。自从有了wpsai后,金山公司推出了多项实用的功能,这其中就包括翻译功能,新版的WPS中已经有了翻译函数,支持使用wpsai.translate()来对单元格的内容进批量翻译,目前仅支持英译中和中译英。

利用WPSA进行翻译

例如,我们要把A列的中文内容翻译成B列,就可以采用下面的翻译方法。

=WPSAI.TRANSLATE(A1,"英文")

如果是中译英则可以使用

=WPSAI.TRANSLATE(A1,"中文")

而且这种方法无论是否是wpsai会员都可以使用。

二、在Excel中进行翻译

Excel 365中有翻译函数:translate(),但有时受网络影响,不是特别稳定,如下图所示。

在Excel 365中调用翻译函数

我们可以利用webservice()函数,采用下面的方法,调用有道翻译的内容,翻译完A1的内容后,再双击右下角十字进行批量填充。

=WEBSERVICE("http://e.anyoupin.cn/eh3/?youdao~" & A1)

这种方法的优势是可以自动检测A1是中文还是英文,所以相对简单方便。需要注意的是,此种方法仅能在Excel中使用,在WPS中无效。其翻译质量一般,可能比不上AI翻译,所以追求翻译质量的朋友就不要用这种方法。

在Excel中实现自动翻译

三、在Google Sheets中翻译

如果能够打开http://docs.google.com,那么就可以利用其自带的翻译函数:Googletranslate(单元格,语言1,语言2)进行翻译。这种方法调用的是内置的谷歌翻译,支持多个语种,但需要有特殊网络支持。

在Google Sheets中进行翻译

四、利用Python进行在线文档翻译

在WPS在线文档中已经支持调用Python,并且自带有requests等常用模型。所以,我们可以编写以下翻译代码,调用360翻译工具,免费进行单元格翻译。以下代码是对于Sheet1中A1:A2单元格内容的进行汉译英,如果是要英译汉则需要把data中的'eng'改为'1'即可。

import requests

url = 'https://fanyi.so.com/index/search'

# 读取Excel的A列内容
df = xl("$A$1:$A$2", headers=None, sheet_name="Sheet1")

# 初始化起始写入位置
start_row = 1

for word in df[0]:
  try:
    data = {
        'eng': '2',
        'validate': '',
        'ignore_trans': '0',
        'query': word,
    }

    headers = {
        'useragent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0',
        'pro': 'fanyi'
    }

    response = requests.post(url=url, headers=headers, data=data).json()

    # 获取翻译结果
    translated_text = response['data']['fanyi']
    # 将翻译结果写入B列对应的单元格
    write_xl(translated_text, f"$C${start_row}", sheet_name="Sheet1")

    # 增加行号以写入下一行
    start_row += 1
  except Exception as exc:
    print(exc)

五、调用翻译API进行翻译

如果是多个Excel文档的翻译,为了提高翻译速度,保证翻译质量,我们还是需要借助Python来调用机器翻译的api,这样可以更加快速地实现翻译,而且准确度相对较高。比如,我们可以利用Python调用小牛翻译的API,因为它每天都赠送20万的免费翻译额度,足够我们的日常翻译了。代码如下:

import openpyxl
import os
import json
import random
from hashlib import md5
import requests

apikey="<小牛机器翻译API>"
workbooks = [wb for wb in os.listdir(os.getcwd()) if wb.endswith('.xlsx')]
def lang():
    with open("config.txt","r",encoding="utf-8") as f:
        line=f.readlines()
        from_lang,to_lang=line[0].strip().split("|")
    return from_lang,to_lang

def get_lst():
    for workbook in workbooks:
        wb = openpyxl.load_workbook(workbook)
        ws = wb.active
        for cell_0, cell_1 in zip(ws['A'], ws['B']):
            if cell_0.value is not None:
                try:
                    cell_1.value = translate(str(cell_0.value).strip())
                except Exception as exc:
                    print(exc)
        wb.save(workbook)
        
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

def translate(sentence):
    from_lang, to_lang = lang()
    apikey="<小牛机器翻译的API>"
    url = 'http://api.niutrans.com/NiuTransServer/translation?'
    data = {"from": from_lang, "to": to_lang, "apikey": apikey, "src_text": sentence}
    res = requests.post(url, data = data)
    res_dict = json.loads(res.text)
    if "tgt_text" in res_dict:
        result = res_dict['tgt_text']
    else:
        result = ""
    return result
get_lst()

此外,还需要编写一个配置文件:config.txt,输入下面内容,并与py文件放在同一目录下面。这个文件的功能是设置翻译文本的语言对,如果是从英语翻译成中文就可以设置成:en|zh。其中第一个en也可以设置为auto,这样就可以自动检测语种了。

en|zh

六、学后总结

当前,翻译功能已经渗透到了各个办公软件当中,大家可以根据自己的使用场景的不同进行有效的选择。以上方较为简单实用,适合于对翻译质量要求不高的职场人士。如果想更加严谨和准确一些,我们还可以借用于CAT工具,或者大语言模型进行翻译,然后进行译后编辑和校对。

总之,单文件的翻译建议使用Excel和WPS中的翻译函数,多文档的翻译可以利用Python程序或者CAT工具调用机器翻译API,或者调用小牛机器翻译的文档翻译API接口进行翻译。