ifnex/01_Documents/IFNEX_I18N_Strategy.md
Kazem Alghasi b5e136a76d docs(roadmap): introduce phase 3.5 and future commercialization plans
Update project documentation to reflect the transition from Phase 3 to
a new critical refinement phase (Phase 3.5) and outline long-term
strategic goals.

Key documentation updates:
- Added Phase 3.5 (Essential Refinements) to the roadmap and checklist,
  focusing on multi-package support, parcel invoice forms, and
  internationalization (i18n).
- Defined Phase 5 (Commercialization) including tiered subscription
  models (Starter, Business, Enterprise) and premium features.
- Created `IFNEX_Commercial_Model.md` to detail monetization strategies.
- Created `IFNEX_I18N_Strategy.md` to outline the multi-language
  implementation approach using Polylang.
- Updated `README.md` with the revised project lifecycle and new
  documentation references.
2026-08-29 05:19:54 +03:30

219 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# استراتژی چندزبانه IFNEX (i18n)
> **سند مطالعاتی** — برای فاز ۳.۵ و فاز ۵
> **آخرین بروزرسانی:** 2026-08-29
---
## 🎯 هدف
پشتیبانی کامل از چند زبان در فرانت‌اند وردپرس و بک‌اند لاراول، با:
- زبان فارسی (پیش‌فرض، RTL)
- زبان انگلیسی (LTR)
- آماده برای افزودن زبان‌های دیگر در آینده (عربی، چینی، و...)
---
## 🏗️ معماری فعلی
### وردپرس
- **پلاگین:** Polylang (نصب‌شده)
- **قالب IFNEX:** فقط فارسی
- **پلاگین IFNEX Bridge:** فقط فارسی (hard-coded)
- **زبان‌های فعال:** فارسی (پیش‌فرض) + انگلیسی
### لاراول
- **APP_LOCALE:** fa
- **APP_FALLBACK_LOCALE:** fa
- **فایل‌های زبان:** موجود در `lang/fa/` و `lang/en/`
- **تاریخ:** morilog/jalali (فارسی) + Carbon (انگلیسی)
---
## 📋 برنامه پیاده‌سازی فاز ۳.۵
### ۱. وردپرس — استخراج رشته‌ها
#### ۱.۱ فایل‌های PHP پلاگین
تمام رشته‌های hard-coded فارسی باید با توابع ترجمه جایگزین شوند:
```php
// ❌ قبل:
return '<p class="ifnex-error">برای مشاهده پروفایل، باید وارد شوید.</p>';
// ✅ بعد:
return '<p class="ifnex-error">' . __('برای مشاهده پروفایل، باید وارد شوید.', 'ifnex-bridge') . '</p>';
```
#### فایل‌های موردنیاز برای اصلاح:
- [ ] `ifnex-bridge.php`
- [ ] `includes/api-client.php`
- [ ] `includes/user-bridge.php`
- [ ] `includes/shortcodes.php` (بزرگ‌ترین فایل)
- [ ] `includes/tracking-form.php`
#### ۱.۲ فایل‌های JS
استفاده از `wp_localize_script` برای ارسال ترجمه‌ها:
```php
// در PHP:
wp_localize_script('ifnex-order-form-js', 'ifnex_i18n', [
'loading' => __('در حال بارگذاری...', 'ifnex-bridge'),
'error_required' => __('لطفاً همه فیلدها را تکمیل کنید.', 'ifnex-bridge'),
'select_country' => __('انتخاب کشور...', 'ifnex-bridge'),
// ...
]);
```
```javascript
// در JS:
$('#ifnex-from-country').empty().append(
'<option value="">' + ifnex_i18n.select_country + '</option>'
);
```
### ۲. ساخت فایل‌های ترجمه
#### ۲.۱ ساختار پوشه
```
ifnex-bridge/
└── languages/
├── ifnex-bridge-fa_IR.po
├── ifnex-bridge-fa_IR.mo
├── ifnex-bridge-en_US.po
└── ifnex-bridge-en_US.mo
```
#### ۲.۲ ابزارها
- **Poedit** — برای ویرایش فایل‌های `.po`
- **WP-CLI** — برای استخراج خودکار: `wp i18n make-pot ifnex-bridge/ languages/ifnex-bridge.pot`
### ۳. اصلاح CSS برای RTL/LTR
```css
/* پیش‌فرض RTL (فارسی) */
.ifnex-form-grid {
direction: rtl;
}
/* LTR برای انگلیسی */
html[lang="en"] .ifnex-form-grid {
direction: ltr;
}
```
### ۴. اصلاح قالب IFNEX
- [ ] استخراج رشته‌های قالب
- [ ] افزودن فایل‌های ترجمه قالب
- [ ] اصلاح CSS برای پشتیبانی RTL/LTR
### ۵. لاراول
#### ۵.۱ فایل‌های زبان
```
lang/
├── fa/
│ ├── messages.php
│ ├── validation.php
│ └── ...
└── en/
├── messages.php
├── validation.php
└── ...
```
#### ۵.۲ API پاسخ‌ها
```php
// در Controller:
return response()->json([
'message' => __('messages.order_created'),
], 201);
```
#### ۵.۳ هدر Accept-Language
- اضافه‌کردن middleware برای تشخیص زبان از هدر `Accept-Language`
- تنظیم `App::setLocale()` بر اساس هدر
```php
// middleware:
public function handle($request, Closure $next)
{
$locale = $request->header('Accept-Language', 'fa');
App::setLocale(substr($locale, 0, 2));
return $next($request);
}
```
### ۶. وردپرس Polylang Integration
#### ۶.۱ ثبت strings در Polylang
```php
// در functions.php قالب:
pll_register_string('ifnex-bridge', 'برای مشاهده پروفایل، باید وارد شوید.');
```
#### ۶.۲ استفاده در شورت‌کدها
```php
$login_prompt = pll__('برای مشاهده پروفایل، باید وارد شوید.');
```
#### ۶.۳ ترجمه صفحات
- ساخت نسخه انگلیسی برای صفحات: `/en/my-account/`, `/en/wallet/`, و...
- اتصال صفحات فارسی و انگلیسی در Polylang
---
## 🎯 معیارهای پذیرش (Acceptance Criteria)
### فاز ۳.۵:
- [ ] تمام رشته‌های پلاگین IFNEX Bridge قابل ترجمه هستند
- [ ] فایل‌های `.po/.mo` برای fa_IR و en_US موجود است
- [ ] سایت در زبان انگلیسی به‌درستی نمایش داده می‌شود
- [ ] فرم سفارش در زبان انگلیسی کار می‌کند
- [ ] پیام‌های خطا در زبان انگلیسی نمایش داده می‌شوند
- [ ] CSS در هر دو حالت RTL و LTR درست است
- [ ] API لاراول بر اساس هدر `Accept-Language` پاسخ می‌دهد
### فاز ۵ (آینده):
- [ ] افزودن زبان عربی
- [ ] افزودن زبان چینی
- [ ] ترجمه خودکار با API (Google Translate)
- [ ] انتخاب زبان در فرم سفارش
---
## 📊 برآورد زمان
| بخش | زمان تخمینی |
|------|-------------|
| استخراج رشته‌ها (PHP) | ۱ روز |
| استخراج رشته‌ها (JS) | نصف روز |
| ساخت فایل‌های ترجمه | ۱ روز |
| اصلاح CSS RTL/LTR | نصف روز |
| تست و رفع اشکال | ۱ روز |
| **مجموع** | **۴ روز** |
---
## ⚠️ نکات مهم
1. **هماهنگی با کارفرما:** قبل از شروع، باید تأیید بشه که ترجمه انگلیسی رو کارفرما تأمین می‌کنه یا خودمون انجام می‌دیم.
2. **تاریخ:** برای زبان انگلیسی، تاریخ میلادی نمایش داده بشه (نه شمسی).
3. **اعداد:** برای زبان انگلیسی، اعداد لاتین نمایش داده بشه.
4. **جهت:** RTL برای فارسی/عربی، LTR برای انگلیسی/چینی.
5. **فونت:** برای زبان انگلیسی از فونت مناسب (مثل Inter یا Roboto) استفاده بشه.
---
## 📚 منابع
- [Polylang Documentation](https://polylang.pro/doc/)
- [WordPress Internationalization](https://developer.wordpress.org/plugins/internationalization/)
- [Laravel Localization](https://laravel.com/docs/localization)
- [WP-CLI i18n](https://developer.wordpress.org/cli/commands/i18n/)
---
> 2026 VernaSoft Group. Internal use only.