/*
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#pragma code_page(0) /* Unicode only */

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 L"1"
  LOCALE_ICENTURY L"1"
  LOCALE_ICOUNTRY L"995"
  LOCALE_ICURRDIGITS L"2"
  LOCALE_ICURRENCY L"3"
  LOCALE_IDATE L"1"
  LOCALE_IDAYLZERO L"1"
  LOCALE_IDEFAULTANSICODEPAGE L"0"
  LOCALE_IDEFAULTCODEPAGE L"1"
  LOCALE_IDEFAULTCOUNTRY L"995"
  LOCALE_IDEFAULTEBCDICCODEPAGE L"500"
  LOCALE_IDEFAULTLANGUAGE L"0437"
  LOCALE_IDEFAULTMACCODEPAGE L"2"
  LOCALE_IDEFAULTUNIXCODEPAGE L"65001"
  LOCALE_IDIGITS L"2"
  LOCALE_IDIGITSUBSTITUTION L"1"
  LOCALE_IFIRSTDAYOFWEEK L"0"
  LOCALE_IFIRSTWEEKOFYEAR L"0"
  LOCALE_IINTLCURRDIGITS L"2"
  LOCALE_ILANGUAGE L"0437"
  LOCALE_ILDATE L"1"
  LOCALE_ILZERO L"1"
  LOCALE_IMEASURE L"0"
  LOCALE_IMONLZERO L"1"
  LOCALE_INEGCURR L"8"
  LOCALE_INEGNUMBER L"1"
  LOCALE_INEGSEPBYSPACE L"1"
  LOCALE_INEGSIGNPOSN L"1"
  LOCALE_INEGSYMPRECEDES L"0"
  LOCALE_IOPTIONALCALENDAR L"0"
  LOCALE_IPAPERSIZE L"9"
  LOCALE_IPOSSEPBYSPACE L"1"
  LOCALE_IPOSSIGNPOSN L"1"
  LOCALE_IPOSSYMPRECEDES L"0"
  LOCALE_ITIME L"1"
  LOCALE_ITIMEMARKPOSN L"0"
  LOCALE_ITLZERO L"0"
  LOCALE_S1159 L""
  LOCALE_S2359 L""
  LOCALE_SABBREVCTRYNAME L"GEO"
  LOCALE_SABBREVDAYNAME1 L"\x10dd\x10e0\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SABBREVDAYNAME2 L"\x10e1\x10d0\x10db\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SABBREVDAYNAME3 L"\x10dd\x10d7\x10ee\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SABBREVDAYNAME4 L"\x10ee\x10e3\x10d7\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SABBREVDAYNAME5 L"\x10de\x10d0\x10e0\x10d0\x10e1\x10d9\x10d4\x10d5\x10d8"
  LOCALE_SABBREVDAYNAME6 L"\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SABBREVDAYNAME7 L"\x10d9\x10d5\x10d8\x10e0\x10d0"
  LOCALE_SABBREVLANGNAME L"KAT"
  LOCALE_SABBREVMONTHNAME1 L"\x10d8\x10d0\x10dc"
  LOCALE_SABBREVMONTHNAME2 L"\x10d7\x10d4\x10d1"
  LOCALE_SABBREVMONTHNAME3 L"\x10db\x10d0\x10e0"
  LOCALE_SABBREVMONTHNAME4 L"\x10d0\x10de\x10e0"
  LOCALE_SABBREVMONTHNAME5 L"\x10db\x10d0\x10d8\x10e1"
  LOCALE_SABBREVMONTHNAME6 L"\x10d8\x10d5\x10dc"
  LOCALE_SABBREVMONTHNAME7 L"\x10d8\x10d5\x10da"
  LOCALE_SABBREVMONTHNAME8 L"\x10d0\x10d2\x10d5"
  LOCALE_SABBREVMONTHNAME9 L"\x10e1\x10d4\x10e5"
  LOCALE_SABBREVMONTHNAME10 L"\x10dd\x10e5\x10e2"
  LOCALE_SABBREVMONTHNAME11 L"\x10dc\x10dd\x10d4\x10db"
  LOCALE_SABBREVMONTHNAME12 L"\x10d3\x10d4\x10d9"
  LOCALE_SABBREVMONTHNAME13 L""
  LOCALE_SCOUNTRY L"Georgia"
  LOCALE_SCURRENCY L"Lari"
  LOCALE_SDATE L"."
  LOCALE_SDAYNAME1 L"\x10dd\x10e0\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SDAYNAME2 L"\x10e1\x10d0\x10db\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SDAYNAME3 L"\x10dd\x10d7\x10ee\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SDAYNAME4 L"\x10ee\x10e3\x10d7\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SDAYNAME5 L"\x10de\x10d0\x10e0\x10d0\x10e1\x10d9\x10d4\x10d5\x10d8"
  LOCALE_SDAYNAME6 L"\x10e8\x10d0\x10d1\x10d0\x10d7\x10d8"
  LOCALE_SDAYNAME7 L"\x10d9\x10d5\x10d8\x10e0\x10d0"
  LOCALE_SDECIMAL L","
  LOCALE_SENGCOUNTRY L"Georgia"
  LOCALE_SENGCURRNAME L"Lari"
  LOCALE_SENGLANGUAGE L"Georgian"
  LOCALE_SGROUPING L"3;0"
  LOCALE_SINTLSYMBOL L"GEL"
  LOCALE_SISO3166CTRYNAME L"GE"
  LOCALE_SISO639LANGNAME L"ka"
  LOCALE_SLANGUAGE L"Georgian"
  LOCALE_SLIST L";"
  LOCALE_SLONGDATE L"yyyy '\x10ec\x10da\x10d8\x10e1' dd MM, dddd"
  LOCALE_SMONDECIMALSEP L","
  LOCALE_SMONGROUPING L"3;0"
  LOCALE_SMONTHNAME1 L"\x10d8\x10d0\x10dc\x10d5\x10d0\x10e0\x10d8"
  LOCALE_SMONTHNAME2 L"\x10d7\x10d4\x10d1\x10d4\x10e0\x10d5\x10d0\x10da\x10d8"
  LOCALE_SMONTHNAME3 L"\x10db\x10d0\x10e0\x10e2\x10d8"
  LOCALE_SMONTHNAME4 L"\x10d0\x10de\x10e0\x10d8\x10da\x10d8"
  LOCALE_SMONTHNAME5 L"\x10db\x10d0\x10d8\x10e1\x10d8"
  LOCALE_SMONTHNAME6 L"\x10d8\x10d5\x10dc\x10d8\x10e1\x10d8"
  LOCALE_SMONTHNAME7 L"\x10d8\x10d5\x10da\x10d8\x10e1\x10d8"
  LOCALE_SMONTHNAME8 L"\x10d0\x10d2\x10d5\x10d8\x10e1\x10e2\x10dd"
  LOCALE_SMONTHNAME9 L"\x10e1\x10d4\x10e5\x10e2\x10d4\x10db\x10d1\x10d4\x10e0\x10d8"
  LOCALE_SMONTHNAME10 L"\x10dd\x10e5\x10e2\x10dd\x10db\x10d1\x10d4\x10e0\x10d8"
  LOCALE_SMONTHNAME11 L"\x10dc\x10dd\x10d4\x10db\x10d1\x10d4\x10e0\x10d8"
  LOCALE_SMONTHNAME12 L"\x10d3\x10d4\x10d9\x10d4\x10db\x10d1\x10d4\x10e0\x10d8"
  LOCALE_SMONTHNAME13 L""
  LOCALE_SMONTHOUSANDSEP L"\x00a0"
  LOCALE_SNATIVECTRYNAME L"\x10e1\x10d0\x10e5\x10d0\x10e0\x10d7\x10d5\x10d4\x10da\x10dd"
  LOCALE_SNATIVECURRNAME L"\x10da\x10d0\x10e0\x10d8"
  LOCALE_SNATIVEDIGITS L"0123456789"
  LOCALE_SNATIVELANGNAME L"\x10e5\x10d0\x10e0\x10d7\x10e3\x10da\x10d8"
  LOCALE_SNEGATIVESIGN L"-"
  LOCALE_SPOSITIVESIGN L""
  LOCALE_SSHORTDATE L"dd.MM.yyyy"
  LOCALE_SSORTNAME L"Traditional"
  LOCALE_STHOUSAND L"\x00a0"
  LOCALE_STIME L":"
  LOCALE_STIMEFORMAT L"H:mm:ss"
  LOCALE_SYEARMONTH L"MMMM yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE L"Western Europe and United States"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE L"Central Europe"
  LGRPID_BALTIC+LGRPID_RES_BASE L"Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE L"Greek"
  LGRPID_CYRILLIC+LGRPID_RES_BASE L"Cyrillic"
  LGRPID_TURKISH+LGRPID_RES_BASE L"Turkic"
  LGRPID_JAPANESE+LGRPID_RES_BASE L"Japanese"
  LGRPID_KOREAN+LGRPID_RES_BASE L"Korean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE L"Traditional Chinese"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE L"Simplified Chinese"
  LGRPID_THAI+LGRPID_RES_BASE L"Thai"
  LGRPID_HEBREW+LGRPID_RES_BASE L"Hebrew"
  LGRPID_ARABIC+LGRPID_RES_BASE L"Arabic" 
  LGRPID_VIETNAMESE+LGRPID_RES_BASE L"Vietnamese"
  LGRPID_INDIC+LGRPID_RES_BASE L"Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE L"Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE L"Armenian"
}
