/*
 * 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_SNAN "NaN"
  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"
}
