>>И это все вставляется в код ?
Конечно нет, один из этих файлов будет загружен в рантайме и заменит содержимое LCLных resourcestring.
в 2048 году если ваш родной арго войдет в стандарты и система отрапортует программе (которая скомпилирована сегодня) что надо использовать именно арго - будет загружен lclstrconsts.арго.po и вуаля.
Если марсиане не планируют у нас стандартизироваться, тогда конечно о его загрузке нужно позаботиться самостоятельно, а не использовать штатный механизм, который для ресурсных строк выглядит примерно так:
- Код: Выделить всё
GetLanguageIDs(Lang, FallbackLang); // получение желаемого языка от системы, определено в модуле gettext
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);//перевод всех ресурсных строк модуля\пакета, в данном случае лцлных
а например самомтоятельно просканировать этот PODirectory на предмет доступных локализаций (po файлов) и предложить выбрать пользователю нужную. Такчто программы написаные сейчас с использованием po готовы к контакту)))
>> С меня срочно требуют 100500 разных переводов
Копируете исходный файл как я писал постом выше и переводите. ничего перекомпилировать ненадо
>>Придется мне тогда брать в руки редактор ресурсов и править перевод прямо в екзешнике... и так до тех пор, пока не обслужу всех.
Это несветит ни при каких раскладах.
>>Даже если требуется добавить новый язык в уже скомпилированную прогу? Мне кажется вы врете. Плюс, указанные Вами файлы это перевод стандартных надписей программы (в моем случае русский вариант еще и не до конца переведен где это возможно).
В лазаре так принято - по PO на каждый пакет. т.е. у вас будет: myproga.po; lclstrconsts.po полюбому, плюс еще чтонить если используете другие пакеты. Нет не вру))
>>Для нестандартных (надписей/языков) придется готовить свои файлы и их актуальность Ваша забота.
Да, перевод ресурсных строк и строк на формах несколько отличается, но актуальность соответствующих файлов это забота компилятора и иде. компилятор даже заботливо пометит ваши переводы как возможно неточные (fuzzy) если вы отредактируете исходную строчку, не говоря о том что сам выкинет уже неактуальные строки и добавит вновь появившиеся. Причем не только в исходный PO, а во все уже локализованные PO файлы.
>>Да и существует проблема при обновлении среды, если чуть подправляешь исходники компилятора. (речь о снапшотной версии) А это по любому придется делать при добавлении своего языка в Лазарус
Единственная проблема с этим связанная - с PO не работают привычные патчи, он может меняться компилятором кардинально (естественно с сохранением всех переводов), и система контроля версий будет вам говорить что файл изменен, хотя изменений небыло - была просто перекомпиляция.