Context
Discussion: https://github.com/orgs/FreeOpenSourcePOS/discussions/239
A community member requested Persian/Farsi support and suggested adding Iran to the country profile. This issue tracks the work without treating a country entry as complete language support.
Goal
Provide a reliable first-class experience for Iranian businesses using Persian (fa-IR) and the Iran (IR) country profile.
Current Implementation Status
Persian is recognized internally, but it is intentionally not selectable by normal users yet. dir="rtl" support currently provides semantic document direction only; it does not mean all visual RTL layout work is complete.
#241 is an umbrella issue. Follow-up PRs must use Refs #241 only and must not close this issue until all acceptance criteria are complete.
Scope
- Add the Iran country profile with verified locale, currency, timezone, and dialing information.
- Add Persian/Farsi as a supported UI language.
- Add a complete Persian translation with the same key coverage as the existing languages.
- Add RTL document and layout support, including setup, dashboard, POS, KDS, and settings.
- Verify Persian date, number, currency, and text rendering.
- Test browser receipts and thermal receipts with Persian text where the printer supports it.
- Confirm the correct Iranian business identifier terminology before choosing the tax registration label. Rial is a currency, not a tax identifier.
Known Native Feedback & Decisions
Confirmed:
- Iranian Economic Code terminology:
کد اقتصادی
Awaiting Native Feedback / Decision:
﷼ / ریال / تومان
- whether Toman is display-only while storage remains IRR
- Persian vs Latin digits
- Shamsi/Persian vs Gregorian calendar
- whether temporary LTR UI is acceptable
- available thermal printer model
- whether
شناسه ملی should be a separate field
Delivery Checklist
Completed
Still pending
Out of scope for the initial language/country contribution
- This issue does not by itself promise official Iranian tax compliance or a complete Iranian tax pack. Tax rules should be added separately after they are verified.
- Payment-provider, fiscal e-invoicing, and other Iran-specific integrations are separate work.
Contribution notes
This is broad enough to be split into smaller pull requests after someone takes ownership. A contributor who can provide or review native Persian translations and local tax terminology would be especially valuable. The initial implementation should avoid shipping a partial translation or an untested RTL layout as if support were complete.
Acceptance criteria
- Persian can be selected during setup and in settings, persists server-side, and is inherited by the standalone KDS.
- The main POS flows do not expose raw translation keys and render correctly in RTL.
- Country selection for Iran supplies the expected locale, currency, timezone, and phone dial code.
- Dates, amounts, and receipts are tested for the chosen Rial/Toman behavior.
- Unsupported printer capabilities fail safely or use a documented fallback.
- Existing English, Spanish, and Portuguese behavior remains unchanged.
Context
Discussion: https://github.com/orgs/FreeOpenSourcePOS/discussions/239
A community member requested Persian/Farsi support and suggested adding Iran to the country profile. This issue tracks the work without treating a country entry as complete language support.
Goal
Provide a reliable first-class experience for Iranian businesses using Persian (
fa-IR) and the Iran (IR) country profile.Current Implementation Status
Scope
Known Native Feedback & Decisions
Confirmed:
کد اقتصادیAwaiting Native Feedback / Decision:
﷼/ریال/تومانشناسه ملیshould be a separate fieldDelivery Checklist
Completed
Iran country profile:
IRfa-IRIRRAsia/Tehran+98Economic CodeInitial
fa.jsonInternal Persian runtime plumbing
Languagetype recognizesfafaSemantic document language/direction plumbing
fa->lang="fa-IR"/dir="rtl"Still pending
Native translation completion/review
mainPersian user-facing enablement
Visual RTL verification/fixes
Audit remaining hard-coded EN/ES/PT assumptions
Iran-specific localized terminology
Economic Codeasکد اقتصادیشناسه ملیneeds a separate fieldLocale UX decisions
Browser receipt support
Raw thermal receipt support/fallback
Final focused tests/documentation
Final Persian Setup/Settings enablement only after prerequisites pass
Out of scope for the initial language/country contribution
Contribution notes
This is broad enough to be split into smaller pull requests after someone takes ownership. A contributor who can provide or review native Persian translations and local tax terminology would be especially valuable. The initial implementation should avoid shipping a partial translation or an untested RTL layout as if support were complete.
Acceptance criteria