/*
 * Locale definitions for Chinese (PRC)
 *
 * 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_SIMPLIFIED
{
  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 "86"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "936"
  LOCALE_IDEFAULTCODEPAGE "936"
  LOCALE_IDEFAULTCOUNTRY "86"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0804"
  LOCALE_IDEFAULTMACCODEPAGE "10008"
  LOCALE_IDEFAULTUNIXCODEPAGE "936"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0804"
  LOCALE_ILDATE "2"
  LOCALE_ILZERO "0"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "2"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "1"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "上午"
  LOCALE_S2359 "下午"
  LOCALE_SABBREVCTRYNAME "CHN"
  LOCALE_SABBREVDAYNAME1 "星期一"
  LOCALE_SABBREVDAYNAME2 "星期二"
  LOCALE_SABBREVDAYNAME3 "星期三"
  LOCALE_SABBREVDAYNAME4 "星期四"
  LOCALE_SABBREVDAYNAME5 "星期五"
  LOCALE_SABBREVDAYNAME6 "星期六"
  LOCALE_SABBREVDAYNAME7 "星期日"
  LOCALE_SABBREVLANGNAME "CHS"
  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 "People's Republic of China"
  LOCALE_SCURRENCY "￥"
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "星期一"
  LOCALE_SDAYNAME2 "星期二"
  LOCALE_SDAYNAME3 "星期三"
  LOCALE_SDAYNAME4 "星期四"
  LOCALE_SDAYNAME5 "星期五"
  LOCALE_SDAYNAME6 "星期六"
  LOCALE_SDAYNAME7 "星期日"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "People's Republic of China"
  LOCALE_SENGCURRNAME "PRC Yuan Renminbi"
  LOCALE_SENGLANGUAGE "Chinese (Simplified)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "CNY"
  LOCALE_SISO3166CTRYNAME "CN"
  LOCALE_SISO639LANGNAME "zh"
  LOCALE_SLANGUAGE "Chinese (PRC)"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "yyyy'年'M'月'd'日'"
  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-CN"
  LOCALE_SNATIVECTRYNAME "中华人民共和国"
  LOCALE_SNATIVECURRNAME "人民币"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "中文(简体) (中华人民共和国)"
  LOCALE_SNATIVELANGNAME "中文(简体)"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ZHS "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hans;"
  LOCALE_SSHORTDATE "yyyy-M-d"
  LOCALE_SSHORTESTDAYNAME1 "一"
  LOCALE_SSHORTESTDAYNAME2 "二"
  LOCALE_SSHORTESTDAYNAME3 "三"
  LOCALE_SSHORTESTDAYNAME4 "四"
  LOCALE_SSHORTESTDAYNAME5 "五"
  LOCALE_SSHORTESTDAYNAME6 "六"
  LOCALE_SSHORTESTDAYNAME7 "日"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Pronunciation"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  LOCALE_SYEARMONTH "yyyy'年'M'月'"

  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"
}
