AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm mehrsprachig

Ein Thema von Susanne · begonnen am 19. Mai 2005 · letzter Beitrag vom 20. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Programm mehrsprachig

  Alt 19. Mai 2005, 12:08
Hallo,

ich habe mir zwei Resource-Dateien (DEU und ENG) für mein Programm erzeugt mittels des Ressourcen-DLL-Experten und habe dann am Ende im dem Ordner wo sich da Programm befindet jetzt noch zwei neue Dateien: Programm.DEU und Programm.ENG.

Jetzt möchte ich z.B. aus der Registry an einer bestimmten Stelle aus lesen, welche Sprache genommen werden soll. Wie kann ich nun bei Programmstart eine bestimmte Resourcen-Datei laden?

Hab schon überall gesucht, aber dazu irgendwie nichts gefunden. Weiss da jemand einen Rat?

Grüsse
Susanne
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 12:14
Zitat von Susanne:
Jetzt möchte ich z.B. aus der Registry an einer bestimmten Stelle aus lesen, welche Sprache genommen werden soll. Wie kann ich nun bei Programmstart eine bestimmte Resourcen-Datei laden?
So, IMHO, gar nicht. Die Ressourcen-DLLs haben ja den Sinn, dass das Programm automatisch die eingestellte Systemsprache benutzt (deutsches Windows -> .DE-Resourcendatei), bzw. dass es die Standardsprache verwendet, wenn keine DLL für eine bestimmte Sprache vorhanden ist.
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#3

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 12:16
im $(Delphi)\Demos\ verzeichnis gibts ein projekt das genau DAS macht was du auch machen möchtest, vllt solltest dir des mal anschauen

hab den genauen pfad grad nicht im kopf (hab hier auch kein delphi zum selberkucken). es war son texteditor - dem wordpad ähnlich
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 12:31
Statt mit Ressourcen DLL's würd ich die Übersetzung mit GNU Gettext machen, dafür gibt es sogar ein Delphi Toolkit: GNU Gettext für Delphi

Damit kannst Du auch zur Laufzeit die Sprache der Anwendung wechseln.

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 13:26
Das hab ich auch schon mal kurz probiert, aber die String, die der Resource-Dll-Experte in die Datei geschrieben hat, waren aber nicht in der Datei, die von GNU Gettext erzeugt wurde. Wie komme ich von GNU Gettext an diese dran?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#6

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 13:51
Zitat von Susanne:
Das hab ich auch schon mal kurz probiert, aber die String, die der Resource-Dll-Experte in die Datei geschrieben hat, waren aber nicht in der Datei, die von GNU Gettext erzeugt wurde. Wie komme ich von GNU Gettext an diese dran?
GNU Gettext erzeugt aus den Quellcodes der Anwendung eine .po Datei, die mit einem Unicode Editor oder einem Tool wie z.b. poEdit bearbeitet werden kann. Hierbei werden die Strings aus den Formulardateien sowie Ressorcenkonstanten (Abschnitt resourcestring) aus den .pas Dateien in ein Template extrahiert.

GNU Gettext hat nichts mit dem Resource-Dll-Experten zu tun, am besten alle Ressourcen-Konnstanten in eine Unit packen und mit GNU Gettext übersetzen. Eine Mischung von ITE und GNU Gettext halte ich nicht für sinnvoll.

Hier ein Beispiel für eine Ressourcen-Unit:

Delphi-Quellcode:
unit MyResources;

interface

resourcestring
  MSG_KONSTANTE1 = 'Meine erste zu übersetzende Konstante';
  MSG_KONSTANTE2 = 'Meine zweite Konstante';

implementation

end.
Die Anleitung gibt hierfür ein paar gute Beispiele.

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 14:15
das hab ich soweit auch schon begriffen. Aber dem resource-dll-experte werden doch auch solche Fehlermeldung rausgeholt, und die würde dann die doch trotzdem in deutsch angezeigt bekommen, auch wenn ich mit gnu gettext die Sprache auch englisch umschalte, oder irre ich mich da jetzt völlig? Und diese ganzen Meldungen hätte ich halt auch ganz gerne in englisch.

Es gibt ja z.B. auch die TSiLang-Componente, damit bekomme ich auch solche Meldungen, nur eben, dass die Komponente etwas kostet und ich gerne etwas kostenloses hätte.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#8

Re: Programm mehrsprachig

  Alt 19. Mai 2005, 14:41
Zitat von Susanne:
das hab ich soweit auch schon begriffen. Aber dem resource-dll-experte werden doch auch solche Fehlermeldung rausgeholt, und die würde dann die doch trotzdem in deutsch angezeigt bekommen, auch wenn ich mit gnu gettext die Sprache auch englisch umschalte, oder irre ich mich da jetzt völlig? Und diese ganzen Meldungen hätte ich halt auch ganz gerne in englisch.
Meinst Du die Runtime Fehlermeldungen von Delphi die auf deutsch sind ? Auf der GNU Gettext für Delphi Homepage kann man die Übersetzungen der Delphi Runtime Libs runterladen.

Diese werden dann in die Projektdatei eingebunden, z.b. so:

Delphi-Quellcode:
program test;

uses
  Forms,
  gnugettext,
  MainFrm in 'MainFrm.pas{MainForm};

{$R *.res}
  AddDomainForResourceString('delphi7');

  Application.Initialize;
  Application.Title = 'Test';
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
end.
Es muss sich im Verzeichnis <Anwendung>\locale\en\ die Datei delphi7.mo mit den englischen Runtime Meldungen und im Verzeichnis <Anwendung>\locale\de\ die Datei delphi7.mo mit den deutschen Runtime Meldungen befinden. GNU Gettext sorgt dafür das je nach gewählter Sprache die passenden Meldungen angezeigt werden.

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Programm mehrsprachig

  Alt 20. Mai 2005, 11:04
hätte dann noch zwei Fragen.

erzeugt wird ja mit gnu gettext immer die default.po - Datei. Kann ich die auch umbenennen in z.B. english.po? Ich hab es versucht und dann mit AddDomainForResourceString('english'); aber dann wird meine Oberfläche nicht mehr in englisch angezeigt, wenn ich ihm dann hingegen wieder die default gebe, wird wieder alles in Englisch angezeigt.

Das zweite ist, dass ich ihm doch auch sagen kann, dass er bestimmte sachen nicht übersetzten soll. Ich hab dies mit TP_GlobalIgnoreClass (TDocViewer) versucht und das ganze auch dort eingebunden, wie auch das AddDomainForResourceString steht. Aber dann bekomme ich einen Fehler, dass dies ein undefinierter Bezeichner ist. Laut Dokumentation soll das doch genau an diese Stelle?
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von Marcel Gascoyne
Marcel Gascoyne

Registriert seit: 18. Nov 2003
Ort: Uetersen
271 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Programm mehrsprachig

  Alt 20. Mai 2005, 11:49
Zitat von Susanne:
erzeugt wird ja mit gnu gettext immer die default.po - Datei. Kann ich die auch umbenennen in z.B. english.po?
Klar, das ist kein Problem.

Zitat von Susanne:
Ich hab es versucht und dann mit AddDomainForResourceString('english'); aber dann wird meine Oberfläche nicht mehr in englisch angezeigt, wenn ich ihm dann hingegen wieder die default gebe, wird wieder alles in Englisch angezeigt.
Mit AddDomainForResourceString werden nur Domains für Ressourcenstrings hinzugefügt, z.b. eine Datei mit Deinen Strings in der Datei default.mo und die Delphi Runtime Strings in delphi7.mo.

Welche Datei für die Oberfläche verwendet werden soll bestimmst Du mit der Funktion textdomain, z.b. so wenn Du Deine Übersetzungsdatei formulare.mo genannt hast:

Delphi-Quellcode:
begin
  { Translation Domain für Formulare }
  textdomain('formulare');
end;
Alternativ kannst Du den Aufruf von TranslateComponent(self) auch in TranslateComponent(self,'formulare') ändern.


Zitat von Susanne:
Das zweite ist, dass ich ihm doch auch sagen kann, dass er bestimmte sachen nicht übersetzten soll. Ich hab dies mit TP_GlobalIgnoreClass (TDocViewer) versucht und das ganze auch dort eingebunden, wie auch das AddDomainForResourceString steht. Aber dann bekomme ich einen Fehler, dass dies ein undefinierter Bezeichner ist. Laut Dokumentation soll das doch genau an diese Stelle?
Der Parameter für TP_GlobalIgnoreClass ist eine Klasse, daher muß diese Klasse auch bekannt sein. Wenn Dein TDocViewer dort nicht bekannt ist kann es nicht funktionieren, z.b. wenn die Komponente nur in bestimmten Units "geused" wird.

Du kannst natürlich in der Unit, wo Du TDocViewer verwendest das OnCreate Ereignis abändern:

Delphi-Quellcode:
procedure TMyForm.FormCreate(Sender: TObject);
begin
  TP_Ignore(self,'MyDocViewer');
  TranslateComponent(self);
end;

Gruß,
Marcel
Marcel Gascoyne
Der Fehler sitzt immer vor der Tastatur
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:43 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