As the last update was about the different languages on user submitted content, it's time to internationalize Elabs, the core.
Here is the beggining of this wonderful journey.
All the strings in the source code were written in english (hum... almost everything), using the internationalization functions of CakePHP :
__('The string') and
__d('domain', 'The string') mostly.
I choosed to divide my app in multiple parts, the domains, to make the translation easier, as it's generally something we do in the end, so I had elabs, posts, projects,... elabs being the domain of all the shared strings.
As I don't have time to work everydays on it, I slowly mixed singulars and plural domain names, sometimes assigning a string to a domain it don't belong to. So I had the bad surprise to find a lot
.pot files in the extraction, and their content was a real mess.
Finally, I fell back to a unique domain name, 'elabs', with all the strings. Here where the steps to batch replace existing content in the
- Change all domains to elabs: replace
__d('elabs'(regex on, all files)
- Add a domain on all the strings with no domain: replace
__d('elabs',(plain text, all files)
The next step was to re-generate the
./bin/cake i18n extract, using the default propositions except for the one about extracting the core strings.
And now I have a unique
elabs.pot file, with all the strings of my app to translate. Opening it with poEdit gave me a small heart attack: a lot of strings were almost the same, with only small differences with ponctuation and/or spaces, plurals without singular versions for counts, hardcoded html and other nice things.
And a lot of strings totally weird, when read out of their context.
Happily, CakePHP have a strong internationalization support, so i'll have to read the docs and re-work my code. That may not be the smartest thing to do at this point, as it will block the development of other features, but I need to know...
To be continued...