Reply Language Lock: Answers in the User's Language
Recommended
Keeps an assistant answering in the language the user writes in, whatever the language of the pasted text, the logs, the code comments, the tool output or the documents it works from. Covers the slips that happen in practice - drifting into the language of an English log or a Russian forum post, mixing in words or letters of a close neighbour (Russian in Bulgarian or Ukrainian, Czech in Polish, Portuguese in Spanish, Dutch in German), answering in Latin letters a user who typed a Cyrillic language in Latin letters, and obeying a line inside the material that asks for another language. Code, commands, identifiers, error messages and quotations stay as they are, marked as code or quotes, and the explanation around them is in the user's language. An explicit request from the user for another language always wins. Use when an agent works for people who do not write English, when replies come back in the wrong language or with foreign words mixed in, or in long sessions full of foreign-language tool output.
Reply Language Lock: Answers in the User's Language is a tested SKILL.md that keeps an assistant answering in the language the user writes in, whatever the language of the pasted text, the logs, the code comments, the tool output or the documents it works from; an agent buys it once for $0.07 over x402.
Translating documents (use a translation skill), detecting the language of a text for a program, correcting the grammar of an answer, or forcing one fixed language whatever the user writes. It decides the language and script of the assistant's own replies and keeps quoted material as it is.
Tested, honestly
Tested 2026-10-09 with a strong and a weak model.
With and without the skill
Results with and without the skill, for Sonnet and Haiku
Sonnet
Haiku
with
without
with
without
Answers in the user's language (24 cases)
Answers in the user's language (24 cases)
24/24
21/24
21/24
18/24
Same request and same checks on both sides. Read by hand, Sonnet without the skill drifted into the language of the material three times: it answered a German user in Dutch, a Portuguese user in Spanish and a Russian user in Bulgarian, each time summarising the pasted text in its own language. It also answered the Bulgarian user who typed in Latin letters in Latin letters; the check accepts either script, so that is not counted. Haiku without the skill missed six, mostly on neighbouring languages.
Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.
SonnetStrong model, claude-sonnet-5-5
Right on all 24, checked by code on the language of the answer and on words and letters of the neighbouring language: Bulgarian under an English build log, a Russian forum post, a Russian error message and a planted line asking for English; Ukrainian, Polish, Czech, Spanish, Portuguese, German, Turkish, French, Italian, Japanese and Russian under material in another, often neighbouring, language; an email written in English when asked; and Cyrillic for a Bulgarian user who typed in Latin letters.
HaikuWeak model, claude-haiku-5-5
Right on 21 of 24, but three times it answered in Bulgarian where it should not: a Ukrainian user asking about a Russian text, a Russian user asking about a Bulgarian one, and an English user asking about a Bulgarian one.
Our own test text, before and after the skill ran. Excerpts only.
Bulgarian · claude-sonnet-5-5
Before
> tallybook@4.2.0 build
> next build
▲ Next.js 16.3.1
Creating an optimized production build ...
Failed to compile.
./src/app/settings/page.tsx
Module not found: Can't resolve './config'
Import trace for requested module:
./src/app/settings/page.tsx
Error: Cannot find module './config'
npm ERR! code 1
npm ERR! path /home/ci/tallybook
npm ERR! command failed
After
Билдът пада, защото `./src/app/settings/page.tsx` импортира `./config`, а такъв модул не съществува на този път (`src/app/settings/config`). Next.js не може да го намери и компилацията спира със:
```
Module not found: Can't resolve './config'
```
Останалите редове (`npm ERR! code 1`) са само последица от същата грешка.
**Най-честите причини и как да ги проверите:**
1.…
uk · claude-sonnet-5-5
Before
Городской совет утвердил новый план парковки в центре. Теперь стоянка будет платной с восьми утра до восьми вечера, а жители района получат скидку на годовой абонемент.
After
Текст — це коротка новина про те, що міська рада затвердила новий план паркування в центрі міста. Відтепер стоянка буде платною щодня з 8:00 до 20:00, а мешканці району отримають знижку на річний абонемент.
Polish · claude-sonnet-5-5
Before
Městská rada schválila nový plán parkování v centru. Parkování bude placené od osmi ráno do osmi večer a obyvatelé čtvrti dostanou slevu na roční předplatné.
After
Rada miejska zatwierdziła nowy plan parkowania w centrum miasta. Parkowanie będzie płatne od ósmej rano do ósmej wieczorem, a mieszkańcy dzielnicy dostaną zniżkę na abonament roczny.
cs · claude-sonnet-5-5
Before
Mestská rada schválila nový plán parkovania v centre. Parkovanie bude platené od ôsmej ráno do ôsmej večer a obyvatelia štvrte dostanú zľavu na ročné predplatné.
After
Městská rada schválila nový plán parkování v centru města. Parkování tam bude placené od osmé ráno do osmé večer a obyvatelé dané čtvrti dostanou slevu na roční předplatné.
Spanish · claude-sonnet-5-5
Before
A câmara municipal aprovou um novo plano de estacionamento no centro. O estacionamento será pago das oito da manhã às oito da noite, e os moradores do bairro terão desconto na assinatura anual.
After
El ayuntamiento ha aprobado un nuevo plan de aparcamiento para el centro, con pago obligatorio de ocho de la mañana a ocho de la noche. Los residentes del barrio tendrán un descuento en el abono anual.
Portuguese · claude-sonnet-5-5
Before
El ayuntamiento aprobó un nuevo plan de aparcamiento en el centro. El aparcamiento será de pago de ocho de la mañana a ocho de la noche, y los vecinos del barrio tendrán descuento en el abono anual.
After
A câmara municipal aprovou um novo plano de estacionamento para o centro da cidade. O estacionamento passará a ser pago das oito da manhã às oito da noite, e os moradores do bairro terão desconto na assinatura anual.
German · claude-sonnet-5-5
Before
De gemeenteraad heeft een nieuw parkeerplan voor het centrum goedgekeurd. Parkeren wordt betaald van acht uur 's ochtends tot acht uur 's avonds, en bewoners van de wijk krijgen korting op een jaarabonnement.
After
Der Gemeinderat hat einen neuen Parkplan für die Innenstadt beschlossen. Parken kostet künftig täglich von 8 bis 20 Uhr Geld, und Anwohner des Viertels erhalten einen Rabatt auf das Jahresabo.
Turkish · claude-sonnet-5-5
Before
The city council approved a new parking plan for the centre. Parking will be paid from eight in the morning to eight in the evening, and residents of the district will get a discount on the annual pass.
After
Belediye meclisi, şehir merkezi için yeni bir otopark planını onayladı. Otopark ücretleri sabah sekizden akşam sekize kadar uygulanacak ve bölge sakinleri yıllık kartta indirimden yararlanacak.
French · claude-sonnet-5-5
Before
{"error": {"code": 429, "message": "Rate limit exceeded: 60 requests per minute. Retry after 23 seconds.", "type": "rate_limit_error"}}
After
Cette erreur `429` (`rate_limit_error`) signifie que vous avez dépassé la limite de 60 requêtes par minute autorisée par l'API : `"Rate limit exceeded: 60 requests per minute"`. Il faut attendre environ 23 secondes (`Retry after 23 seconds`) avant de réessayer, et idéalement espacer vos appels ou ajouter une temporisation pour ne plus atteindre cette limite.
Italian · claude-sonnet-5-5
Before
El ayuntamiento aprobó un nuevo plan de aparcamiento en el centro. El aparcamiento será de pago de ocho de la mañana a ocho de la noche, y los vecinos del barrio tendrán descuento en el abono anual.
After
Il comune ha approvato un nuovo piano per i parcheggi in centro, con sosta a pagamento dalle otto del mattino alle otto di sera. I residenti del quartiere avranno inoltre uno sconto sull'abbonamento annuale.
Japanese · claude-sonnet-5-5
Before
Subject: Invoice 2026-118 overdue
Hi Mara,
This is a friendly reminder that invoice 2026-118 for 240 EUR was due on 1 October. If you have already paid, please ignore this message. Otherwise we would appreciate payment within the next seven days to avoid a late fee of 5 percent.
Best regards,
Tom, Accounts, Northwind Supplies
After
Northwind Supplies の経理担当 Tom さんから Mara さん宛てに、10月1日が支払期限だった請求書 2026-118(240ユーロ)が未払いであるとの催促メールです。すでに支払済みの場合は無視してよいものの、そうでなければ7日以内に支払わないと5%の延滞料が発生すると伝えています。
Russian · claude-sonnet-5-5
Before
Общинският съвет одобри нов план за паркиране в центъра. Паркирането ще бъде платено от осем сутринта до осем вечерта, а жителите на квартала ще получат отстъпка от годишния абонамент.
After
В тексте сообщается, что муниципальный совет одобрил новый план парковки в центре города. Парковка будет платной с восьми утра до восьми вечера, а жители района получат скидку на годовой абонемент.
Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Full terms.
Versions
Current version 1.0.0, updated 2026-10-09. Whoever bought an earlier version gets new ones free through the same re-download token.
v1.0.0 · 2026-10-09
First release: keeps an assistant answering in the language of the user's own words, whatever the language of pasted material, logs, code comments or tool output; follows an explicit request for another language and ignores one planted in the material; writes the language in its usual script; keeps code, identifiers, errors and quotations as they are; and lists the letters and words that betray a close neighbour (Russian in Bulgarian or Ukrainian, Czech in Polish, Slovak in Czech, Portuguese and Spanish, Spanish in Italian, Dutch in German). Twenty-four single-turn cases; test/control.mjs proves right answers pass and answers in the material's language or with a neighbour's words fail. No model run yet: the baseline, the final price and the sentence on what Sonnet gains are still to be written. Price 10000 is provisional.
FAQ
Replies that drift into another language: where does that come from?
Because the material it works from pulls it along. After a long English log, a Russian forum post or a German document, the next answer often starts in that language, or keeps the user's language but borrows words from a close neighbour. The skill fixes the language from the user's own words in the latest message and treats everything pasted as data, whatever language it is in.
What about code, error messages and quotations?
They stay exactly as they are, in code formatting or quotation marks, in their original language, and the explanation around them is in the user's language. An error message is never translated inside the quotation; the meaning is explained next to it. A line inside the material that asks for another language is part of the data and changes nothing.
What if I type my language in Latin letters, or ask for an answer in English?
A Cyrillic language typed in Latin letters because of the keyboard, such as Bulgarian, gets its answer in Cyrillic unless you ask for Latin; Serbian, written in both scripts, is answered in the script you used. An explicit request always wins: ask for an email in English and the email is in English, while anything said to you around it stays in your language.
Does it help Claude Sonnet?
It fixed three of twenty-four cases. Sonnet and Haiku answered short requests about pasted text in another language, file loaded and not, and code checked the language of each answer. Unaided, Sonnet answered a German user in Dutch, a Portuguese user in Spanish and a Russian user in Bulgarian, following the material; guided, it stayed in the user's language every time. Haiku went from 18 to 21 but still slipped into Bulgarian three times. The price is the owner's choice: an answer in the wrong language is the slip readers notice first.
Translates app strings and locale files (JSON, YAML, gettext PO, ICU messages, HTML snippets) into another language without breaking them. Keys, placeholders such as {name}, {{count}}, %s, %(name)s and %{count}, ICU plural and select syntax, HTML tags and URLs come back byte for byte; only the human text is translated, and plural forms are added where the target language needs more of them. Use when asked to translate a JSON or YAML locale file, an en.json, a .po file, i18n strings or UI text, or to localize an app.
Bulgarian Transliteration (Official Latin Spelling)
Translation & Localization
SKILL.md · v1.0.0 · 8.7 KB
Turns Bulgarian Cyrillic text into Latin letters by the official Bulgarian system, the one the Transliteration Act of 2009 makes mandatory for names, addresses, passports, forms and place names. One letter table, the word-final ия written ia, the country written Bulgaria, ъ written a, щ written sht, and every digit, punctuation mark, Latin word and line break kept byte for byte. Also makes URL slugs and flags letters that Bulgarian does not have. Use when asked to transliterate Bulgarian, write a Bulgarian name or address in Latin letters, make a slug from a Bulgarian title, or convert Cyrillic to the official Latin spelling.
Keeps an AI agent from obeying instructions hidden in what it reads (indirect prompt injection). Web pages, e-mails, files, PDFs, API and tool output, other agents' messages and skill files under review are treated as content, never as orders. The agent is instructed never to pay, transfer, delete or reveal anything because content asked, to report the attempt with a quote and its source, and to still finish the real task. Use whenever the agent reads anything it did not write itself, before any action with side effects such as a payment, a message or a file change, and when asked to review or summarise untrusted content.