Jaja. Schwache Leistung Socke. Ideen ohne Umsetzungswillen brauchen wir nicht.Socke hat geschrieben: Das ist eine Idee; für den Rest seid ihr zuständig![]()

Jaja. Schwache Leistung Socke. Ideen ohne Umsetzungswillen brauchen wir nicht.Socke hat geschrieben: Das ist eine Idee; für den Rest seid ihr zuständig![]()
Ich hab da eine Idee: Für die VWL-Klausur am Freitag lernen. Und die werde ich jetzt auch umsetzen.theo hat geschrieben:Jaja. Schwache Leistung Socke. Ideen ohne Umsetzungswillen brauchen wir nicht.
Thoe... Irgendwie kommt mir gerade der Punkt Sprachdatei mehr als bakannt vor.theo hat geschrieben:Naja es ist halt nicht ganz einfach.
Wenn Lazarus die Übersetzungen automatisch einbindet, dann muss man das languages Verzeichnis mitliefern, was dann auch wieder nicht sofort verstanden wird.
Würde man alle Sprachen als Ressourcen einbinden, geht das Gejammer mit "EXE zu gross" los etc...
Zuerst muss man ja nur die Sprachen mitliefern, die auch die Anwendung abdeckt (besser alles in Englisch als Englisches Programm aber Chinesische Buttons in den Dialogen). Dann kann man das ganze komprimieren und landet bei 85-220 Kb für die LCL -- das ist jetzt nicht so viel verglichen mit der LCL an sich.theo hat geschrieben:Naja es ist halt nicht ganz einfach.
Wenn Lazarus die Übersetzungen automatisch einbindet, dann muss man das languages Verzeichnis mitliefern, was dann auch wieder nicht sofort verstanden wird.
Würde man alle Sprachen als Ressourcen einbinden, geht das Gejammer mit "EXE zu gross" los etc...
Du kannst jegliche Daten in dein Programmeinbinden; die Frage ist: Was willst du damit erreichen?Maik81ftl hat geschrieben:Thoe... Irgendwie kommt mir gerade der Punkt Sprachdatei mehr als bakannt vor.in den Projekten, die ich via CoDeSys betreue bin ich nun mehr und mehr dabei eine XML-File mit einzubinden, wäre dies ggf. auch eine Option unter Lazarus oder geht das da Schief?
soll in den Punkt Multilanguage gedacht seinSocke hat geschrieben:Du kannst jegliche Daten in dein Programmeinbinden; die Frage ist: Was willst du damit erreichen?Maik81ftl hat geschrieben:Thoe... Irgendwie kommt mir gerade der Punkt Sprachdatei mehr als bakannt vor.in den Projekten, die ich via CoDeSys betreue bin ich nun mehr und mehr dabei eine XML-File mit einzubinden, wäre dies ggf. auch eine Option unter Lazarus oder geht das da Schief?
Soweit war ich auch schnell gekommen. Wie aber bindet man die nun unkompliziert ein, wenn man sein Programm nicht selbst aufwendig i18n-fähig machen will? Ich wollte in dem Fall einfach nur eine schnelle Lösung für ein Allerweltsproblem, das eigentlich fast jeden irgendwann streift und das die Lazarus-IDE bisher nicht befriedigend löst.knight hat geschrieben:Eine Lokalisierung ist bereits vorhanden (z.B. lclstrconsts.de.po). Sie muß aber explizit von deinem Programm verwendet werden.
Auch das hat mir nicht wirklich weitergeholfen. WIE hast Du "die lcl/languages ins Project übernommen"?hde hat geschrieben:Ich hatte jetzt testweise die lcl/languages ins Project übernommen und die uses der .lpr um defaulttranslator ergänzt, Dann werden alle deutschen lcl-Text übernommen...
Das ist wohl wahr... Ich bitte Euch: Habt doch ein bißchen Erbarmen mit den Gelegenheitsprogrammierern. Bitte bedenkt, daß ein solches Forum zwar einerseits der lockeren Unterhaltung der Akteure dient (was ja völlig okay ist), andererseits aber auch von (ganz unterschiedlich beschlagenen) Lesern auf der Suche nach Problemanalyse und -lösungen genutzt wird. Mich hat etwa das Googeln nach "lazarus lclstrconsts.de.po" (nahezu exklusiv) auf diesen Thread verschlagen...hde hat geschrieben:Danke für Eure Hilfe.
wenn man's weiß funktioniert' s ja auch.
Code: Alles auswählen
{uses
...}
Translations, LCLProc;
procedure TranslateLCL;
var
PODirectory, Lang, FallbackLang: String;
begin
PODirectory:='/path/to/lazarus/lcl/languages/'; {in meinem Fall '/usr/share/lazarus/1.2.0/lcl/languages/'}
Lang:='';
FallbackLang:='';
LCLGetLanguageIDs(Lang,FallbackLang); // in der Unit LCLProc
Translations.TranslateUnitResourceStrings('LCLStrConsts',
PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
// ... fügen Sie hier einen Aufruf von TranslateUnitResourceStrings für jede .po-Datei hinzu ...
end;
{begin}
TranslateLCL;
{ Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.}
Code: Alles auswählen
uses
Translations;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Translations.TranslateUnitResourceStrings('LCLStrConsts',
'/usr/share/lazarus/1.2.0/lcl/languages/lclstrconsts.%s.po','de','de');
end;
Code: Alles auswählen
me@debian:~$ lazres /home/me/.../MyProject/lclstrconsts_modified_de.lrs /usr/share/lazarus/1.2.0/lcl/languages/lclstrconsts_modified.de.po
Code: Alles auswählen
uses
translations, LResources;
function TranslateUnitResourceStrings: boolean;
var
r: TLResource;
POFile: TPOFile;
begin
r:=LazarusResources.Find('lclstrconsts_modified.de','PO');
POFile:=TPOFile.Create;
try
POFile.ReadPOText(r.Value);
Result:=Translations.TranslateUnitResourceStrings('LCLStrConsts',POFile);
finally
POFile.Free;
end;
end;
Code: Alles auswählen
initialization
{$I lclstrconsts_modified_de.lrs}
TranslateUnitResourceStrings;
(...)
end.
Code: Alles auswählen
type
TTranslateFromResourceResult = (trSuccess, trResourceNotFound, trTranslationError);
function TranslateFromResource(AResourceName, ALanguage : String): TTranslateFromResourceResult;
var
LRes : TLResource;
POFile : TPOFile = nil;
SStream : TStringStream = nil;
begin
Result := trResourceNotFound;
LRes := LazarusResources.Find(AResourceName + '.' + ALanguage, 'PO');
if LRes <> nil then
try
SStream := TStringStream.Create(LRes.Value);
POFile := TPoFile.Create(SStream, False);
try
if TranslateUnitResourceStrings(AResourceName, POFile) then Result := trSuccess
else Result := trTranslationError;
except
Result := trTranslationError;
end;
finally
if Assigned(SStream) then SStream.Free;
if Assigned(POFile) then POFile.Free;
end;
end;
Code: Alles auswählen
initialization
{$I lclstrconsts.de.lrs}
TranslateFromResource('lclstrconsts', 'de');
end.