AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Programm in mehreren Sprachen(keine Programmiersprachen)
Thema durchsuchen
Ansicht
Themen-Optionen

Programm in mehreren Sprachen(keine Programmiersprachen)

Ein Thema von track · begonnen am 5. Mär 2008 · letzter Beitrag vom 26. Aug 2008
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#21

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 25. Jun 2008, 09:22
Super! Funktioniert bestens. Geniales Teil.

Danke ConstantGardener!
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 25. Jun 2008, 10:37
@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
Andreas Schachtner
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#23

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 25. Jun 2008, 11:05
@ConstantGardener
Zitat:
Diese weden dann mit einer mitgelieferten Unit in dein Programm eingebunden.
Das war ja mein Problem, denn mein DEMO Programm konnte erst nicht kompiliert werden.

Aus 'TdwsLocalizer = class abstract' hab ich dann 'TdwsLocalizer = class' gemacht
und 'PropNames.StrictDelimiter := True;' kennt er net - hab ich auskommentiert

dann lief es ...

cya
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#24

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 25. Jun 2008, 11:18
@soulies

...ok , 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

CG
Andreas Schachtner
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#25

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 21. Jul 2008, 10:30
Zitat von sakura:
... Heute veröffentliche ich meine erste Version eines solchen Tools, ...
Wo kann man Fragen und Anmerkungen dazu loswerden?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#26

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 21. Jul 2008, 11:16
Also ich schreibe meine Frage hier rein und hoffe, dass Sakura antwortet.

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.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 12 Athens
 
#27

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 26. Aug 2008, 14:56
Hallo.

Ich gebe auch mal gerne meinen Senf zum WinLocalizer ab:
  • Generell: Schönes Tool
  • Eine Versionsnummer wäre nicht schlecht. So wären Änderungen in der Unit ggf. auch ohne WinMerge ersichtlich.
  • Könnte ein bisschen abwärtskompatibler sein (StrictDelimiter fehlt zB unter D6). Als Ersatz verwende ich hier zZt eine Implementierung aus FPC (siehe unten).
  • Vielleicht auch wegen letztem Punkt kommt es ab und zu zu einem Fehler "3f: Increment: Increment failed" bei "CopyMemory(@Res[1], ResItem, Size);" in der Funktion NewLoadResString bei Ersetzungen für ResourceStrings, sodass dieser Fehlertext als Übersetzung angezeigt wird. Ich weiss noch nicht wieso der Fehler auftritt, aber hier wäre ein Fallback auf die Default-Sprache schön.
  • IMO generelles Problem in TranslateComponent wenn zB einem Label zur Laufzeit bereits ein anderer Wert zugewiesen wurde. Bei Umschaltung der Sprache zur Laufzeit wird der neue Text durch den alten Text des DFMs ersetzt. Man müsste hier Elemente ausgrenzen können. Hier punktet eindeutig GetText.

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;
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#28

Re: Programm in mehreren Sprachen(keine Programmiersprachen)

  Alt 26. Aug 2008, 21:24
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 ?

mfg ConstantGardener
Andreas Schachtner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz