![]() |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
Super! Funktioniert bestens. Geniales Teil.
Danke ConstantGardener! |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
@divby0 : Pas de problem mon ami. :)
@soulis : Sollte eigentlich auch unter Delphi 7 / Win32 funktionieren. Der Localizer ist ja ein separates Programm welches sich nicht in Delphi einklinkt. Das Tool arbeitet mit des von der IDE / Compiler erzeugten Dateien und zieht dort die Bezeichner und Strings raus. Du übersetzt sie in weitere Sprachen und der Localizer erzeugt daraus entsprechende Sprachdateien. Diese weden dann mit einer mitgelieferten Unit in dein Programm eingebunden. Fertsch ! CG |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
@ConstantGardener
Zitat:
Aus 'TdwsLocalizer = class abstract' hab ich dann 'TdwsLocalizer = class' gemacht und 'PropNames.StrictDelimiter := True;' kennt er net - hab ich auskommentiert dann lief es ... cya |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
@soulies
...ok :oops: , das hatte ich nicht bedacht. Die Unit hatte ich nur überflogen und ob bestimmte Sprachfeatures in Delphi 7 noch nicht vorhanden waren nicht beachtet. Wäre aber mal nen Hinweis an Sakura wert. Auf der Projektseite ist von dieser Einschränkung auf den ersten Blick nicht zu sehen. Und Hilfedatei fehlt ja noch. Er hatt mir per PN aber schon vor einiger Zeit eine neue Version angekündigt. Evtl. wird sowas dann mit nachgereicht. btw. wenns jetzt läuft :thumb: CG |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
Zitat:
|
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
Also ich schreibe meine Frage hier rein und hoffe, dass Sakura antwortet. :-D
Wird es vielleicht die Möglichkeit geben die Texte der Anwendersprachen als CSV oder Excel zu exportieren? Problem ist, dass der Kunde die Übersetzungen macht. |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
Hallo.
Ich gebe auch mal gerne meinen Senf zum WinLocalizer ab:
Delphi-Quellcode:
TStringList = class(Classes.TStringList)
private function GetDelimitedText : string; procedure SetDelimitedText(const AValue : string); public StrictDelimiter : boolean; property DelimitedText : string read GetDelimitedText write SetDelimitedText; end; function TStringList.GetDelimitedText: string; var I : integer; P : pchar; begin {$IFDEF FPC}CheckSpecialChars;{$ENDIF} Result := ''; for I := 0 to Count-1 do begin P := pchar(Strings[I]); if not StrictDelimiter then while not(P^ in [#0..' ', QuoteChar, Delimiter]) do inc(P) else while not(P^ in [QuoteChar, Delimiter]) do inc(P); // strings in list may to contain #0 if P <> (pchar(Strings[I]) + length(Strings[I])) then Result := Result + QuoteChar + Strings[I] + QuoteChar else Result := Result + Strings[I]; if I < Count-1 then Result := Result + Delimiter; end; if (length(Result) = 0) and (Count = 1) then Result := QuoteChar + QuoteChar; end; procedure TStringList.SetDelimitedText(const AValue : string); var I, J : integer; aNotFirst : boolean; begin {$IFDEF FPC}CheckSpecialChars;{$ENDIF} BeginUpdate; I := 1; aNotFirst := false; try Clear; while I <= length(AValue) do begin // skip delimiter if aNotFirst and (I <= length(AValue)) and (AValue[I] = Delimiter) then inc(I); // skip spaces if not StrictDelimiter then while (I <= length(AValue)) and (ord(AValue[I]) <= ord(' ')) do inc(I); // read next string if I <= length(AValue) then begin if AValue[I] = QuoteChar then begin // next string is quoted J := I + 1; while (J <= length(AValue)) and ((AValue[J] <> QuoteChar) or ((J+1 <= length(AValue)) and (AValue[J+1] = QuoteChar))) do if (J <= length(AValue)) and (AValue[J] = QuoteChar) then inc(J, 2) else inc(J); // J is position of closing quote Add(StringReplace(Copy(AValue, I+1, J-I-1), QuoteChar + QuoteChar, QuoteChar, [rfReplaceAll])); I := J + 1; end else begin // next string is not quoted J := I; if not StrictDelimiter then while (J <= length(AValue)) and (ord(AValue[J]) > ord(' ')) and (AValue[J] <> Delimiter) do inc(J) else while (J <= length(AValue)) and (AValue[J] <> Delimiter) do inc(J); Add(copy(AValue, I, J-i)); I := J; end; end else if aNotFirst then Add(''); // skip spaces if not StrictDelimiter then while (I <= length(AValue)) and (ord(AValue[I]) <= ord(' ')) do inc(I); aNotFirst:=true; end; finally EndUpdate; end; end; |
Re: Programm in mehreren Sprachen(keine Programmiersprachen)
Hallo mischerr,
zum Punkt "Ausgrenzen von Elementen" solltest du nochmal unter PROJEKTOPTIONEN --> ZU IGNORIERENDE CONTROLS UND EIGENSCHAFTEN schauen. Hier kannst Du die entsprechenden Elemente mit Joker usw. ausgrenzen. Bei allen anderen Punkten gebe ich Dir Recht. Von der neuen Version ist auch noch nichts zu hören. Oder ist das jetzt in D2009 integriert ? :roll: :gruebel: mfg ConstantGardener |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz