AGB  ·  Datenschutz  ·  Impressum  







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

TBitBtn.Kind und Sprache

Ein Thema von Der schöne Günther · begonnen am 10. Okt 2013 · letzter Beitrag vom 11. Okt 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 16:42
Ich kann mich gleich im Voraus entschuldigen, die Frage muss doch mit Sicherheit schon hundert mal aufgetaucht sein. Irgendwie finde ich trotzdem nichts...


Ändere ich in Windows die Eingabesprache und Region, ändert sich natürlich einiges mit. Delphi-Routinen formatieren Zahlen, Zeiten und Datum entsprechend. Auch das TTouchKeyboard zieht mit.

Bis hierhin alles bestens. Nur der TBitBtn zeigt sich hiervon unbeindruckt. Die Beschriftungen sind immer noch "Abbrechen" oder "Schließen". Was muss ich tun - Wo holt der diese Texte her? Würde ein Windows Language Pack (ab Windows Ultimate) hier Abhilfe schaffen oder werden die Texte beim Kompilieren fest eingebrannt?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 17:08
Die sind als resourcestrings in consts.pas enthalten und abhängig von der Sprache in der Du Delphi installiert hast.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 17:11
Bitter, also vollkommen unbrauchbar.

Da es immer nur typische Windows-Standardwörter wie "Abbrechen" oder "Nein" waren, hatte ich Hoffnung, dass das irgendwie von Windows übernommen wird oder Delphi irgendwo eine Nachschau-Tabelle für die gängisten Sprachen hat...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 17:17
Wir benutzen an der Stelle JvGnuGetText aus den JEDIs, mit denen kann man alles komfortabel übersetzen, auch diese Texte soweit ich weiß.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: TBitBtn.Kind und Sprache

  Alt 10. Okt 2013, 17:18
Ich mache das so:
Delphi-Quellcode:
var
   StringPointerList : array of Pointer;

{$WARNINGS OFF}
procedure CleanStringPointerList;
var
   i : integer;
begin
   for i := Low(StringPointerList) to High(StringPointerList) do
   begin
      // Uiii... prüfen auf memoryleak in > 2009
      StrDispose(PAnsiChar(StringPointerList[i]));
   end;
   SetLength(StringPointerList, 0);
end;

procedure HookResourceString(ResStringRec: pResStringRec; NewStr: PChar);
var
  OldProtect: DWORD;
begin
  VirtualProtect(ResStringRec, SizeOf(ResStringRec^), PAGE_EXECUTE_READWRITE, @OldProtect);
  ResStringRec^.Identifier := Integer(NewStr);
  VirtualProtect(ResStringRec, SizeOf(ResStringRec^), OldProtect, @OldProtect);
end;

procedure SetSysResStr(AConstant : Pointer; const AConstantName : string);
var
   p : PChar;
begin
   // Das ggf. an die benutzte Delphi-Version anpassen
   {$IFDEF VER250}
   p := StrNew(PWideChar(LocalizerOnFly.GetTraslatedRS(AConstantName)));
   {$ELSE}
   p := StrNew(PChar(WideStringToString(LocalizerOnFly.GetTraslatedRS(AConstantName),0)));
   {$ENDIF}
   SetLength(StringPointerList, High(StringPointerList)+2);
   StringPointerList[High(StringPointerList)] := p;
   HookResourceString(AConstant, p);
end;

finalization
   CleanStringPointerList;
Und Aufruf dann
SetSysResStr(@SMsgDlgError, 'SMsgDlgError'); Wenn Du etwas anderes als Localizer einsetzt, kannst Du das LocalizerOnFly.GetTraslatedRS(AConstantName) entsprechend abändern und z.b. den Text als Konstante reingeben
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TBitBtn.Kind und Sprache

  Alt 11. Okt 2013, 06:59
Ja, das sieht so ähnlich aus wie das was die JvGnuGetText macht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: TBitBtn.Kind und Sprache

  Alt 11. Okt 2013, 09:46
Wir haben die Standarddialoge durch eigene ersetzt, da wir DevExpress einsetzen. Die Standarddialoge passen da einfach nicht. Die Signatur der einzelnen Prozeduren bzw. Funktionen (Messagebox etc.) ist identisch, also muss die Unit nur in die Uses Liste.

Die Lösung mit dem JvGnuGetText von Sebastian ist aber vorzuziehen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:55 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