/*
 * Locale definitions for Georgian
 *
 * 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_GEORGIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x002f\x8400\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "995"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "0"
  LOCALE_IDEFAULTCODEPAGE "1"
  LOCALE_IDEFAULTCOUNTRY "995"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0437"
  LOCALE_IDEFAULTMACCODEPAGE "2"
  LOCALE_IDEFAULTUNIXCODEPAGE "65001"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0437"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "8"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "1"
  LOCALE_INEGSIGNPOSN "1"
  LOCALE_INEGSYMPRECEDES "0"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "0"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "GEO"
  LOCALE_SABBREVDAYNAME1 "ორშაბათი"
  LOCALE_SABBREVDAYNAME2 "სამშაბათი"
  LOCALE_SABBREVDAYNAME3 "ოთხშაბათი"
  LOCALE_SABBREVDAYNAME4 "ხუთშაბათი"
  LOCALE_SABBREVDAYNAME5 "პარასკევი"
  LOCALE_SABBREVDAYNAME6 "შაბათი"
  LOCALE_SABBREVDAYNAME7 "კვირა"
  LOCALE_SABBREVLANGNAME "KAT"
  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 "Georgia"
  LOCALE_SCURRENCY "Lari"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "ორშაბათი"
  LOCALE_SDAYNAME2 "სამშაბათი"
  LOCALE_SDAYNAME3 "ოთხშაბათი"
  LOCALE_SDAYNAME4 "ხუთშაბათი"
  LOCALE_SDAYNAME5 "პარასკევი"
  LOCALE_SDAYNAME6 "შაბათი"
  LOCALE_SDAYNAME7 "კვირა"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Georgia"
  LOCALE_SENGCURRNAME "Lari"
  LOCALE_SENGLANGUAGE "Georgian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "GE"
  LOCALE_SISO3166CTRYNAME "GE"
  LOCALE_SISO639LANGNAME "ka"
  LOCALE_SLANGUAGE "Georgian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "yyyy 'წლის' dd MM, dddd"
  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 "ka-GE"
  LOCALE_SNATIVECTRYNAME "საქართველო"
  LOCALE_SNATIVECURRNAME "ლარი"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "ქართული (საქართველო)"
  LOCALE_SNATIVELANGNAME "ქართული"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "KAT "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Geor;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Traditional"
  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"
}
