[Lazarus] Localization in toolkit like fpGUI

zaher dirkey parmaja at gmail.com
Tue Feb 19 09:24:38 CET 2008


for 2) what if user want to change language at runtime.

On Feb 19, 2008 9:59 AM, Graeme Geldenhuys <graemeg.lists at gmail.com> wrote:

> Hi,
>
> I know this is not directly related to Lazarus, but I thought with all
> the experience collected and that Lazarus supports localization, I
> might get some good ideas here...
>
> I want to localize the fpGUI toolkit. Standard dialogs, error
> messages, etc... What is the best way to approach this.
>
> 1) GetText: This was my first thought, but that means every fpGUI
> based application needs to ship with external .po files which I don't
> like and don't want. fpGUI based applications must preferably be a
> single executable at best.  GetText works great for your own
> applications, but not for the GUI framework I think.
>
> 2) Include files with Constants. This is what I'm starting with for
> now. A gfx_constants.pas unit with $Defines for each supported
> language. Depending on which define you have active, it will pull in
> the correct language .inc file with resource strings. If no define has
> been specified, it defaults to English. This obviously happens at
> compile time, but at least we have no external files to ship with a
> simple one file fpGUI based application. The only down side is when
> you add a new constant, you must remember to insert it into all the
> other language .inc files - though I'm sure I can create some tool to
> automate this.
>
>  eg:
> ----------------[ gfx_constants.pas ]---------------------
> ....
> resourcestring
>
> { Define Compiler language symbol (eg: gr for German) to include the
> correct
>  language resource file otherwise the Default (English) resource file will
>  be used. }
>
> {.$DEFINE gr}     // German
> {.$DEFINE ru}     // Russian
> {.$DEFINE fr}     // French
> {.$DEFINE pt}     // Portuguese
>
> {$IF defined(gr)}
>  {$I lang_german.inc}
> {$ELSEIF defined(ru)}
>  {$I lang_russian.inc}
> {$ELSEIF defined(fr)}
>  {$I lang_french.inc}
> {$ELSEIF defined(pt)}
>  {$I lang_portuguese.inc}
> {$ELSE}
>  {$I lang_english.inc}
> {$IFEND}
> ....
> ----------------[ end ]--------------------
>
> Example language include file:
>
> ------------[ lang_english.inc ]-------------
> {%mainunit gfx_constants.pas}
>
> rsLanguage               = 'English';
>
> // Buttons
> rsOK                     = 'OK';
> rsCancel                 = 'Cancel';
> rsHelp                   = 'Help';
> ...
> --------------[ end ]--------------------
>
> 3) ????  Anybody got any other ideas?  Remember, this is localization
> for a Toolkit, not for a application.  GetText works perfectly for a
> application.
>
>
> Regards,
>  - Graeme -
>
>
> _______________________________________________
> fpGUI - a cross-platform Free Pascal GUI toolkit
> http://opensoft.homeip.net/fpgui/
> _______________________________________________
> Lazarus mailing list
> Lazarus at lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
>



-- 
Zaher Dirkey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20080219/18e54709/attachment-0007.html>


More information about the Lazarus mailing list