import os
import sys
from typing import Dict, Any, Optional


# 导入翻译函数
from .translator import translate


class TranslationService:
    """翻译服务类，用于处理各种翻译需求"""

    @staticmethod
    def create_prompt(
        content: str,
        target_lang: str,
        use_case: str,
        style: str,
        prompt_type: str = "general",
        keep_terms_desc: str = "核心术语",
    ) -> str:
        """
        创建翻译提示

        Args:
            content: 待翻译内容
            target_lang: 目标语言
            use_case: 使用场景
            style: 翻译风格
            prompt_type: 提示类型，可选值: "general", "tool_name", "tool_description"
            keep_terms_desc: 保留术语的描述

        Returns:
            str: 格式化的翻译提示
        """
        if prompt_type == "tool_name":
            keep_terms_desc = "核心术语（如 小写，词语需要用下划线连接）"
        elif prompt_type == "tool_description":
            keep_terms_desc = "核心术语（这是一段话）"

        return f"""
角色：专业本地化翻译专家
任务：将以下内容翻译为{target_lang}（目标用途：{use_case}）
要求：
1. 仅返回译文，不含解释或原文；
2. 保留{keep_terms_desc}；
3. 符合{style}风格；
4. 特殊符号保持原样。

示例输出格式：
Translated Text

待翻译内容：
{content}
"""

    @staticmethod
    def translate_text(
        content: str,
        target_lang: str,
        use_case: str = "",
        style: str = "正式且符合技术品牌调性",
        prompt_type: str = "general",
    ) -> Dict[str, Any]:
        """
        翻译文本

        Args:
            content: 待翻译内容
            target_lang: 目标语言
            use_case: 使用场景，默认为空
            style: 翻译风格，默认为"正式且符合技术品牌调性"
            prompt_type: 提示类型，可选值: "general", "tool_name", "tool_description"

        Returns:
            Dict: 包含翻译结果的字典
        """
        prompt = TranslationService.create_prompt(
            content=content,
            target_lang=target_lang,
            use_case=use_case,
            style=style,
            prompt_type=prompt_type,
        )

        try:
            result = translate(prompt, target_lang)
            return result
        except Exception as e:
            print(f"翻译出错: {str(e)}")
            return {"translated_text": "", "error": str(e)}

    @staticmethod
    def translate_tool_name(
        name: str,
        target_lang: str = "英语",
        use_case: str = "工具名称",
        style: str = "正式且符合技术品牌调性，大模型能理解",
    ) -> str:
        """
        翻译工具名称的便捷方法

        Returns:
            str: 翻译后的工具名称
        """
        result = TranslationService.translate_text(
            content=name,
            target_lang=target_lang,
            use_case=use_case,
            style=style,
            prompt_type="tool_name",
        )
        return result.get("translated_text", "")

    @staticmethod
    def translate_tool_description(
        description: str,
        target_lang: str = "英语",
        use_case: str = "工具描述",
        style: str = "正式且符合技术品牌调性，大模型能理解",
    ) -> str:
        """
        翻译工具描述的便捷方法

        Returns:
            str: 翻译后的工具描述
        """
        result = TranslationService.translate_text(
            content=description,
            target_lang=target_lang,
            use_case=use_case,
            style=style,
            prompt_type="tool_description",
        )
        return result.get("translated_text", "")


def translation_example():
    """翻译功能使用示例"""

    # 示例1: 翻译工具名称
    tool_name = "万川AI新媒体平台【测试环境】"
    translated_name = TranslationService.translate_tool_name(tool_name)
    print(f"工具名称翻译: {translated_name}")

    # 示例2: 翻译工具描述
    description = "21日，辛柏青发布讣告宣布妻子朱媛媛抗癌五年后离世。此前在一次路演现场，当观众问及朱媛媛时辛柏青2秒停顿藏着"
    translated_desc = TranslationService.translate_tool_description(description)
    print(f"工具描述翻译: {translated_desc}")


if __name__ == "__main__":
    translation_example()
