Google Moogle
This Google translator node needs no key and no account
- translated_text
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 withautoprepended for auto-detection. The default isenglish, which is a quiet trap if your input isn't English - set it toautoand stop thinking about it.destination_language- the ~245-choice target. Defaultenglish.
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 thetranslated_textoutput 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
googletranspackage 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 is4.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_languageexplicitly instead of relying onauto.
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| input_text | STRING | Hello, how are you? | — |
| source_language | COMBO | english | 246 options: auto, abkhaz, acehnese, acholi, afar, afrikaans, +240 |
| destination_language | COMBO | english | 245 options: abkhaz, acehnese, acholi, afar, afrikaans, albanian, +239 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| translated_text | STRING | — |