Jump to content

Recommended Posts

Posted

Estou alterando uma app para poder ser en PT, espanhol, inglês, etc.

Para isso a app lê, ou carrega vários um determinado ficheiro *.lng com as mensagens, captions etc.

Esse ficheiro pode ser alterado pelo user, assim poderá criar 1 ficheiro para o seu idioma.

O problema é que a app em PT, além das mensagens de aviso terem variáveis, já resolvido, por vezes deverão conter mais de 1 linha, no código original uso o #10#13 para criar nova linha seguido do resto da mensagem a apresentar.

Linhas do Ficheiro en.lng:

1=Its Ok

2= Cancel

3=Alarm for %s at %s hours

4=English msg #10#13 So what ?...

function Getlabel(const Nr: string): string;
var
   Sl: TStringList;
begin
   Sl:= TStringList.Create();
   Sl.LoadFromFile(ExtractFilePath(ParamStr(0))+'en.lng');
   try
     Result:= Sl.Values[Nr];
   finally
     FreeAndNil(Sl);
   end;
end;

// Para o exemplo, criei um button para mostrar a mensagem

procedure TForm1.Button6Click(Sender: TObject);
begin
if MessageBox(Handle, PChar(GetLabel('4')), PChar('Information'), $00000134) = IDYES then
  begin
  //qualquer código ....
  end ;

end;

Resultado pretendido ( com 2 linhas):

English msg

so what ?...

Mas aparece ( 1 unica linha ):

English msg #10#13 so what ?...

Haverá alguma solução, para além de no ficheiro en.lng obrigar a existir duas linhas para a mesma mensagem , exemplo :

4=English msg

5=So what ?...

E obtia o resultado através de :

if MessageBox(Handle, PChar(GetLabel('4'))+#10#13+ GetLabel('5')),PChar('Information'), $00000134) = IDYES then ....

Isto, queria eu evitar... para não confundir o user ao criar o seu idioma...

Tnx .

Posted

Solucionado  😄

( noutro forum ...)

Trate a string antes de exibí-la, usando ReplaceStr. Tipo:

Código:

if pos( '#10#13' , Frase ) > 0 then //se encontrou a quebra de linha, altere-a

  Frase = AnsiReplaceStr(Frase,'#10#13',#10#13);

Dessa forma, você pode definir até outros caracteres, ou sequencias especiais na tradução.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.