AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte hTranslations - kleine Übersetzungskomponenten

hTranslations - kleine Übersetzungskomponenten

Ein Thema von himitsu · begonnen am 12. Jun 2011 · letzter Beitrag vom 12. Jun 2011
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#1

hTranslations - kleine Übersetzungskomponenten

  Alt 12. Jun 2011, 01:24
Joar, ich bastel mir grad 'ne eigene Sammlung an Komponenten, welche ihren Text gleich mit übersetzen.

Als Erstes werde ich einige Standardkomponenten vom Delphi übersetzen,
also alle möglichst Property/Methoden abfangen, welche am Ende irgendwie Text anzeigen.

Als erstes Versuchsobjekt mußte TLabel dran glauben und TEdit hab ich innerhalb von 10 Sekunden genauso umgestellt,
aber da muß ich noch ein bissl Testen, vorallem was das Änder per Benutzereingabe bestifft.
Im Prinzip lassen sich am Ende auch viele Fremdkomponenten so "nachrüsten".

Wenn man sich z.B. ein eigenes Set an Übersetzungen (TTransApp) über ein DesignPackage in die IDE einschleußt, kann man sogar schon zur Designtime dieses nutzen.
Siehe Project1 > "hTransInvalidEnd", mit der Standarssignatur "htx" in der Capion und uf dem Formular sieht man einen anderen Text.
PS: hTransInvalidEnd ist nur ein vordefinierter Standard-"Bezeichner", denn diese Übersetzungskomponenten übersetzen sich selber,
bzw. man kann über die vorhandenen Schnittstellen auch gleich deren Melde-/Fehlertexte mit übersetzen (wenn man unbedingt will)

Das vorkompilierte Demo-Programm enthält nur folgende Befehle:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TransApp1.Signature := '$';
  TransApp1.Add('Test', 'Hallöle');
  TransApp1.Add('xxx', 'Es geht :D');

  TransLabel1.Caption := '*$Test*';
  TransLabel2.Perform(WM_SETTEXT, 0, PChar('>>> $xxx <<<'));
  TransLabel2.Perform(CM_TEXTCHANGED, 0, 0); // für's AutoSize

  Label1.Caption := TransLabel1.Caption;
  Label2.Caption := TransLabel2.Caption;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TransApp1.Add('Test', 'jupp');
  TransApp1.Add('xxx', 'schön');
end;
Natürlich läßt sich die Übersetzung auch sonstwo nutzen, über kleine Funktionen.
Und es wäre auch ganz einfach möglich, die Übersetzungen zur Laufzeit adhoc aus einer datenbank zu ziehen, wenn man unbedingt will.

Ein Ändern der Wörterbücher paßt auch sofort programmweit alle Übersetzungen an.

Die Komponenten lassen sich entweder an eine bestimmte TransApp (Übersetzer) hängen oder sie arbeiten mit allen global registrierten TransApp's.

Nja, beim TLabel hab ich es übertrieben, denn die Übersetzung reagiert auch auf Messages,
aber standardmäßig hab ich "nur" vor die Property ala .Text und .Caption zu hocken und nur über dieses Stellen die Übersetungen einfließen zu lassen.
Somit braucht man nirgends was umbauen, da alles über die normalen Schnittstelleb/Property läuft.

Unterschiedliche Übersetzungen könnte man auf verschiedene Wege einspielen
> entweder man läd nimmt sich eine TransApp und läd dort jeweils die Texte in gewünschter Sprache rein (Einzeln oder über Dateien/Streams/Resourcen)
> man läd merhere Sprachen gleichzeitig und nutzt den Postfix, welchen diese Liste anbietet TransApp1.Postfix := '.de'; ,
womit dann alle Anfragen entsprechend umgeleitet werden ('Test' => 'Test.de').
Delphi-Quellcode:
TransApp1.Add('Test', 'jupp');
TransApp1.Add('Test.de', 'jupp');
TransApp1.Add('Test.en', 'yo');
> Wenn man sich einen Nachfahren von TTransApp erstellt, bzw. die Entsprechenden Ereignisse im OI verknüft,
dnn kann man auf OnTransMsg reagieren, schickt allen TTransApp's z.B. 'de' rüber und filtert dann im OnTransText entsprechend.
> oder oder oder




Soooo, was sagt ihr dazu?

An einigen stellen muß ich noch was machen.
So ist z.B. der Komponenteneditor (Doppelklick auf TTransApp) noch nicht ganz fertig.
Doppelten Code wegoptimieren und noch ein paar Ecken mit eventuell anders/besser überlegen.
Auch die Standard-Signatur ist nicht das Wahre, aber jetzt geh ich erstmal schlafen (hab morgen heute auch noch etwas Anderes vor, außer Proggen)
Miniaturansicht angehängter Grafiken
Unbenannt.png  
Angehängte Dateien
Dateityp: 7z hTranslations.7z (316,7 KB, 39x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jun 2011 um 01:34 Uhr)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:53 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