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 to print 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.
ReplyDelete