2024-11-21|閱讀時間 ‧ 約 0 分鐘

[Python]將Word文件整個翻譯,繁體中文轉換越南文

最近來越南出差,遇到要將自己學習心得轉換成越南文給越南同事看。就研究了一下如何用Python來翻譯整個Word的文件,具越南同事說他有比對中文跟越南文意思差不多。

本文將教您如何使用 Python 的 python-docx googletrans 套件,快速完成 Word 文件的自動翻譯。

本教學以繁體中文翻譯為越南語為範例,並提供程式碼的逐步解說。

我測試版本為

python 3.11.3
python-docx version: 1.1.2
googletrans version: 4.0.0-rc.1

繁體中文範本

轉換成越南文


開始準備

在開始之前,請確保您已安裝以下必要的 Python 套件:

  1. python-docx:用於處理 Word 文件(.docx 格式)。
  2. googletrans:Google 翻譯 API 的非官方實現,用於進行多語言翻譯。
pip install python-docx
pip install googletrans==4.0.0-rc1


程式碼解析

以下是完整的程式碼,功能是將 Word 文件中的段落逐一翻譯並儲存為新文件。

主程式碼

from docx import Document
from googletrans import Translator

def translate_word_document(input_file, output_file, source_lang='zh-cn', target_lang='vi'):
# 加載翻譯器
translator = Translator()

# 打開 Word 文件
doc = Document(input_file)

# 遍歷每個段落
for paragraph in doc.paragraphs:
if paragraph.text.strip(): # 確保段落非空
try:
# 翻譯文字
translated_text = translator.translate(paragraph.text, src=source_lang, dest=target_lang).text
# 替換原段落的文字
paragraph.text = translated_text
except Exception as e:
print(f"翻譯失敗: {paragraph.text}, 錯誤信息: {e}")

# 保存翻譯後的文件
doc.save(output_file)
print(f"翻譯完成,已保存至 {output_file}")

# 使用範例
input_file = r"原始文件路徑.docx" # 替換為您的原始 Word 文件路徑
output_file = r"翻譯後文件路徑.docx" # 替換為您希望儲存的路徑
translate_word_document(input_file, output_file)

詳細解析

1. 載入所需的模組

from docx import Document
from googletrans import Translator
  • Documentpython-docx 提供的主要類,用於讀取和編輯 Word 文件。
  • Translatorgoogletrans 提供的翻譯器類,支援多種語言的翻譯。

2. 定義函式 translate_word_document

這個函式接收四個參數:

  • input_file:原始 Word 文件的路徑。
  • output_file:翻譯後文件的儲存路徑。
  • source_lang:源語言(預設為簡體中文 zh-cn)。
  • target_lang:目標語言(預設為越南語 vi)。

3. 初始化翻譯器

translator = Translator()
  • 建立一個翻譯器實例,稍後會用於翻譯文字。

4. 讀取 Word 文件

doc = Document(input_file)
  • 使用 Document 類開啟指定的 Word 文件。

5. 遍歷段落並翻譯

for paragraph in doc.paragraphs:
if paragraph.text.strip(): # 確保段落非空
try:
translated_text = translator.translate(paragraph.text, src=source_lang, dest=target_lang).text
paragraph.text = translated_text
except Exception as e:
print(f"翻譯失敗: {paragraph.text}, 錯誤信息: {e}")
  • 段落過濾:僅翻譯非空段落(跳過空白段落)。
  • 翻譯文字:透過 translator.translate 翻譯段落文字,指定源語言與目標語言。
  • 錯誤處理:若翻譯失敗,程式會列印錯誤訊息並繼續處理其他段落。

6. 儲存翻譯後的文件

doc.save(output_file)
  • 翻譯完成後,將結果存為新 Word 文件。

如何使用

  1. 準備原始文件
    將您要翻譯的 Word 文件放置在指定目錄,記下其路徑(例如:原始文件路徑.docx)。
  2. 執行程式碼
    input_fileoutput_file 替換為實際的文件路徑後執行程式碼。

注意事項

  1. 翻譯品質
    googletrans 使用 Google Translate 進行翻譯,適用於一般情境,但專業文件可能需要進一步校對。
  2. API 限制
    googletrans 非官方 API,可能受限於 Google Translate 的反爬機制,若出現問題建議使用官方 API。
  3. 格式損失
    目前程式僅翻譯純文字,對於表格、圖片、超連結等複雜格式的支援有限。


分享至
成為作者繼續創作的動力吧!
主要寫的內容跟程式設計相關,透過分享的方式讓自己持續成長精進,也希望分享的內容對大家有幫助,持續學習,讓自己有選擇的實力。
© 2024 vocus All rights reserved.