113 lines
3.8 KiB
Python
113 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
修復缺失的翻譯快取記錄
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
# 設定編碼
|
|
sys.stdout.reconfigure(encoding='utf-8')
|
|
|
|
from app import create_app
|
|
from datetime import datetime
|
|
|
|
def fix_missing_translation_cache():
|
|
"""修復缺失的翻譯快取記錄"""
|
|
|
|
print("=" * 80)
|
|
print("修復缺失的翻譯快取記錄")
|
|
print("=" * 80)
|
|
|
|
app = create_app()
|
|
|
|
with app.app_context():
|
|
from sqlalchemy import text as sql_text
|
|
from app import db
|
|
|
|
# 需要補充的翻譯記錄
|
|
missing_translations = [
|
|
{
|
|
'source_text': '製程',
|
|
'target_language': 'ja',
|
|
'translated_text': 'プロセス', # 製程的日文翻譯
|
|
'source_language': 'zh'
|
|
}
|
|
]
|
|
|
|
print(f"準備添加 {len(missing_translations)} 筆翻譯記錄到快取...")
|
|
|
|
for translation in missing_translations:
|
|
source_text = translation['source_text']
|
|
target_language = translation['target_language']
|
|
translated_text = translation['translated_text']
|
|
source_language = translation['source_language']
|
|
|
|
# 檢查是否已存在
|
|
check_result = db.session.execute(sql_text("""
|
|
SELECT id FROM dt_translation_cache
|
|
WHERE source_text = :source AND target_language = :target
|
|
LIMIT 1
|
|
"""), {
|
|
'source': source_text,
|
|
'target': target_language
|
|
})
|
|
|
|
if check_result.fetchone():
|
|
print(f"⚠️ 翻譯記錄已存在: '{source_text}' -> {target_language}")
|
|
continue
|
|
|
|
# 計算source_text_hash
|
|
import hashlib
|
|
source_text_hash = hashlib.md5(source_text.encode('utf-8')).hexdigest()
|
|
|
|
# 插入新的翻譯記錄
|
|
insert_result = db.session.execute(sql_text("""
|
|
INSERT INTO dt_translation_cache
|
|
(source_text_hash, source_text, translated_text, source_language, target_language)
|
|
VALUES (:source_hash, :source, :translated, :source_lang, :target_lang)
|
|
"""), {
|
|
'source_hash': source_text_hash,
|
|
'source': source_text,
|
|
'translated': translated_text,
|
|
'source_lang': source_language,
|
|
'target_lang': target_language
|
|
})
|
|
|
|
print(f"✅ 已添加翻譯記錄: '{source_text}' -> '{translated_text}' ({target_language})")
|
|
|
|
# 提交變更
|
|
db.session.commit()
|
|
print(f"\n✅ 所有翻譯記錄已提交到資料庫")
|
|
|
|
# 驗證添加結果
|
|
print(f"\n驗證翻譯記錄:")
|
|
for translation in missing_translations:
|
|
source_text = translation['source_text']
|
|
target_language = translation['target_language']
|
|
|
|
verify_result = db.session.execute(sql_text("""
|
|
SELECT translated_text, created_at
|
|
FROM dt_translation_cache
|
|
WHERE source_text = :source AND target_language = :target
|
|
ORDER BY created_at DESC
|
|
LIMIT 1
|
|
"""), {
|
|
'source': source_text,
|
|
'target': target_language
|
|
})
|
|
|
|
row = verify_result.fetchone()
|
|
if row:
|
|
print(f"✅ '{source_text}' -> '{row[0]}' (時間: {row[1]})")
|
|
else:
|
|
print(f"❌ 驗證失敗: '{source_text}'")
|
|
|
|
print(f"\n" + "=" * 80)
|
|
print("修復完成!")
|
|
print("=" * 80)
|
|
|
|
if __name__ == "__main__":
|
|
fix_missing_translation_cache() |