{"slug": "show-hn-i-created-a-translation-service-prompt", "title": "Show HN: I created a translation service prompt", "summary": "Garrett Jones published a prompt, \"Language Root Translator,\" on Hacker News' Show HN that turns any sufficiently strong chatbot into a translation service with language-learning features. The prompt requires users to specify an A_LANGUAGE and B_LANGUAGE, then auto-detects input language and supports command prefixes including `tr:` for translation, `q:` for questions, and `pr:` for IPA pronunciation, plus parenthetical context and bracketed in-text clarifications. Jones claims the prompt avoids Google Translate's language-switch friction, preserves translation history natively in the chatbot conversation, and returns multiple interpretations, such as both the leaning-forward and archery readings of \"I took a bow.", "body_md": "by Garrett Jones, 2026\n\nThis is a prompt that you can use with any sufficiently strong chatbot to get a high quality translation service, specifically with features to help with language learning.\n\n- You fill in two languages at the beginning the prompt, and then from then on, it auto-detects which language you input and provides the translation in the other.\n- It allows for adding context to the translation request, which doesn't itself get translated, but guides translation choices to be more appropriate.\n- It provides alternative translations, explains ambiguities, and breaks down the words and phrases in the text.\n\nYou only need to copy the prompt [language-root-translator-ipa.txt](/AlkalineGarrett/language-root-translator/blob/main/language-root-translator-ipa.txt) into a chatbot, specify the A_LANGUAGE (your own language) and the B_LANGUAGE (the language you are translating to/from) at the top of the prompt. To get translations targeted to a specific region, add that into the language description. After this is filled in, hit enter to start the translation service.\n\nThe prompt specifies several short command prefixes for common requests, to minimize the friction of the most highly used actions.\n\n- `tr:` : Auto-detect the language and translate the text.\n- `q:` : Ask a question to the chatbot (don't translate this text)\n- `pr:` : Provide the pronunciation (in IPA) of the input text.\n\n- `(type a context here)` (before`tr:` ): This clarifies what context the translation should target. This could be a physical location (grocery store), a digital context (banking app), a topic (cooking), a formality level (teenage slang), a different language variant than your main B_LANGUAGE, anything else.\n  - **Examples** :\n    - `(business) tr: Did you receive the bill?` =>`Já recebeste a fatura?`\n    - `(restaurant) tr: Did you receive the bill?` =>`Já recebeste a conta?`\n    - `(government) tr: Did you receive the bill?` =>`Já recebeu o projeto de lei?`\n- `[type in-text clarification/term/description here]` : This can accomplish multiple things, and the chatbot can distinguish which it is.\n  - **In-text Word clarification**    - `tr: put it [a shoe] on` =>`Calça-o`\n    - `tr: put it [your hat] on` =>`Põe-no`\n  - **Injecting target language text** : You may need to do this if there is a specific term you are using in a conversation.\n    - `tr: I went to the [junta de freguesia] yesterday` =>`Fui à junta de freguesia ontem`\n  - **Using a roundabout description**    - `tr: I like [the largest city in North Portugal]` =>`Gosto do Porto`\n\nLanguage Root Translator has multiple usability advantages over Google Translate.\n\n1. **No Language switch friction** : When using Google Translate, you have to constantly switch the language direction back and forth. With LR, you never have to specify it, except for extremely rare ambiguous cases.\n2. **History** : in Google Translate, you can't see the history of translations you have requested previously. A chatbot conversation provides that natively.\n3. **Easy follow-up** : in Google Translate, you have no way to ask anything about the translation. With a chatbot, you can ask anything.\n\nThe context can completely change what the best translation is. If you try to add context to Google translate, it gets included in the translation output.\n\n- **Google Translate** :\n  - **Input** :`I took a bow`\n  - **Output** :`Fiz uma vénia`*(leaning forward interpretation)*\n  - *Note: The archery interpretation isn't provided.*\n- **LR Translator**  - **Input** :`tr: I took a bow`\n  - **Output** :\n    1. `Fiz uma vénia`*(leaning forward interpretation)*\n    2. `Levei um arco (archery context: if bow was meant as the weapon)`*(archery interpretation)*\n  - *Note: The LR response includes both interpretations*\n\nLet's try to add context.\n\n- **Google Translate** :\n  - **Input** :`(archery) I took a bow`\n  - **Output** :`(arquearia) Apanhei um arco`*(archery interpretation)*\n  - *Note: The context is translated into the output also, which isn't helpful.*\n- **LR Translator**  - **Input** :`(archery) tr: I took a bow`\n  - **Output** :\n    1. `Peguei num arco`*(archery interpretation)*\n    2. `Levei um arco (if meaning \"I took along / brought with me\")`*(archery interpretation)*\n\nLet's try a different interpretation of \"bow\".\n\n- **Google Translate** :\n  - **Input** :`I took a bow [for decorating a present]`\n  - **Output** :`Fiz uma vénia [por decorar um presente]`*(leaning forward interpretation)*\n  - *Note: Google Translate ignored the context for the interpretation of \"bow\", providing an incorrect translation. Like the prior example, the context is translated into the output also.*\n- **LR Translator**  - **Input** :`tr: I took a bow [for decorating a present]`\n  - **Output** :`Tirei um laço`*(decorative translation)*\n\nGoogle Translate only provides the translation, and no explanation about the words that compose it.\n\n- **Google Translate** :\n  - **Input** :`Vou dar um jeito às ferramentas`\n  - **Output** :`I'll figure out the tools.`\n  - *Note: Google Translate didn't explain `jeito` on its own vs in the phrase `dar um jeito`.*\n- **LR Translator**  - **Input** :`tr: Vou dar um jeito às ferramentas`\n  - **Output** :`I'm going to sort out the tools (or tidy up / fix up the tools)`    - `Translation Notes: Dar um jeito can mean physically organizing/tidying them, doing a minor repair/maintenance on them, or finding a solution/place for them depending on situation.`\n    - `pt word explanations:`      - `o jeito /u ˈʒɐj.tu/:`        1. `knack / aptitude / skill`\n        2. `way / manner`\n\nYou might think that just asking a chatbot directly to translate would work well, but in practice the result is inconsistent and has a bit of friction. Language Root Translator has several advantages:\n\n1. **No Language switch friction** : When using an unprompted chatbot, you have to keep requesting what to translate into. With the prompt, this is automatic.\n2. **Auto-detection of ambiguity** : An unprompted chatbot won't reliably point out ambiguities, but the prompted version will.\n3. **Concise answer** : Unprompted chatbots will comment on aspects of the translation that are not relevant to you, but the prompted version will stay on task.\n\nThe following is what Gemini Flash outputs, and demonstrates the problems with a chatbot with no prompt.\n\n- **User** :`translate to European Portuguese: \"I took a bow\"`\n- **Gemini Flash (without Language Root prompt)** :\n  - Standard Expression: Eu fiz uma vénia.\n  - Idiomatic usage: Fazer uma vénia is the standard European Portuguese phrase for taking a bow, whether on stage after a performance or as a formal bow of respect.\n  - Pronoun dropping: The subject pronoun eu can be naturally omitted (Fiz uma vénia), since the verb conjugation already indicates the first-person past tense.\n  - Orthography: European Portuguese spells the word with an acute accent (vénia), reflecting the open vowel pronunciation, unlike the Brazilian spelling (vênia).\n  - Physical alternative: If referring strictly to the physical motion of bowing or bending the torso rather than a theatrical bow, you can also use Inclinei-me.\n- *Problem: if you ask Gemini Flash to translate anything into European Portuguese, if there is **any** kind of difference from Brazilian Portuguese, it will point that out to you every single time, even if you don't need it.*\n- **User** :`I meant a bow in archery`\n- **Gemini Flash (without Language Root prompt)** :\n  - Physical Action (Picking up or Grabbing): Peguei num arco.\n  - Preposition rule: In European Portuguese, the verb pegar requires the preposition em (pegar em) when it means picking up, grabbing, or taking hold of an object with your hands (pegar num arco = pegar em um arco).\n  - Pronoun dropping: The pronoun eu is omitted here for natural everyday speech, though Eu peguei num arco is also grammatically correct.\n  - Archery terminology: Arco refers specifically to the weapon/sports equipment, while tiro com arco is the term for the sport of archery.\n- *Problem: Gemini repeats the information about pronoun dropping, even though it just described it for the prior translation.*\n- **User** :`translate from European Portuguese into English: Vou dar um jeito às ferramentas`\n- **Gemini Flash (without Language Root prompt)** :\n  - The idiom \"dar um jeito a\" in European Portuguese means to tidy up, fix, or sort something out.Depending on your exact context, here are the most natural translations:\n  - Organizing or Tidying Up: I am going to tidy up the tools.\n    - Register: Neutral and conversational, commonly used for cleaning up a workspace or garage.\n    - Nuance: This reflects the most frequent daily meaning of putting items back in order or organizing them neatly.\n  - Fixing or Repairing: I am going to fix the tools.\n    - Register: Informal to neutral.\n    - Nuance: Use this phrasing if the tools are broken or need a quick adjustment, maintenance, or repair to work properly.\n- *Problem: In this response, Gemini doesn't explain the meaning of jeito on its own and how that is different from the phrase it is contained in.*\n\n- **Question** : What is \"Language Root\"?\n  - **Answer** : It is a unique name I gave to this translation prompt so that it wouldn't just be called \"translation prompt\" (which would be super generic).", "url": "https://wpnews.pro/news/show-hn-i-created-a-translation-service-prompt", "canonical_source": "https://github.com/AlkalineGarrett/language-root-translator", "published_at": "2026-09-10 17:14:42+00:00", "updated_at": "2026-09-10 17:38:28.652895+00:00", "lang": "en", "topics": ["ai-tools", "natural-language-processing", "large-language-models", "ai-products"], "entities": ["Garrett Jones", "Language Root Translator", "Google Translate", "Hacker News", "Show HN"], "alternates": {"html": "https://wpnews.pro/news/show-hn-i-created-a-translation-service-prompt", "markdown": "https://wpnews.pro/news/show-hn-i-created-a-translation-service-prompt.md", "text": "https://wpnews.pro/news/show-hn-i-created-a-translation-service-prompt.txt", "jsonld": "https://wpnews.pro/news/show-hn-i-created-a-translation-service-prompt.jsonld"}}