3

I have a php/smarty/pear app that has it's own localization implementation that involves using ids for strings and the strings are stored in a db. currently the app is only in English but I will start adding other languages. The current implementation is very poor and basically I'm not a big fan of re-inventing the wheel.

Can anybody recommend what to use for localization? I had used gettext years ago, is that still used or is there something newer and better ?

thanks in advance.

Sherif Buzz
  • 1,218
  • 5
  • 21
  • 38

2 Answers2

2

I would use gettext, since it's a mature system and provides features like singular/plural versions of translations. To be not dependant on the availability of the php extension, you should fall back to http://launchpad.net/php-gettext which provides a pure php implementation of gettext.

gettext has also the big advantage that dozens of tools exist that make it easy to translate those files.

cweiske
  • 30,033
  • 14
  • 133
  • 194
0

My best advice is to look at how other apps (Drupal, Joomla, Wordpress) handle localization, and implement something similar.

A few of the apps I have delved into have a single ini file for each language that contains STRING-ID="String Value" definitions, where the STRING-ID is similar to a PHP CONSTANT name. These files are then loaded by a localization class, which has functions that handle setting the language to be used (based on a config value or user setting), loading the file, and handle the translation of the STRING-ID into the String Value. You would end up using it like this:

<?php
// config.php
$lang = "DE";

// languages/de.ini
HELLOWORLD="Hallo Welt"
OTHERSTRING="Anderer String"

// example.php
require_once("classes/localization.class.php");
$localize = localization::getInstance();
echo $localize->translate("HELLOWORLD");
?>

This should produce something like Hallo Welt.

deceze
  • 510,633
  • 85
  • 743
  • 889
jsnfwlr
  • 3,638
  • 2
  • 23
  • 25
  • that's sort of what i have now, but i feel that keeping track of changes between the different ini files could be a nightmare. i have fond memories of editing po/gettext files using proper tools. – Sherif Buzz Oct 07 '10 at 22:38