Дабы не отставать от всего прогрессивного человечества использовал для локализации Gettext.
Впечатления такие – из плюсов – работает это, конечно, быстрее, потому как используются встроеные функции для вывода строк из файлов локализации.
Но выяснились суровые минусы – во первых gettext работает со своим форматом файлов. Текстовые файлы словарей нужно скомпилировать для того, чтобы gettext их увидел. Для этого нужно использовать либо виндовую утилиту poedit, либо иксовую msgfmt. Подробности о том, как с этим работать описаны здесь – http://phpclub.ru/faq/wakka.php?wakka=multilang/gettext1&v=74t
Что это значит в практическом плане? Для того, чтобы добавить-изменить что-либо в файле локализации, нужно проделать серию процедур. И вам будет нужно установить на машину poedit, либо получить доступ к shell. Излишне говорить, что это не добавляет радости и скорости в разработке.
Изменения на-лету не катят! И тут выяснился второй минус. Оказывается, работа функции gettext кэшируется! То есть после изменения файла локализации вы можете наблюдать часть тикетов новыми, а часть старыми, причём работает это так, что очень похоже на какое-то шаманство.
Лечится это рестартом апача. Погуглив, выяснил – народ тоже хочет узнать, что происходит. Например вот – http://www.opensubscriber.com/message/php-i18n@lists.php.net/5323834.html
Понятно, что gettext – это практически стандарт для l10n и i18n, но при разработке на php использование оного может быть оправдано только при разработке БОЛЬШИХ и ОЧЕНЬ БОЛЬШИХ проэктов. Для быстрой-разработки и тем более для быстрого-изменения это подходит плохо. Попробуйте теперь убедить меня в обратном.