Persian
How to get natural Persian out of Syntic models, and what to check before you ship. The general rules for every language are on Work in other languages.
At a glance
| Language tags | fa-IR, fa-AF (Dari) |
| Script and direction | Perso-Arabic script, right to left |
| Token use | Measure with token counting on your own text; non-Latin scripts and long compounds usually take more tokens per sentence than English. |
Register and form of address
Persian has a formal written register and a colloquial spoken one (کتابی vs محاوره). Support replies normally use polite written Persian with شما.
Numbers, dates and currency
Persian digits (۰۱۲۳) are standard in Iranian text; say whether you want them or Western digits. The Solar Hijri calendar (۱۴۰۵) is the everyday calendar in Iran.
Common pitfalls
- Zero-width non-joiner (ZWNJ, U+200C) is required in many words (میخواهم); make sure your pipeline does not strip it.
- Arabic letters ي and ك look similar to Persian ی and ک but are different characters and break search; normalise input.
- Mixed-direction text needs the same care as Arabic.
A system prompt line that works
Writing the language instruction in Persian itself is a strong signal:
به زبان فارسی رسمی و مؤدبانه پاسخ بده، کاربر را «شما» خطاب کن و از اعداد فارسی استفاده کن.(Answer in polite formal Persian, address the user as شما, and use Persian digits.)
Keep the rest of your instructions in whichever language your team maintains best; the model follows mixed-language system prompts reliably, and the reply language follows this line.
Test before launch
- Collect 30 or more real Persian messages, including short, misspelt and mixed-language ones.
- Have a fluent speaker grade replies for correctness, register and naturalness; then calibrate a rubric grader on their grades (Evaluate).
- Check rendering in your actual UI: line breaks, truncation, right-to-left layout and fonts.
- Re-run the set whenever you change the prompt or the model.