{"course":{"slug":"building-with-ai","title":"Building with AI","url":"https://addaly.com/learn/building-with-ai","level":"intermediate","track":"build"},"lesson":{"slug":"writing-for-many-languages","title":"Building for users who do not write in one language","url":"https://addaly.com/learn/building-with-ai/writing-for-many-languages","position":19,"of":80,"minutes":9,"answer":"Reply in the user's script and not merely their language, translate the query for retrieval rather than translating your instructions, and score quality separately per language because an average hides the languages you are failing.","keyIdea":"Reply in the user's script and not merely their language, translate the query for retrieval rather than translating your instructions, and score quality separately per language because an average hides the languages you are failing."},"body":{"format":"markdown","text":"## The input you will actually receive\n\nA support box in India does not receive Hindi or English. It receives this:\n\n> bhai order kal aana tha, still nahi aaya. cancel karna hai, refund kab milega?\n\nRoman-script Hindi with English words, no diacritics, spelled however the user types. Then the next message is in Devanagari, and the one after that is Tamil, and one is Bengali written in Roman script with an English product name in the middle.\n\nThis is normal for most of the world. If your prompt says *respond in the user's language*, you have not specified anything, because there are two languages and one script and no clean answer to what \"their language\" is.\n\n## Four decisions to make explicitly\n\n**1. Which script do you reply in?** The safest default is: reply in the script the user wrote in. Somebody who typed Roman-script Hindi may not read Devanagari comfortably: script and language are independent, and getting this wrong makes your reply unreadable to the person who wrote to you. State it as a rule:\n\n> Reply in the same language and the same script as the user's most recent message. If they wrote Hindi in Roman letters, reply in Hindi in Roman letters.\n\n**2. What happens to product terms and legal text?** Order IDs, product names, statutory notices and policy phrases usually should not be translated. Say so, and give an example, because a model asked to reply in Hindi will cheerfully translate your product name and your refund policy's legal wording.\n\n**3. Which language does the *retrieval* run in?** Your documentation is probably in English. A Hindi query against an English index will retrieve badly unless you either use a multilingual embedding model or translate the query first. This is usually the real cause when a multilingual assistant is bad in one language: not generation, retrieval.\n\n**4. What language are the internal steps in?** Keep classification labels, tool arguments and JSON keys in English. Only the user-facing text is translated. A category field that comes back as `बिलिंग` will not match your enum and your code will fall through to a default nobody tested.\n\n## Quality is not uniform, and you must measure per language\n\nEvery multilingual model is best in English and degrades unevenly. The degradation is not a single number: it varies by task and by language, and it is worst where training data is thinnest.\n\nWhat this means practically: **an aggregate quality score across all languages is a lie.** If 80 per cent of your traffic is English at 95 per cent quality and 20 per cent is Tamil at 60 per cent, your headline number is 88 and your Tamil users are having a bad time invisibly.\n\nSo your evaluation set is stratified. Twenty cases per language you actually serve, scored separately, reported separately. That is the only way the Tamil number can move, because a number nobody computes cannot be improved.\n\nAnd it costs more, as the first module showed: the same conversation in Devanagari or Tamil script consumes two to four times the tokens. Budget per language, not per user.\n\n## Techniques that help, in order of value\n\n**Examples in the target language.** Two examples of good Hinglish replies do more than any instruction about tone in Hinglish. Write them with a native speaker; do not have the model generate them and assume they are idiomatic.\n\n**Translate the query for retrieval, keep the answer in the user's language.** Cheap, and it fixes the most common failure.\n\n**Do not translate your prompt.** Instructions in English generally work at least as well as instructions in the target language, because the model's instruction-following was trained predominantly in English. Instructions in English, output in the target language, is a normal and effective combination.\n\n**Beware transliteration round-trips.** Converting Roman Hindi to Devanagari, processing, and converting back loses information: names in particular. Prefer working with what the user sent.\n\n## Say what you do not support\n\nIf your assistant is poor in a language, the honest option is to detect it and route to a human or say plainly that support in that language is limited. That is more respectful than confident, subtly wrong Tamil.\n\nThe test is straightforward. Take twenty real messages in each language, have a fluent speaker read the replies, and ask one question: *would you be happy receiving this from a company?* If the answer is no for a language, you do not support that language yet, whatever the model's marketing page claims about the number it supports."},"check":{"question":"A support assistant is rated highly overall but Bengali users complain the answers are irrelevant. Generation quality in Bengali looks acceptable when tested in isolation. Where should you look first?","options":[{"text":"The system prompt, which should be translated into Bengali.","correct":false,"tempting":"Translating instructions rarely helps, since instruction-following is strongest in English, and it would not explain irrelevance of content."},{"text":"Retrieval, since a Bengali query searched against an English index returns the wrong passages regardless of how well the model writes Bengali.","correct":true},{"text":"The tokeniser, which fragments Bengali into more tokens.","correct":false,"tempting":"Correctly identifies a cost and context problem, but more tokens for the same meaning does not make retrieved content irrelevant."},{"text":"The model tier, which may be too small for Bengali.","correct":false,"tempting":"Reaches for capability when the symptom is that the right material never reached the model, which a larger model cannot repair."}]},"prev":{"slug":"prompts-in-version-control","title":"Prompts belong in version control","url":"https://addaly.com/learn/building-with-ai/prompts-in-version-control"},"next":{"slug":"when-prompting-stops-working","title":"When prompting stops working: the fine-tuning decision","url":"https://addaly.com/learn/building-with-ai/when-prompting-stops-working"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Building for users who do not write in one language', in Building with AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/building-with-ai/writing-for-many-languages (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Building for users who do not write in one language","courseTitle":"Building with AI","module":{"index":2,"slug":"prompting-as-engineering","title":"Prompting as engineering"},"answer":null,"keyIdea":"Reply in the user’s script and not merely their language, translate the query for retrieval rather than translating your instructions, and score quality separately per language because an average hides the languages you are failing.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"the-input-you-will-actually-receive","runs":[{"text":"The input you will actually receive"}]},{"t":"p","runs":[{"text":"A support box in India does not receive Hindi or English. It receives this:"}]},{"t":"quote","runs":[{"text":"bhai order kal aana tha, still nahi aaya. cancel karna hai, refund kab milega?"}]},{"t":"p","runs":[{"text":"Roman-script Hindi with English words, no diacritics, spelled however the user types. Then the next message is in Devanagari, and the one after that is Tamil, and one is Bengali written in Roman script with an English product name in the middle."}]},{"t":"p","runs":[{"text":"This is normal for most of the world. If your prompt says "},{"text":"respond in the user’s language","i":true},{"text":", you have not specified anything, because there are two languages and one script and no clean answer to what “their language” is."}]},{"t":"h2","id":"four-decisions-to-make-explicitly","runs":[{"text":"Four decisions to make explicitly"}]},{"t":"p","runs":[{"text":"1. Which script do you reply in?","b":true},{"text":" The safest default is: reply in the script the user wrote in. Somebody who typed Roman-script Hindi may not read Devanagari comfortably: script and language are independent, and getting this wrong makes your reply unreadable to the person who wrote to you. State it as a rule:"}]},{"t":"quote","runs":[{"text":"Reply in the same language and the same script as the user’s most recent message. If they wrote Hindi in Roman letters, reply in Hindi in Roman letters."}]},{"t":"p","runs":[{"text":"2. What happens to product terms and legal text?","b":true},{"text":" Order IDs, product names, statutory notices and policy phrases usually should not be translated. Say so, and give an example, because a model asked to reply in Hindi will cheerfully translate your product name and your refund policy’s legal wording."}]},{"t":"p","runs":[{"text":"**3. Which language does the "},{"text":"retrieval","i":true},{"text":" run in?** Your documentation is probably in English. A Hindi query against an English index will retrieve badly unless you either use a multilingual embedding model or translate the query first. This is usually the real cause when a multilingual assistant is bad in one language: not generation, retrieval."}]},{"t":"p","runs":[{"text":"4. What language are the internal steps in?","b":true},{"text":" Keep classification labels, tool arguments and JSON keys in English. Only the user-facing text is translated. A category field that comes back as "},{"text":"बिलिंग","code":true},{"text":" will not match your enum and your code will fall through to a default nobody tested."}]},{"t":"h2","id":"quality-is-not-uniform-and-you-must-measure-per-language","runs":[{"text":"Quality is not uniform, and you must measure per language"}]},{"t":"p","runs":[{"text":"Every multilingual model is best in English and degrades unevenly. The degradation is not a single number: it varies by task and by language, and it is worst where training data is thinnest."}]},{"t":"p","runs":[{"text":"What this means practically: "},{"text":"an aggregate quality score across all languages is a lie.","b":true},{"text":" If 80 per cent of your traffic is English at 95 per cent quality and 20 per cent is Tamil at 60 per cent, your headline number is 88 and your Tamil users are having a bad time invisibly."}]},{"t":"p","runs":[{"text":"So your evaluation set is stratified. Twenty cases per language you actually serve, scored separately, reported separately. That is the only way the Tamil number can move, because a number nobody computes cannot be improved."}]},{"t":"p","runs":[{"text":"And it costs more, as the first module showed: the same conversation in Devanagari or Tamil script consumes two to four times the tokens. Budget per language, not per user."}]},{"t":"h2","id":"techniques-that-help-in-order-of-value","runs":[{"text":"Techniques that help, in order of value"}]},{"t":"p","runs":[{"text":"Examples in the target language.","b":true},{"text":" Two examples of good Hinglish replies do more than any instruction about tone in Hinglish. Write them with a native speaker; do not have the model generate them and assume they are idiomatic."}]},{"t":"p","runs":[{"text":"Translate the query for retrieval, keep the answer in the user’s language.","b":true},{"text":" Cheap, and it fixes the most common failure."}]},{"t":"p","runs":[{"text":"Do not translate your prompt.","b":true},{"text":" Instructions in English generally work at least as well as instructions in the target language, because the model’s instruction-following was trained predominantly in English. Instructions in English, output in the target language, is a normal and effective combination."}]},{"t":"p","runs":[{"text":"Beware transliteration round-trips.","b":true},{"text":" Converting Roman Hindi to Devanagari, processing, and converting back loses information: names in particular. Prefer working with what the user sent."}]},{"t":"h2","id":"say-what-you-do-not-support","runs":[{"text":"Say what you do not support"}]},{"t":"p","runs":[{"text":"If your assistant is poor in a language, the honest option is to detect it and route to a human or say plainly that support in that language is limited. That is more respectful than confident, subtly wrong Tamil."}]},{"t":"p","runs":[{"text":"The test is straightforward. Take twenty real messages in each language, have a fluent speaker read the replies, and ask one question: "},{"text":"would you be happy receiving this from a company?","i":true},{"text":" If the answer is no for a language, you do not support that language yet, whatever the model’s marketing page claims about the number it supports."}]}],"check":{"question":[{"text":"A support assistant is rated highly overall but Bengali users complain the answers are irrelevant. Generation quality in Bengali looks acceptable when tested in isolation. Where should you look first?"}],"options":[{"text":[{"text":"The system prompt, which should be translated into Bengali."}],"correct":false,"tempting":[{"text":"Translating instructions rarely helps, since instruction-following is strongest in English, and it would not explain irrelevance of content."}]},{"text":[{"text":"Retrieval, since a Bengali query searched against an English index returns the wrong passages regardless of how well the model writes Bengali."}],"correct":true,"tempting":null},{"text":[{"text":"The tokeniser, which fragments Bengali into more tokens."}],"correct":false,"tempting":[{"text":"Correctly identifies a cost and context problem, but more tokens for the same meaning does not make retrieved content irrelevant."}]},{"text":[{"text":"The model tier, which may be too small for Bengali."}],"correct":false,"tempting":[{"text":"Reaches for capability when the symptom is that the right material never reached the model, which a larger model cannot repair."}]}],"order":[3,0,2,1],"why":null},"prev":{"slug":"prompts-in-version-control","title":"Prompts belong in version control","minutes":8},"next":{"slug":"when-prompting-stops-working","title":"When prompting stops working: the fine-tuning decision","minutes":10}}}