These instructions are intended help anyone who is interested in demo'ing the Ghost i18n proof-of-concept (or PoC) that I am throwing together. This PoC is for both the admin panel as well as server-side notifications.
(PS: this is all pre the new Zelda UI changes)
- Clone Ghost from my fork on GitHub
- Switch over to the
i18n-poc
branch (git checkout i18n-poc
) - Run
npm install
to download all node-related dependencies. - Now follow the regular Ghost "developer install from git" instructions. https://github.com/TryGhost/Ghost#developer-install-from-git
- Once you are done with the those instructions, grunt dev` to start Ghost in development mode. Ghost will then be running at http://localhost:2368/ghost/
- Because this is just a proof of concept, the language files are inlcuded as part of the repo (in the real world, this would not be the case)
- Also because this is just a PoC... only a small subset of items have been translated:
- Main navigation in the admin panel
- Settings --> About page (also in the admin panel)
- Initial notifications when you first run the blog (the "Welcome to Ghost" and "Trying to send an email" ones)
- The "Welcome to Ghost" email
- To force another locale, open
/core/client/app/app.js
and change the array on line 18n to only have a single locale of your choice (currently the only ones avilable areen
andes
)
Off the top of my head (without trying the code yet + I can't find en.json) here are two bits of feedback:
This will only make sense for as long as the navigation stays the same and I doubt that will be true in 3 months time. Whilst context-based sections/hierarchy makes sense, I think this likely needs to be broken down into context based sections which aren't tied closely to the navigation.
With regard to development cycles & releases
I think new strings should be submitted to Transifex automatically when a pull request is merged. Only the core team can merge PRs, so this is implicit permission to add new strings to transifex.
After that it will be up to the people translating Ghost to submit translations for the new features quickly. The latest translations should be pulled from transifex as part of the release process and missing translations would not hold up a release. The admin UI needs to be (and is always) designed with flexible string length in mind and those people managing/accepting translations should be mindful of where in the UI a string lives when accepting. In the case that the UI breaks for a particular language because of a long string, that will be treated as either a translation or design bug (depending on the case) and fixed in the next release.
One thing worth noting, is we only expect the standard admin UI to support LTR languages. Other writing systems will likely need far more than just translations, and that's where the concept of a language pack (with design modifications) comes in. However, that's definitely not something for this first iteration of i18n support.