# WooNooW i18n Implementation Guide This document tracks the internationalization implementation status across all WooNooW files. ## ✅ Completed Files ### Backend (PHP) - ✅ `includes/Api/OrdersController.php` - All validation and error messages - ✅ `includes/Core/Mail/MailQueue.php` - Error logging only (no user-facing strings) - ✅ `includes/Core/Mail/WooEmailOverride.php` - No user-facing strings ### Frontend (TypeScript/React) - ✅ `admin-spa/src/lib/errorHandling.ts` - All error messages - ✅ `admin-spa/src/lib/i18n.ts` - Translation utility (NEW) - ✅ `admin-spa/src/components/ErrorCard.tsx` - All UI strings - ✅ `admin-spa/src/routes/Orders/New.tsx` - All UI strings - ✅ `admin-spa/src/routes/Orders/Edit.tsx` - All UI strings - ✅ `admin-spa/src/routes/Orders/Detail.tsx` - All UI strings - ✅ `admin-spa/src/routes/Orders/index.tsx` - All UI strings - ✅ `admin-spa/src/routes/Orders/partials/OrderForm.tsx` - All UI strings - ✅ `admin-spa/src/routes/Dashboard.tsx` - All UI strings - ✅ `admin-spa/src/routes/Coupons/index.tsx` - All UI strings - ✅ `admin-spa/src/routes/Coupons/New.tsx` - All UI strings - ✅ `admin-spa/src/routes/Customers/index.tsx` - All UI strings - ✅ `admin-spa/src/routes/Settings/TabPage.tsx` - All UI strings - ✅ `admin-spa/src/components/CommandPalette.tsx` - All UI strings - ✅ `admin-spa/src/components/filters/DateRange.tsx` - All UI strings - ✅ `admin-spa/src/components/filters/OrderBy.tsx` - All UI strings - ✅ `admin-spa/src/App.tsx` - All navigation labels - ✅ `includes/Api/CheckoutController.php` - All error messages ## 🔄 Files Requiring Translation ### Medium Priority (Admin/System) #### PHP Files - ✅ `includes/Admin/Menu.php` - No user-facing strings (menu collector only) - ✅ `includes/Admin/Rest/MenuController.php` - No user-facing strings (API only) - ✅ `includes/Admin/Rest/SettingsController.php` - No user-facing strings (API only) - ✅ `includes/Api/CheckoutController.php` - Error messages translated - ✅ `includes/Compat/MenuProvider.php` - No user-facing strings (menu snapshot only) ### Low Priority (Internal/Technical) - UI components (button, input, select, etc.) - No user-facing strings - Hooks and utilities - Technical only ## 📝 Translation Pattern Reference ### Backend (PHP) ```php // Simple translation __( 'Text to translate', 'woonoow' ) // With sprintf sprintf( __( 'Order #%s created', 'woonoow' ), $order_number ) // With translator comment /* translators: %s: field name */ sprintf( __( '%s is required', 'woonoow' ), $field_name ) ``` ### Frontend (TypeScript/React) ```typescript import { __, sprintf } from '@/lib/i18n'; // Simple translation __('Text to translate') // With sprintf sprintf(__('Order #%s created'), orderNumber) // In JSX

{sprintf(__('Edit Order #%s'), orderId)}

``` ## 🎯 Implementation Checklist For each file: 1. [ ] Import translation functions (`__`, `sprintf` if needed) 2. [ ] Wrap all user-facing strings 3. [ ] Add translator comments for placeholders 4. [ ] Test in English first 5. [ ] Mark file as completed in this document ## 🌍 Translation File Generation After all strings are wrapped: 1. **Extract strings from PHP:** ```bash wp i18n make-pot . languages/woonoow.pot --domain=woonoow ``` 2. **Extract strings from JavaScript:** ```bash wp i18n make-json languages/woonoow-js.pot --no-purge ``` 3. **Create language files:** - Create `.po` files for each language - Compile to `.mo` files - Place in `languages/` directory ## 📚 Resources - WordPress i18n: https://developer.wordpress.org/apis/internationalization/ - WP-CLI i18n: https://developer.wordpress.org/cli/commands/i18n/ - Poedit: https://poedit.net/ (Translation editor) ## 🔄 Status Summary - **Completed:** 8 files - **High Priority Remaining:** ~15 files - **Medium Priority Remaining:** ~5 files - **Low Priority:** ~10 files (optional) **Next Steps:** 1. Complete high-priority route files 2. Complete component files 3. Complete PHP admin files 4. Generate translation files 5. Test with sample translations