/*
 * Locale definitions for Korean
 *
 * 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_KOREAN, SUBLANG_KOREAN
{
  LOCALE_FONTSIGNATURE L"\x02a7\x8000\x7cf9\x39d7\x0010\x0000\x0000\x0000\x0000\x0008\x0000\x0000\x0000\x0008\x0000\x0000"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "82"
  LOCALE_ICURRDIGITS "0"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "949"
  LOCALE_IDEFAULTCODEPAGE "949"
  LOCALE_IDEFAULTCOUNTRY "82"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20833"
  LOCALE_IDEFAULTLANGUAGE "0412"
  LOCALE_IDEFAULTMACCODEPAGE "10003"
  LOCALE_IDEFAULTUNIXCODEPAGE "949"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0412"
  LOCALE_ILDATE "2"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "1"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "3"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "5"
  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 "오전"
  LOCALE_S2359 "오후"
  LOCALE_SABBREVCTRYNAME "KOR"
  LOCALE_SABBREVDAYNAME1 "월"
  LOCALE_SABBREVDAYNAME2 "화"
  LOCALE_SABBREVDAYNAME3 "수"
  LOCALE_SABBREVDAYNAME4 "목"
  LOCALE_SABBREVDAYNAME5 "금"
  LOCALE_SABBREVDAYNAME6 "토"
  LOCALE_SABBREVDAYNAME7 "일"
  LOCALE_SABBREVLANGNAME "KOR"
  LOCALE_SABBREVMONTHNAME1 "1"
  LOCALE_SABBREVMONTHNAME2 "2"
  LOCALE_SABBREVMONTHNAME3 "3"
  LOCALE_SABBREVMONTHNAME4 "4"
  LOCALE_SABBREVMONTHNAME5 "5"
  LOCALE_SABBREVMONTHNAME6 "6"
  LOCALE_SABBREVMONTHNAME7 "7"
  LOCALE_SABBREVMONTHNAME8 "8"
  LOCALE_SABBREVMONTHNAME9 "9"
  LOCALE_SABBREVMONTHNAME10 "10"
  LOCALE_SABBREVMONTHNAME11 "11"
  LOCALE_SABBREVMONTHNAME12 "12"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Korea"
  LOCALE_SCURRENCY L"\x20a9"
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "월요일"
  LOCALE_SDAYNAME2 "화요일"
  LOCALE_SDAYNAME3 "수요일"
  LOCALE_SDAYNAME4 "목요일"
  LOCALE_SDAYNAME5 "금요일"
  LOCALE_SDAYNAME6 "토요일"
  LOCALE_SDAYNAME7 "일요일"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Korea"
  LOCALE_SENGCURRNAME "Korean Won"
  LOCALE_SENGLANGUAGE "Korean"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "KRW"
  LOCALE_SISO3166CTRYNAME "KR"
  LOCALE_SISO639LANGNAME "ko"
  LOCALE_SLANGUAGE "Korean"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "yyyy'년' M'월' d'일' dddd"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "1월"
  LOCALE_SMONTHNAME2 "2월"
  LOCALE_SMONTHNAME3 "3월"
  LOCALE_SMONTHNAME4 "4월"
  LOCALE_SMONTHNAME5 "5월"
  LOCALE_SMONTHNAME6 "6월"
  LOCALE_SMONTHNAME7 "7월"
  LOCALE_SMONTHNAME8 "8월"
  LOCALE_SMONTHNAME9 "9월"
  LOCALE_SMONTHNAME10 "10월"
  LOCALE_SMONTHNAME11 "11월"
  LOCALE_SMONTHNAME12 "12월"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "ko-KR"
  LOCALE_SNATIVECTRYNAME "대한민국"
  LOCALE_SNATIVECURRNAME "원"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "한국어 (대한민국)"
  LOCALE_SNATIVELANGNAME "한국어"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "KOR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hang;Hani;"
  LOCALE_SSHORTDATE "yyyy-MM-dd"
  LOCALE_SSHORTESTDAYNAME1 "월"
  LOCALE_SSHORTESTDAYNAME2 "화"
  LOCALE_SSHORTESTDAYNAME3 "수"
  LOCALE_SSHORTESTDAYNAME4 "목"
  LOCALE_SSHORTESTDAYNAME5 "금"
  LOCALE_SSHORTESTDAYNAME6 "토"
  LOCALE_SSHORTESTDAYNAME7 "일"
  LOCALE_SSHORTTIME "tt h:mm"
  LOCALE_SSORTNAME "Dictionary"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "tt 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"
}
