GhonaimStudio

Home / Work / W-05

Thirty languages, no engineer in the loop

iPhone Photography School — Online photography school, 800K+ students, Latvia

Built as senior engineer at IPSInternal tool2025Latvia, remote

System drawing of Thirty languages, no engineer in the loop
Industry
Online education
Size
10 to 15 locale managers, about 30 languages
Region
Latvia, remote
Stack
Laravel, Livewire, GitHub API, GitHub Actions, Crowdin
Timeline
2025
Status
Live

The problem

Translations arrived as pull requests, and every one of them needed a developer to look at it, group it and merge it. Locale managers who knew the language could not ship their own work, and engineers spent their week on merges instead of code.

What we built

A review portal over GitHub

A Livewire portal that reads pull requests through the GitHub API using typed DTOs, fetches in parallel with a connection pool, caches by version, enforces role-based access and merges in bulk. A locale manager sees their language and nothing else.

A per-locale pull request splitter

A GitHub Actions workflow that splits incoming translation changes into one pull request per language, plus the Crowdin plumbing that feeds it, so reviews arrive already sorted.

The product surfaces to go with it

Product surfaces shipped in 11 or more locales including right-to-left languages, across the portal, the sales platform and the course portal.

  • Laravel
  • Livewire
  • GitHub API
  • GitHub Actions
  • Crowdin
  • Caching

Screens

System drawing of Thirty languages, no engineer in the loop
System drawing. Internal tool, no public screenshot.

How we worked

Our founder proposed the platform and built it across three repositories: the CI splitter, the review portal and the product surfaces that consume the translations. The measure of success was simple: no developer in a translation merge.

Results

~30

pull requests reviewed per week through the portal

The only review path; there is no parallel manual flow.

10-15

locale managers working in it

About 30 languages actively managed.

11+

locales shipped in product surfaces

Including right-to-left layouts.

Developer involvement in translation merges eliminated

Localized products account for 20 to 30% of campaign revenue, company-level context rather than attribution.

What's next

New languages are onboarding work now, not engineering work.

Have a similar problem? Tell us