/*
 * Locale definitions for Romanian
 *
 * 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_ROMANIAN, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0027\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0400\x0012\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "40"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "3"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1250"
  LOCALE_IDEFAULTCODEPAGE "852"
  LOCALE_IDEFAULTCOUNTRY "40"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20880"
  LOCALE_IDEFAULTLANGUAGE "0418"
  LOCALE_IDEFAULTMACCODEPAGE "10029"
  LOCALE_IDEFAULTUNIXCODEPAGE "28592"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0418"
  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_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 "ROM"
  LOCALE_SABBREVDAYNAME1 "L"
  LOCALE_SABBREVDAYNAME2 "Ma"
  LOCALE_SABBREVDAYNAME3 "Mi"
  LOCALE_SABBREVDAYNAME4 "J"
  LOCALE_SABBREVDAYNAME5 "V"
  LOCALE_SABBREVDAYNAME6 "S"
  LOCALE_SABBREVDAYNAME7 "D"
  LOCALE_SABBREVLANGNAME "ROM"
  LOCALE_SABBREVMONTHNAME1 "ian."
  LOCALE_SABBREVMONTHNAME2 "feb."
  LOCALE_SABBREVMONTHNAME3 "mar."
  LOCALE_SABBREVMONTHNAME4 "apr."
  LOCALE_SABBREVMONTHNAME5 "mai."
  LOCALE_SABBREVMONTHNAME6 "iun."
  LOCALE_SABBREVMONTHNAME7 "iul."
  LOCALE_SABBREVMONTHNAME8 "aug."
  LOCALE_SABBREVMONTHNAME9 "sep."
  LOCALE_SABBREVMONTHNAME10 "oct."
  LOCALE_SABBREVMONTHNAME11 "nov."
  LOCALE_SABBREVMONTHNAME12 "dec."
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Romania"
  LOCALE_SCURRENCY "lei"
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "luni"
  LOCALE_SDAYNAME2 "marți"
  LOCALE_SDAYNAME3 "miercuri"
  LOCALE_SDAYNAME4 "joi"
  LOCALE_SDAYNAME5 "vineri"
  LOCALE_SDAYNAME6 "sâmbătă"
  LOCALE_SDAYNAME7 "duminică"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Romania"
  LOCALE_SENGCURRNAME "Romanian Leu"
  LOCALE_SENGLANGUAGE "Romanian"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "ROL"
  LOCALE_SISO3166CTRYNAME "RO"
  LOCALE_SISO639LANGNAME "ro"
  LOCALE_SLANGUAGE "Romanian"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "ianuarie"
  LOCALE_SMONTHNAME2 "februarie"
  LOCALE_SMONTHNAME3 "martie"
  LOCALE_SMONTHNAME4 "aprilie"
  LOCALE_SMONTHNAME5 "mai"
  LOCALE_SMONTHNAME6 "iunie"
  LOCALE_SMONTHNAME7 "iulie"
  LOCALE_SMONTHNAME8 "august"
  LOCALE_SMONTHNAME9 "septembrie"
  LOCALE_SMONTHNAME10 "octombrie"
  LOCALE_SMONTHNAME11 "noiembrie"
  LOCALE_SMONTHNAME12 "decembrie"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "."
  LOCALE_SNAME "ro-RO"
  LOCALE_SNATIVECTRYNAME "România"
  LOCALE_SNATIVECURRNAME "Leu"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVELANGNAME "română"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSORTNAME "Default"
  LOCALE_STHOUSAND "."
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "HH:mm:ss"
  LOCALE_SYEARMONTH "MMMM yyyy"

  LGRPID_WESTERN_EUROPE+LGRPID_RES_BASE "Europa de vest și Statele Unite"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Europa centrală"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltic"
  LGRPID_GREEK+LGRPID_RES_BASE "Grec"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Chirilic"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turcic"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japonez"
  LGRPID_KOREAN+LGRPID_RES_BASE "Coreean"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Chinez tradițional"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Chinez simplificat"
  LGRPID_THAI+LGRPID_RES_BASE "Thailandez"
  LGRPID_HEBREW+LGRPID_RES_BASE "Ebraic"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arab"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamez"
  LGRPID_INDIC+LGRPID_RES_BASE "Indic"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Georgian"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Armean"
}
