/*
 * Locale definitions for Greek
 *
 * 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_GREEK, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x008b\x8000\x3849\x1000\x0000\x0000\x0000\x0000\x0008\x0000\x0000\x1000\x0008\x0000\x0000\x1001"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "30"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1253"
  LOCALE_IDEFAULTCODEPAGE "737"
  LOCALE_IDEFAULTCOUNTRY "30"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20273"
  LOCALE_IDEFAULTLANGUAGE "0408"
  LOCALE_IDEFAULTMACCODEPAGE "10006"
  LOCALE_IDEFAULTUNIXCODEPAGE "28597"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0408"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  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 "0"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "πμ"
  LOCALE_S2359 "μμ"
  LOCALE_SABBREVCTRYNAME "GRC"
  LOCALE_SABBREVDAYNAME1 "Δευ"
  LOCALE_SABBREVDAYNAME2 "Τρι"
  LOCALE_SABBREVDAYNAME3 "Τετ"
  LOCALE_SABBREVDAYNAME4 "Πεμ"
  LOCALE_SABBREVDAYNAME5 "Παρ"
  LOCALE_SABBREVDAYNAME6 "Σαβ"
  LOCALE_SABBREVDAYNAME7 "Κυρ"
  LOCALE_SABBREVLANGNAME "ELL"
  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 "Greece"
  LOCALE_SCURRENCY "€"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "Δευτέρα"
  LOCALE_SDAYNAME2 "Τρίτη"
  LOCALE_SDAYNAME3 "Τετάρτη"
  LOCALE_SDAYNAME4 "Πέμπτη"
  LOCALE_SDAYNAME5 "Παρασκευή"
  LOCALE_SDAYNAME6 "Σάββατο"
  LOCALE_SDAYNAME7 "Κυριακή"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Greece"
  LOCALE_SENGCURRNAME "Euro"
  LOCALE_SENGLANGUAGE "Greek"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "EUR"
  LOCALE_SISO3166CTRYNAME "GR"
  LOCALE_SISO639LANGNAME "el"
  LOCALE_SLANGUAGE "Greek"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "Ιανουάριος"
  LOCALE_SMONTHNAME2 "Φεβρουάριος"
  LOCALE_SMONTHNAME3 "Μάρτιος"
  LOCALE_SMONTHNAME4 "Απρίλιος"
  LOCALE_SMONTHNAME5 "Μάιος"
  LOCALE_SMONTHNAME6 "Ιούνιος"
  LOCALE_SMONTHNAME7 "Ιούλιος"
  LOCALE_SMONTHNAME8 "Αύγουστος"
  LOCALE_SMONTHNAME9 "Σεπτέμβριος"
  LOCALE_SMONTHNAME10 "Οκτώβριος"
  LOCALE_SMONTHNAME11 "Νοέμβριος"
  LOCALE_SMONTHNAME12 "Δεκέμβριος"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "el-GR"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Ελλάδα"
  LOCALE_SNATIVECURRNAME "ευρώ"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "ελληνικά (Ελλάδα)"
  LOCALE_SNATIVELANGNAME "ελληνικά"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ELL "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Grek;"
  LOCALE_SSHORTDATE "d/M/yyyy"
  LOCALE_SSHORTESTDAYNAME1 "Δε"
  LOCALE_SSHORTESTDAYNAME2 "Τρ"
  LOCALE_SSHORTESTDAYNAME3 "Τε"
  LOCALE_SSHORTESTDAYNAME4 "Πε"
  LOCALE_SSHORTESTDAYNAME5 "Πα"
  LOCALE_SSHORTESTDAYNAME6 "Σα"
  LOCALE_SSHORTESTDAYNAME7 "Κυ"
  LOCALE_SSHORTTIME "h:mm tt"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "h:mm:ss tt"
  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"
}
