Localization


In BBj 2.02 and higher, the FILEOPEN and FILESAVE functions and mnemonics

are localized according to current STBL("!LOCALE") setting.

The STBL("!LOCALE") global string localizes the behavior of numeric masking and the DATE() function. The STBL("!LOCALES") global string returns a line-feed-delimited list of available locales. If STBL("!LOCALE") is not reset, it returns a default value set by the operating system.

Numeric Masking

The following numeric mask characters have been added to supplement the '$' character:

Mask Character

Description

$

The dollar symbol always results in a dollar sign.

&

The & symbol is replaced by the local currency symbol.

@

The @ symbol is replaced by the three-letter international currency code.


Example:

Locale

$###.00

&###.00

@###.00

de_DE

$123.45

€123.45

EUR123.45

en_AU

$123.45

$123.45

AUD123.45

en_CA

$123.45

$123.45

CAD123.45

en_GB

$123.45

£123.45

GBP123.45

en_IE

$123.45

€123.45

EUR123.45

en_IN

$123.45

Rs.123.45

INR123.45

en_NZ

$123.45

$123.45

NZD123.45

en_US

$123.45

$123.45

USD123.45

en_ZA

$123.45

R123.45

ZAR123.45

fr_FR

$123.45

€123.45

EUR123.45

nl_NL

$123.45

€123.45

EUR123.45

zh_HK

$123.45

HK$123.45

HKD123.45

DATE() Function and STBL("!DATE")

The day and month names in the STBL("!DATE") global string are automatically updated based on the STBL("!LOCALE") setting. For example:

Locale

DATE(0)

DATE(0:"%Dl %Ml %D %Y")

de_DE

29.04.02

Montag April 29 2002

en_AU

29/04/02

Monday April 29 2002

en_CA

29/04/02

Monday April 29 2002

en_GB

29/04/02

Monday April 29 2002

en_US

4/29/02

Monday April 29 2002

es_ES

29/04/02

lunes abril 29 2002

fr_CA

02-04-29

lundi avril 29 2002

fr_FR

29/04/02

lundi avril 29 2002

it_IT

29/04/02

lunedì aprile 29 2002

nl_NL

29-4-02

maandag april 29 2002

no_NO

29.04.02

mandag april 29 2002

sv_SE

2002-04-29

måndag april 29 2002

To minimize side effects with existing applications, the format of DATE(0) is kept as "%Mz/%Dz/%Yz" unless STBL("!LOCALE") is explicitly reset.

Example

let locales=pos($0A$=stbl("!LOCALES"),1,0)
dim locales$:"locale["+str(locales)+"]:c(4*=10)"
let locales$=stbl("!LOCALES")
let n=123.45,m1$="$###.00-",m2$="&###.00-",m3$="@###.00-"
for locale=1 to locales
    let locale$=stbl("!LOCALE",locales.locale$[locale])
    print locale$,@(15),n:m1$,@(30),n:m2$,@(45),n:m3$,@(60),date(0)
next locale