268 lines
12 KiB
Markdown
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>
|