Доброго времени суток. Столкнулся с интересной задачей в большом проекте, где много расчетов разных расстояний. При том, что даные собираются с разных источников, они могут быть в разных единицах — там метры, там миллиметры. Уследить за всем этим трудно, когда вычисления разбросаны повсюду. А если обьявлена переменная, то зачастую только автору досконально известно, в каких она единицах, так как комментариев в коде почти нет. А автор уволился/забыл/ушёл в запой.
Посчастливилось мне как-то работать под руководством СТО, который по совместительству соавтор одного интересного проекта — GNU Gettext for Delphi and C++ Builder. Заценил я его только в Delphi, но этого достаточно чтоб понять принцип работы и разобрать какими фичами он обладает.
Вкратце это библиотека, позволяющая внедрять качественную локализацию в продукт общепринятым способом, работает так:
пишем код, почти как обычно;
запускаем приложение, сканирующее исходники на предмет текста, который нужно перевести;
генерим РО файлы;
переводим их в любом удобном редакторе;
компилим РО файлы в МО файлы;
на выбор либо внедряем перевод прямо в ЕХЕ либо кладём МО файлы рядом;
наслаждаемся результатом — язык приложения можно менять даже без перезапуска.
Чем этот способ крут:
минимум изменений в коде приложения;
никаких DLL и сторонних компонентов, всё OpenSource;
РО файлы — достаточно распространенный инструмент перевода, что значит перевод можно даже отдать на аутсорс, и переводчик знает что с этим делать;
перевод всего — формы, фреймы, месседжбоксы, и всё что угодно;
корректный перевод слов в множественном числе в любом языке;
Есть под рукой Raspberry Pi c подключенной к нему вот такой штукой:
Ещё есть кнопочка. Вот и появилось желание по нажатию кнопочки выводить на светодиодную матрицу что-то полезное, а не баловство. А еще подучить питон — ООП, потоки, парсинг и прочее. Можно сказать, что это мой первый полезный проект на питоне. Так что данная статья будет одновременно полезна для тех, кто хочет сделать домашний информер, и, кроме того, надеюсь, поучительная.