/*
 * Locale definitions for Chinese (Singapore)
 *
 * Copyright 2002 Alexandre Julliard for CodeWeavers
 *
 * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#pragma code_page(65001) /* UTF-8 */

STRINGTABLE LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SINGAPORE
{
  LOCALE_FONTSIGNATURE L"\x02af\x8000\x6cf8\x184f\x0010\x0000\x0000\x0000\x0000\x0004\x0000\x0000\x0000\x0004\x0000\x0000"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "65"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "936"
  LOCALE_IDEFAULTCODEPAGE "936"
  LOCALE_IDEFAULTCOUNTRY "65"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "1004"
  LOCALE_IDEFAULTMACCODEPAGE "10008"
  LOCALE_IDEFAULTUNIXCODEPAGE "936"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "1004"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "1"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "0"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "0"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "0"
  LOCALE_ITIMEMARKPOSN "1"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "AM"
  LOCALE_S2359 "PM"
  LOCALE_SABBREVCTRYNAME "SGP"
  LOCALE_SABBREVDAYNAME1 "星期一"
  LOCALE_SABBREVDAYNAME2 "星期二"
  LOCALE_SABBREVDAYNAME3 "星期三"
  LOCALE_SABBREVDAYNAME4 "星期四"
  LOCALE_SABBREVDAYNAME5 "星期五"
  LOCALE_SABBREVDAYNAME6 "星期六"
  LOCALE_SABBREVDAYNAME7 "星期日"
  LOCALE_SABBREVLANGNAME "ZHI"
  LOCALE_SABBREVMONTHNAME1 "一月"
  LOCALE_SABBREVMONTHNAME2 "二月"
  LOCALE_SABBREVMONTHNAME3 "三月"
  LOCALE_SABBREVMONTHNAME4 "四月"
  LOCALE_SABBREVMONTHNAME5 "五月"
  LOCALE_SABBREVMONTHNAME6 "六月"
  LOCALE_SABBREVMONTHNAME7 "七月"
  LOCALE_SABBREVMONTHNAME8 "八月"
  LOCALE_SABBREVMONTHNAME9 "九月"
  LOCALE_SABBREVMONTHNAME10 "十月"
  LOCALE_SABBREVMONTHNAME11 "十一月"
  LOCALE_SABBREVMONTHNAME12 "十二月"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Singapore"
  LOCALE_SCURRENCY "$"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "星期一"
  LOCALE_SDAYNAME2 "星期二"
  LOCALE_SDAYNAME3 "星期三"
  LOCALE_SDAYNAME4 "星期四"
  LOCALE_SDAYNAME5 "星期五"
  LOCALE_SDAYNAME6 "星期六"
  LOCALE_SDAYNAME7 "星期日"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Singapore"
  LOCALE_SENGCURRNAME "Singapore Dollar"
  LOCALE_SENGLANGUAGE "Chinese (Simplified)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "SGD"
  LOCALE_SISO3166CTRYNAME "SG"
  LOCALE_SISO639LANGNAME "zh"
  LOCALE_SLANGUAGE "Chinese (Singapore)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "dddd, d MMMM, yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "一月"
  LOCALE_SMONTHNAME2 "二月"
  LOCALE_SMONTHNAME3 "三月"
  LOCALE_SMONTHNAME4 "四月"
  LOCALE_SMONTHNAME5 "五月"
  LOCALE_SMONTHNAME6 "六月"
  LOCALE_SMONTHNAME7 "七月"
  LOCALE_SMONTHNAME8 "八月"
  LOCALE_SMONTHNAME9 "九月"
  LOCALE_SMONTHNAME10 "十月"
  LOCALE_SMONTHNAME11 "十一月"
  LOCALE_SMONTHNAME12 "十二月"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "zh-SG"
  LOCALE_SNATIVECTRYNAME "新加坡"
  LOCALE_SNATIVECURRNAME "新币"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "中文(简体) (新加坡)"
  LOCALE_SNATIVELANGNAME "中文(简体)"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ZHS "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hans;"
  LOCALE_SSHORTDATE "d/M/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "一"
  LOCALE_SSHORTESTDAYNAME2 "二"
  LOCALE_SSHORTESTDAYNAME3 "三"
  LOCALE_SSHORTESTDAYNAME4 "四"
  LOCALE_SSHORTESTDAYNAME5 "五"
  LOCALE_SSHORTESTDAYNAME6 "六"
  LOCALE_SSHORTESTDAYNAME7 "日"
  LOCALE_SSHORTTIME "tt h:mm"
  LOCALE_SSORTNAME "Pronunciation"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "tt h:mm:ss"
  LOCALE_SYEARMONTH "MMMM, yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE "Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE "Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE "Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabic"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE "Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armenian"
}
