/*
 * 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_SSHORTESTDAYNAME1 "L"
  LOCALE_SSHORTESTDAYNAME2 "Ma"
  LOCALE_SSHORTESTDAYNAME3 "Mi"
  LOCALE_SSHORTESTDAYNAME4 "J"
  LOCALE_SSHORTESTDAYNAME5 "V"
  LOCALE_SSHORTESTDAYNAME6 "S"
  LOCALE_SSHORTESTDAYNAME7 "D"
  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 "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"
}
