/*
 * Locale definitions for Chinese (Macau S.A.R.)
 *
 * 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_MACAU
{
  LOCALE_FONTSIGNATURE L"\x00a3\x8000\x7878\x38c9\x0016\x0000\x0000\x0000\x0000\x0010\x0000\x0000\x0000\x0010\x0000\x0000"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "853"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "950"
  LOCALE_IDEFAULTCODEPAGE "950"
  LOCALE_IDEFAULTCOUNTRY "853"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "1404"
  LOCALE_IDEFAULTMACCODEPAGE "10002"
  LOCALE_IDEFAULTUNIXCODEPAGE "950"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "1404"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  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 "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "MCO"
  LOCALE_SABBREVDAYNAME1 "星期一"
  LOCALE_SABBREVDAYNAME2 "星期二"
  LOCALE_SABBREVDAYNAME3 "星期三"
  LOCALE_SABBREVDAYNAME4 "星期四"
  LOCALE_SABBREVDAYNAME5 "星期五"
  LOCALE_SABBREVDAYNAME6 "星期六"
  LOCALE_SABBREVDAYNAME7 "星期日"
  LOCALE_SABBREVLANGNAME "ZHM"
  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 "Macau S.A.R."
  LOCALE_SCURRENCY "P"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "星期一"
  LOCALE_SDAYNAME2 "星期二"
  LOCALE_SDAYNAME3 "星期三"
  LOCALE_SDAYNAME4 "星期四"
  LOCALE_SDAYNAME5 "星期五"
  LOCALE_SDAYNAME6 "星期六"
  LOCALE_SDAYNAME7 "星期日"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Macau S.A.R."
  LOCALE_SENGCURRNAME "Macau Pataca"
  LOCALE_SENGLANGUAGE "Chinese (Traditional)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "MOP"
  LOCALE_SISO3166CTRYNAME "MO"
  LOCALE_SISO639LANGNAME "zh"
  LOCALE_SLANGUAGE "Chinese (Macau S.A.R.)"
  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-MO"
  LOCALE_SNATIVECTRYNAME L"\x6fb3\x95e8\x7279\x522b\x884c\x653f\x533a"
  LOCALE_SNATIVECURRNAME "Pataca"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME ""
  LOCALE_SNATIVELANGNAME L"\x4e2d\x6587(\x7b80\x4f53)"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ZHT "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hant;"
  LOCALE_SSHORTDATE "d/M/yyyy"
  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 "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"
}
