删除多余的临时文件
This commit is contained in:
+69
-69
@@ -1,101 +1,101 @@
|
||||
{
|
||||
"PromptExpand": {
|
||||
"display_name": "✨ توسيع الموجه",
|
||||
"description": "تحسين وتوسيع الموجه باستخدام LLM",
|
||||
"display_name": "✨التحسين الفوري",
|
||||
"description": "قم بتعزيز موجهك باستخدام LLM",
|
||||
"inputs": {
|
||||
"rule": {
|
||||
"name": "قاعدة",
|
||||
"tooltip": "قاعدة محددة مسبقًا لتوسيع الموجه"
|
||||
"tooltip": "قاعدة محددة مسبقًا للتحسين الفوري"
|
||||
},
|
||||
"custom_rule": {
|
||||
"name": "قاعدة مخصصة",
|
||||
"tooltip": "تفعيل إدخال قاعدة مخصصة أدناه"
|
||||
"name": "القاعدة المخصصة",
|
||||
"tooltip": "تمكين إدخال القاعدة المخصصة أدناه"
|
||||
},
|
||||
"custom_rule_content": {
|
||||
"name": "محتوى القاعدة المخصصة",
|
||||
"tooltip": "أدخل قاعدتك المخصصة هنا؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "أدخل القاعدة المخصصة الخاصة بك هنا؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"user_prompt": {
|
||||
"name": "موجه المستخدم",
|
||||
"tooltip": "الموجه المراد تحسينه؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "مطالبتك بالتحسين؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"llm_service": {
|
||||
"name": "خدمة LLM",
|
||||
"tooltip": "اختر خدمة LLM"
|
||||
"tooltip": "حدد خدمة LLM"
|
||||
},
|
||||
"ollama_auto_unload": {
|
||||
"name": "إلغاء التحميل التلقائي",
|
||||
"tooltip": "إلغاء تحميل محرك Ollama تلقائيًا"
|
||||
"name": "التفريغ التلقائي",
|
||||
"tooltip": "التفريغ التلقائي لنموذج أولاما"
|
||||
},
|
||||
"source_text": {
|
||||
"name": "النص المصدر",
|
||||
"tooltip": "نص إدخال اختياري؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "نص الإدخال الاختياري؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"name": "مخرجات الموجه",
|
||||
"tooltip": "نتيجة التحسين"
|
||||
"name": "الإخراج الفوري",
|
||||
"tooltip": "نتيجة التعزيز"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ImageCaptionNode": {
|
||||
"display_name": "✨ تعليق الصورة",
|
||||
"description": "إنشاء تعليق للصورة باستخدام VLM",
|
||||
"display_name": "✨تعليق الصورة",
|
||||
"description": "إنشاء تسمية توضيحية للصورة باستخدام VLM",
|
||||
"inputs": {
|
||||
"image": {
|
||||
"name": "صورة",
|
||||
"tooltip": "إدخال صورة"
|
||||
"tooltip": "صورة الإدخال"
|
||||
},
|
||||
"rule": {
|
||||
"name": "قاعدة",
|
||||
"tooltip": "قاعدة محددة مسبقًا لإنشاء التعليق"
|
||||
"tooltip": "قاعدة محددة مسبقًا للتسميات التوضيحية"
|
||||
},
|
||||
"custom_rule": {
|
||||
"name": "قاعدة مخصصة",
|
||||
"tooltip": "تفعيل إدخال قاعدة مخصصة"
|
||||
"name": "القاعدة المخصصة",
|
||||
"tooltip": "تمكين إدخال القاعدة المخصصة"
|
||||
},
|
||||
"custom_rule_content": {
|
||||
"name": "محتوى القاعدة المخصصة",
|
||||
"tooltip": "محتوى القاعدة المخصصة؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "محتوى القاعدة المخصصة؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"user_prompt": {
|
||||
"name": "موجه المستخدم",
|
||||
"tooltip": "أدخل موجهات إضافية هنا، ترسل مع القاعدة؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "أدخل مطالبات إضافية هنا، مرسلة مع القاعدة؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"vlm_service": {
|
||||
"name": "خدمة VLM",
|
||||
"tooltip": "اختر خدمة VLM"
|
||||
"tooltip": "حدد خدمة VLM"
|
||||
},
|
||||
"ollama_auto_unload": {
|
||||
"name": "إلغاء التحميل التلقائي",
|
||||
"tooltip": "إلغاء تحميل محرك Ollama تلقائيًا"
|
||||
"name": "التفريغ التلقائي",
|
||||
"tooltip": "التفريغ التلقائي لنموذج أولاما"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"name": "مخرجات الموجه",
|
||||
"tooltip": "التعليق المنشأ (مدمج للعمليات المجمعة)"
|
||||
"name": "الإخراج الفوري",
|
||||
"tooltip": "التسمية التوضيحية التي تم إنشاؤها (مدمجة للدفعة)"
|
||||
},
|
||||
"1": {
|
||||
"name": "قائمة الموجهات",
|
||||
"tooltip": "قائمة التعليقات لكل صورة في العملية المجمعة"
|
||||
"name": "القائمة السريعة",
|
||||
"tooltip": "قائمة التسميات التوضيحية لكل صورة دفعة واحدة"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PromptTranslate": {
|
||||
"display_name": "✨ ترجمة الموجه",
|
||||
"description": "ترجمة الموجه بين اللغات",
|
||||
"display_name": "✨ترجمة سريعة",
|
||||
"description": "ترجمة موجه بين اللغات",
|
||||
"inputs": {
|
||||
"source_text": {
|
||||
"name": "النص المصدر",
|
||||
"tooltip": "النص المراد ترجمته؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "نص للترجمة؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"target_language": {
|
||||
"name": "اللغة المستهدفة",
|
||||
"tooltip": "اللغة المستهدفة للترجمة",
|
||||
"options": {
|
||||
"English": "الإنجليزية",
|
||||
"English": "إنجليزي",
|
||||
"Chinese": "الصينية"
|
||||
}
|
||||
},
|
||||
@@ -104,74 +104,74 @@
|
||||
"tooltip": "اختر خدمة الترجمة"
|
||||
},
|
||||
"ollama_auto_unload": {
|
||||
"name": "إلغاء التحميل التلقائي",
|
||||
"tooltip": "إلغاء تحميل محرك Ollama تلقائيًا"
|
||||
"name": "التفريغ التلقائي",
|
||||
"tooltip": "التفريغ التلقائي لنموذج أولاما"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"name": "مخرجات الموجه",
|
||||
"tooltip": "نتيجة الترجمة"
|
||||
"name": "الإخراج الفوري",
|
||||
"tooltip": "نتيجة مترجمة"
|
||||
}
|
||||
}
|
||||
},
|
||||
"VideoCaptionNode": {
|
||||
"display_name": "✨ تعليق الفيديو",
|
||||
"description": "إنشاء تعليق للفيديو باستخدام VLM",
|
||||
"display_name": "✨شرح الفيديو",
|
||||
"description": "إنشاء تسمية توضيحية للفيديو باستخدام VLM",
|
||||
"inputs": {
|
||||
"rule": {
|
||||
"name": "قاعدة",
|
||||
"tooltip": "قاعدة محددة مسبقًا لتعليق الفيديو"
|
||||
"tooltip": "قاعدة محددة مسبقًا للتسمية التوضيحية للفيديو"
|
||||
},
|
||||
"custom_rule": {
|
||||
"name": "قاعدة مخصصة",
|
||||
"tooltip": "تفعيل إدخال قاعدة مخصصة"
|
||||
"name": "القاعدة المخصصة",
|
||||
"tooltip": "تمكين إدخال القاعدة المخصصة"
|
||||
},
|
||||
"custom_rule_content": {
|
||||
"name": "محتوى القاعدة المخصصة",
|
||||
"tooltip": "محتوى القاعدة المخصصة؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "محتوى القاعدة المخصصة؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"user_prompt": {
|
||||
"name": "موجه المستخدم",
|
||||
"tooltip": "أدخل موجهات إضافية هنا، ترسل مع القاعدة؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "أدخل مطالبات إضافية هنا، مرسلة مع القاعدة؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"vlm_service": {
|
||||
"name": "خدمة VLM",
|
||||
"tooltip": "اختر خدمة VLM"
|
||||
"tooltip": "حدد خدمة VLM"
|
||||
},
|
||||
"sampling_mode": {
|
||||
"name": "وضع العينة",
|
||||
"tooltip": "اختر تلقائي (منتظم) لأخذ عينات منتظمة بناءً على طول الفيديو. الوضع اليدوي (فهارس) يسمح باختيار الإطارات يدوياً.",
|
||||
"name": "وضع أخذ العينات",
|
||||
"tooltip": "حدد تلقائي (موحد) لأخذ عينات من الإطارات بشكل موحد بناءً على طول الفيديو.يسمح الوضع اليدوي (المؤشرات) بتحديد الإطار يدويًا عبر الزر \"🎬Select Frames for Captioning\"",
|
||||
"options": {
|
||||
"Auto (Uniform)": "تلقائي (منتظم)",
|
||||
"Manual (Indices)": "يدوي (فهارس)"
|
||||
"Auto (Uniform)": "تلقائي (موحد)",
|
||||
"Manual (Indices)": "دليل (المؤشرات)"
|
||||
}
|
||||
},
|
||||
"frame_count": {
|
||||
"name": "عدد الإطارات",
|
||||
"tooltip": "عدد الإطارات المراد أخذ عينة منها (الوضع التلقائي)"
|
||||
"tooltip": "عدد الإطارات المطلوب أخذ عينات منها (الوضع التلقائي)"
|
||||
},
|
||||
"manual_indices": {
|
||||
"name": "فهارس يدوية",
|
||||
"tooltip": "فهارس إطارات محددة (الوضع اليدوي)"
|
||||
"name": "المؤشرات اليدوية",
|
||||
"tooltip": "مؤشرات إطار محددة (الوضع اليدوي)"
|
||||
},
|
||||
"ollama_auto_unload": {
|
||||
"name": "إلغاء التحميل التلقائي",
|
||||
"tooltip": "إلغاء تحميل محرك Ollama تلقائيًا"
|
||||
"name": "التفريغ التلقائي",
|
||||
"tooltip": "التفريغ التلقائي لنموذج أولاما"
|
||||
},
|
||||
"video": {
|
||||
"name": "فيديو",
|
||||
"tooltip": "إدخال فيديو"
|
||||
"tooltip": "إدخال الفيديو"
|
||||
},
|
||||
"image_sequence": {
|
||||
"name": "سلسلة الصور",
|
||||
"tooltip": "تسلسل الصور المدخلة"
|
||||
"name": "الصور",
|
||||
"tooltip": "إدخال تسلسل الصور"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"name": "مخرجات الموجه",
|
||||
"tooltip": "تعليق الفيديو المنشأ"
|
||||
"name": "الإخراج الفوري",
|
||||
"tooltip": "تم إنشاء تسمية توضيحية للفيديو"
|
||||
},
|
||||
"1": {
|
||||
"name": "إطارات المعاينة",
|
||||
@@ -180,34 +180,34 @@
|
||||
}
|
||||
},
|
||||
"KontextPresetNode": {
|
||||
"display_name": "✨ إعداد مسبق Kontext",
|
||||
"description": "إنشاء تعليمات إبداعية باستخدام الإعدادات المسبقة Kontext",
|
||||
"display_name": "✨الإعداد المسبق للنص",
|
||||
"description": "قم بإنشاء تعليمات إبداعية باستخدام إعدادات Kontext المسبقة",
|
||||
"inputs": {
|
||||
"image": {
|
||||
"name": "صورة",
|
||||
"tooltip": "إدخال صورة"
|
||||
"tooltip": "صورة الإدخال"
|
||||
},
|
||||
"kontext_preset": {
|
||||
"name": "إعداد مسبق",
|
||||
"tooltip": "اختر إعداد مسبق Kontext"
|
||||
"name": "محددة مسبقا",
|
||||
"tooltip": "حدد الإعداد المسبق لـ Kontext"
|
||||
},
|
||||
"user_prompt": {
|
||||
"name": "موجه المستخدم",
|
||||
"tooltip": "أدخل موجهات إضافية هنا، ترسل مع الإعداد المسبق؛ 💡 أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
"tooltip": "أدخل مطالبات إضافية هنا، تم إرسالها مع الإعداد المسبق؛💡أدخل كلمة التشغيل [R] لفرض إعادة التنفيذ"
|
||||
},
|
||||
"vlm_service": {
|
||||
"name": "خدمة VLM",
|
||||
"tooltip": "اختر خدمة VLM"
|
||||
"tooltip": "حدد خدمة VLM"
|
||||
},
|
||||
"ollama_auto_unload": {
|
||||
"name": "إلغاء التحميل التلقائي",
|
||||
"tooltip": "إلغاء تحميل محرك Ollama تلقائيًا"
|
||||
"name": "التفريغ التلقائي",
|
||||
"tooltip": "التفريغ التلقائي لنموذج أولاما"
|
||||
}
|
||||
},
|
||||
"outputs": {
|
||||
"0": {
|
||||
"name": "مخرجات الموجه",
|
||||
"tooltip": "التعليمات الإبداعية المنشأة"
|
||||
"name": "الإخراج الفوري",
|
||||
"tooltip": "تعليمات إبداعية تم إنشاؤها"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+366
-366
@@ -1,367 +1,367 @@
|
||||
{
|
||||
"✨提示词小助手": "✨Prompt Assistant",
|
||||
"小助手功能开关": "Feature Toggles",
|
||||
"总开关": "Master Switch",
|
||||
"系统": "System",
|
||||
"界面语言": "Interface Language",
|
||||
"中文": "Chinese",
|
||||
"提示词小助手创建方式": "Prompt Assistant Creation",
|
||||
"图像小助手创建方式": "Image Assistant Creation",
|
||||
"界面": "Interface",
|
||||
"提示词小助手布局": "Prompt Assistant Layout",
|
||||
"图像小助手布局": "Image Assistant Layout",
|
||||
" 配置": " Configuration",
|
||||
"API配置": "API Configuration",
|
||||
"翻译": "Translation",
|
||||
"提示词优化": "Prompt Optimization",
|
||||
"图像反推": "Image Caption",
|
||||
"历史功能": "History",
|
||||
"标签功能": "Tags",
|
||||
"提示词优化功能": "Prompt Optimization",
|
||||
"翻译功能": "Translation",
|
||||
" 翻译功能设置": " Translation Settings",
|
||||
"翻译缓存": "Translation Cache",
|
||||
"混合语言缓存": "Mixed-language Cache",
|
||||
"混合语言规则": "Mixed-language Rule",
|
||||
"标点处理": "Punctuation",
|
||||
"空格处理": "Spaces",
|
||||
"点号处理": "Dots",
|
||||
"换行处理": "Newlines",
|
||||
"节点信息翻译": "Node Help Translation",
|
||||
"日志级别": "Log Level",
|
||||
"终端日志": "Terminal Logs",
|
||||
"流式体验": "Streaming",
|
||||
"小助手图标": "Assistant Icon",
|
||||
"清理缓存": "Clear Cache",
|
||||
" ✨提示词小助手": " ✨Prompt Assistant",
|
||||
"规则": "Rules",
|
||||
"启用小助手": "Enable Assistant",
|
||||
"小助手创建方式(提示词)": "Prompt Assistant Creation Mode",
|
||||
"小助手创建方式(图像反推)": "Image Assistant Creation Mode",
|
||||
"小助手布局(提示词)": "Prompt Assistant Layout",
|
||||
"小助手布局(图像反推)": "Image Assistant Layout",
|
||||
"百度和大语言模型API配置": "Baidu and LLM API Configuration",
|
||||
"选择翻译服务": "Select Translation Service",
|
||||
"选择提示词优化服务": "Select Prompt Optimization Service",
|
||||
"选择图像反推服务": "Select Image Caption Service",
|
||||
"启用历史功能": "Enable History",
|
||||
"启用标签工具": "Enable Tag Tools",
|
||||
"启用提示词优化功能": "Enable Prompt Optimization",
|
||||
"启用翻译功能": "Enable Translation",
|
||||
"使用翻译缓存": "Use Translation Cache",
|
||||
"混合语言翻译进行缓存": "Cache Mixed-language Translation",
|
||||
"混合语言翻译规则": "Mixed-language Translation Rule",
|
||||
"始终使用半角标点符号": "Always Use Half-width Punctuation",
|
||||
"自动移除多余空格": "Automatically Remove Extra Spaces",
|
||||
"移除多余连续点号": "Remove Repeated Dots",
|
||||
"保留换行符": "Preserve Newlines",
|
||||
"启用图像反推功能": "Enable Image Caption",
|
||||
"启用节点信息翻译": "Enable Node Help Translation",
|
||||
"控制台流式输出进度日志": "Console Streaming Progress Logs",
|
||||
"流式输出开关": "Enable Streaming Output",
|
||||
" 小助手图标不透明度": " Assistant Icon Opacity",
|
||||
"清理历史、标签、翻译缓存": "Clear History, Tags, and Translation Cache",
|
||||
"关于": "About",
|
||||
"提示词优化和反推规则修改": "Edit Prompt Optimization and Image Caption Rules",
|
||||
"切换插件界面语言,修改后自动刷新页面生效": "Switch extension UI language; page reloads automatically to apply changes.",
|
||||
"自动创建": "Auto",
|
||||
"选中节点时创建": "Create On Selection",
|
||||
"右中(垂直)": "Right Middle (Vertical)",
|
||||
"右下(横向)": "Bottom Right (Horizontal)",
|
||||
"右下(垂直)": "Bottom Right (Vertical)",
|
||||
"下中(横向)": "Bottom Middle (Horizontal)",
|
||||
"左下(横向)": "Bottom Left (Horizontal)",
|
||||
"横": "Horizontal",
|
||||
"竖": "Vertical",
|
||||
"翻译成英文": "Translate to English",
|
||||
"翻译成中文": "Translate to Chinese",
|
||||
"自动翻译小比例语言": "Auto Translate Minority Language",
|
||||
"自动翻译大比例语言": "Auto Translate Majority Language",
|
||||
"错误日志": "Error Only",
|
||||
"基础日志": "Basic",
|
||||
"详细日志": "Verbose",
|
||||
"加载中...": "Loading...",
|
||||
"暂无可用服务": "No available services",
|
||||
"加载失败": "Load failed",
|
||||
"打开配置失败": "Failed to open configuration",
|
||||
"打开配置弹窗过程中发生错误": "An error occurred while opening the configuration dialog",
|
||||
"提示词小助手已启用": "Prompt Assistant enabled",
|
||||
"提示词小助手已禁用": "Prompt Assistant disabled",
|
||||
"API管理器": "API Manager",
|
||||
"清理所有缓存": "Clear all cache",
|
||||
"规则管理器": "Rules Manager",
|
||||
"关闭后,提示词小助手所有功能将禁用": "After disabling, all Prompt Assistant features will be turned off.",
|
||||
"自动创建:节点创建或加载时自动显示小助手;选中节点时创建:仅选中节点时显示": "Auto: show assistant when nodes are created/loaded; Selection: show only when a node is selected.",
|
||||
"自动创建:节点创建或加载时自动显示反推小助手;选中节点时创建:仅选中节点时显示": "Auto: show image assistant when nodes are created/loaded; Selection: show only when selected.",
|
||||
"设置提示词小助手在输入框周围的布局和展开方向": "Set the Prompt Assistant layout and expansion direction around input fields.",
|
||||
"设置图像反推小助手的展开方向(位置固定在左下角)": "Set image assistant expansion direction (fixed at bottom-left).",
|
||||
"配置或修改API信息": "Configure or edit API information.",
|
||||
"选择一个服务商用于翻译,也可以通过右键翻译按钮来切换": "Select a provider for translation, or switch from the translation button context menu.",
|
||||
"选择一个服务商用于提示词优化,也可以通过右键提示词优化按钮来切换": "Select a provider for prompt optimization, or switch from the prompt button context menu.",
|
||||
"选择一个服务商用于图像反推,也可以通过右键反推按钮来切换": "Select a provider for image caption, or switch from the caption button context menu.",
|
||||
"开启或关闭历史、撤销、重做功能": "Enable or disable history, undo, and redo.",
|
||||
"开启或关闭标签工具功能": "Enable or disable tag tools.",
|
||||
"开启或关闭提示词优化功能": "Enable or disable prompt optimization.",
|
||||
"开启或关闭翻译功能": "Enable or disable translation.",
|
||||
"开启后,如果翻译内容翻译过,则使用历史翻译结果,避免相同内容重复翻译改变原意。如果需要重新翻译,请随便加一个空格即可跳过缓存。": "When enabled, previously translated text reuses cached results to avoid meaning drift; add a space to bypass cache.",
|
||||
"关闭时,中英文混合内容的翻译结果不会写入缓存,避免污染缓存。开启后会正常缓存。": "When disabled, mixed Chinese/English translations are not cached to avoid cache pollution.",
|
||||
"根据个人使用偏好设置混合中英文内容的翻译规则": "Set translation rules for mixed Chinese/English text by preference.",
|
||||
"打开后,翻译结果会自动将中文标点符号替换成英文标点符号": "When enabled, Chinese punctuation is converted to English punctuation.",
|
||||
"打开后,翻译结果会自动移除多余空格": "When enabled, extra spaces are removed automatically.",
|
||||
"打开后,翻译结果会将多余的“......”统一为“...”": "When enabled, repeated dots like “......” are normalized to “...”.",
|
||||
"打开后,翻译结果会尽量保持原文的换行,避免翻译后丢失段落": "When enabled, line breaks are preserved as much as possible.",
|
||||
"开启或关闭图像反推提示词功能": "Enable or disable image caption prompting.",
|
||||
"开启或关闭ComfyUI侧边栏节点帮助文档的翻译功能": "Enable or disable translation for ComfyUI sidebar node help docs.",
|
||||
"设置日志输出级别:错误日志(仅错误)、基础日志(错误+基础信息)、详细日志(错误+基础信息+调试信息)": "Set log level: Error only, Basic, or Verbose.",
|
||||
"开启后,控制台会显示流式输出过程,在某些终端可能导致刷屏;关闭后只显示静态的'生成中...'。": "When enabled, streaming progress is printed in console; disable to only show static 'Generating...'.",
|
||||
"开启时,翻译、扩写、识别等功能将以逐字生成的流式效果显示;关闭时则恢复为全部生成后一次性显示的阻塞模式。": "When enabled, features use token streaming; when disabled, output appears after full generation.",
|
||||
"设置折叠后小助手图标的不透明度": "Set assistant icon opacity when collapsed.",
|
||||
"清理所有缓存,包括历史记录、标签、翻译缓存、节点文档翻译缓存": "Clear all caches including history, tags, translation cache, and node-help translation cache.",
|
||||
"可以自定义提示词优化规则,和反推提示词规则,使得提示词生成更加符合你的需求": "Customize prompt optimization and caption rules to better match your needs.",
|
||||
"保存": "Save",
|
||||
"添加": "Add",
|
||||
"取消": "Cancel",
|
||||
"保存失败": "Save failed",
|
||||
"编辑失败": "Edit failed",
|
||||
"确认操作": "Confirm",
|
||||
"返回": "Back",
|
||||
"关闭": "Close",
|
||||
"配置已修改,是否保存?": "Configuration changed. Save now?",
|
||||
"创建弹窗失败": "Failed to create dialog",
|
||||
"创建设置弹窗过程中发生错误": "An error occurred while creating the dialog",
|
||||
"暂无选项": "No options",
|
||||
"清理已清理完成": "Cleanup completed",
|
||||
"操作失败": "Operation failed",
|
||||
"操作过程中发生错误": "An error occurred during the operation",
|
||||
"确认": "Confirm",
|
||||
"搜索...": "Search...",
|
||||
"已选 0 项": "Selected 0 items",
|
||||
"确定": "OK",
|
||||
"你仍然可以在搜索框中手动输入模型名称": "You can still type a model name manually in the search box.",
|
||||
"已选": "Selected",
|
||||
"项": "items",
|
||||
"未找到匹配项": "No matches found",
|
||||
"暂无可用项": "No available items",
|
||||
"数据格式错误": "Invalid data format",
|
||||
"未知错误": "Unknown error",
|
||||
"配置已保存": "Configuration saved",
|
||||
"所有更改已成功保存到服务器": "All changes were saved to the server successfully.",
|
||||
"无更改": "No changes",
|
||||
"配置没有未保存的更改": "There are no unsaved changes.",
|
||||
"提示词优化规则": "Prompt Optimization Rules",
|
||||
"提示词优化润色提示词": "Prompt optimization refinement prompts",
|
||||
"添加提示词优化规则": "Add prompt optimization rule",
|
||||
"中文反推": "Chinese Caption",
|
||||
"图像反推中文提示词": "Chinese image caption prompts",
|
||||
"添加中文反推规则": "Add Chinese caption rule",
|
||||
"英文反推": "English Caption",
|
||||
"图像反推英文提示词": "English image caption prompts",
|
||||
"添加英文反推规则": "Add English caption rule",
|
||||
"视频反推": "Video Caption",
|
||||
"将视频反推提示词": "Video caption prompts",
|
||||
"添加视频反推规则": "Add video caption rule",
|
||||
"翻译规则": "Translation Rules",
|
||||
"大模型翻译规则": "LLM Translation Rules",
|
||||
"状态": "Status",
|
||||
"规则名称": "Rule Name",
|
||||
"规则内容": "Rule Content",
|
||||
"操作": "Actions",
|
||||
"翻译规则仅支持编辑,不支持新增和删除": "Translation rules support edit only; adding and deleting are disabled.",
|
||||
"中文反推规则": "Chinese caption rules",
|
||||
"英文反推规则": "English caption rules",
|
||||
"编辑翻译规则": "Edit translation rule",
|
||||
"请输入翻译规则内容": "Please enter translation rule content",
|
||||
"编辑": "Edit",
|
||||
"删除": "Delete",
|
||||
"编辑规则": "Edit Rule",
|
||||
"添加规则": "Add Rule",
|
||||
"请输入规则名称": "Please enter rule name",
|
||||
"请输入规则内容": "Please enter rule content",
|
||||
"规则类型": "Rule Type",
|
||||
"反推(中文)": "Caption (Chinese)",
|
||||
"反推(英文)": "Caption (English)",
|
||||
"分类": "Category",
|
||||
"输入或选择分类(可留空)": "Type or choose a category (optional)",
|
||||
"暂无分类": "No categories",
|
||||
"小助手上显示": "Show in assistant",
|
||||
"节点上显示": "Show on node",
|
||||
"规则名称和内容不能为空": "Rule name and content cannot be empty.",
|
||||
"已存在": "already exists",
|
||||
"当前使用中,点击取消激活": "Currently active. Click to deactivate.",
|
||||
"未激活,点击激活": "Inactive. Click to activate.",
|
||||
"规则内容不能为空": "Rule content cannot be empty.",
|
||||
"确认删除": "Confirm deletion",
|
||||
"确定要删除规则": "Delete rule",
|
||||
"吗?": "?",
|
||||
"免责声明:本插件仅提供 API 调用工具,第三方服务责任与本插件无关,插件所涉用户配置信息均存储于本地。对于因账号使用产生的任何问题,本插件不承担责任!": "Disclaimer: This plugin only provides API tooling. Third-party services are independent, and user config data stays local.",
|
||||
"请填写配置信息": "Please complete the configuration details.",
|
||||
"百度翻译配置已保存": "Baidu translation config saved",
|
||||
"百度翻译": "Baidu Translate",
|
||||
"机器翻译": "Machine Translation",
|
||||
"未命名服务": "Unnamed Service",
|
||||
"更新顺序失败": "Failed to update order",
|
||||
"修改服务商名称": "Rename Service",
|
||||
"删除服务": "Delete Service",
|
||||
"修改服务商信息": "Edit service details",
|
||||
"服务商名称": "Service Name",
|
||||
"请输入服务商名称": "Please enter a service name",
|
||||
"服务商介绍": "Service Description",
|
||||
"请输入服务商介绍(可选)": "Enter service description (optional)",
|
||||
"服务商名称不能为空": "Service name cannot be empty",
|
||||
"服务商信息已更新": "Service details updated",
|
||||
"更新成功": "updated successfully",
|
||||
"更新失败": "Update failed",
|
||||
"创建新的服务商": "Create new service",
|
||||
"创建": "Create",
|
||||
"新服务商": "New Service",
|
||||
"创建成功": "created successfully",
|
||||
"新服务商已创建": "New service created",
|
||||
"创建失败": "Create failed",
|
||||
"百度翻译配置": "Baidu Translation Config",
|
||||
"开通百度翻译服务": "Activate Baidu Translation Service",
|
||||
"请输入百度翻译 AppID": "Enter Baidu Translation AppID",
|
||||
"请输入百度翻译密钥": "Enter Baidu Translation Secret Key",
|
||||
"暂无服务商": "No services",
|
||||
"点击右上角\"+\"按钮新增第一个服务商": "Click the + button to add your first service.",
|
||||
"Ollama服务未配置": "Ollama service is not configured",
|
||||
"信息配置": "Configuration",
|
||||
"智谱": "Zhipu",
|
||||
"开通智谱API服务": "Activate Zhipu API Service",
|
||||
"硅基": "SiliconFlow",
|
||||
"开通硅基流动API服务": "Activate SiliconFlow API Service",
|
||||
"开通xflow API服务": "Activate xFlow API Service",
|
||||
"请输入API Key": "Enter API Key",
|
||||
"关闭思维链": "Disable Chain-of-Thought",
|
||||
"针对部分支持关闭思维链的模型进行关闭。⚠️:并不是所有模型都支持,关闭思维链的模型会在日志中的模型信息后面多出一个“✏️”符号。": "Disable CoT for supported models. ⚠️ Not all models support this; supported models show a “✏️” marker in logs.",
|
||||
"启用高级参数": "Enable Advanced Params",
|
||||
"启用后将发送 temperature、top_p、max_tokens 参数以精细控制模型行为,限制最大tonken数来提升速度。如果关闭则可以提升兼容性。": "When enabled, send temperature/top_p/max_tokens for finer control; disabling may improve compatibility.",
|
||||
"过滤思维链输出": "Filter CoT Output",
|
||||
"针对无法关闭思维链模型,移除思考过程内容。默认开启。": "For models that cannot disable CoT, remove reasoning content. Enabled by default.",
|
||||
"自动释放模型": "Auto Unload Model",
|
||||
"请求完成后自动卸载模型以释放显存。⚠️该选项对针对前端小助手生效,节点有独立的选项。": "Unload model after request to free VRAM. ⚠️ Applies to frontend assistant only; nodes have separate options.",
|
||||
"2️⃣ 添加翻译、提示词优化的大语言模型 (LLM)": "2️⃣ Add LLM models for translation and prompt optimization",
|
||||
"3️⃣ 添加图像、视频反推的视觉模型 (VLM)": "3️⃣ Add VLM models for image and video caption",
|
||||
"添加模型": "Add Model",
|
||||
"暂无配置模型,点击\"+ 添加模型\"开始配置": "No configured models. Click \"+ Add Model\" to start.",
|
||||
"默认": "Default",
|
||||
"设为默认模型": "Set as default model",
|
||||
"修改模型参数设置": "Edit model parameters",
|
||||
"模型参数设置": "Model Parameter Settings",
|
||||
"温度 (Temperature)": "Temperature",
|
||||
"核采样 (Top-P)": "Top-P",
|
||||
"最大Token数": "Max Tokens",
|
||||
"温度值无效": "Invalid temperature",
|
||||
"温度值应在 0 到 2 之间": "Temperature must be between 0 and 2.",
|
||||
"核采样值无效": "Invalid Top-P",
|
||||
"核采样值应在 0 到 1 之间": "Top-P must be between 0 and 1.",
|
||||
"最大Token数无效": "Invalid max tokens",
|
||||
"最大Token数应在 1 到 8192 之间": "Max tokens must be between 1 and 8192.",
|
||||
"参数已更新": "Parameters updated",
|
||||
"的参数已保存": "parameters saved",
|
||||
"服务ID不能为空": "Service ID cannot be empty",
|
||||
"搜索": "Search ",
|
||||
"模型...": " models...",
|
||||
"获取模型列表失败": "Failed to fetch model list",
|
||||
"添加模型失败": "Failed to add model",
|
||||
"模型已添加": "Model added",
|
||||
"添加失败": "Add failed",
|
||||
"确定要删除模型": "Delete model",
|
||||
"模型已删除": "Model deleted",
|
||||
"删除失败": "Delete failed",
|
||||
"删除模型失败": "Failed to delete model",
|
||||
"设置默认模型失败": "Failed to set default model",
|
||||
"已设置": "Set",
|
||||
"为默认模型": "as default model",
|
||||
"设置失败": "Set failed",
|
||||
"更新模型顺序失败": "Failed to update model order",
|
||||
"模型顺序已更新": "Model order updated",
|
||||
"更新参数失败": "Failed to update parameters",
|
||||
"确定要删除服务商": "Delete service",
|
||||
"删除成功": "Deleted successfully",
|
||||
"暂无服务商,点击\"新增服务商\"开始配置": "No services. Click \"New Service\" to start.",
|
||||
"服务商配置已更新": "Service configuration updated",
|
||||
"有新版本": "Update Available",
|
||||
"当前版本:": "Current version:",
|
||||
"最新版本:": "Latest version:",
|
||||
"点击前往下载": "Click to download",
|
||||
"加载系统规则配置过程中发生错误": "An error occurred while loading system rules.",
|
||||
"当前已是最新版本:": "Already latest version:",
|
||||
"未找到版本号,徽标将无法正确显示": "Version not found; badge may not display correctly.",
|
||||
"交流反馈群": "Community Group",
|
||||
"微信交流群二维码": "WeChat group QR code",
|
||||
"历史": "History",
|
||||
"撤销": "Undo",
|
||||
"重做": "Redo",
|
||||
"标签工具": "Tag Tools",
|
||||
"翻译中": "Translating",
|
||||
"翻译完成": "Translation complete",
|
||||
"翻译失败": "Translation failed",
|
||||
"提示词优化中": "Optimizing prompt",
|
||||
"提示词优化完成": "Prompt optimization complete",
|
||||
"提示词优化失败": "Prompt optimization failed",
|
||||
"处理中": "Processing",
|
||||
"完成": "Done",
|
||||
"请求已取消": "Request canceled",
|
||||
"提示词优化已取消": "Prompt optimization canceled",
|
||||
"翻译已取消": "Translation canceled",
|
||||
"历史记录": "History",
|
||||
"清除当前": "Clear Current",
|
||||
"清除所有": "Clear All",
|
||||
"当前节点": "Current Node",
|
||||
"暂无历史记录": "No history records",
|
||||
"提示词反推": "Prompt Caption",
|
||||
"规则管理": "Rules",
|
||||
"选择服务": "Select Service",
|
||||
"已开启": "Enabled",
|
||||
"已关闭": "Disabled",
|
||||
"请输入要优化的提示词": "Please enter prompt text to optimize",
|
||||
"扩写失败": "Prompt enhancement failed",
|
||||
"请输入要翻译的内容": "Please enter text to translate",
|
||||
"没有检测到可翻译的内容": "No translatable content detected",
|
||||
"译文": "Translated",
|
||||
"原文": "Original",
|
||||
"翻译服务返回空结果": "Translation service returned empty result",
|
||||
"新建分类": "New Category",
|
||||
"在此分类下创建新标签": "Create a new tag in this category",
|
||||
"取消收藏": "Remove from Favorites",
|
||||
"收藏标签": "Add to Favorites",
|
||||
"编辑标签": "Edit Tag",
|
||||
"删除标签": "Delete Tag",
|
||||
"分类名称": "Category Name",
|
||||
"创建新的标签页分类": "Create a new category tab",
|
||||
"分类名称不能为空": "Category name cannot be empty",
|
||||
"分类已存在": "Category already exists",
|
||||
"修改名称": "Rename",
|
||||
"删除分类": "Delete Category",
|
||||
"名称已存在": "Name already exists",
|
||||
"标签名称": "Tag Name",
|
||||
"标签内容": "Tag Content",
|
||||
"标签名称和内容不能为空": "Tag name and content cannot be empty",
|
||||
"标签已存在": "Tag already exists",
|
||||
"标签已更新": "Tag updated",
|
||||
"⭐️ 收藏": "⭐️ Favorites",
|
||||
"📝 已插入": "📝 Inserted",
|
||||
"已插入": "Inserted",
|
||||
"暂无收藏标签,在标签上右键点击可添加到收藏": "No favorite tags yet. Right-click a tag to add it to favorites.",
|
||||
"加载失败,请重试": "Load failed, please retry",
|
||||
"搜索标签...": "Search tags...",
|
||||
"清除搜索": "Clear Search",
|
||||
"刷新标签状态": "Refresh Tag Status",
|
||||
"重新加载标签数据...": "Reloading tag data...",
|
||||
"刷新失败,请重试": "Refresh failed, please retry",
|
||||
"加载标签数据...": "Loading tag data...",
|
||||
"无匹配标签": "No matching tags",
|
||||
"没有已插入标签": "No inserted tags",
|
||||
"加载已插入标签失败": "Failed to load inserted tags",
|
||||
"移动成功": "Move successful",
|
||||
"移动失败": "Move failed",
|
||||
"排序保存成功": "Sort saved",
|
||||
"标签文件顺序已更新": "Tag file order updated",
|
||||
"收藏标签顺序已更新": "Favorite tag order updated",
|
||||
"排序已保存": "Order saved",
|
||||
"分类显示顺序已更新": "Category display order updated",
|
||||
"保存成功": "Saved successfully",
|
||||
"输入无效": "Invalid input",
|
||||
"反推提示词(中文)": "Caption Prompt (Chinese)",
|
||||
"反推提示词(英文)": "Caption Prompt (English)"
|
||||
}
|
||||
"✨提示词小助手": "✨신속한 도우미",
|
||||
"小助手功能开关": "기능 토글",
|
||||
"总开关": "마스터 스위치",
|
||||
"系统": "체계",
|
||||
"界面语言": "인터페이스 언어",
|
||||
"中文": "중국인",
|
||||
"提示词小助手创建方式": "프롬프트 어시스턴트 생성",
|
||||
"图像小助手创建方式": "이미지 어시스턴트 생성",
|
||||
"界面": "인터페이스",
|
||||
"提示词小助手布局": "프롬프트 어시스턴트 레이아웃",
|
||||
"图像小助手布局": "이미지 어시스턴트 레이아웃",
|
||||
" 配置": "구성",
|
||||
"API配置": "API 구성",
|
||||
"翻译": "번역",
|
||||
"提示词优化": "프롬프트 최적화",
|
||||
"图像反推": "이미지 캡션",
|
||||
"历史功能": "역사",
|
||||
"标签功能": "태그",
|
||||
"提示词优化功能": "프롬프트 최적화",
|
||||
"翻译功能": "번역",
|
||||
" 翻译功能设置": "번역 설정",
|
||||
"翻译缓存": "번역 캐시",
|
||||
"混合语言缓存": "혼합 언어 캐시",
|
||||
"混合语言规则": "혼합 언어 규칙",
|
||||
"标点处理": "구두",
|
||||
"空格处理": "공백",
|
||||
"点号处理": "도트",
|
||||
"换行处理": "줄바꿈",
|
||||
"节点信息翻译": "노드 도움말 번역",
|
||||
"日志级别": "로그 수준",
|
||||
"终端日志": "터미널 로그",
|
||||
"流式体验": "스트리밍",
|
||||
"小助手图标": "보조 아이콘",
|
||||
"清理缓存": "캐시 지우기",
|
||||
" ✨提示词小助手": "✨신속한 도우미",
|
||||
"规则": "규칙",
|
||||
"启用小助手": "어시스턴트 활성화",
|
||||
"小助手创建方式(提示词)": "프롬프트 도우미 생성 모드",
|
||||
"小助手创建方式(图像反推)": "이미지 어시스턴트 생성 모드",
|
||||
"小助手布局(提示词)": "프롬프트 어시스턴트 레이아웃",
|
||||
"小助手布局(图像反推)": "이미지 어시스턴트 레이아웃",
|
||||
"百度和大语言模型API配置": "Baidu 및 LLM API 구성",
|
||||
"选择翻译服务": "번역 서비스 선택",
|
||||
"选择提示词优化服务": "프롬프트 최적화 서비스 선택",
|
||||
"选择图像反推服务": "이미지 캡션 서비스 선택",
|
||||
"启用历史功能": "기록 활성화",
|
||||
"启用标签工具": "태그 도구 활성화",
|
||||
"启用提示词优化功能": "프롬프트 최적화 활성화",
|
||||
"启用翻译功能": "번역 활성화",
|
||||
"使用翻译缓存": "번역 캐시 사용",
|
||||
"混合语言翻译进行缓存": "캐시 혼합 언어 번역",
|
||||
"混合语言翻译规则": "혼합 언어 번역 규칙",
|
||||
"始终使用半角标点符号": "항상 반각 구두점을 사용하세요",
|
||||
"自动移除多余空格": "자동으로 추가 공백 제거",
|
||||
"移除多余连续点号": "반복되는 점 제거",
|
||||
"保留换行符": "개행 문자 유지",
|
||||
"启用图像反推功能": "이미지 캡션 활성화",
|
||||
"启用节点信息翻译": "노드 도움말 번역 활성화",
|
||||
"控制台流式输出进度日志": "콘솔 스트리밍 진행 로그",
|
||||
"流式输出开关": "스트리밍 출력 활성화",
|
||||
" 小助手图标不透明度": "보조 아이콘 불투명도",
|
||||
"清理历史、标签、翻译缓存": "기록, 태그 및 번역 캐시 지우기",
|
||||
"关于": "에 대한",
|
||||
"提示词优化和反推规则修改": "프롬프트 최적화 및 이미지 캡션 규칙 편집",
|
||||
"切换插件界面语言,修改后自动刷新页面生效": "확장 UI 언어를 전환합니다.변경 사항을 적용하기 위해 페이지가 자동으로 다시 로드됩니다.",
|
||||
"自动创建": "자동",
|
||||
"选中节点时创建": "선택 시 생성",
|
||||
"右中(垂直)": "오른쪽 중앙(세로)",
|
||||
"右下(横向)": "오른쪽 하단(가로)",
|
||||
"右下(垂直)": "오른쪽 하단(세로)",
|
||||
"下中(横向)": "하단 중앙(수평)",
|
||||
"左下(横向)": "왼쪽 하단(가로)",
|
||||
"横": "수평의",
|
||||
"竖": "수직의",
|
||||
"翻译成英文": "영어로 번역",
|
||||
"翻译成中文": "중국어로 번역",
|
||||
"自动翻译小比例语言": "소수 언어 자동 번역",
|
||||
"自动翻译大比例语言": "주요 언어 자동 번역",
|
||||
"错误日志": "오류만",
|
||||
"基础日志": "기초적인",
|
||||
"详细日志": "말 수가 많은",
|
||||
"加载中...": "로드 중...",
|
||||
"暂无可用服务": "이용 가능한 서비스가 없습니다.",
|
||||
"加载失败": "로드 실패",
|
||||
"打开配置失败": "구성을 열지 못했습니다.",
|
||||
"打开配置弹窗过程中发生错误": "구성 대화 상자를 여는 동안 오류가 발생했습니다.",
|
||||
"提示词小助手已启用": "프롬프트 도우미 활성화됨",
|
||||
"提示词小助手已禁用": "프롬프트 도우미가 비활성화되었습니다.",
|
||||
"API管理器": "API 관리자",
|
||||
"清理所有缓存": "모든 캐시 지우기",
|
||||
"规则管理器": "규칙 관리자",
|
||||
"关闭后,提示词小助手所有功能将禁用": "비활성화하면 모든 프롬프트 도우미 기능이 꺼집니다.",
|
||||
"自动创建:节点创建或加载时自动显示小助手;选中节点时创建:仅选中节点时显示": "자동: 노드가 생성/로드될 때 보조자를 표시합니다.선택: 노드가 선택된 경우에만 표시됩니다.",
|
||||
"自动创建:节点创建或加载时自动显示反推小助手;选中节点时创建:仅选中节点时显示": "자동: 노드가 생성/로드될 때 이미지 도우미를 표시합니다.선택: 선택한 경우에만 표시됩니다.",
|
||||
"设置提示词小助手在输入框周围的布局和展开方向": "입력 필드 주변의 프롬프트 도우미 레이아웃과 확장 방향을 설정합니다.",
|
||||
"设置图像反推小助手的展开方向(位置固定在左下角)": "이미지 보조 확장 방향을 설정합니다(왼쪽 하단에 고정).",
|
||||
"配置或修改API信息": "API 정보를 구성하거나 편집합니다.",
|
||||
"选择一个服务商用于翻译,也可以通过右键翻译按钮来切换": "번역 제공업체를 선택하거나 번역 버튼 컨텍스트 메뉴에서 전환하세요.",
|
||||
"选择一个服务商用于提示词优化,也可以通过右键提示词优化按钮来切换": "프롬프트 최적화를 위한 공급자를 선택하거나 프롬프트 버튼 컨텍스트 메뉴에서 전환하세요.",
|
||||
"选择一个服务商用于图像反推,也可以通过右键反推按钮来切换": "이미지 캡션 제공업체를 선택하거나 캡션 버튼 컨텍스트 메뉴에서 전환하세요.",
|
||||
"开启或关闭历史、撤销、重做功能": "기록, 실행 취소 및 다시 실행을 활성화 또는 비활성화합니다.",
|
||||
"开启或关闭标签工具功能": "태그 도구를 활성화하거나 비활성화합니다.",
|
||||
"开启或关闭提示词优化功能": "프롬프트 최적화를 활성화하거나 비활성화합니다.",
|
||||
"开启或关闭翻译功能": "번역을 활성화하거나 비활성화합니다.",
|
||||
"开启后,如果翻译内容翻译过,则使用历史翻译结果,避免相同内容重复翻译改变原意。如果需要重新翻译,请随便加一个空格即可跳过缓存。": "활성화하면 이전에 번역된 텍스트가 캐시된 결과를 재사용하여 의미 드리프트를 방지합니다.캐시를 우회하려면 공백을 추가하세요.",
|
||||
"关闭时,中英文混合内容的翻译结果不会写入缓存,避免污染缓存。开启后会正常缓存。": "비활성화되면 캐시 오염을 방지하기 위해 중국어/영어 혼합 번역이 캐시되지 않습니다.",
|
||||
"根据个人使用偏好设置混合中英文内容的翻译规则": "중국어/영어 혼합 텍스트에 대한 번역 규칙을 원하는 대로 설정합니다.",
|
||||
"打开后,翻译结果会自动将中文标点符号替换成英文标点符号": "활성화되면 중국어 구두점이 영어 구두점으로 변환됩니다.",
|
||||
"打开后,翻译结果会自动移除多余空格": "활성화되면 추가 공백이 자동으로 제거됩니다.",
|
||||
"打开后,翻译结果会将多余的“......”统一为“...”": "활성화되면 \"......\"과 같이 반복되는 점이 \"...\"로 정규화됩니다.",
|
||||
"打开后,翻译结果会尽量保持原文的换行,避免翻译后丢失段落": "활성화되면 줄 바꿈이 최대한 유지됩니다.",
|
||||
"开启或关闭图像反推提示词功能": "이미지 캡션 프롬프트를 활성화하거나 비활성화합니다.",
|
||||
"开启或关闭ComfyUI侧边栏节点帮助文档的翻译功能": "ComfyUI 사이드바 노드 도움말 문서에 대한 번역을 활성화 또는 비활성화합니다.",
|
||||
"设置日志输出级别:错误日志(仅错误)、基础日志(错误+基础信息)、详细日志(错误+基础信息+调试信息)": "로그 수준 설정: 오류만, 기본 또는 상세.",
|
||||
"开启后,控制台会显示流式输出过程,在某些终端可能导致刷屏;关闭后只显示静态的'生成中...'。": "활성화되면 스트리밍 진행 상황이 콘솔에 인쇄됩니다.정적 '생성 중...'만 표시하려면 비활성화하세요.",
|
||||
"开启时,翻译、扩写、识别等功能将以逐字生成的流式效果显示;关闭时则恢复为全部生成后一次性显示的阻塞模式。": "활성화되면 기능은 토큰 스트리밍을 사용합니다.비활성화되면 전체 생성 후에 출력이 나타납니다.",
|
||||
"设置折叠后小助手图标的不透明度": "축소 시 보조 아이콘 불투명도를 설정합니다.",
|
||||
"清理所有缓存,包括历史记录、标签、翻译缓存、节点文档翻译缓存": "기록, 태그, 번역 캐시 및 노드 도움말 번역 캐시를 포함한 모든 캐시를 지웁니다.",
|
||||
"可以自定义提示词优化规则,和反推提示词规则,使得提示词生成更加符合你的需求": "필요에 맞게 프롬프트 최적화 및 캡션 규칙을 사용자 정의하세요.",
|
||||
"保存": "구하다",
|
||||
"添加": "추가하다",
|
||||
"取消": "취소",
|
||||
"保存失败": "저장 실패",
|
||||
"编辑失败": "수정 실패",
|
||||
"确认操作": "확인하다",
|
||||
"返回": "뒤쪽에",
|
||||
"关闭": "닫다",
|
||||
"配置已修改,是否保存?": "구성이 변경되었습니다.지금 저장하시겠습니까?",
|
||||
"创建弹窗失败": "대화상자를 생성하지 못했습니다.",
|
||||
"创建设置弹窗过程中发生错误": "대화상자를 만드는 중 오류가 발생했습니다.",
|
||||
"暂无选项": "옵션 없음",
|
||||
"清理已清理完成": "정리 완료",
|
||||
"操作失败": "작업 실패",
|
||||
"操作过程中发生错误": "작업 중 오류가 발생했습니다.",
|
||||
"确认": "확인하다",
|
||||
"搜索...": "찾다...",
|
||||
"已选 0 项": "선택한 항목 0개",
|
||||
"确定": "좋아요",
|
||||
"你仍然可以在搜索框中手动输入模型名称": "검색 상자에 모델 이름을 수동으로 입력할 수도 있습니다.",
|
||||
"已选": "선택된",
|
||||
"项": "아이템",
|
||||
"未找到匹配项": "일치하는 항목이 없습니다.",
|
||||
"暂无可用项": "사용 가능한 항목이 없습니다.",
|
||||
"数据格式错误": "잘못된 데이터 형식",
|
||||
"未知错误": "알 수 없는 오류",
|
||||
"配置已保存": "구성이 저장되었습니다.",
|
||||
"所有更改已成功保存到服务器": "모든 변경 사항이 서버에 성공적으로 저장되었습니다.",
|
||||
"无更改": "변경사항 없음",
|
||||
"配置没有未保存的更改": "저장되지 않은 변경사항이 없습니다.",
|
||||
"提示词优化规则": "프롬프트 최적화 규칙",
|
||||
"提示词优化润色提示词": "프롬프트 최적화 개선 프롬프트",
|
||||
"添加提示词优化规则": "프롬프트 최적화 규칙 추가",
|
||||
"中文反推": "중국어 캡션",
|
||||
"图像反推中文提示词": "중국어 이미지 캡션 프롬프트",
|
||||
"添加中文反推规则": "중국어 캡션 규칙 추가",
|
||||
"英文反推": "영어 캡션",
|
||||
"图像反推英文提示词": "영어 이미지 캡션 프롬프트",
|
||||
"添加英文反推规则": "영어 캡션 규칙 추가",
|
||||
"视频反推": "비디오 캡션",
|
||||
"将视频反推提示词": "비디오 캡션 프롬프트",
|
||||
"添加视频反推规则": "동영상 캡션 규칙 추가",
|
||||
"翻译规则": "번역 규칙",
|
||||
"大模型翻译规则": "LLM 번역 규칙",
|
||||
"状态": "상태",
|
||||
"规则名称": "규칙 이름",
|
||||
"规则内容": "규칙 내용",
|
||||
"操作": "행위",
|
||||
"翻译规则仅支持编辑,不支持新增和删除": "번역 규칙은 편집만 지원합니다.추가 및 삭제가 비활성화됩니다.",
|
||||
"中文反推规则": "중국어 자막 규칙",
|
||||
"英文反推规则": "영어 자막 규칙",
|
||||
"编辑翻译规则": "번역 규칙 수정",
|
||||
"请输入翻译规则内容": "번역 규칙 내용을 입력해주세요",
|
||||
"编辑": "편집하다",
|
||||
"删除": "삭제",
|
||||
"编辑规则": "규칙 편집",
|
||||
"添加规则": "규칙 추가",
|
||||
"请输入规则名称": "규칙 이름을 입력하세요.",
|
||||
"请输入规则内容": "규칙 내용을 입력해주세요",
|
||||
"规则类型": "규칙 유형",
|
||||
"反推(中文)": "캡션(중국어)",
|
||||
"反推(英文)": "캡션(영어)",
|
||||
"分类": "범주",
|
||||
"输入或选择分类(可留空)": "카테고리를 입력하거나 선택하세요(선택사항).",
|
||||
"暂无分类": "카테고리 없음",
|
||||
"小助手上显示": "어시스턴트에 표시",
|
||||
"节点上显示": "노드에 표시",
|
||||
"规则名称和内容不能为空": "규칙 이름과 콘텐츠는 비워둘 수 없습니다.",
|
||||
"已存在": "이미 존재합니다",
|
||||
"当前使用中,点击取消激活": "현재 활동 중입니다.비활성화하려면 클릭하세요.",
|
||||
"未激活,点击激活": "비활성.활성화하려면 클릭하세요.",
|
||||
"规则内容不能为空": "규칙 콘텐츠는 비워둘 수 없습니다.",
|
||||
"确认删除": "삭제 확인",
|
||||
"确定要删除规则": "규칙 삭제",
|
||||
"吗?": "?",
|
||||
"免责声明:本插件仅提供 API 调用工具,第三方服务责任与本插件无关,插件所涉用户配置信息均存储于本地。对于因账号使用产生的任何问题,本插件不承担责任!": "면책조항: 이 플러그인은 API 도구만 제공합니다.타사 서비스는 독립적이며 사용자 구성 데이터는 로컬로 유지됩니다.",
|
||||
"请填写配置信息": "구성 세부정보를 작성해 주세요.",
|
||||
"百度翻译配置已保存": "Baidu 번역 구성이 저장되었습니다.",
|
||||
"百度翻译": "바이두 번역",
|
||||
"机器翻译": "기계 번역",
|
||||
"未命名服务": "이름 없는 서비스",
|
||||
"更新顺序失败": "주문을 업데이트하지 못했습니다.",
|
||||
"修改服务商名称": "서비스 이름 바꾸기",
|
||||
"删除服务": "서비스 삭제",
|
||||
"修改服务商信息": "서비스 세부정보 수정",
|
||||
"服务商名称": "서비스 이름",
|
||||
"请输入服务商名称": "서비스 이름을 입력하세요.",
|
||||
"服务商介绍": "서비스 설명",
|
||||
"请输入服务商介绍(可选)": "서비스 설명 입력(선택사항)",
|
||||
"服务商名称不能为空": "서비스 이름은 비워둘 수 없습니다.",
|
||||
"服务商信息已更新": "서비스 세부정보가 업데이트되었습니다.",
|
||||
"更新成功": "성공적으로 업데이트되었습니다",
|
||||
"更新失败": "업데이트 실패",
|
||||
"创建新的服务商": "새 서비스 만들기",
|
||||
"创建": "만들다",
|
||||
"新服务商": "새로운 서비스",
|
||||
"创建成功": "성공적으로 생성되었습니다",
|
||||
"新服务商已创建": "새로운 서비스가 생성되었습니다.",
|
||||
"创建失败": "생성 실패",
|
||||
"百度翻译配置": "Baidu 번역 구성",
|
||||
"开通百度翻译服务": "Baidu 번역 서비스 활성화",
|
||||
"请输入百度翻译 AppID": "Baidu 번역 앱 ID를 입력하세요.",
|
||||
"请输入百度翻译密钥": "Baidu 번역 비밀 키를 입력하세요",
|
||||
"暂无服务商": "서비스 없음",
|
||||
"点击右上角\"+\"按钮新增第一个服务商": "+ 버튼을 클릭하여 첫 번째 서비스를 추가하세요.",
|
||||
"Ollama服务未配置": "Ollama 서비스가 구성되지 않았습니다.",
|
||||
"信息配置": "구성",
|
||||
"智谱": "지푸",
|
||||
"开通智谱API服务": "Zhipu API 서비스 활성화",
|
||||
"硅基": "실리콘플로우",
|
||||
"开通硅基流动API服务": "SiliconFlow API 서비스 활성화",
|
||||
"开通xflow API服务": "xFlow API 서비스 활성화",
|
||||
"请输入API Key": "API 키 입력",
|
||||
"关闭思维链": "사고 사슬 비활성화",
|
||||
"针对部分支持关闭思维链的模型进行关闭。⚠️:并不是所有模型都支持,关闭思维链的模型会在日志中的模型信息后面多出一个“✏️”符号。": "지원되는 모델에 대해 CoT를 비활성화합니다.⚠️ 모든 모델이 이를 지원하는 것은 아닙니다.지원되는 모델은 로그에 \"✏️\" 마커를 표시합니다.",
|
||||
"启用高级参数": "고급 매개변수 활성화",
|
||||
"启用后将发送 temperature、top_p、max_tokens 参数以精细控制模型行为,限制最大tonken数来提升速度。如果关闭则可以提升兼容性。": "활성화되면 더 미세한 제어를 위해 온도/top_p/max_tokens를 보냅니다.비활성화하면 호환성이 향상될 수 있습니다.",
|
||||
"过滤思维链输出": "CoT 출력 필터링",
|
||||
"针对无法关闭思维链模型,移除思考过程内容。默认开启。": "CoT를 비활성화할 수 없는 모델의 경우 추론 콘텐츠를 제거하세요.기본적으로 활성화되어 있습니다.",
|
||||
"自动释放模型": "자동 언로드 모델",
|
||||
"请求完成后自动卸载模型以释放显存。⚠️该选项对针对前端小助手生效,节点有独立的选项。": "VRAM 확보를 요청한 후 모델을 언로드합니다.⚠️ 프론트엔드 어시스턴트에만 적용됩니다.노드에는 별도의 옵션이 있습니다.",
|
||||
"2️⃣ 添加翻译、提示词优化的大语言模型 (LLM)": "2️⃣ 번역 및 신속한 최적화를 위해 LLM 모델 추가",
|
||||
"3️⃣ 添加图像、视频反推的视觉模型 (VLM)": "3️⃣ 이미지 및 비디오 캡션을 위한 VLM 모델 추가",
|
||||
"添加模型": "모델 추가",
|
||||
"暂无配置模型,点击\"+ 添加模型\"开始配置": "구성된 모델이 없습니다.시작하려면 \"+ 모델 추가\"를 클릭하세요.",
|
||||
"默认": "기본",
|
||||
"设为默认模型": "기본 모델로 설정",
|
||||
"修改模型参数设置": "모델 매개변수 편집",
|
||||
"模型参数设置": "모델 매개변수 설정",
|
||||
"温度 (Temperature)": "온도",
|
||||
"核采样 (Top-P)": "탑-P",
|
||||
"最大Token数": "최대 토큰",
|
||||
"温度值无效": "잘못된 온도",
|
||||
"温度值应在 0 到 2 之间": "온도는 0에서 2 사이여야 합니다.",
|
||||
"核采样值无效": "잘못된 Top-P",
|
||||
"核采样值应在 0 到 1 之间": "Top-P는 0과 1 사이여야 합니다.",
|
||||
"最大Token数无效": "잘못된 최대 토큰",
|
||||
"最大Token数应在 1 到 8192 之间": "최대 토큰은 1에서 8192 사이여야 합니다.",
|
||||
"参数已更新": "매개변수가 업데이트되었습니다.",
|
||||
"的参数已保存": "매개변수가 저장됨",
|
||||
"服务ID不能为空": "서비스 ID는 비워둘 수 없습니다.",
|
||||
"搜索": "찾다",
|
||||
"模型...": "모델...",
|
||||
"获取模型列表失败": "모델 목록을 가져오지 못했습니다.",
|
||||
"添加模型失败": "모델을 추가하지 못했습니다.",
|
||||
"模型已添加": "모델이 추가됨",
|
||||
"添加失败": "추가 실패",
|
||||
"确定要删除模型": "모델 삭제",
|
||||
"模型已删除": "모델이 삭제되었습니다.",
|
||||
"删除失败": "삭제 실패",
|
||||
"删除模型失败": "모델을 삭제하지 못했습니다.",
|
||||
"设置默认模型失败": "기본 모델을 설정하지 못했습니다.",
|
||||
"已设置": "세트",
|
||||
"为默认模型": "기본 모델로",
|
||||
"设置失败": "설정 실패",
|
||||
"更新模型顺序失败": "모델 순서를 업데이트하지 못했습니다.",
|
||||
"模型顺序已更新": "모델 주문이 업데이트되었습니다.",
|
||||
"更新参数失败": "매개변수를 업데이트하지 못했습니다.",
|
||||
"确定要删除服务商": "서비스 삭제",
|
||||
"删除成功": "삭제되었습니다.",
|
||||
"暂无服务商,点击\"新增服务商\"开始配置": "서비스가 없습니다.시작하려면 \"새 서비스\"를 클릭하세요.",
|
||||
"服务商配置已更新": "서비스 구성이 업데이트되었습니다.",
|
||||
"有新版本": "업데이트 가능",
|
||||
"当前版本:": "현재 버전:",
|
||||
"最新版本:": "최신 버전:",
|
||||
"点击前往下载": "다운로드하려면 클릭하세요",
|
||||
"加载系统规则配置过程中发生错误": "시스템 규칙을 로드하는 중에 오류가 발생했습니다.",
|
||||
"当前已是最新版本:": "이미 최신 버전:",
|
||||
"未找到版本号,徽标将无法正确显示": "버전을 찾을 수 없습니다.배지가 올바르게 표시되지 않을 수 있습니다.",
|
||||
"交流反馈群": "커뮤니티 그룹",
|
||||
"微信交流群二维码": "위챗 그룹 QR 코드",
|
||||
"历史": "역사",
|
||||
"撤销": "끄르다",
|
||||
"重做": "다시 하다",
|
||||
"标签工具": "태그 도구",
|
||||
"翻译中": "번역 중",
|
||||
"翻译完成": "번역 완료",
|
||||
"翻译失败": "번역 실패",
|
||||
"提示词优化中": "프롬프트 최적화 중",
|
||||
"提示词优化完成": "프롬프트 최적화 완료",
|
||||
"提示词优化失败": "프롬프트 최적화 실패",
|
||||
"处理中": "처리",
|
||||
"完成": "완료",
|
||||
"请求已取消": "요청이 취소되었습니다.",
|
||||
"提示词优化已取消": "프롬프트 최적화가 취소되었습니다.",
|
||||
"翻译已取消": "번역이 취소되었습니다.",
|
||||
"历史记录": "역사",
|
||||
"清除当前": "전류 지우기",
|
||||
"清除所有": "모두 지우기",
|
||||
"当前节点": "현재 노드",
|
||||
"暂无历史记录": "이력 기록이 없습니다",
|
||||
"提示词反推": "프롬프트 캡션",
|
||||
"规则管理": "규칙",
|
||||
"选择服务": "서비스 선택",
|
||||
"已开启": "활성화됨",
|
||||
"已关闭": "장애가 있는",
|
||||
"请输入要优化的提示词": "최적화하려면 프롬프트 텍스트를 입력하세요.",
|
||||
"扩写失败": "프롬프트 개선 실패",
|
||||
"请输入要翻译的内容": "번역할 텍스트를 입력하세요.",
|
||||
"没有检测到可翻译的内容": "번역 가능한 콘텐츠가 감지되지 않았습니다.",
|
||||
"译文": "번역됨",
|
||||
"原文": "원래의",
|
||||
"翻译服务返回空结果": "번역 서비스에서 빈 결과를 반환함",
|
||||
"新建分类": "새 카테고리",
|
||||
"在此分类下创建新标签": "이 카테고리에 새 태그 만들기",
|
||||
"取消收藏": "즐겨찾기에서 제거",
|
||||
"收藏标签": "즐겨찾기에 추가",
|
||||
"编辑标签": "태그 편집",
|
||||
"删除标签": "태그 삭제",
|
||||
"分类名称": "카테고리 이름",
|
||||
"创建新的标签页分类": "새 카테고리 탭 만들기",
|
||||
"分类名称不能为空": "카테고리 이름은 비워둘 수 없습니다.",
|
||||
"分类已存在": "카테고리가 이미 존재합니다.",
|
||||
"修改名称": "이름 바꾸기",
|
||||
"删除分类": "카테고리 삭제",
|
||||
"名称已存在": "이름이 이미 존재합니다.",
|
||||
"标签名称": "태그 이름",
|
||||
"标签内容": "태그 내용",
|
||||
"标签名称和内容不能为空": "태그 이름과 콘텐츠는 비워둘 수 없습니다.",
|
||||
"标签已存在": "태그가 이미 존재합니다.",
|
||||
"标签已更新": "태그가 업데이트되었습니다.",
|
||||
"⭐️ 收藏": "⭐️ 즐겨찾기",
|
||||
"📝 已插入": "📝 삽입됨",
|
||||
"已插入": "삽입됨",
|
||||
"暂无收藏标签,在标签上右键点击可添加到收藏": "아직 즐겨찾는 태그가 없습니다.태그를 마우스 오른쪽 버튼으로 클릭하면 즐겨찾기에 추가됩니다.",
|
||||
"加载失败,请重试": "로드하지 못했습니다. 다시 시도해 주세요.",
|
||||
"搜索标签...": "태그 검색...",
|
||||
"清除搜索": "검색 지우기",
|
||||
"刷新标签状态": "태그 상태 새로 고침",
|
||||
"重新加载标签数据...": "태그 데이터를 다시 로드하는 중...",
|
||||
"刷新失败,请重试": "새로고침에 실패했습니다. 다시 시도해 주세요.",
|
||||
"加载标签数据...": "태그 데이터 로드 중...",
|
||||
"无匹配标签": "일치하는 태그가 없습니다.",
|
||||
"没有已插入标签": "삽입된 태그가 없습니다.",
|
||||
"加载已插入标签失败": "삽입된 태그를 로드하지 못했습니다.",
|
||||
"移动成功": "이동 성공",
|
||||
"移动失败": "이동 실패",
|
||||
"排序保存成功": "정렬 저장됨",
|
||||
"标签文件顺序已更新": "태그 파일 순서가 업데이트되었습니다.",
|
||||
"收藏标签顺序已更新": "즐겨찾기 태그 순서가 업데이트되었습니다.",
|
||||
"排序已保存": "주문이 저장되었습니다.",
|
||||
"分类显示顺序已更新": "카테고리 표시 순서가 업데이트되었습니다.",
|
||||
"保存成功": "성공적으로 저장되었습니다",
|
||||
"输入无效": "잘못된 입력",
|
||||
"反推提示词(中文)": "캡션 프롬프트(중국어)",
|
||||
"反推提示词(英文)": "캡션 프롬프트(영어)"
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
import json
|
||||
import os
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
import time
|
||||
import ssl
|
||||
import sys
|
||||
|
||||
TARGET_LANGS = ["ja", "ko", "ar", "es", "fa", "fr", "pt-BR", "ru", "tr"]
|
||||
|
||||
LANG_MAP = {
|
||||
"ja": "ja", "ko": "ko", "ar": "ar", "es": "es", "fa": "fa",
|
||||
"fr": "fr", "pt-BR": "pt", "ru": "ru", "tr": "tr"
|
||||
}
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
LOCALES_DIR = os.path.join(BASE_DIR, "locales")
|
||||
EN_DIR = os.path.join(LOCALES_DIR, "en")
|
||||
|
||||
# Bypass SSL
|
||||
ctx = ssl.create_default_context()
|
||||
ctx.check_hostname = False
|
||||
ctx.verify_mode = ssl.CERT_NONE
|
||||
|
||||
def translate_text(text, target_lang):
|
||||
if not text or not isinstance(text, str):
|
||||
return text
|
||||
if text.strip() == "": return text
|
||||
|
||||
url = 'https://translate.googleapis.com/translate_a/single?client=gtx&sl=en&tl=' + LANG_MAP[target_lang] + '&dt=t&q=' + urllib.parse.quote(text)
|
||||
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
|
||||
|
||||
for attempt in range(3):
|
||||
try:
|
||||
res = urllib.request.urlopen(req, context=ctx, timeout=10).read().decode('utf-8')
|
||||
data = json.loads(res)
|
||||
translated = "".join([part[0] for part in data[0] if part[0]])
|
||||
return translated
|
||||
except Exception as e:
|
||||
time.sleep(1)
|
||||
return text
|
||||
|
||||
def translate_dict(data, target_lang):
|
||||
if isinstance(data, dict):
|
||||
new_data = {}
|
||||
for k, v in data.items():
|
||||
if k in ["options"]:
|
||||
new_data[k] = {ok: translate_text(ov, target_lang) if isinstance(ov, str) else ov for ok, ov in v.items()}
|
||||
else:
|
||||
new_data[k] = translate_dict(v, target_lang)
|
||||
return new_data
|
||||
elif isinstance(data, list):
|
||||
return [translate_dict(x, target_lang) for x in data]
|
||||
elif isinstance(data, str):
|
||||
return translate_text(data, target_lang)
|
||||
else:
|
||||
return data
|
||||
|
||||
def process_file(filename, target_lang):
|
||||
en_path = os.path.join(EN_DIR, filename)
|
||||
target_dir = os.path.join(LOCALES_DIR, target_lang)
|
||||
target_path = os.path.join(target_dir, filename)
|
||||
|
||||
os.makedirs(target_dir, exist_ok=True)
|
||||
|
||||
with open(en_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
print(f"Translating {filename} to {target_lang}...")
|
||||
translated_data = translate_dict(data, target_lang)
|
||||
|
||||
with open(target_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(translated_data, f, ensure_ascii=False, indent=4)
|
||||
print(f"Done {filename} for {target_lang}")
|
||||
|
||||
def main():
|
||||
files = ["nodeDefs.json", "ui.json"]
|
||||
for lang in TARGET_LANGS:
|
||||
for file in files:
|
||||
process_file(file, lang)
|
||||
time.sleep(0.5)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,78 +0,0 @@
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
from deep_translator import GoogleTranslator
|
||||
|
||||
TARGET_LANGS = ["ja", "ko", "ar", "es", "fa", "fr", "pt-BR", "ru", "tr"]
|
||||
|
||||
# mapping to deep-translator lang codes
|
||||
LANG_MAP = {
|
||||
"ja": "ja", "ko": "ko", "ar": "ar", "es": "es", "fa": "fa",
|
||||
"fr": "fr", "pt-BR": "pt", "ru": "ru", "tr": "tr"
|
||||
}
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
LOCALES_DIR = os.path.join(BASE_DIR, "locales")
|
||||
EN_DIR = os.path.join(LOCALES_DIR, "en")
|
||||
|
||||
# Already done manually
|
||||
ALREADY_DONE = {
|
||||
("ko", "nodeDefs.json")
|
||||
}
|
||||
|
||||
def translate_text(text, target_lang):
|
||||
if not text or not isinstance(text, str):
|
||||
return text
|
||||
if text.strip() == "": return text
|
||||
|
||||
for attempt in range(3):
|
||||
try:
|
||||
translator = GoogleTranslator(source='en', target=LANG_MAP[target_lang])
|
||||
return translator.translate(text)
|
||||
except Exception as e:
|
||||
time.sleep(2)
|
||||
return text
|
||||
|
||||
def translate_dict(data, target_lang):
|
||||
if isinstance(data, dict):
|
||||
new_data = {}
|
||||
for k, v in data.items():
|
||||
if k in ["options"]:
|
||||
new_data[k] = {ok: translate_text(ov, target_lang) if isinstance(ov, str) else ov for ok, ov in v.items()}
|
||||
else:
|
||||
new_data[k] = translate_dict(v, target_lang)
|
||||
return new_data
|
||||
elif isinstance(data, list):
|
||||
return [translate_dict(x, target_lang) for x in data]
|
||||
elif isinstance(data, str):
|
||||
return translate_text(data, target_lang)
|
||||
else:
|
||||
return data
|
||||
|
||||
def process_file(filename, target_lang):
|
||||
if (target_lang, filename) in ALREADY_DONE:
|
||||
print(f"Skipping {filename} for {target_lang} (already done)")
|
||||
return
|
||||
|
||||
en_path = os.path.join(EN_DIR, filename)
|
||||
target_dir = os.path.join(LOCALES_DIR, target_lang)
|
||||
target_path = os.path.join(target_dir, filename)
|
||||
|
||||
with open(en_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
print(f"Translating {filename} to {target_lang}...")
|
||||
translated_data = translate_dict(data, target_lang)
|
||||
|
||||
with open(target_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(translated_data, f, ensure_ascii=False, indent=4)
|
||||
print(f"Done {filename} for {target_lang}")
|
||||
|
||||
def main():
|
||||
files = ["nodeDefs.json", "ui.json"]
|
||||
for lang in TARGET_LANGS:
|
||||
for file in files:
|
||||
process_file(file, lang)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,73 +0,0 @@
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
from googletrans import Translator
|
||||
|
||||
TARGET_LANGS = ["ja", "ko", "ar", "es", "fa", "fr", "pt-BR", "ru", "tr"]
|
||||
|
||||
LANG_MAP = {
|
||||
"ja": "ja", "ko": "ko", "ar": "ar", "es": "es", "fa": "fa",
|
||||
"fr": "fr", "pt-BR": "pt", "ru": "ru", "tr": "tr"
|
||||
}
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
LOCALES_DIR = os.path.join(BASE_DIR, "locales")
|
||||
EN_DIR = os.path.join(LOCALES_DIR, "en")
|
||||
|
||||
translator = Translator()
|
||||
|
||||
def translate_text(text, target_lang):
|
||||
global translator
|
||||
if not text or not isinstance(text, str):
|
||||
return text
|
||||
if text.strip() == "": return text
|
||||
|
||||
for attempt in range(3):
|
||||
try:
|
||||
res = translator.translate(text, src='en', dest=LANG_MAP[target_lang])
|
||||
return res.text
|
||||
except Exception as e:
|
||||
print(f"Error '{text[:10]}...' -> {target_lang}: {e}")
|
||||
time.sleep(2)
|
||||
translator = Translator()
|
||||
return text
|
||||
|
||||
def translate_dict(data, target_lang):
|
||||
if isinstance(data, dict):
|
||||
new_data = {}
|
||||
for k, v in data.items():
|
||||
if k in ["options"]:
|
||||
new_data[k] = {ok: translate_text(ov, target_lang) if isinstance(ov, str) else ov for ok, ov in v.items()}
|
||||
else:
|
||||
new_data[k] = translate_dict(v, target_lang)
|
||||
return new_data
|
||||
elif isinstance(data, list):
|
||||
return [translate_dict(x, target_lang) for x in data]
|
||||
elif isinstance(data, str):
|
||||
return translate_text(data, target_lang)
|
||||
else:
|
||||
return data
|
||||
|
||||
def process_file(filename, target_lang):
|
||||
en_path = os.path.join(EN_DIR, filename)
|
||||
target_dir = os.path.join(LOCALES_DIR, target_lang)
|
||||
target_path = os.path.join(target_dir, filename)
|
||||
|
||||
with open(en_path, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
print(f"Translating {filename} to {target_lang}...")
|
||||
translated_data = translate_dict(data, target_lang)
|
||||
|
||||
with open(target_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(translated_data, f, ensure_ascii=False, indent=4)
|
||||
print(f"Done {filename} for {target_lang}")
|
||||
|
||||
def main():
|
||||
files = ["nodeDefs.json", "ui.json"]
|
||||
for lang in TARGET_LANGS:
|
||||
for file in files:
|
||||
process_file(file, lang)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user