متن رابط کاربری

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

RegisterUse forVerb style
Formal-but-human (default)Banking, B2B, admin panels, government, healthمی‌شود، کنید، است
Light conversationalConsumer 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)

EnglishPersianNote
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

StatePatternExample
Emptywhat goes here + the next action«هنوز سفارشی ثبت نکرده‌اید. اولین سفارش را از فروشگاه شروع کنید.»
Loading«در حال …» + ellipsis«در حال ارسال…»
Success toastshort past tense«ذخیره شد»، «کد ارسال شد»
Failure toastwhat failed + what to do«اتصال برقرار نشد. دوباره تلاش کنید.»
Offlineplain«اینترنت قطع است.»
404plain + 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عملیات با موفقیت انجام شدذخیره شد
Price12,000 Toman۱۲٬۰۰۰ تومان

10. Checklist

  1. Register chosen and consistent across the screen.

  2. Every label from the glossary or a deliberate deviation.

  3. Errors say what to fix; empty states say what to do next.

  4. Persian digits, units after numbers, Jalali dates.

  5. ZWNJ, Persian punctuation, no exclamation on errors.

نمونه

پرامپت: «پیام خطا برای شماره موبایل نامعتبر»

بدون مهارت

خطا! شماره تلفن وارد شده نامعتبر می‌باشد.

با مهارت

شماره موبایل باید ۱۱ رقم باشد و با ۰۹ شروع شود.

نمونه برای نشان دادن جهت تغییره؛ خروجی واقعی به مدل و پرامپت شما بستگی داره.

نصب

  1. با CLI

    این دستور فایل را در .claude/skills/persian-ui-copy/SKILL.md می‌نویسه. CLI به init نیاز نداره؛ فقط باید داخل پوشه‌ی پروژه باشید.

    $npx vibefarsi add persian-ui-copy
  2. دستی

    محتوای تب 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.md خلاصه‌ی همه‌ی مهارت‌ها در یک صفحه‌ست و قوانین کرافت رابط طرف طراحی را پوشش میده. npx vibefarsi init هر دو را داخل پروژه می‌نویسه.