Cómo traducir a otro idioma una hoja de cálculo en Python

Publicado por sati en

Hoy voy a explicar cómo traducir un archivo xlsx a otro idioma, en este caso una hoja de cálculo a inglés.

Usaré Python 3.8 y lo primero que necesitamos es instalar los siguientes paquetes xlrd, xlwt y googletrans con: pip install xlrd xlwt googletrans

El proceso es el siguiente, con xlrd leeremos el archivo test.xlsx, con xlwt crearemos y guardaremos el archivo test2.xlsx mientras que con googletrans traduciremos cada celda de tipo string.

El código es el siguiente, leemos cada nueva hoja del documento y se crea una igual en el nuevo documento, leemos cada celda y si es de tipo str (texto o string) lo traducimos y guardamos en la misma posición y al final guardamos el nuevo documento.

#!/usr/bin/env python3
import xlrd
from xlwt import Workbook
from googletrans import Translator
translator = Translator()
# Archivo origen
location1 = (r'/home/user/Documents/test.xlsx')
# Archivo traducido
location2 = (r'/home/user/Documents/test2.xlsx')
# nuevo idioma
lang='en'
wb_w = Workbook()
wb_r = xlrd.open_workbook(location1)
# Obtenemos las hojas en el archivo original
for sheet in wb_r.sheets():
    # imprimimos el nombre de la hoja
    print(sheet.name)
    # creamos una hoja nueva en el nuevo documento 
    sheetw = wb_w.add_sheet(sheet.name)
    for column in range(sheet.nrows):
        for row in range(sheet.ncols):
            # obtenemos el valor de la celda
            value = sheet.cell_value(column, row)
            # si es de tipo str lo traducimos
            if type(value) == str:
                value = translator.translate(value, dest=lang).text
            if value:
                print(value)
                sheetw.write(column, row, value)
# creamos el nuevo documento traducido
wb_w.save(location2)

Nombraremos al archivo como xlsx-translate.py y de paso le damos permisos de ejecución chmod +x xlsx-translate.py y para ejecutarlo ./xlsx-translate.py

Al finalizar la ejecución tendremos un nuevo archivo text2.xlsx con el contenido traducido.

* Este método solo traduce el contenido de las celdas y no copia formatos, colores, funciones, …

No se han encontrado entradas similares.


0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *