/*
 * 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_SNATIVELANGNAME "ქართული"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Geor;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  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"
}
