Nodes/comfyui-chinese-converter/Traditional to Simplified Chinese
ComfyUI Node

Traditional to Simplified Chinese

Your Pipeline Only Speaks Simplified — Flip the Script With One Node

By MylanChan·Created 12 months ago·Updated 12 months ago· 2
Traditional to Simplified Chinese
    • text
    text

    Say you've got a ComfyUI TTS workflow humming along, and the model - trained mostly on mainland-Chinese data - keeps butchering anything written in traditional characters. Or you're feeding a prompt written in traditional to a CLIP encoder that was clearly built on simplified. TraditionalToSimplified takes traditional-Chinese text and outputs the simplified version, so whatever comes next in your graph gets input in the dialect it actually handles. It's the mirror image of the pack's other node, SimplifiedToTraditional, and together they cover the whole round trip.

    What it is

    One half of MylanChan/comfyui-chinese-converter, a tiny two-node pack that exists for one reason: text written in one Chinese script reaching models that only read the other. This node is text in, text out, nothing else - no GPU, no model download, no API key, fully offline. The pack's own README frames the whole thing around TTS models that don't support traditional Chinese, but the same reasoning applies anywhere a model or tool is simplified-only.

    How it works

    It's a thin wrapper around OpenCC, the standard library for hanzi script conversion (the same engine behind Wikipedia and macOS input methods). The node creates an OpenCC instance with the t2s (traditional-to-simplified) config and runs convert() on whatever string you give it. Because OpenCC works with phrase tables rather than single characters, it converts idioms as units instead of producing word-by-word Franken-Chinese. The dependency is opencc-python-reimplemented, a pure-Python port, so nothing compiled and nothing heavy - which is a small mercy in ComfyUI's dependency hellscape.

    One implementation note: the converter is built lazily and cached per node instance, and the node's IS_CHANGED returns a hash of the input text. That just means it reruns when your text actually changes and stays quiet otherwise - exactly the behavior you want from a pass-through node.

    Inputs and outputs

    The entire surface area is one field:

    • text (STRING, multiline required) - paste your traditional-Chinese text or wire it in from an upstream node.

    And one output:

    • text (STRING) - the simplified conversion, ready to plug into a CLIP Text Encode prompt, a TTS model's text input, or a Save Text node.

    Because it's a plain typed STRING socket, you can fan the result out to several consumers at once - the same "one authoritative text source, many wires" pattern ComfyUI's plumbing layer is built around. No special data structures, no pipes, no context objects to keep straight.

    Installing it

    Install once for both nodes: ComfyUI Manager → search comfyui-chinese-converter, or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/MylanChan/comfyui-chinese-converter
    cd comfyui-chinese-converter
    pip install -r requirements.txt
    

    Then restart ComfyUI. The only requirement is the pure-Python OpenCC port, so install takes seconds and there are no model files to hunt down.

    Where people get burned

    • OpenCC dependency clashes. The README warns to check for conflicts if the node misbehaves - another pack may have pulled in a different opencc build, and audio packs in particular have a track record of dependency collisions (the KB's TTS essay flags dependency conflict as the default failure mode there). If you hit an import error naming opencc, straighten out the duplicate and reinstall.
    • Rare characters pass through unchanged. OpenCC runs off predefined dictionaries and the author is upfront that uncommon hanzi may not convert. It's a script converter, not a translator - if a character isn't in the tables, it ships through as-is.

    For the usual case - a standard traditional script feeding a simplified-only model - this node is a boring, reliable, offline fix. Boring is the compliment: it does one thing, does it with the industry-standard library, and gets out of your graph's way.

    Categorysd

    Inputs (1)

    NameTypeDefaultDescription
    textSTRING

    Outputs (1)

    NameTypeDescription
    textSTRING