Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mein Progi soll japanisch sprechen! (https://www.delphipraxis.net/49023-mein-progi-soll-japanisch-sprechen.html)

FrankBrin 4. Jul 2005 13:50


Mein Progi soll japanisch sprechen!
 
Hallo miteinander,
ich habe da ein nettes Programm, das bereits alle europäischen Sprachen beherrscht. D.h. unabhängig von der Windowseinstellung kann eine Sprache ausgewählt werden und das Programm setzt alle Ausgabetexte in die Sprache um. Dies geschieht über normale Textdateien, in denen die Übersetzungen hinterlegt sind.

So - und jetzt sollen die asiatischen Sprachen noch dazu kommen.

Hat jemand ne Ahnung, wie man sowas anstellt? Die bislang benutzten Textdateien sind in 8-Bit ASCII, muss ich da evtl. auf 16Bit Unicode gehen und dann alle meine Labels, Strings, Buttons usw. auf Unicode erweitern?

Wäre schön, wenn mir jemand da mal einen kleinen Einstieg geben kann

Gruß Frank

Bernhard Geyer 4. Jul 2005 13:54

Re: Mein Progi soll japanisch sprechen!
 
ElPack
Der Entwickler 5.2003, Artikel "We are a World"

toms 4. Jul 2005 13:57

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Zitat von FrankBrin
muss ich da evtl. auf 16Bit Unicode gehen und dann alle meine Labels, Strings, Buttons usw. auf Unicode erweitern?

Schau mal hier vorbei:
TntWare Delphi Unicode Controls

Bernhard Geyer 4. Jul 2005 14:11

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Zitat von FrankBrin
Hat jemand ne Ahnung, wie man sowas anstellt? Die bislang benutzten Textdateien sind in 8-Bit ASCII, muss ich da evtl. auf 16Bit Unicode gehen und dann alle meine Labels, Strings, Buttons usw. auf Unicode erweitern?

Ach ja. Falls dir jemand eine Lösung auf Basis von Codepages/Charsets vorschlagen will: Vergiss es. Das ist 'ne Frickellösung die nicht 100% Funktioniert (Delphi-Fehler, Win32-Controls-Fehler).

FrankBrin 6. Jul 2005 13:34

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Ach ja. Falls dir jemand eine Lösung auf Basis von Codepages/Charsets vorschlagen will: Vergiss es. Das ist 'ne Frickellösung die nicht 100% Funktioniert (Delphi-Fehler, Win32-Controls-Fehler).
So jetzt hab ich mich mal ein bischen mit TntWare beschäftigt. Die Controls umzuschreiben ist ja wirklich easy, doch wie in Gottes Namen bekomm ich nun die mittlerweile in Unicode abgelegten Texte aus den Textdateien in die .Captions.
Ist TntWare nicht genau diese "Frickellösung". Ich muss immer diesen Charset umschalten, wenn ich von Hand Captions eintrage.

Irgendwie sieht das alles chaotisch aus!!!

Gruß Frank

MosiXXL 6. Jul 2005 13:58

Re: Mein Progi soll japanisch sprechen!
 
Hier sind auch Hinweise zu diesem Thema.
Entwickler Forum

Bernhard Geyer 6. Jul 2005 13:59

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Zitat von FrankBrin
So jetzt hab ich mich mal ein bischen mit TntWare beschäftigt. Die Controls umzuschreiben ist ja wirklich easy, doch wie in Gottes Namen bekomm ich nun die mittlerweile in Unicode abgelegten Texte aus den Textdateien in die .Captions.

Indem du einen Unicode-Codierte Textdatei verwendest.

Zitat:

Zitat von FrankBrin
Ist TntWare nicht genau diese "Frickellösung". Ich muss immer diesen Charset umschalten, wenn ich von Hand Captions eintrage.

Nein TNT geht den richtigen weg. Aber was meinst Du mit "Hand Caption eintragen"?
Das Problem ist eher die Delphi-IDE (welche Delphi-Version hast Du denn?) welche kein Unicode kann.

FrankBrin 6. Jul 2005 15:07

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Das Problem ist eher die Delphi-IDE (welche Delphi-Version hast Du denn?) welche kein Unicode kann.
Ich verwende D7 Pro unter WinXP Pro (D2005 liegt hier bereits neben mir !!!Angst vor Neuem!!!).

Also jetzt mal konkret:
Ich habe mir erst einmal ein kleines Testprogi erstellt, welches nix anderes tut, wie eine Unicode - TextDatei zeilenweise einzulesen. Die Texte in der Datei zeigt Notepad auch richtig als japanisch an. Also gehe ich davon aus, dass es Unicode ist.
Die Texte werden in ein Array of WideString abgelegt und so ein einzelner WStr weise ich dann einem TntLabel.Caption zu. Das Ganze sieht dann so aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,
  TntForms, TntStdCtrls, TntButtons, TntSystem;

type TForm1 = class(TTntForm)
    Lbl_01: TTntLabel;
    Btn_01: TTntBitBtn;
    Edt_01: TTntEdit;
    TntButton1: TTntButton;
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure TntButton1Click(Sender: TObject);
  private          { Private-Deklarationen }
    txtErrTexts    : Array of WideString;
  public           { Public-Deklarationen }
    MaxErrTexts    : Integer;
    procedure ReadUnicode();
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ReadUniCode();
end; //========================================================================

procedure TForm1.FormActivate(Sender: TObject);
var myWStr     : WideString;
begin
  myWStr := txtErrTexts[ 70];
  Lbl_01.Caption := myWStr;
end; //========================================================================

procedure TForm1.ReadUnicode();
var
  tf                 :   TextFile;
  strLine            : WideString;
   fname              : String;
  idx                : Integer;
  TntWideString
begin
  //Fehlertexte
  fname := 'Txt_Errors.ger';
  if ( FileExists( fname)) then begin
    SetLength( txtErrTexts, 0);
    MaxErrTexts := 0;
    AssignFile( tf, fname);
    Reset( tf);
    while not Eof( tf) do begin
      Readln( tf, strLine);
      idx := AnsiPos( ';', strLine);
      if idx <> 1 then begin //Kommentarzeilen beginnen mit ;
        if idx > 0 then strLine := Copy( strLine, 1, idx - 1);   // Alles nach ; entfernen
        //strLine := AnsiDequotedStr( strLine, '"');
        SetLength( txtErrTexts, MaxErrTexts + 1);
        txtErrTexts[ MaxErrTexts] := WideString( strLine);
        Inc( MaxErrTexts);
      end;
    end;
    CloseFile( tf);
  end;
end; //========================================================================

procedure TForm1.TntButton1Click(Sender: TObject);
begin
  Lbl_01.Caption := Edt_01.Text;
end;

end.
Bitte nicht an dem AnsiPos und Copy stören! es ist mir klar, das es nicht tut. Es wird ja auch nicht ausgeführt.

Wenn ich das Ganze debugge, dann sieht das Textfeld txtErrTexts in ReadUnicode echt gut aus. Kommt der Debugger aber in FormActivate steht im Textfeld was anderes und das TntLabel zeigt nix an.

Manchmal komm ich mir vor wie ein Anfänger!!!

xaromz 6. Jul 2005 16:15

Re: Mein Progi soll japanisch sprechen!
 
Hallo,

kann es sein, dass ReadLn nur mit AnsiStrings zurechtkommt?

Versuch doch mal eine TntStringList. Ist wahrscheinlich sowieso die bessere Alternative.

Gruß
xaromz

FrankBrin 7. Jul 2005 07:29

Re: Mein Progi soll japanisch sprechen!
 
Zitat:

Versuch doch mal eine TntStringList.
Jaja, die Lösung liegt so Nah und ist so schön einfach. Vielen Dank für den Tip.

Gibt es ausser der Homepage von Troy irgend eine Hilfedatei oder Beschreibung zu den Tnt Controls?

Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Seite 1 von 3  1 23      

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