Having written a few posts on the merits of GETTEXT and 
.po files, I ran into an issue revolving around difficulties updating the 
.po files. It only seemed to work when I changed the location of the localization directory. I assumed that this was due to the files remaining in memory or being cached. This, it seems is a 'well known issue', although I'd never heard of it and trying to find information about it was very difficult. I came across this site: 
http://blog.ghost3k.net/articles/php/11/gettext-caching-in-php, which describes the phenomenon and offers a workaround. Although the workaround looks quite nice, I thought that this was a fudge and wanted an alternative.
I then came across 
php-gettext. This can be downloaded from 
https://launchpad.net/php-gettext/. This has the added bonus of providing a locale even if it isn't installed on your system. Following a bit of testing and jiggery-pokery, I finally got it to work, as follows:
 
- Unpack the archive and copy the contents somewhere on your system.
- Create a new directory to store the essential files - I placed them in my config folder, shown highlighted.
- Next include the phpgettext.php file, e.g. 
 include('config/phpgettext.php');
- The next step is to change your echo _("...")gettext statements toprint T_("...")It may be easier to do this with a find and replace in your text editor or IDE. For example:<?php print T_("Place text here");?>
- If using PoEdit, you can add the 'T_' keyword to the catalogue:
  
That worked like a charm for me, so pretty much 'out-of-the-box'. Now no cache problems and it seems to work equally well on Windows and Linux. :)
Great acquisition for reputation. They do amazing work and support team is second to none.
ReplyDeleteGood article!
ReplyDelete