/*
 * 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 "€"
  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 "Euro"
  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 "Euras"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "lietuvių (Lietuva)"
  LOCALE_SNATIVELANGNAME "lietuvių"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "LTH "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "yyyy.MM.dd"
  LOCALE_SSHORTESTDAYNAME1 "P"
  LOCALE_SSHORTESTDAYNAME2 "A"
  LOCALE_SSHORTESTDAYNAME3 "T"
  LOCALE_SSHORTESTDAYNAME4 "K"
  LOCALE_SSHORTESTDAYNAME5 "Pn"
  LOCALE_SSHORTESTDAYNAME6 "Š"
  LOCALE_SSHORTESTDAYNAME7 "S"
  LOCALE_SSHORTTIME "HH:mm"
  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ų"
}
