Recently I have been researching into multi-lingual content, admittedly I have never properly looked into the concepts of Internationalization and Localization (i18n, l10n) before. Whilst reading the ICU documents. I have realised there is a significant lack of support for i18n & l10n in PHP applications. Despite the controversy with enterprise PHP, and the contenders commonly mentioned eZ Systems & Interakt, they still have limited support despite weak attempts at globalization (g11n).

The problem with i18n is the broad complexity of the field. Whilst PHP may well be able to handle i18n, it does not mean that the database or repertoire can? With regard to PHP in particular, I find that we make far too many assumptions; In general, this is a pitfall in many programming languages, so it is not justified pin pointing PHP developers. Whilst those particular details are applicable to i18n, we essentially need to look at a complete solution as a whole, which computer-based translation is just part of a recipe for an efficient globalized product.

I had a fundamental problem when I looked into Internationalizing data, this was simply to do with structuring globalized content. It is relatively simple handling string literals, which can be placed in a database and normalized. However, binary data and other forms of media are not ideally placed in a database. As, such structuring this data is challenging with regard to replication. Do you categorize content by country or language; as a result, I have concluded that replication is unavoidable in this instance. Although the approach that Internationalized Components for Unicode has taken with resource bundling is in hindsight the best approach. Some key points:-

  • Keep Data Separate
  • Keep Data Small
  • Find the Best Available Data

Whilst, this would be ideal it is not a feasible to implement for a variety of reasons, so the only ideal is to mediate content and aid linguists with a form of mediation via computer-based translation. Lets try and open our eyes and develop higher level applications.