I developed a rather large and extensive PHP application for maintaining a news publishing site. All static text was, when I created it, written in English. Form field labels, long explanatory texts, navigational links, everything. The popularity of the application, however, has drifted outside the Anglo boundaries, and now I need to internationalize the code to support other languages for text output and date formatting. (Localization I'll leave up to those better qualified). I'm looking for feedback on various methods of allowing easy localization.
The date formatting stuff is easy enough with built-in PHP functions. All my dates are instantiated as objects anyway, so output format is nicely encapsulated in class methods, making that part easy. The manner of supporting localization of text strings, however, allows for a few more options. I've taken note of how a few different PHP apps have broached the topic: -- phpMyAdmin. Minimal static text. Loads a localized text file containing localized variable assignments, and always puts out text by variable reference rather than hard-coded text. -- FUDforum2. Fairly large quantity of text. Also uses a text file of variables and their localized value, but seems to have a more indirect manner of putting out the variable-based text. (Part of the apparent "indirection" is that perusing the code reveals TONS of hard-coded English phrases that don't seem to be localized. But I haven't actually seen, as a web user, the FUDforum2 operating in a non-English language, so I can't really vouch for whether all the text is internationalized or not). -- The PHP Manual speaks highly of gettext() calls, relying on a standard, mature UNIX function to automatically handle internationalization. It sounded good, and I liked the idea of it leveraging the power of something that was _designed_ for internationalization, and not a "good hack job of variable substitutions" attempting the same functionality. So I've begun the process of modifying all of my text output from echo ("My English phrase dangles"); to echo _("My English phrase dangles"); and the like. It's beautiful. 3 extra characters -- "_()" -- to wrap around strings, and poof! it's 90% of the way towards the United Nations. I created a quick English string file of a few webpages worth of text, threw together a rough French translation, and tried viewing the site in French. Seemed to work wonderfully. So, this far, I'm happy, and continuing to modify the code to internationalize the output. I'm only a bit wary, however, because it seems relatively easy, yet I haven't run into any PHP applications that have internationalized their interface in this way. (That doesn't mean there aren't any out there, but I haven't run into them). Are there any potential problems that I need to be aware of? Substantial performance hits? Bogeymen? I'd love to hear success stories from anyone using gettext() with a substantial number of strings (like 500-1000). Cheers, spud. ------------------------------------------------------------------- a.h.s. boy spud(at)nothingness.org "as yes is to if,love is to yes" http://www.nothingness.org/ PGP Fingerprint: 7B5B 2E7A FA96 865A D9D9 5D6D 54CD D2C1 3429 56B4 ------------------------------------------------------------------- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php