Files
summer-phrasebook/docs/research/wintercms/quotifypro-16-i18n-content-localization/16-03-PLAN.md
2026-02-18 01:31:41 +01:00

7.5 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, must_haves
phase plan type wave depends_on files_modified autonomous must_haves
16-content-localization 03 execute 2
16-01
16-02
true
truths artifacts key_links
Static pages display correctly in Polish locale
Static pages display correctly in German locale
All translation keys from static pages have PL/DE translations
from to via pattern
themes/quotify/pages/*.htm winter_translate_messages table |_ filter |_
Verify static page translations are complete and working for Polish and German.

Purpose: Static pages (terms, privacy, FAQ, etc.) already use the |_ filter. This plan verifies all translation keys have PL/DE entries and the pages render correctly. Output: Confirmed working static pages in all three locales

<execution_context> @/home/jin/.claude/get-shit-done/workflows/execute-plan.md @/home/jin/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/16-content-localization/16-CONTEXT.md @themes/quotify/pages/terms.htm @themes/quotify/pages/privacy.htm @themes/quotify/pages/faq.htm @themes/quotify/pages/about.htm @themes/quotify/pages/how-it-works.htm @themes/quotify/pages/contact.htm Task 1: Audit static pages for missing translation keys None (read-only audit) Scan all static pages and verify translation coverage:
  1. Run translate:scan to ensure all theme strings are captured:

    php-legacy artisan translate:scan
    
  2. Query for untranslated strings in static pages:

    php-legacy artisan tinker --execute="
      \$enKeys = DB::table('winter_translate_messages')
        ->where('code', 'like', '%terms%')
        ->orWhere('code', 'like', '%privacy%')
        ->orWhere('code', 'like', '%About%')
        ->orWhere('code', 'like', '%FAQ%')
        ->orWhere('code', 'like', '%Contact%')
        ->pluck('code');
    
      \$plCount = DB::table('winter_translate_messages')
        ->where('locale', 'pl')
        ->whereIn('code', \$enKeys)
        ->count();
    
      \$deCount = DB::table('winter_translate_messages')
        ->where('locale', 'de')
        ->whereIn('code', \$enKeys)
        ->count();
    
      echo \"EN keys: \" . \$enKeys->count() . \", PL: \$plCount, DE: \$deCount\";
    "
    
  3. If any keys are missing translations, identify them:

    php-legacy artisan translate:export missing-translations.json --locale=pl --untranslated-only
    php-legacy artisan translate:export missing-translations-de.json --locale=de --untranslated-only
    
  4. Review the static pages that need translation:

    • terms.htm - Terms of Service (legal)
    • privacy.htm - Privacy Policy (legal)
    • faq.htm - Frequently Asked Questions
    • about.htm - About Quotify
    • how-it-works.htm - How the platform works
    • contact.htm - Contact information

These pages were translated in Phases 13 and 14, so they should already have translations. This task confirms coverage. Export shows 0 untranslated keys for static page content in both PL and DE locales. Static page translation coverage is 100% for PL and DE.

Task 2: Fill any missing static page translations None (database only) If Task 1 found missing translations, add them:
  1. For any missing Polish translations, add using DB::table():

    DB::table('winter_translate_messages')->insert([
        'code' => 'the.translation.key',
        'locale' => 'pl',
        'message_data' => 'Polish translation here',
    ]);
    
  2. For any missing German translations, add similarly.

  3. If no missing translations found, skip this task and note in summary.

Common static page strings that might be missing:

Legal pages (if not covered in Phases 13-14):

  • "Terms of Service" = "Regulamin" / "Nutzungsbedingungen"
  • "Privacy Policy" = "Polityka prywatnosci" / "Datenschutzerklaerung"
  • "Last updated" = "Ostatnia aktualizacja" / "Letzte Aktualisierung"
  • "Acceptance of Terms" = "Akceptacja regulaminu" / "Annahme der Nutzungsbedingungen"
  • "Description of Service" = "Opis uslug" / "Beschreibung des Dienstes"
  • "User Accounts" = "Konta uzytkownikow" / "Benutzerkonten"
  • "Professional Accounts" = "Konta profesjonalistow" / "Fachkraft-Konten"
  • "Fees and Payments" = "Oplaty i platnosci" / "Gebuehren und Zahlungen"
  • "Limitation of Liability" = "Ograniczenie odpowiedzialnosci" / "Haftungsbeschraenkung"
  • "Changes to Terms" = "Zmiany regulaminu" / "Aenderungen der Nutzungsbedingungen"

FAQ strings:

  • "Frequently Asked Questions" = "Czesto zadawane pytania" / "Haeufig gestellte Fragen"
  • "For Homeowners" = "Dla wlascicieli domow" / "Fuer Hauseigentuemer"
  • "For Professionals" = "Dla profesjonalistow" / "Fuer Fachkraefte"

About/Contact:

  • "About Quotify" = "O Quotify" / "Ueber Quotify"
  • "Contact Us" = "Kontakt" / "Kontakt"
  • "Our Mission" = "Nasza misja" / "Unsere Mission" Re-run the untranslated export - should show 0 missing keys. All static page translation keys have PL and DE entries.
Task 3: Verify static pages render correctly in each locale None (manual/automated testing) Test static page rendering in each locale:
  1. Test Terms page:

    curl -s "http://localhost/terms" | grep -o "Terms of Service" | head -1
    curl -s "http://localhost/pl/regulamin" | grep -o "Regulamin" | head -1
    curl -s "http://localhost/de/agb" | grep -o "Nutzungsbedingungen" | head -1
    
  2. Test Privacy page:

    curl -s "http://localhost/privacy" | head -100
    curl -s "http://localhost/pl/prywatnosc" | head -100
    curl -s "http://localhost/de/datenschutz" | head -100
    
  3. Test FAQ page:

    curl -s "http://localhost/faq" | grep -c "|_"  # Should be 0 (all translated)
    curl -s "http://localhost/pl/faq" | head -100
    curl -s "http://localhost/de/faq" | head -100
    
  4. Test About page:

    curl -s "http://localhost/about" | head -100
    curl -s "http://localhost/pl/o-nas" | head -100
    curl -s "http://localhost/de/ueber-uns" | head -100
    
  5. For each page, verify:

    • No raw |_ filter visible in output (would indicate untranslated strings)
    • Correct language content displays
    • Page renders without errors

If running locally, use the actual dev URL. Adjust URLs based on localeUrl configuration in each page's viewBag. All static pages render with correct translated content in PL and DE locales without showing raw translation keys. Static pages verified working in English, Polish, and German.

1. translate:scan shows no new strings needing translation 2. No untranslated keys for static page content 3. terms.htm renders correctly in EN/PL/DE 4. privacy.htm renders correctly in EN/PL/DE 5. faq.htm renders correctly in EN/PL/DE 6. about.htm renders correctly in EN/PL/DE 7. how-it-works.htm renders correctly in EN/PL/DE 8. contact.htm renders correctly in EN/PL/DE

<success_criteria>

  • 100% translation coverage for static page strings in PL and DE
  • All static pages render without raw translation keys visible
  • URL routing works correctly (/pl/regulamin, /de/agb, etc.)
  • No console/server errors when rendering translated pages </success_criteria>
After completion, create `.planning/phases/16-content-localization/16-03-SUMMARY.md`