Hallo zusammen,
angenommen ich lege ShortCuts für MenuItems fest, dann wird beispielsweise für "Datei öffnen" der Text Ctrl+O angezeigt.
Gibt es eine Möglichkeit, dass statt Ctrl+O dann Strg+O angezeigt wird?
Gleiches gilt auch für den MessageDlg. Bei Angabe des Typs mtError lautet die Überschrift der Box dann "Error" und nicht "Fehler". Natürlich könnte man das hier auch durch einen zusätzlichen Parameter für Caption anpassen, aber müsste das nicht automatisch anhand der Locale erfolgen oder muss man dazu irgendwas in den Einstellungen der Lazarus-IDE umstellen?
Vielen Dank und viele Grüße
Kay
ShortCut-Text für TMenuItem ändern
Re: ShortCut-Text für TMenuItem ändern
Kann man so machen. Der Pfad muss nat. angepasst werden auf dein Verz. mit den *.po Dateien.
Code: Alles auswählen
var PODirectory, Lang, FallbackLang: String;
implementation
uses gettext, Translations;
{$R *.lfm}
initialization
PODirectory := '/home/theo/lazarus/svn/lazarus/lcl/languages/';
GetLanguageIDs(Lang, FallbackLang); // in unit gettext
TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
end.
Re: ShortCut-Text für TMenuItem ändern
Hallo theo,
erstmal vielen Dank für den Codeschnipsel - muss man ja erstmal drauf kommen.
Das klappt auch alles soweit ganz gut, allerdings muss ich jetzt die .po-Datei immer beilegen oder? Gibt es auch eine Möglichkeit, die Datei gleich mit ins Projekt zu linken?
Viele Grüße
Kay
erstmal vielen Dank für den Codeschnipsel - muss man ja erstmal drauf kommen.
Das klappt auch alles soweit ganz gut, allerdings muss ich jetzt die .po-Datei immer beilegen oder? Gibt es auch eine Möglichkeit, die Datei gleich mit ins Projekt zu linken?
Viele Grüße
Kay
-
- Beiträge: 475
- Registriert: Do 15. Nov 2007, 16:58
- OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
- CPU-Target: i386, x64
- Wohnort: Gera
Re: ShortCut-Text für TMenuItem ändern
Wenn ich mich recht entsinne, gibt es eine Quick&Dirty-Methode.
1. In lcl/languages die lclstrconst.po durch lclstrconst.de.po ersetzen
2. lcl neu kompilieren (Werkzeuge/>>lazarus kompilieren<< einstellen)
3. Projekt neu kompilieren
Hab ich jetzt aber nicht ausprobiert.
1. In lcl/languages die lclstrconst.po durch lclstrconst.de.po ersetzen
2. lcl neu kompilieren (Werkzeuge/>>lazarus kompilieren<< einstellen)
3. Projekt neu kompilieren
Hab ich jetzt aber nicht ausprobiert.
mfg Ingo
Re: ShortCut-Text für TMenuItem ändern
http://wiki.lazarus.freepascal.org/Tran ... ompilieren" onclick="window.open(this.href);return false;Kay hat geschrieben: Das klappt auch alles soweit ganz gut, allerdings muss ich jetzt die .po-Datei immer beilegen oder? Gibt es auch eine Möglichkeit, die Datei gleich mit ins Projekt zu linken?
Re: ShortCut-Text für TMenuItem ändern
Hallo theo,
vielen Dank für den Link. Ich hab allerdings noch ein kleines Problemchen:
Ich hab die Hinweise wie auf der Seite angegeben befolgt und habe also die lclstrconsts.de.po in eine Ressourcendatei gepackt. Dann habe ich eine neue Unit erstellt, die Befehle reinkopiert und die Unit in mein Projekt eingebunden. Die Unit wird fehlerfrei kompiliert und die .rst-Datei wird auch erstellt.
Wenn ich jetzt mein fertiges Programm starte, funktioniert das Ganze für die MessageBoxen einwandfrei, die Menü-ShortCuts werden allerdings nicht übersetzt, d. h. Ctrl statt Strg oder Del statt Entf bleiben unverändert.
Hier meine Unit:
Viele Grüße
Kay
vielen Dank für den Link. Ich hab allerdings noch ein kleines Problemchen:
Ich hab die Hinweise wie auf der Seite angegeben befolgt und habe also die lclstrconsts.de.po in eine Ressourcendatei gepackt. Dann habe ich eine neue Unit erstellt, die Befehle reinkopiert und die Unit in mein Projekt eingebunden. Die Unit wird fehlerfrei kompiliert und die .rst-Datei wird auch erstellt.
Wenn ich jetzt mein fertiges Programm starte, funktioniert das Ganze für die MessageBoxen einwandfrei, die Menü-ShortCuts werden allerdings nicht übersetzt, d. h. Ctrl statt Strg oder Del statt Entf bleiben unverändert.
Hier meine Unit:
Code: Alles auswählen
unit Translator;
{$mode objfpc}{$H+}
interface
uses
LResources, Translations;
implementation
function TranslateUnitResourceStrings: Boolean;
var
PORes: TLResource;
POFile: TPOFile;
begin
PORes := LazarusResources.Find('lclstrconsts.de', 'PO');
POFile := TPOFile.Create;
try
POFile.ReadPOText(PORes.Value);
Result := Translations.TranslateUnitResourceStrings('LCLStrConsts', POFile);
finally
POFile.Free;
end;
end;
initialization
{$I German.lrs}
TranslateUnitResourceStrings;
end.
Kay