/*
 *	OLE2NLS library
 *      Chinese (Singapore)
 *
 * Copyright 1998 Marcel Baur
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

LOCVAL(LOCALE_ILANGUAGE,"1004")
/* LOCVAL(LOCALE_SLANGUAGE,"") */
LOCVAL(LOCALE_SENGLANGUAGE,"Chinese (Singapore)")
LOCVAL(LOCALE_SABBREVLANGNAME,"zhs")
/* LOCVAL(LOCALE_SNATIVELANGNAME,"") */
/* LOCVAL(LOCALE_ICOUNTRY,"") */
/* LOCVAL(LOCALE_SCOUNTRY,"") */
LOCVAL(LOCALE_SENGCOUNTRY,"Singapore")
LOCVAL(LOCALE_SABBREVCTRYNAME,"SGP")
/* LOCVAL(LOCALE_SNATIVECTRYNAME,"") */
LOCVAL(LOCALE_IDEFAULTLANGUAGE,"0404")
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"") */
/* LOCVAL(LOCALE_IDEFAULTCODEPAGE) */
/* LOCVAL(LOCALE_IDEFAULTANSICODEPAGE) */
/* LOCVAL(LOCALE_SLIST,"") */
/* LOCVAL(LOCALE_IMEASURE,"") */
/* LOCVAL(LOCALE_SDECIMAL,"") */
/* LOCVAL(LOCALE_STHOUSAND,"") */
/* LOCVAL(LOCALE_SGROUPING) */
/* LOCVAL(LOCALE_IDIGITS,"2") */
/* LOCVAL(LOCALE_ILZERO,"1") */
/* LOCVAL(LOCALE_INEGNUMBER) */
LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
LOCVAL(LOCALE_SCURRENCY,"$")
LOCVAL(LOCALE_SINTLSYMBOL,"SGD")
/* LOCVAL(LOCALE_SMONDECIMALSEP,",") */
/* LOCVAL(LOCALE_SMONTHOUSANDSEP,".") */
/* LOCVAL(LOCALE_SMONGROUPING) */
/* LOCVAL(LOCALE_ICURRDIGITS,"2") */
/* LOCVAL(LOCALE_IINTLCURRDIGITS) */
/* LOCVAL(LOCALE_ICURRENCY,"3") */
/* LOCVAL(LOCALE_INEGCURR,"8") */
/* LOCVAL(LOCALE_SDATE,".") */
/* LOCVAL(LOCALE_STIME,":") */
/* LOCVAL(LOCALE_SSHORTDATE,"dd/MM-yyyy") */
/* LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy") */
/* LOCVAL(LOCALE_STIMEFORMAT) */
/* LOCVAL(LOCALE_IDATE,"1") */
/* LOCVAL(LOCALE_ILDATE) */
LOCVAL(LOCALE_ITIME,"1")
/* LOCVAL(LOCALE_ITIMEMARKPOSN) */
/* LOCVAL(LOCALE_ICENTURY) */
LOCVAL(LOCALE_ITLZERO,"1")
/* LOCVAL(LOCALE_IDAYLZERO) */
/* LOCVAL(LOCALE_IMONLZERO) */
LOCVAL(LOCALE_S1159, "AM")
LOCVAL(LOCALE_S2359, "PM")
LOCVAL(LOCALE_ICALENDARTYPE, "1")
/* LOCVAL(LOCALE_IOPTIONALCALENDAR) */
/* LOCVAL(LOCALE_IFIRSTDAYOFWEEK) */
/* LOCVAL(LOCALE_IFIRSTWEEKOFYEAR) */

/* LOCVAL(LOCALE_SDAYNAME1,"") */
/* LOCVAL(LOCALE_SDAYNAME2,"") */
/* LOCVAL(LOCALE_SDAYNAME3,"") */
/* LOCVAL(LOCALE_SDAYNAME4,"") */
/* LOCVAL(LOCALE_SDAYNAME5,"") */
/* LOCVAL(LOCALE_SDAYNAME6,"") */
/* LOCVAL(LOCALE_SDAYNAME7,"") */

/* LOCVAL(LOCALE_SABBREVDAYNAME1,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME2,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME3,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME4,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME5,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME6,"") */
/* LOCVAL(LOCALE_SABBREVDAYNAME7,"") */

/* LOCVAL(LOCALE_SMONTHNAME1,"") */
/* LOCVAL(LOCALE_SMONTHNAME2,"") */
/* LOCVAL(LOCALE_SMONTHNAME3,"") */
/* LOCVAL(LOCALE_SMONTHNAME4,"") */
/* LOCVAL(LOCALE_SMONTHNAME5,"") */
/* LOCVAL(LOCALE_SMONTHNAME6,"") */
/* LOCVAL(LOCALE_SMONTHNAME7,"") */
/* LOCVAL(LOCALE_SMONTHNAME8,"") */
/* LOCVAL(LOCALE_SMONTHNAME9,"") */
/* LOCVAL(LOCALE_SMONTHNAME10,"") */
/* LOCVAL(LOCALE_SMONTHNAME11,"") */
/* LOCVAL(LOCALE_SMONTHNAME12,"") */
/* LOCVAL(LOCALE_SMONTHNAME13,"") */

/* LOCVAL(LOCALE_SABBREVMONTHNAME1,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME2,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME3,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME4,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME5,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME6,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME7,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME8,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME9,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME10,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME11,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME12,"") */
/* LOCVAL(LOCALE_SABBREVMONTHNAME13,"") */

/* LOCVAL(LOCALE_SPOSITIVESIGN, "") */
/* LOCVAL(LOCALE_SNEGATIVESIGN, "") */
/* LOCVAL(LOCALE_IPOSSIGNPOSN, "") */
/* LOCVAL(LOCALE_INEGSIGNPOSN, "") */
/* LOCVAL(LOCALE_IPOSSYMPRECEDES, "") */
/* LOCVAL(LOCALE_IPOSSEPBYSPACE, "") */
/* LOCVAL(LOCALE_INEGSYMPRECEDES, "") */
/* LOCVAL(LOCALE_INEGSEPBYSPACE, "") */
/* LOCVAL(LOCALE_FONTSIGNATURE, "") */
LOCVAL(LOCALE_SISO639LANGNAME,"zh")
LOCVAL(LOCALE_SISO3166CTRYNAME,"SG")
 
