diff --git a/botdiscord/database.py b/botdiscord/database.py index 0ff184b..f0cf4b1 100644 --- a/botdiscord/database.py +++ b/botdiscord/database.py @@ -108,6 +108,15 @@ def init_db(): FOREIGN KEY (message_id) REFERENCES messages(message_id) ON DELETE CASCADE, UNIQUE KEY idx_msg_lang (message_id, target_lang)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4''') + # Tabla para traducciones de la interfaz web + cursor.execute('''CREATE TABLE IF NOT EXISTS ui_translations + (id INT AUTO_INCREMENT PRIMARY KEY, + original_text TEXT NOT NULL, + target_lang VARCHAR(10) NOT NULL, + translated_text TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY idx_ui_lang (original_text(255), target_lang)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4''') + conn.commit() cursor.close() else: @@ -379,3 +388,35 @@ def get_cached_translation(message_id: int, target_lang: str) -> str: row = c.fetchone() conn.close() return row[0] if row else None + +def get_ui_translation(text: str, target_lang: str) -> str: + db_type = get_db_type() + if db_type == "mysql": + conn = get_connection() + cursor = conn.cursor() + cursor.execute("SELECT translated_text FROM ui_translations WHERE original_text = %s AND target_lang = %s", (text, target_lang)) + row = cursor.fetchone() + cursor.close() + return row[0] if row else None + else: + conn = get_connection() + c = conn.cursor() + c.execute("SELECT translated_text FROM ui_translations WHERE original_text = ? AND target_lang = ?", (text, target_lang)) + row = c.fetchone() + conn.close() + return row[0] if row else None + +def save_ui_translation(text: str, target_lang: str, translated_text: str): + db_type = get_db_type() + if db_type == "mysql": + conn = get_connection() + cursor = conn.cursor() + cursor.execute("INSERT INTO ui_translations (original_text, target_lang, translated_text) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE translated_text = %s", (text, target_lang, translated_text, translated_text)) + conn.commit() + cursor.close() + else: + conn = get_connection() + c = conn.cursor() + c.execute("INSERT OR REPLACE INTO ui_translations (original_text, target_lang, translated_text) VALUES (?, ?, ?)", (text, target_lang, translated_text)) + conn.commit() + conn.close()