[fpc-devel] Locale solution for Linux (and maybe *nix)

Graeme Geldenhuys graemeg.lists at gmail.com
Mon Aug 4 09:31:35 CEST 2008


Hi,

In FPC the locale information is all hard-coded for Linux and other
Unix based systems. We don't all live in the USA. ;-)  This is very
annoying.  I also know we may not use glibc calls in FPC to get the
locale information, because glibc is not always available on systems
other than Linux.

Today I found the following on my Linux system which could possibly
solve this issues.  Could other Linux distros and Unix users (*BSD,
etc) confirm if they also have the following directory?

Under Ubuntu 7.10 I have the follow directory:  /usr/share/i18n/locales/

Inside that directory are files like en_GB, en_US, es_ES, de_DE etc....
They are plain text files that should be fairly easy to parse and
extract the locale information.  Couldn't we use that to populate the
locale information inside FPC, without the need of glibc?

For example, here are some of the content of the en_ZA (English South
Africa) file:

-------------[  en_ZA  ]--------------------
<....snip....>
LC_MONETARY
% ISO 4217 Currency and fund codes
% http://www.bsi-global.com/Technical+Information/Publications/_Publications/tig90.xalter
% "ZAR "
int_curr_symbol         "<U005A><U0041><U0052><U0020>"

% "R"
currency_symbol         "<U0052>"

% "."
mon_decimal_point       "<U002E>"

% ","
mon_thousands_sep       "<U002C>"
mon_grouping            3;3
positive_sign           ""

% "-"
negative_sign           "<U002D>"
int_frac_digits         2
frac_digits             2
p_cs_precedes           1
p_sep_by_space          0
n_cs_precedes           1
n_sep_by_space          0
p_sign_posn             1
n_sign_posn             1
END LC_MONETARY

LC_NUMERIC
% "."
decimal_point           "<U002E>"

% ","
thousands_sep           "<U002C>"
grouping                3;3
END LC_NUMERIC

LC_TIME
% abday - The abbreviations for the week days:
% - Sun, Mon, Tue, Wed, Thu, Fri, Sat
abday       "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
            "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
            "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
            "<U0053><U0061><U0074>"
<...snip...>
% Date representation to be referenced by the "%x" field descriptor -
% "%d/%m/%Y", day/month/year as decimal numbers (01/01/2000).
d_fmt       "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
<...snip...>
first_weekday 1
END LC_TIME

LC_PAPER
<...snip...>
END LC_PAPER

LC_TELEPHONE
<...snip...>
END LC_TELEPHONE
----------------[  end  ]---------------------


Regards,
 - Graeme -


_______________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/



More information about the fpc-devel mailing list