Кто-нибудь может посоветовать что-нибудь толковое на тему локализации приложений? В основном интересует PHP, но опыт с другими ЯП тоже интересен.
Чего хотелось бы от технологии:
Языковые файлы должны быть представлены в человекочитаемом виде, чтобы можно было дать их на перевод переводчику.
Если меняется текст на исходном языке, об этом должен об этом узнавать я при билде/деплое (чтобы дать на перевод переводчику, см. пункт 1), а не пользователи любовались непереведенными строками.
Все это должно быть пригодно для хранения не только коротких сообщений, но и длинных абзацев текста.
Почему этот пункт важен - кодировать длинный абзац константами STR_ROAD_IMPORTANCE_03 не очень-то наглядно.
Крайне желателен простой способ посмотреть что как переведено - текст и перевод на одном экране.
Технология должна работать под Windows - особенно это касается всяких утилит.
Должно быть простое описание того, как эту технологию использовать.
что у меня есть, но не вполне устраивает.
Переводы хранятся в простых текстовых файлах, и зачитываются в массив строк. В программе это выглядит примерно так:
Недостатки такого подхода в общем-то очевидны:
в самой программе непонятно, что скрывается за $lan[358],
добавлять можно новые строки только в конец, если логически они в средине, текстовый файл становится не очень то читаемым.
Зачем изобретать велосипед? Есть типовое де факто решение в виде шаблонов .pot и файлов локализации .po. Есть Куча средств работы с переводами для этих форматов. Это не только актуально для c/c++ и прочего софта, но и многие крупные скрипты на php используют этот же механизм локализации. На вскидку среди скриптов на PHP могу назвать Drupal, как использующий механизм локализации на основе импорта po-файлов.
Постараюсь что нибудь поискать на эту тему общего плана.
Чаще всего это делается средствами IDE, в несколько шагов: сгенерировать из строковых констант шаблон pot, а потом инструментом перевода перевести в нём строки и подключить обратно к проекту. Для проектов на c/c++ ещё производится компиляция текстового po-файла с переводом в бинарный mo-файл. В скриптовых языках, текстовый файл обычно парсится и добавляется в справочник переводов в базу, а при выводе на экран делается запрос в базу, где используется для поиска перевода текущая локаль и если перевод находится, то строка транслируется, если нет, выдаётся как есть.
Для редактирования неплох poedit. Он позволяет так создать бинарный файл и подкорректировать уже имеющийся при изменении шаблона.
Вроде тут как это дело использовать - http://phpmaster.com/localizing-php-applications-1/
В шаблонизаторах хорошие модули локализации обычно, и файлы - пошло отдавать на редактирование, обычно есть БД локализации с веб-интерфейсом, а там уже генерируются файлики
Речь шла о PHP. А это, как правило, веб-приложения. Там совсем другая специфика. И страницы генерируются при каждом обращении заново (если не предпринимать узкоспециализированные шаманства). Т.е. каждый переход по странице = новое подключение к БД, и по-новой загрузка всего, что надо. Это как если бы твоё приложение перезапускалось после каждого клика
Не даром в веб-приложениях ценится экономия запросов к БД.
Вообще не понимаю, почему автор спросил о PHP, а ответы от Си до GUI приложений на питоне