/*
 * Locale definitions for Ukrainian
 *
 * 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_UKRAINIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0203\x8000\x3848\x0000\x0000\x0000\x0000\x0000\x0004\x0000\x0000\x0002\x0004\x0000\x0000\x0202"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "380"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1251"
  LOCALE_IDEFAULTCODEPAGE "866"
  LOCALE_IDEFAULTCOUNTRY "380"
  LOCALE_IDEFAULTEBCDICCODEPAGE "500"
  LOCALE_IDEFAULTLANGUAGE "0422"
  LOCALE_IDEFAULTMACCODEPAGE "10017"
  LOCALE_IDEFAULTUNIXCODEPAGE "21866"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0422"
  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 "0"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "UKR"
  LOCALE_SABBREVDAYNAME1 "Пн"
  LOCALE_SABBREVDAYNAME2 "Вт"
  LOCALE_SABBREVDAYNAME3 "Ср"
  LOCALE_SABBREVDAYNAME4 "Чт"
  LOCALE_SABBREVDAYNAME5 "Пт"
  LOCALE_SABBREVDAYNAME6 "Сб"
  LOCALE_SABBREVDAYNAME7 "Нд"
  LOCALE_SABBREVLANGNAME "UKR"
  LOCALE_SABBREVMONTHNAME1 "Січ"
  LOCALE_SABBREVMONTHNAME2 "Лют"
  LOCALE_SABBREVMONTHNAME3 "Бер"
  LOCALE_SABBREVMONTHNAME4 "Кві"
  LOCALE_SABBREVMONTHNAME5 "Тра"
  LOCALE_SABBREVMONTHNAME6 "Чер"
  LOCALE_SABBREVMONTHNAME7 "Лип"
  LOCALE_SABBREVMONTHNAME8 "Сер"
  LOCALE_SABBREVMONTHNAME9 "Вер"
  LOCALE_SABBREVMONTHNAME10 "Жов"
  LOCALE_SABBREVMONTHNAME11 "Лис"
  LOCALE_SABBREVMONTHNAME12 "Гру"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Ukraine"
  LOCALE_SCURRENCY "грн."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "понеділок"
  LOCALE_SDAYNAME2 "вівторок"
  LOCALE_SDAYNAME3 "середа"
  LOCALE_SDAYNAME4 "четвер"
  LOCALE_SDAYNAME5 "п'ятниця"
  LOCALE_SDAYNAME6 "субота"
  LOCALE_SDAYNAME7 "неділя"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Ukraine"
  LOCALE_SENGCURRNAME "Ukrainian Hryvnia"
  LOCALE_SENGLANGUAGE "Ukrainian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "UAH"
  LOCALE_SISO3166CTRYNAME "UA"
  LOCALE_SISO639LANGNAME "uk"
  LOCALE_SLANGUAGE "Ukrainian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy' р.'"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Січень\0січня"
  LOCALE_SMONTHNAME2 "Лютий\0лютого"
  LOCALE_SMONTHNAME3 "Березень\0березня"
  LOCALE_SMONTHNAME4 "Квітень\0квітня"
  LOCALE_SMONTHNAME5 "Травень\0травня"
  LOCALE_SMONTHNAME6 "Червень\0червня"
  LOCALE_SMONTHNAME7 "Липень\0липня"
  LOCALE_SMONTHNAME8 "Серпень\0серпня"
  LOCALE_SMONTHNAME9 "Вересень\0вересня"
  LOCALE_SMONTHNAME10 "Жовтень\0жовтня"
  LOCALE_SMONTHNAME11 "Листопад\0листопада"
  LOCALE_SMONTHNAME12 "Грудень\0грудня"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP " "
  LOCALE_SNAME "uk-UA"
  LOCALE_SNATIVECTRYNAME "Україна"
  LOCALE_SNATIVECURRNAME "гривня"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "українська (Україна)"
  LOCALE_SNATIVELANGNAME "українська"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "UKR "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Cyrl;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "Пн"
  LOCALE_SSHORTESTDAYNAME2 "Вт"
  LOCALE_SSHORTESTDAYNAME3 "Ср"
  LOCALE_SSHORTESTDAYNAME4 "Чт"
  LOCALE_SSHORTESTDAYNAME5 "Пт"
  LOCALE_SSHORTESTDAYNAME6 "Сб"
  LOCALE_SSHORTESTDAYNAME7 "Нд"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND " "
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  LOCALE_SYEARMONTH "MMMM yyyy' р.'"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Західна Європа і Сполучені Штати"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Центральна Європа"
  LGRPID_BALTIC+LGRPID_RES_BASE "Балтійська"
  LGRPID_GREEK+LGRPID_RES_BASE "Грецька"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Кирилиця"
  LGRPID_TURKISH+LGRPID_RES_BASE "Тюркська"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Японська"
  LGRPID_KOREAN+LGRPID_RES_BASE "Корейська"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Китайська традиційна"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Китайська спрощена"
  LGRPID_THAI+LGRPID_RES_BASE "Тайська"
  LGRPID_HEBREW+LGRPID_RES_BASE "Іврит"
  LGRPID_ARABIC+LGRPID_RES_BASE "Арабська"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "В'єтнамська"
  LGRPID_INDIC+LGRPID_RES_BASE "Індійська"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Грузинська"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Вірменська"
}
