Back to Logbook
May 20, 2026 Project: #Portfolio

Profile and footer translations.

focused

The profile page was leaking English. job_title, skills, experience, education were rendering raw $profile['field'] instead of going through lang_field(). Fixed the frontend, then added these four fields as translatable — 44 new columns (4 fields × 11 lang suffixes).

Same treatment for the footer: footer_text in settings now has eleven translated variants. Added a translations panel to the Settings admin form and lang_field($settings, 'footer_text') in footer.php.

The Summernote bug took me longer than it should have. When the profile translations panel opened, only the bio field would init as a rich editor — skills, experience, and education stayed as plain textareas. Root cause: multiple Summernote instances trying to initialize on the same tick caused DOM collisions. Extracted initOneField() and staggered each init by i * 40 ms.

Lessons Learned

Stagger DOM-heavy widget inits — they collide on the same tick.