/*
 * Locale definitions for Lithuanian
 *
 * 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)

STRINGTABLE LANGUAGE LANG_LITHUANIAN, SUBLANG_LITHUANIAN
{
  LOCALE_FONTSIGNATURE L"\x0007\x8000\x3848\x1000\x0000\x0000\x0000\x0000\x0080\x0000\x0000\x0800\x0092\x0000\x0000\xcdd4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "370"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1257"
  LOCALE_IDEFAULTCODEPAGE "775"
  LOCALE_IDEFAULTCOUNTRY "370"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0427"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28603"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0427"
  LOCALE_ILDATE "2"
  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 "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "LTU"
  LOCALE_SABBREVDAYNAME1 "Pr"
  LOCALE_SABBREVDAYNAME2 "An"
  LOCALE_SABBREVDAYNAME3 "Tr"
  LOCALE_SABBREVDAYNAME4 "Kt"
  LOCALE_SABBREVDAYNAME5 "Pn"
  LOCALE_SABBREVDAYNAME6 "Št"
  LOCALE_SABBREVDAYNAME7 "Sk"
  LOCALE_SABBREVLANGNAME "LTH"
  LOCALE_SABBREVMONTHNAME1 "Sau"
  LOCALE_SABBREVMONTHNAME2 "Vas"
  LOCALE_SABBREVMONTHNAME3 "Kov"
  LOCALE_SABBREVMONTHNAME4 "Bal"
  LOCALE_SABBREVMONTHNAME5 "Geg"
  LOCALE_SABBREVMONTHNAME6 "Bir"
  LOCALE_SABBREVMONTHNAME7 "Lie"
  LOCALE_SABBREVMONTHNAME8 "Rgp"
  LOCALE_SABBREVMONTHNAME9 "Rgs"
  LOCALE_SABBREVMONTHNAME10 "Spl"
  LOCALE_SABBREVMONTHNAME11 "Lap"
  LOCALE_SABBREVMONTHNAME12 "Grd"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Lithuania"
  LOCALE_SCURRENCY "Lt"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "pirmadienis"
  LOCALE_SDAYNAME2 "antradienis"
  LOCALE_SDAYNAME3 "trečiadienis"
  LOCALE_SDAYNAME4 "ketvirtadienis"
  LOCALE_SDAYNAME5 "penktadienis"
  LOCALE_SDAYNAME6 "šeštadienis"
  LOCALE_SDAYNAME7 "sekmadienis"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Lithuania"
  LOCALE_SENGCURRNAME "Lithuanian Litas"
  LOCALE_SENGLANGUAGE "Lithuanian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "LTL"
  LOCALE_SISO3166CTRYNAME "LT"
  LOCALE_SISO639LANGNAME "lt"
  LOCALE_SLANGUAGE "Lithuanian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "yyyy 'm.' MMMM d 'd.'"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "sausis\0sausio"
  LOCALE_SMONTHNAME2 "vasaris\0vasario"
  LOCALE_SMONTHNAME3 "kovas\0kovo"
  LOCALE_SMONTHNAME4 "balandis\0balandžio"
  LOCALE_SMONTHNAME5 "gegužė\0gegužės"
  LOCALE_SMONTHNAME6 "birželis\0birželio"
  LOCALE_SMONTHNAME7 "liepa\0liepos"
  LOCALE_SMONTHNAME8 "rugpjūtis\0rugpjūčio"
  LOCALE_SMONTHNAME9 "rugsėjis\0rugsėjo"
  LOCALE_SMONTHNAME10 "spalis\0spalio"
  LOCALE_SMONTHNAME11 "lapkritis\0lapkričio"
  LOCALE_SMONTHNAME12 "gruodis\0gruodžio"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "lt-LT"
  LOCALE_SNATIVECTRYNAME "Lietuva"
  LOCALE_SNATIVECURRNAME "Litas"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "lietuvių (Lietuva)"
  LOCALE_SNATIVELANGNAME "lietuvių"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "yyyy.MM.dd"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  LOCALE_SYEARMONTH "yyyy 'm.' MMMM"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Vakarų Europos ir JAV"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Centrinės Europos"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltų"
  LGRPID_GREEK+LGRPID_RES_BASE "Graikų"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Kirilica"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turkų"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japonų"
  LGRPID_KOREAN+LGRPID_RES_BASE "Korėjiečių"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Kinų tradicinė"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Kinų supaprastinta"
  LGRPID_THAI+LGRPID_RES_BASE "Tajų"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hebrajų"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabų"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamiečių"
  LGRPID_INDIC+LGRPID_RES_BASE "Indų"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Gruzinų"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armėnų"
}
