[Lazarus] .mo files not working in multi language

Bart bartjunk64 at gmail.com
Fri Jul 23 00:08:45 CEST 2021


On Thu, Jul 22, 2021 at 11:02 PM Maxim Ganetsky via lazarus
<lazarus at lists.lazarus-ide.org> wrote:


> Put them to RES or LRS file, link this file to your program, then
> extract them at runtime to some directory and load it from there.

Can't you use them from the resource like you can with po-files?

>From one of my units that does thi using old style .lrs resource:

===========

type
  TTransalateFromLazarusResourceResult = (trSuccess,
trResourceNotFound, trTranslationError);

function TryTranslateFromLazarusResource: TTransalateFromLazarusResourceResult;
var
  LRes: TLResource;
  PO: TPOFile;
  SS: TStringStream;
  B: Boolean;
begin
  Result := trResourceNotFound;
  LRes := LazarusResources.Find('lclstrconsts.nl','PO');
  if LRes <> nil then
    begin
    SS := nil;
    PO := nil;
    try
      SS := TStringStream.Create(LRes.Value);
      //don't use TPoFile.Create(SS,True): it will crash on
TranslateUnitResourceStrings if you do
      PO := TPoFile.Create(SS, False);
      try
        B := TranslateUnitResourceStrings('lclstrconsts',PO);
        if B then Result := trSuccess else Result := trTranslationError;
      except
        Result := trTranslationError;
        DebugLn('Exception while translating LclStrConsts unit form
internal resources.');
      end;
    finally
      if Assigned(SS) then SS.Free;
      if Assigned(PO) then PO.Free;
    end;
  end;
end;
===============

-- 
Bart


More information about the lazarus mailing list