/*
 * Locale definitions for Uzbek (Latin)
 *
 * 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_UZBEK, SUBLANG_UZBEK_LATIN
{
  LOCALE_FONTSIGNATURE L"\x0027\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0400\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "7"
  LOCALE_ICURRDIGITS "0"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1254"
  LOCALE_IDEFAULTCODEPAGE "857"
  LOCALE_IDEFAULTCOUNTRY "7"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0443"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "0"
  LOCALE_ILANGUAGE "0443"
  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 "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "UZB"
  LOCALE_SABBREVDAYNAME1 "dsh."
  LOCALE_SABBREVDAYNAME2 "sesh."
  LOCALE_SABBREVDAYNAME3 "chr."
  LOCALE_SABBREVDAYNAME4 "psh."
  LOCALE_SABBREVDAYNAME5 "jm."
  LOCALE_SABBREVDAYNAME6 "sh."
  LOCALE_SABBREVDAYNAME7 "yak."
  LOCALE_SABBREVLANGNAME "UZB"
  LOCALE_SABBREVMONTHNAME1 "yanvar"
  LOCALE_SABBREVMONTHNAME2 "fevral"
  LOCALE_SABBREVMONTHNAME3 "mart"
  LOCALE_SABBREVMONTHNAME4 "aprel"
  LOCALE_SABBREVMONTHNAME5 "may"
  LOCALE_SABBREVMONTHNAME6 "iyun"
  LOCALE_SABBREVMONTHNAME7 "iyul"
  LOCALE_SABBREVMONTHNAME8 "avgust"
  LOCALE_SABBREVMONTHNAME9 "sentyabr"
  LOCALE_SABBREVMONTHNAME10 "oktyabr"
  LOCALE_SABBREVMONTHNAME11 "noyabr"
  LOCALE_SABBREVMONTHNAME12 "dekabr"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Uzbekistan"
  LOCALE_SCURRENCY "su'm"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "dushanba"
  LOCALE_SDAYNAME2 "seshanba"
  LOCALE_SDAYNAME3 "chorshanba"
  LOCALE_SDAYNAME4 "payshanba"
  LOCALE_SDAYNAME5 "juma"
  LOCALE_SDAYNAME6 "shanba"
  LOCALE_SDAYNAME7 "yakshanba"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Uzbekistan"
  LOCALE_SENGCURRNAME "Uzbekistan Sum"
  LOCALE_SENGLANGUAGE "Uzbek (Latin)"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "UZS"
  LOCALE_SISO3166CTRYNAME "UZ"
  LOCALE_SISO639LANGNAME "uz"
  LOCALE_SLANGUAGE "Uzbek (Latin)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "yyyy 'yil' d-MMMM"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "yanvar"
  LOCALE_SMONTHNAME2 "fevral"
  LOCALE_SMONTHNAME3 "mart"
  LOCALE_SMONTHNAME4 "aprel"
  LOCALE_SMONTHNAME5 "may"
  LOCALE_SMONTHNAME6 "iyun"
  LOCALE_SMONTHNAME7 "iyul"
  LOCALE_SMONTHNAME8 "avgust"
  LOCALE_SMONTHNAME9 "sentyabr"
  LOCALE_SMONTHNAME10 "oktyabr"
  LOCALE_SMONTHNAME11 "noyabr"
  LOCALE_SMONTHNAME12 "dekabr"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "uz-Latn-UZ"
  LOCALE_SNAN "haqiqiy son emas"
  LOCALE_SNATIVECTRYNAME "U'zbekiston Respublikasi"
  LOCALE_SNATIVECURRNAME L"\x0440\x0443\x0431\x043b\x044c"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "U'zbek (U'zbekiston Respublikasi)"
  LOCALE_SNATIVELANGNAME "U'zbek"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "UZB "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd/MM yyyy"
  LOCALE_SSHORTESTDAYNAME1 "D"
  LOCALE_SSHORTESTDAYNAME2 "S"
  LOCALE_SSHORTESTDAYNAME3 "Ch"
  LOCALE_SSHORTESTDAYNAME4 "P"
  LOCALE_SSHORTESTDAYNAME5 "J"
  LOCALE_SSHORTESTDAYNAME6 "Sh"
  LOCALE_SSHORTESTDAYNAME7 "Ya"
  LOCALE_SSHORTTIME "HH:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND " "
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH: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"
}
