Source i18n with de, de-CH, fr, zh, zh-CN translations

I really appreciate your effort on this Cathy!

GitHub repository structure for Ghost themes is a little confusing. Are we in a transition to move all Ghost themes to TryGhost/Themes repository, including Source and Casper? Or will we keep separate repositories for each, but accept contributions on Themes repo (except Source and Casper?) ?

No themes are moving. Source and Casper remain submodules in Ghost (the monorepo). Everything else continues to live in the Themes monorepo.

We are adding a theme-translation package to the Themes monorepo, that package will be a new dev dependency of all official thenes (including Source and Casper).

All translation efforts for official themes are going to go to Themes/theme-translations, and then a build step for all themes will provide those translated strings. Yes, for Source and Casper, too. The only reason to open an i18n PR on Source or Casper would be to fix the way I wrapped strings. Or if I missed one. Translating an already wrapped string — which is all most translation contributors will do — will happen in Themes/theme-translations.

That’s a little weird/confusing, but it means that we can do ONE set of strings per language, and have those strings available for all official themes at once. (Third party theme devs may also want to use the package, and we’ve got build tools that’ll handle merging local strings with the shared ones to make that easy.) This setup gives translators one clear target, instead of 20 sets of strings across 20 folders in multiple repos and submodules.

Shoutout to @vikaspotluri123 for the super useful gt3 tool (which I built on top of for tracking and combining strings), to @jannis for reviewing the string wrapping PR (a beast), and especially to @9larsons from the Ghost team for being a thought partner and for ongoing work to get all the build, deployment, and shipping bits sorted out.


Addendum: a major goal in all the translation package overhaul and this new work is to not break any themes, whether official, third party, or custom. Existing translated themes are going to continue to “just work” — wanting to make no changes to the final structure of a built theme was an important constraint for deciding how to do this.

Eventually I’d like to pull Casper and Source out and I think it makes sense to house them within Themes. It’s fair to say it’s on my radar and it may happen sometime later this year, though it’s unrelated to i18n work.