Skip to content

Instantly share code, notes, and snippets.

@keoy7am
Last active April 24, 2023 05:07
Show Gist options
  • Save keoy7am/ede03eeab687f2d7c4b3214af5377b6d to your computer and use it in GitHub Desktop.
Save keoy7am/ede03eeab687f2d7c4b3214af5377b6d to your computer and use it in GitHub Desktop.
基於OpenCC的全資料夾自動翻譯python腳本
# coding: utf-8
import os
####################################################
# 若 src_folder == dst_folder 則會直接將原始檔案覆蓋 #
# 需注意是否有程式(如:vsc)在使用原始檔案,若有,請先關閉 #
####################################################
src_folder = "I:\git\Repo"
dst_folder = "I:\git\Repo"
# dst_folder = "I:\git\Repo\src_cc"
cc_json = r"C:\Users\Usr\Downloads\OpenCC\build\share\opencc\s2twp.json" # OpenCC 配置文件
cc_exe_path = r"C:\Users\Usr\Downloads\OpenCC\build\bin\opencc.exe" # OpenCC 執行檔路徑
can_copy = src_folder != dst_folder # 是否可以直接複製檔案
### 自定義轉換檔案類型 ###
# allow_ext = ['.js', '.jsx', '.ts', '.tsx', '.json', '.html', '.css', '.scss', '.less', '.md', '.txt','.vue'] # vue
allow_ext = ['.go', '.sql', '.yam', '.json', '.html', '.css', '.scss', '.less', '.md', '.txt',] # go
if not os.path.exists(dst_folder):
print('dst_folder created!!')
os.makedirs(dst_folder)
for root, dirs, files in os.walk(src_folder):
for d in dirs:
dir = os.path.join(root, d)
dst_dir = dir.replace(src_folder, dst_folder)
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
print('created: ', dst_dir)
for f in files:
src_file = os.path.join(root, f)
dst_file = os.path.join(root.replace(src_folder, dst_folder), f)
if os.path.splitext(src_file)[1] in allow_ext:
print('convert: ', src_file, ' to ', dst_file)
os.system(f'{cc_exe_path} -i {src_file} -o {dst_file} -c {cc_json}')
elif can_copy:
print('copy: ', src_file, ' to ', dst_file)
os.system(f'copy {src_file} {dst_file}')
print('finished convert!')
if can_copy:
print('------------------------------------')
os.rename(src_folder, os.path.join(src_folder + '_original'))
os.rename(dst_folder, src_folder)
print(f'rename {src_folder} to {src_folder + "_original"}')
print(f'rename {dst_folder} to {src_folder}')
print('------------------------------------')
print('finished rename!')
print('script finished!')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment