Files
2026-02-18 01:31:41 +01:00

268 lines
12 KiB
Markdown

---
phase: 16-content-localization
plan: 02
type: execute
wave: 1
depends_on: []
files_modified:
- plugins/golem15/quotify/views/mail/professional_approved.htm
- plugins/golem15/quotify/views/mail/professional_rejected.htm
- plugins/golem15/quotify/views/mail/professional_submitted.htm
autonomous: true
must_haves:
truths:
- "All system emails use translation filter for all user-facing text"
- "Email subjects are translatable"
- "Email bodies are translatable"
artifacts:
- path: "plugins/golem15/quotify/views/mail/professional_approved.htm"
provides: "Translatable professional approval email"
contains: "|_"
- path: "plugins/golem15/quotify/views/mail/professional_rejected.htm"
provides: "Translatable professional rejection email"
contains: "|_"
- path: "plugins/golem15/quotify/views/mail/professional_submitted.htm"
provides: "Translatable professional submission email"
contains: "|_"
key_links:
- from: "mail/*.htm"
to: "Golem15.Translate plugin"
via: "Twig |_ filter"
pattern: "\\|_"
---
<objective>
Make all email templates fully translatable by adding |_ filter to hardcoded English text.
Purpose: Emails are sent to users in their preferred locale. Three email templates have hardcoded English text that needs the |_ filter.
Output: All 8 email templates using |_ filter consistently for all user-facing text
</objective>
<execution_context>
@/home/jin/.claude/get-shit-done/workflows/execute-plan.md
@/home/jin/.claude/get-shit-done/templates/summary.md
</execution_context>
<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@.planning/phases/16-content-localization/16-CONTEXT.md
@plugins/golem15/quotify/views/mail/professional_approved.htm
@plugins/golem15/quotify/views/mail/professional_rejected.htm
@plugins/golem15/quotify/views/mail/professional_submitted.htm
@plugins/golem15/quotify/views/mail/new_quote_received.htm (reference - already uses |_)
</context>
<tasks>
<task type="auto">
<name>Task 1: Add translation filter to professional_approved.htm</name>
<files>plugins/golem15/quotify/views/mail/professional_approved.htm</files>
<action>
Update professional_approved.htm to use |_ filter for all user-facing text:
1. Subject line:
```
subject = "{{ 'Congratulations! Your Professional Account is Verified'|_ }}"
```
2. Body content - wrap each text block:
```
{{ 'Hi'|_ }} {{ professional.user.name }},
{{ 'Great news! Your professional profile for'|_ }} **{{ professional.business_name }}** {{ 'has been approved.'|_ }}
{{ 'You can now'|_ }}:
- {{ 'Receive job requests from homeowners'|_ }}
- {{ 'Submit quotes for jobs in your service area'|_ }}
- {{ 'Build your reputation through reviews'|_ }}
{% if notes %}
**{{ 'Notes from our team'|_ }}:** {{ notes }}
{% endif %}
{{ 'Log in to your dashboard to start receiving jobs.'|_ }}
{{ 'Welcome to Quotify!'|_ }}
{{ 'The Quotify Team'|_ }}
```
Follow the pattern from new_quote_received.htm for consistency.
</action>
<verify>Run `php-legacy artisan translate:scan --include-themes=false` to confirm new strings are detected.</verify>
<done>professional_approved.htm uses |_ filter for all user-facing text including subject.</done>
</task>
<task type="auto">
<name>Task 2: Add translation filter to professional_rejected.htm and professional_submitted.htm</name>
<files>
plugins/golem15/quotify/views/mail/professional_rejected.htm
plugins/golem15/quotify/views/mail/professional_submitted.htm
</files>
<action>
Update both templates to use |_ filter:
**professional_rejected.htm:**
```
subject = "{{ 'Update on Your Professional Application'|_ }}"
description = "Notification sent when a professional is rejected"
==
{{ 'Hi'|_ }} {{ professional.user.name }},
{{ 'We have reviewed your professional profile for'|_ }} **{{ professional.business_name }}** {{ 'and unfortunately we are unable to approve it at this time.'|_ }}
**{{ 'Reason'|_ }}:** {{ reason }}
**{{ 'What you can do'|_ }}:**
- {{ 'Review the feedback above'|_ }}
- {{ 'Update your profile with the required information'|_ }}
- {{ 'Resubmit for verification'|_ }}
{{ 'If you have questions, please contact our support team.'|_ }}
{{ 'The Quotify Team'|_ }}
```
**professional_submitted.htm:**
```
subject = "{{ 'Your Professional Application Has Been Submitted'|_ }}"
description = "Notification sent when a professional submits for verification"
==
{{ 'Hi'|_ }} {{ professional.user.name }},
{{ 'Your professional profile for'|_ }} **{{ professional.business_name }}** {{ 'has been submitted for verification.'|_ }}
{{ 'Our team will review your application and get back to you within 2-3 business days.'|_ }}
**{{ 'What happens next'|_ }}:**
1. {{ 'Our team reviews your business information'|_ }}
2. {{ 'We may contact you for additional documentation'|_ }}
3. {{ 'You will receive an email with the decision'|_ }}
{{ 'Thanks for your patience!'|_ }}
{{ 'The Quotify Team'|_ }}
```
Note: Keep dynamic content (professional.business_name, reason, notes) outside translation filter - only translate static text.
</action>
<verify>Run `php-legacy artisan translate:scan --include-themes=false` to confirm all new strings are detected.</verify>
<done>professional_rejected.htm and professional_submitted.htm use |_ filter for all user-facing text.</done>
</task>
<task type="auto">
<name>Task 3: Add Polish and German translations for email strings</name>
<files>None (uses existing translation infrastructure)</files>
<action>
Run translate:scan to capture all new email strings, then add translations:
1. Scan for new strings:
```bash
php-legacy artisan translate:scan --include-themes=false
```
2. Export current translations:
```bash
php-legacy artisan translate:export golem15-quotify-emails.json --source=messages
```
3. Add translations for the new email strings (approximately 40 new keys):
**Polish translations for email text:**
- "Congratulations! Your Professional Account is Verified" = "Gratulacje! Twoje konto profesjonalisty zostalo zweryfikowane"
- "Great news! Your professional profile for" = "Swietna wiadomosc! Twoj profil profesjonalisty dla"
- "has been approved." = "zostal zatwierdzony."
- "You can now" = "Mozesz teraz"
- "Receive job requests from homeowners" = "Otrzymywac zlecenia od wlascicieli domow"
- "Submit quotes for jobs in your service area" = "Skladac wyceny na zlecenia w Twoim obszarze"
- "Build your reputation through reviews" = "Budowac swoja reputacje dzieki opiniom"
- "Notes from our team" = "Uwagi od naszego zespolu"
- "Log in to your dashboard to start receiving jobs." = "Zaloguj sie do panelu, aby zaczac otrzymywac zlecenia."
- "Welcome to Quotify!" = "Witamy w Quotify!"
- "The Quotify Team" = "Zespol Quotify"
- "Update on Your Professional Application" = "Aktualizacja dotyczaca Twojej aplikacji"
- "and unfortunately we are unable to approve it at this time." = "i niestety nie mozemy jej teraz zatwierdzic."
- "Reason" = "Powod"
- "What you can do" = "Co mozesz zrobic"
- "Review the feedback above" = "Przejrzyj powyzsze uwagi"
- "Update your profile with the required information" = "Uzupelnij profil wymaganymi informacjami"
- "Resubmit for verification" = "Wyslij ponownie do weryfikacji"
- "If you have questions, please contact our support team." = "Jesli masz pytania, skontaktuj sie z naszym zespolem wsparcia."
- "Your Professional Application Has Been Submitted" = "Twoja aplikacja zostala wyslana"
- "has been submitted for verification." = "zostala wyslana do weryfikacji."
- "Our team will review your application and get back to you within 2-3 business days." = "Nasz zespol przejrzy Twoja aplikacje i odpowie w ciagu 2-3 dni roboczych."
- "What happens next" = "Co dalej"
- "Our team reviews your business information" = "Nasz zespol sprawdza informacje o Twojej firmie"
- "We may contact you for additional documentation" = "Mozemy sie z Toba skontaktowac w celu uzyskania dodatkowych dokumentow"
- "You will receive an email with the decision" = "Otrzymasz e-mail z decyzja"
- "Thanks for your patience!" = "Dziekujemy za cierpliwosc!"
**German translations for email text:**
- "Congratulations! Your Professional Account is Verified" = "Herzlichen Glueckwunsch! Ihr Fachkraft-Konto ist verifiziert"
- "Great news! Your professional profile for" = "Gute Nachrichten! Ihr Fachkraft-Profil fuer"
- "has been approved." = "wurde genehmigt."
- "You can now" = "Sie koennen jetzt"
- "Receive job requests from homeowners" = "Auftragsanfragen von Hauseigentuemern erhalten"
- "Submit quotes for jobs in your service area" = "Angebote fuer Auftraege in Ihrem Einsatzgebiet abgeben"
- "Build your reputation through reviews" = "Ihren Ruf durch Bewertungen aufbauen"
- "Notes from our team" = "Hinweise von unserem Team"
- "Log in to your dashboard to start receiving jobs." = "Melden Sie sich in Ihrem Dashboard an, um Auftraege zu erhalten."
- "Welcome to Quotify!" = "Willkommen bei Quotify!"
- "The Quotify Team" = "Das Quotify-Team"
- "Update on Your Professional Application" = "Aktualisierung zu Ihrer Bewerbung"
- "and unfortunately we are unable to approve it at this time." = "und wir koennen sie leider derzeit nicht genehmigen."
- "Reason" = "Grund"
- "What you can do" = "Was Sie tun koennen"
- "Review the feedback above" = "Lesen Sie das obige Feedback"
- "Update your profile with the required information" = "Aktualisieren Sie Ihr Profil mit den erforderlichen Informationen"
- "Resubmit for verification" = "Erneut zur Verifizierung einreichen"
- "If you have questions, please contact our support team." = "Bei Fragen wenden Sie sich bitte an unser Support-Team."
- "Your Professional Application Has Been Submitted" = "Ihre Bewerbung wurde eingereicht"
- "has been submitted for verification." = "wurde zur Verifizierung eingereicht."
- "Our team will review your application and get back to you within 2-3 business days." = "Unser Team wird Ihre Bewerbung pruefen und sich innerhalb von 2-3 Werktagen bei Ihnen melden."
- "What happens next" = "Naechste Schritte"
- "Our team reviews your business information" = "Unser Team prueft Ihre Unternehmensinformationen"
- "We may contact you for additional documentation" = "Wir kontaktieren Sie moeglicherweise fuer zusaetzliche Unterlagen"
- "You will receive an email with the decision" = "Sie erhalten eine E-Mail mit der Entscheidung"
- "Thanks for your patience!" = "Vielen Dank fuer Ihre Geduld!"
4. Import translations:
```bash
php-legacy artisan translate:import golem15-quotify-emails.json
```
Alternative: If CLI workflow is cumbersome, insert translations directly via DB::table('winter_translate_messages') using the existing seeder pattern from Phase 12.
</action>
<verify>Test email preview in backend or send test email while locale is set to 'pl' or 'de' to confirm translations appear.</verify>
<done>All email strings have Polish and German translations in the database.</done>
</task>
</tasks>
<verification>
1. All 8 email templates use |_ filter for user-facing text
2. Email subjects are translatable (use |_ in subject line)
3. Polish translations exist for all email strings
4. German translations exist for all email strings
5. Test email in each locale shows correct language
</verification>
<success_criteria>
- professional_approved.htm uses |_ filter throughout
- professional_rejected.htm uses |_ filter throughout
- professional_submitted.htm uses |_ filter throughout
- All email strings have PL translations
- All email strings have DE translations
- Emails render in user's preferred locale
</success_criteria>
<output>
After completion, create `.planning/phases/16-content-localization/16-02-SUMMARY.md`
</output>