Nodes/Google Moogle/Google Moogle
ComfyUI Node

Google Moogle

This Google translator node needs no key and no account

By ShmuelRonen·Created about a year ago·Updated 10 months ago· 4
Google Moogle
    • translated_text
    input_textHello, how are you?
    source_languageenglish
    destination_languageenglish

    Ever wanted to translate text inside a workflow - flip the prompt you drafted in your native language into English, then feed it straight to the text encoder? Google Moogle is the tiny node that does exactly that. And the "Google" part is doing a lot of work: the name sounds like an official API wrapper, but it isn't. It wraps the unofficial googletrans Python package, which scrapes Google Translate's web interface. No account, no API key, no billing page, no model downloads. Just text in, translated text out, and a quiet hope that Google doesn't change their endpoint next week.

    What it actually does

    The node class is googletrans, display name "Google Moogle", and it's about as simple as a node gets. Every time the workflow runs, it spins up googletrans.Translator(), calls .translate(), and returns the result as a string. One network round-trip per execution, no caching, nothing stored - you can see it plainly in the source: translator.translate(str(input_text), src=source_language, dest=destination_language).

    One sneaky design choice worth knowing: the language dropdowns are built from googletrans.LANGUAGES, so you pick from ~245 names (English, French, Zulu...) rather than ISO codes. googletrans happily accepts names, so this works fine - just don't try to type a code into it.

    The three inputs, and the one output

    All three inputs are required, and that's the whole list:

    • input_text - a multiline string, defaulting to "Hello, how are you?". This is what gets translated. Wire it from a text node, a prompt source, or a caption reader.
    • source_language - ~246 choices with auto prepended for auto-detection. The default is english, which is a quiet trap if your input isn't English - set it to auto and stop thinking about it.
    • destination_language - the ~245-choice target. Default english.

    One output, translated_text (STRING). It plugs into anything that accepts a string: a CLIP text encoder, prompt conditioning, or another text node.

    Why you'd actually reach for it

    The honest use case is workflow automation, not convenience. Nobody installs this to translate one sentence - you'd do that in the browser. It earns its place when the text is a node output: a prompt assembled from random pieces, a caption pulled from a dataset during LoRA prep, or a tag batch you want reworded before it hits the encoder. The community has been doing this exact "translate intent into a well-structured prompt" move for a while now, and an in-workflow translator is the mechanical version of it. For caption-heavy LoRA training, being able to auto-translate a pile of captions into English before you cache text embeddings is genuinely handy.

    Installing it

    Two options, both easy:

    • ComfyUI Manager: search for "Google Moogle" and hit install.
    • Manual:
    cd ComfyUI/custom_nodes/
    git clone https://github.com/ShmuelRonen/google_moogle.git
    cd google_moogle
    pip install -r requirements.txt
    

    Then restart ComfyUI and look in the text category (or search "Google Moogle"). It needs Python 3.8+, and the only dependencies are anyio, googletrans, sniffio, and typing-extensions - nothing heavy, no models, nothing to download. This is a pure-Python, all-network node.

    Where people get burned

    • It dies offline. Every execution is a live request to Google. If your ComfyUI machine has no internet - or Google is rate-limiting the scrape - the node fails.
    • Failures are silent. Here's the nasty bit: the node catches exceptions and returns str(e) as the translated_text output instead of crashing. So a broken translation quietly becomes a Python error string that flows into your prompt conditioning, and the model just... follows it. Watch the ComfyUI console for the logged exception; don't trust a blank screen.
    • The googletrans package itself is the fragile part. It has a famous history of breaking when Google changes its web API - the 3.x line was broken for years with 'NoneType' object has no attribute 'group' errors. The working release is 4.0.0-rc1, which an unpinned install usually gives you, but if you start seeing weird failures, pin it:
    pip install googletrans==4.0.0-rc1
    

    (or swap to deep-translator if Google breaks it again.)

    • Double-translation mangling. Feed it already-translated output and it'll happily "translate" it again. If your source is a node that outputs English, set source_language explicitly instead of relying on auto.

    It's a fine little utility for casual in-workflow translation. For anything high-volume or production, the README's own advice applies: use a real translation API.

    Categorytext

    Inputs (3)

    NameTypeDefaultDescription
    input_textSTRINGHello, how are you?
    source_languageCOMBOenglish246 options: auto, abkhaz, acehnese, acholi, afar, afrikaans, +240
    destination_languageCOMBOenglish245 options: abkhaz, acehnese, acholi, afar, afrikaans, albanian, +239

    Outputs (1)

    NameTypeDescription
    translated_textSTRING