/*
 * 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_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "1"
  LOCALE_IPOSSYMPRECEDES "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_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ų"
}
