/*
 * 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_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 "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_SNATIVEDISPLAYNAME "română (România)"
  LOCALE_SNATIVELANGNAME "română"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "ROM "
  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"
}
