ComfyOnline
AIGODLIKE-COMFYUI-TRANSLATION

AIGODLIKE-ComfyUI-Translation

A plugin for multilingual translation of ComfyUI,This plugin implements translation of resident menu bar/search bar/right-click context menu/node, etc

2024/09/06 Support the latest ComfyUI interface

https://github.com/user-attachments/assets/9418fba8-f499-4414-9c7f-4d548ff77c49

ComfyUI users in other languages, I need your help

I hope ComfyUI can support more languages besides Chinese and English, such as French, German, Japanese, Korean, etc. However, I believe that translation should be done by native speakers of each language. So I need your help, let's go fight for ComfyUI together!

[Korean] Korean translation needs help~

[Japanese] Japanese translation needs help~

Language supported

|COMFYUI Translation|简体中文|繁體中文|English|日本語|한국어|Русский|Your language| |:----|:----|:----|:----|:----|:----|:----|:----| |Menu|√|√|√|√|√|√|TODO| |NodeCategory|√|√|√|√|√|√|TODO| |Nodes|√|√|√|√|√|√|TODO|

Function

  1. Translate all UI of ComfyUI image image image
  2. Direct language switching (limitation: custom names will be removed) https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION/assets/116185401/e43182b7-8932-4358-bc65-ade7bddf27c5
  3. Support for adding other languages
  4. Support translation custom nodes
  5. (2023/8/16) Support one-click switching between English/currently set language
  6. (2023/8/19) Support for multilingual translation of custom nodes * (in production)

|Custom Node Name|简中|繁中|English|日本語|한국어|Русский| |:----|:----|:----|:----|:----|:----|:----| |3D-MeshTool|√|TODO|√|TODO|TODO|TODO| |3D-Pack|√|TODO|√|TODO|TODO|TODO| |Advanced Encode|√|√|√|TODO|TODO|TODO| |Advanced ControlNet|√|√|√|TODO|TODO|TODO| |AGL-ComfyUI-Translation|√|√|√|√|TODO|TODO| |AlekPet Nodes|√|√|√|√|TODO|TODO| |AnimateAnyone|√|TODO|√|TODO|TODO|TODO| |AnimateDiff|√|√|√|√|TODO|TODO| |AnimateDiff-Evolved|√|√|√|TODO|TODO|TODO| |AnyLine|√|TODO|√|TODO|TODO|TODO| |AnyText|√|TODO|√|TODO|TODO|TODO| |Automatic CFG|√|TODO|√|TODO|TODO|TODO| |BiRefNet|√|TODO|√|TODO|TODO|TODO| |BiRefNet Hugo|√|TODO|√|TODO|TODO|TODO| |BitsandBytes NF4|√|TODO|√|TODO|TODO|TODO| |BrushNet (kijai)|√|TODO|√|TODO|TODO|TODO| |BrushNet (nullquant)|√|TODO|√|TODO|TODO|TODO| |Bxb|√|TODO|√|TODO|TODO|TODO| |CCSR|√|TODO|√|TODO|TODO|TODO| |Champ|√|TODO|√|TODO|TODO|TODO| |CLIP Seg|√|√|√|√|TODO|TODO| |CogVideo|√|TODO|√|TODO|TODO|TODO| |ComfyRoll|√|√|√|TODO|TODO|TODO| |ControlNet LLLite|√|√|√|TODO|TODO|TODO| |ControlNet Preprocessors|√|√|√|√|TODO|TODO| |ControlNet Preprocessors AUX|√|√|√|√|TODO|TODO| |ControlNeXt SVD|√|TODO|√|TODO|TODO|TODO| |Crystools|√|TODO|√|TODO|TODO|√| |Cutoff|√|√|√|√|TODO|TODO| |Custom-Scripts|√|√|√|TODO|TODO|TODO| |cg-use-everywhere|√|TODO|√|TODO|TODO|TODO| |cg-image-picker|√|TODO|√|TODO|TODO|TODO| |Davemane42 Nodes|√|√|√|√|TODO|TODO| |Dagthomas Nodes|√|√|√|√|TODO|TODO| |Derfuu Nodes|√|TODO|√|TODO|TODO|TODO| |DynamiCrafter (kijai)|√|TODO|√|TODO|TODO|TODO| |DynamiCrafter (ExponentialML)|√|TODO|√|TODO|TODO|TODO| |DynamicThresholding|√|√|√|TODO|TODO|TODO| |EasyAnimate (chaojie)|√|TODO|√|TODO|TODO|TODO| |EasyAnimate (kijai)|√|TODO|√|TODO|TODO|TODO| |Easy Tools|√|TODO|√|TODO|TODO|TODO| |Easy Use|√|TODO|√|TODO|TODO|TODO| |Eesahes Nodes|√|TODO|√|TODO|TODO|TODO| |Efficiency Nodes|√|√|√|√|TODO|TODO| |ELLA (ExponentialML)|√|TODO|√|TODO|TODO|TODO| |ELLA (Tencent)|√|TODO|√|TODO|TODO|TODO| |EllangoK Postprocessing|√|√|√|TODO|TODO|TODO| |Essentials|√|TODO|√|TODO|TODO|TODO| |Execution-Inversion|√|TODO|√|TODO|TODO|TODO| |ExLlama nodes|√|√|√|TODO|TODO|TODO| |experiments|√|√|√|TODO|TODO|TODO| |Face Analysis|√|TODO|√|TODO|TODO|TODO| |Fast Decode|√|√|√|√|TODO|TODO| |Florence2|√|TODO|√|TODO|TODO|TODO| |Flowty CRM|√|TODO|√|TODO|TODO|TODO| |Flowty TripoSR|√|TODO|√|TODO|TODO|TODO| |Frame Interpolation|√|TODO|√|TODO|TODO|TODO| |FreeU Advanced|√|TODO|√|TODO|TODO|TODO| |IC-Light (kijai)|√|TODO|√|TODO|TODO|TODO| |IC-Light-Wrapper (kijai)|√|TODO|√|TODO|TODO|TODO| |IF AI tools|√|TODO|√|TODO|TODO|TODO| |Image Resize|√|TODO|√|TODO|TODO|TODO| |Instant Mesh|√|TODO|√|TODO|TODO|TODO| |IPAdapter|√|√|√|TODO|TODO|TODO| |IPAdapter_plus|√|√|√|TODO|TODO|TODO| |Image Grid|√|√|√|TODO|TODO|TODO| |Impact Pack|√|√|√|TODO|TODO|TODO| |Impact Subpack|√|√|√|TODO|TODO|TODO| |Inpaint CropAndStitch|√|TODO|√|TODO|TODO|TODO| |Inpaint Nodes|√|TODO|√|TODO|TODO|TODO| |Inspire Pack|√|√|√|TODO|TODO|TODO| |InstantID (cubiq)|√|TODO|√|TODO|TODO|TODO| |InstantID (ZHO)|√|TODO|√|TODO|TODO|TODO| |Joy Caption|√|TODO|√|TODO|TODO|TODO| |KJ Nodes|√|TODO|√|TODO|TODO|TODO| |kkTranslator|√|TODO|√|TODO|TODO|TODO| |Kolors (kijai)|√|TODO|√|TODO|TODO|TODO| |Kolors (MinusZone)|√|TODO|√|TODO|TODO|TODO| |LaMa Preprocessor|√|TODO|√|TODO|TODO|TODO| |Latent2RGB|√|√|√|√|TODO|TODO| |LayerDiffuse|√|TODO|√|TODO|TODO|TODO| |LayerStyle|√|TODO|√|TODO|TODO|TODO| |LCM|√|TODO|√|TODO|TODO|TODO| |Literals|√|TODO|√|TODO|TODO|TODO| |LivePortrait(KJ)|√|TODO|√|TODO|TODO|TODO| |LivePortrait-Advanced|√|TODO|√|TODO|TODO|TODO| |LoadLoraWithTags|√|TODO|√|TODO|TODO|TODO| |Logic|√|TODO|√|TODO|TODO|TODO| |LoraAutoTrigger|√|TODO|√|TODO|TODO|TODO| |MagicClothing|√|TODO|√|TODO|TODO|TODO| |Manager|√|√|√|TODO|TODO|√| |Marigold|√|TODO|√|TODO|TODO|TODO| |Masquerade Nodes|√|√|√|TODO|TODO|TODO| |Math|√|TODO|√|TODO|TODO|TODO| |Mixlab Nodes|√|TODO|√|TODO|TODO|TODO| |MoonDream|√|TODO|√|TODO|TODO|TODO| |MotionCtrl|√|TODO|√|TODO|TODO|TODO| |MotionCtrl-SVD|√|TODO|√|TODO|TODO|TODO| |MTB|√|TODO|√|TODO|TODO|TODO| |N-Sidebar|√|TODO|√|TODO|TODO|TODO| |Noise|√|√|√|TODO|TODO|TODO| |NormalLighting|√|TODO|√|TODO|TODO|TODO| |Paint By Example|√|TODO|√|TODO|TODO|TODO| |Perturbed-Attention|√|TODO|√|TODO|TODO|TODO| |Portrai Master|√|TODO|√|TODO|TODO|TODO| |Power Noise Suite|√|TODO|√|TODO|TODO|TODO| |Prompt Composer|√|TODO|√|TODO|TODO|TODO| |Prompt MZ|√|TODO|√|TODO|TODO|TODO| |Prompt Reader|√|TODO|√|TODO|TODO|TODO| |PuLID (cubiq)|√|TODO|√|TODO|TODO|TODO| |QR|√|√|√|TODO|TODO|TODO| |Quick Connections|√|TODO|√|TODO|TODO|TODO| |Omost|√|TODO|√|TODO|TODO|TODO| |OneButtonPrompt|√|TODO|√|TODO|TODO|TODO| |ReActor|√|TODO|√|TODO|TODO|TODO| |ResAdapter|√|TODO|√|TODO|TODO|TODO| |Restart-Sampling|√|√|√|TODO|TODO|TODO| |Roop|√|TODO|√|TODO|TODO|TODO|TODO| |rgthree|√|TODO|√|TODO|TODO|TODO| |SD-Latent-Interposer|√|TODO|√|TODO|TODO|TODO| |SDXL_prompt_styler|√|√|√|TODO|TODO|TODO| |SeargeSDXL|√|√|√|TODO|TODO|TODO| |Segment Anything|√|TODO|√|TODO|TODO|TODO| |Segment Anything 2|√|TODO|√|TODO|TODO|TODO| |StabilityNodes|√|√|√|TODO|TODO|TODO| |SUPIR|√|TODO|√|TODO|TODO|TODO| |TiledDiffusion|√|TODO|√|TODO|TODO|TODO| |TiledKSampler|√|√|√|√|TODO|TODO| |TinyTerra|√|TODO|√|TODO|TODO|TODO|TODO| |ToonCrafter|√|TODO|√|TODO|TODO|TODO|TODO| |TripoAPI|√|TODO|√|TODO|TODO|TODO| |UltimateSDUpscale|√|√|√|TODO|TODO|TODO| |Vextra Nodes|√|√|√|TODO|TODO|TODO| |Video Matting|√|TODO|√|TODO|TODO|TODO| |Visual Style Prompting|√|TODO|√|TODO|TODO|TODO| |VLM Nodes|√|TODO|√|TODO|TODO|TODO| |WAS Suite|√|√|√|TODO|TODO|TODO| |WD14-Tagger|√|√|√|TODO|TODO|TODO| |zfkun|√|TODO|√|TODO|TODO|TODO|

The above only includes translations for the UI. If you are a developer and need me to help you translate your interface, you can go directly to the ComfyUI Plugins List to add your custom node project, or send an issue, as long as I can see it, I will translate it (it will take some time)

How to install

AIGODLIKE-COMFYUI-TRANSLATION is equivalent to a custom node, you can use any method you like, just put it in folder custom_nodes Then run:

cd ComfyUI/custom_nodes
git clone https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION.git

image

How to use

For new UI: 1481d583968e3b626e366d2ad2faf62c

For legacy UI: image

How to add other languages(translator)

  1. Create a new 'Language Name' folder in the plugin directory (e.g. example folder) image

  2. Find the LocaleMap.js file and add the language code with the same name as the first step folder in it image

    export const LOCALES = {
        "zh-CN": {
            "nativeName": "中文",
            "englishName": "Chinese Simplified"
        },
        "en-US": {
            "nativeName": "English (US)",
            "englishName": "English (US)"                    
        },
        "example": {
            "nativeName": "exampleDisplayName",
            "englishName": "enName"
        },
    }
    
  3. After completing the above two steps, restart the ComfyUI service to find the 'exampleDisplayName' language type in the 'AGLTranslation language' settings bar image

How to add custom node translations(translator)

  1. Translation files are currently divided into three types
    1. Node information translation (including node name, node connector, node component) corresponding translation file Your language folder/Nodes/somenode.json
    2. Node classification information (used for right-click the new node menu) corresponds to the translation file Your language folder/NodeCategory.json
    3. Menu information (including resident menu, settings panel, right-click context menu, search menu, etc.) corresponds to translated files Your language folder/Menu.json
  2. Node information translation can be placed in multiple JSON files under 'Your language folder/Nodes/' based on different nodes
  3. All translation files are in JSON format, please fill in strictly according to the JSON file format

Translation examples

  1. Node Translation Format
    {
        "KSampler": {
            "title": "KSampler[example translation]",
            "inputs": {
                "model": "模型",
                "positive": "正向提示词",
                "negative": "反向提示词",
                "latent_image": "潜空间"
            },
            "widgets": {
                "seed": "随机种",
                "control_after_generate": "运行后操作",
                "steps": "步数",
                "cfg": "CFG",
                "sampler_name": "采样器",
                "scheduler": "调度器",
                "denoise": "降噪"
            },
            "outputs": {
                "LATENT": "潜空间",
            }
        },
        "Load VAE": {}
    }
    
  2. Node classification translation format
    {
        "Add Node": "Add Node[example]",
        "Add Group": "Add Group[example]",
        "Search": "Search[example]",
        "Queue size:": "Queue size[example]:",
        "Queue Prompt": "Queue Prompt[example]",
        "Extra options": "Extra options[example]"
    }
    
  3. Menu information translation format
    {
        "conditioning": "conditioning[example]",
        "latent": "latent[example]",
        "loaders": "loaders[example]",
        "image": "image[example]"
    }
    

Limitations

  1. Supports direct switching of any language node to the target language, but will lose custom names
  2. A small portion of options that use Enum type data cannot be translated image