متن رابط کاربری
persian-ui-copyمهارتدکمه، لیبل، پیام خطا، حالت خالی و توست به فارسی درست. با واژهنامهی رابط کاربری تا Login بشه «ورود» و Submit بشه «ثبت»، نه «ارسال نمایید».
کی به کار میآد
- ساخت هر فرم یا صفحهای که متن داره
- پیام خطا و اعتبارسنجی
- حالت خالی، لودینگ و توست
- ترجمهی رابط انگلیسی به فارسی
شرط فعال شدن (description)
Write Persian (Farsi) UI microcopy: button labels, field labels and placeholders, validation and error messages, empty states, loading and success toasts, confirmations, notifications. Use whenever generating or translating any user-facing string for an Iranian product (متن دکمه، پیام خطا، لیبل فرم، ترجمهی رابط کاربری، فارسیسازی). Includes an English→Persian UI glossary so «Login» becomes «ورود» and «Submit» becomes «ثبت», never a literal translation.
مدل با همین چند خط تصمیم میگیره مهارت را بخونه یا نه. اگر میخواید در موقعیتهای دیگری هم فعال بشه، همین را عوض کنید.
Persian UI copy (متن رابط کاربری)
Interface strings are short, so every wrong word is loud. Models produce two failure types: literal translations («ارسال نمایید» for Submit) and mismatched register (a bureaucratic error under a friendly form). This skill fixes both.
1. Choose the product register once
| Register | Use for | Verb style |
|---|---|---|
| Formal-but-human (default) | Banking, B2B, admin panels, government, health | میشود، کنید، است |
| Light conversational | Consumer apps, shops, social, onboarding | میشه، میتونید، کنید |
Hold it across the whole product. «ذخیره شد» next to «پروفایلت آمادهست» in the same screen is the mixing error. Imperatives («ذخیره کنید»، «بزنید») are the same in both registers.
2. Glossary (English → Persian UI)
| English | Persian | Note |
|---|---|---|
| Login / Sign in | ورود | not «لاگین» |
| Sign up / Register | ثبتنام | with ZWNJ |
| Log out | خروج | |
| Submit | ثبت / ارسال | «ثبت» for forms that save, «ارسال» for messages |
| Save | ذخیره | |
| Cancel | انصراف | «لغو» for cancelling an order |
| Delete | حذف | |
| Edit | ویرایش | |
| Continue / Next | ادامه / بعدی | |
| Back / Previous | بازگشت / قبلی | |
| Done / Finish | تمام / پایان | |
| Retry | تلاش دوباره | |
| Search | جستوجو | with ZWNJ; «جستجو» is common but less correct |
| Filter / Sort | فیلتر / مرتبسازی | |
| Settings | تنظیمات | |
| Profile / Account | پروفایل / حساب کاربری | |
| Dashboard | داشبورد | |
| Notifications | اعلانها | |
| Cart / Checkout | سبد خرید / پرداخت | |
| Order / Orders | سفارش / سفارشها | |
| Add to cart | افزودن به سبد | |
| Buy now | خرید | |
| Price / Total | قیمت / جمع کل | |
| Discount / Coupon | تخفیف / کد تخفیف | |
| Email / Password | ایمیل / رمز عبور | |
| Phone number | شماره موبایل | «شماره تلفن» only for landlines |
| Verification code | کد تأیید | |
| Resend code | ارسال دوبارهی کد | |
| Address / Postal code | آدرس / کد پستی | |
| Upload / Download | آپلود / دانلود | «بارگذاری» is fine for formal |
| Loading… | در حال بارگذاری… | |
| Help / Support | راهنما / پشتیبانی | |
| Terms / Privacy | قوانین و مقررات / حریم خصوصی | |
| Yes / No | بله / خیر | avoid on buttons; see section 5 |
| OK | باشه (light) / تأیید (formal) |
3. Buttons and actions
One verb, no «کلیک کنید»: «ذخیره»، «ادامه»، «پرداخت». The label is the outcome, not the gesture.
Primary action first in the reading order (right side in RTL), secondary «انصراف» after it.
Destructive actions name the object: «حذف سفارش» not «حذف»، and the confirm dialog repeats it.
Persian labels run longer than English. Leave room; never truncate a button.
4. Forms
Label above the field, always visible; placeholder is an example, not a label: label «شماره موبایل», placeholder «مثلاً ۰۹۱۲۳۴۵۶۷۸۹».
Required fields: mark optional ones with «(اختیاری)» instead of starring everything.
Error text sits under the field and says what to change: «شماره موبایل باید ۱۱ رقم باشد و با ۰۹ شروع شود.» Never «خطا!»، never «مقدار نامعتبر است»، never «Oops».
Helper text is one short sentence: «کد تأیید به این شماره پیامک میشود.»
Password rules are listed before the user fails them.
Do not tell users «فقط با حروف انگلیسی» unless the backend truly requires it.
5. Confirmations and dialogs
Title asks the real question: «سفارش حذف شود؟»
Buttons carry the action, not yes/no: «حذف کن» / «منصرف شدم» (light) or «حذف» / «انصراف» (formal).
One sentence of consequence if it matters: «این کار قابل بازگشت نیست.»
6. Empty, loading, success, failure
| State | Pattern | Example |
|---|---|---|
| Empty | what goes here + the next action | «هنوز سفارشی ثبت نکردهاید. اولین سفارش را از فروشگاه شروع کنید.» |
| Loading | «در حال …» + ellipsis | «در حال ارسال…» |
| Success toast | short past tense | «ذخیره شد»، «کد ارسال شد» |
| Failure toast | what failed + what to do | «اتصال برقرار نشد. دوباره تلاش کنید.» |
| Offline | plain | «اینترنت قطع است.» |
| 404 | plain + a way out | «این صفحه وجود ندارد. به خانه برگردید.» |
Never «مشکلی پیش آمد» alone; say which thing and what next.
7. Numbers, money, dates inside copy
Persian digits: «۳ کالا»، «۲ ساعت پیش». Thousands with «٬»: «۱٬۲۵۰٬۰۰۰».
Unit after the number: «۱۲٬۰۰۰ تومان». Never «$», never «Toman».
Percent after the number with «٪»: «۲۰٪ تخفیف».
Dates Jalali: «۲۹ شهریور ۱۴۰۵»، relative «دیروز»، «۳ روز پیش».
Plurals with numbers stay singular: «۳ کالا» not «۳ کالاها».
Counts of one: «۱ پیام جدید» is fine; «یک پیام جدید» reads warmer.
8. Wording hygiene
Address the user with «شما» verbs; the verb carries it, so do not repeat «شما» in every sentence. No «کاربر گرامی».
No تعارف in UI («لطفاً» once per screen at most; «خواهشمندیم» never).
No exclamation marks on errors; at most one «!» on a celebration.
ZWNJ everywhere it belongs: میشود، ثبتنام، اعلانها، سفارشها.
Persian «،» «؟» and «گیومه»; no em dashes.
Latin brand names stay Latin («Google»، «PayPing»); Persian brands stay Persian («زرینپال»).
Keep one term per concept across the product: pick «سفارش» or «خرید», not both for the same object.
9. Before / after
| Prompt | ❌ | ✅ |
|---|---|---|
| Submit button on a signup form | ارسال نمایید | ثبتنام |
| Invalid phone | شماره تلفن وارد شده نامعتبر میباشد | شماره موبایل باید ۱۱ رقم باشد و با ۰۹ شروع شود. |
| Empty orders list | هیچ دادهای یافت نشد | هنوز سفارشی ثبت نکردهاید. |
| Delete confirm | آیا مطمئن هستید؟ بله / خیر | سفارش حذف شود؟ حذف / انصراف |
| Saved toast | عملیات با موفقیت انجام شد | ذخیره شد |
| Price | 12,000 Toman | ۱۲٬۰۰۰ تومان |
10. Checklist
Register chosen and consistent across the screen.
Every label from the glossary or a deliberate deviation.
Errors say what to fix; empty states say what to do next.
Persian digits, units after numbers, Jalali dates.
ZWNJ, Persian punctuation, no exclamation on errors.
نمونه
پرامپت: «پیام خطا برای شماره موبایل نامعتبر»
بدون مهارت
خطا! شماره تلفن وارد شده نامعتبر میباشد.
با مهارت
شماره موبایل باید ۱۱ رقم باشد و با ۰۹ شروع شود.
نمونه برای نشان دادن جهت تغییره؛ خروجی واقعی به مدل و پرامپت شما بستگی داره.
نصب
با CLI
این دستور فایل را در
.claude/skills/persian-ui-copy/SKILL.mdمینویسه. CLI به init نیاز نداره؛ فقط باید داخل پوشهی پروژه باشید.$npx vibefarsi add persian-ui-copyدستی
محتوای تب SKILL.md را کپی کنید و در مسیر ابزار خودتون بگذارید:
- Claude Code
.claude/skills/persian-ui-copy/SKILL.mdبرای همین پروژه، یا~/.claude/skills/persian-ui-copy/SKILL.mdبرای همهی پروژهها - Cursor
.cursor/skills/persian-ui-copy/SKILL.md - Codex
.agents/skills/persian-ui-copy/SKILL.md - بقیهی ابزارهاهمان فایل را در پروژه بگذارید و یک خط به
AGENTS.mdاضافه کنید:For any Persian task, read .claude/skills/persian-ui-copy/SKILL.md first.
کپی کل فایلregistry json- Claude Code
میخواید همهی قوانین را یکجا داشته باشید؟ قوانین فارسی برای CLAUDE.md خلاصهی همهی مهارتها در یک صفحهست و قوانین کرافت رابط طرف طراحی را پوشش میده. npx vibefarsi init هر دو را داخل پروژه مینویسه.