Buongiorno,
Per chi volesse utilizzare il componente in oggetto, faccio presente che ho riscontrato una perdita di memoria per un oggetto non deallocato.
La correzione da fare si trova nel file VpMisc alla riga 626.
Riporto per chiarezza lo spezzone di codice gia corretto:
function GetButtonWidth(AButton: TButton): Integer;
const
MARGIN = 24;
var
canvas: TControlCanvas;
begin
try
canvas := TControlCanvas.Create;
canvas.Control := AButton;
canvas.Font.Assign(AButton.Font);
Result := canvas.TextWidth(AButton.Caption) + MARGIN * Screen.PixelsPerInch div DesignTimeDPI;
finally
canvas.Free;
end;
end;
Sto cercando di localizzare i componenti di Turbopower Visual PlanIt in italiano utilizzando il metodo proposto dalla wiki in questa pagina: http://wiki.freepascal.org/Turbopower_Visual_PlanIt#Localization (http://wiki.freepascal.org/Turbopower_Visual_PlanIt#Localization), tuttavia non riesco ad ottenere alcun risultato (il codice si compila correttamente, ma non avviene alcun cambiamento nelle diciture inglesi dell'interfaccia).
La wiki dice:
Localization
All internal strings used by the VisualPlanIt package can be localized by means of the translation utilities available within Lazarus. The translated po files can be found in the folder languages of the distribution. Copy them to the language folder of your application, and translate them by calling
uses
translations;
var
langdir: String; // language folder of your application
lang: String; // language abbreviation, e.g. "de" for German
//...
TranslateUnitResourceStrings('vpsr', langdir + 'vpsr.' + lang + 'po');
Quindi:
- creata la cartella "locale", in cui ho inserito il file "vpsr.it.po"
- provato ad aggiungere il codice suggerito sia nella unit principale dell'applicazione sia nel file "nomeapplicazione.lpr", ma in entrambi i casi non accade nulla
- Provato a modificare le opzioni di progetto di modo che si attivasse la modalità i18n, in entrambi i casi precedenti non succede nulla
Che cosa sto sbagliando??
Grazie per il vostro tempo e la vostra attenzione. Se e quando riuscirò a far funzionare questa traduzione condividerò il file .po tradotto con la community italiana.
così a senso direi che potrebbero mancare le assegnazioni, ad esempio:
uses
translations;
var
langdir: String; // language folder of your application
lang: String; // language abbreviation, e.g. "de" for German
//...
langdir:='locale';
lang:='it';
TranslateUnitResourceStrings('vpsr', langdir + 'vpsr.' + lang + 'po');
ti consiglio di leggere questo link, credo che può esserti utile per capire meglio come funziona il meccanismo delle traduzioni in lazarus
http://www.lazaruspascal.it/index.php?page=154 (http://www.lazaruspascal.it/index.php?page=154)
Problema risolto :D, era un errore nella definizione del path al file con la traduzione (nello script precedente preso dalla wiki manca un punto ::)).
Nel file "nomeapplicazione.lpr":
uses
..., Translations;
begin
Translations.TranslateUnitResourceStrings('vpsr', 'locale/vpsr.it.po');
...
Application.Run;
end.
Appena termino la traduzione del file .po la posto sul forum per chi volesse italianizzare TurboPower Visual PlanIt.