/*
 * Locale definitions for Romansh (Switzerland)
 *
 * Copyright 2002 Alexandre Julliard for CodeWeavers
 * Copyright 2008 Michael Stefaniuc
 *
 * 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
 */

/*
- Windows Vista (at least the NLS information about it on www.microsoft.com)
  has the wrong short date format dd/MM/yyyy e.g. 01/08/1996 instead of the
  correct d-M-yyyy e.g 1-8-1996. This file uses the right short date format as
  seen on http://www.liarumantscha.ch/ and in the glibc-morelocales.patch for
  glibc-2.6.
- As decimal separator this file uses the "," like http://www.liarumantscha.ch/
  does and not the "." used by Windows Vista and the Swiss German language.
*/

#pragma code_page(65001) /* UTF-8 */

STRINGTABLE LANGUAGE LANG_ROMANSH, SUBLANG_ROMANSH_SWITZERLAND
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0093\x0000\x0000\xcdd4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "41"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "0"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "41"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20273"
  LOCALE_IDEFAULTLANGUAGE "0417"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0417"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "0"
  LOCALE_INEGCURR "2"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "4"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "0"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "1"
  LOCALE_IPOSSIGNPOSN "4"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "0"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "1"
  LOCALE_S1159 ""
  LOCALE_S2359 ""
  LOCALE_SABBREVCTRYNAME "CHE"
  LOCALE_SABBREVDAYNAME1 "gli"
  LOCALE_SABBREVDAYNAME2 "ma"
  LOCALE_SABBREVDAYNAME3 "me"
  LOCALE_SABBREVDAYNAME4 "gie"
  LOCALE_SABBREVDAYNAME5 "ve"
  LOCALE_SABBREVDAYNAME6 "so"
  LOCALE_SABBREVDAYNAME7 "du"
  LOCALE_SABBREVLANGNAME "RMC"
  LOCALE_SABBREVMONTHNAME1 "schan"
  LOCALE_SABBREVMONTHNAME2 "favr"
  LOCALE_SABBREVMONTHNAME3 "mars"
  LOCALE_SABBREVMONTHNAME4 "avr"
  LOCALE_SABBREVMONTHNAME5 "matg"
  LOCALE_SABBREVMONTHNAME6 "zercl"
  LOCALE_SABBREVMONTHNAME7 "fan"
  LOCALE_SABBREVMONTHNAME8 "avust"
  LOCALE_SABBREVMONTHNAME9 "sett"
  LOCALE_SABBREVMONTHNAME10 "oct"
  LOCALE_SABBREVMONTHNAME11 "nov"
  LOCALE_SABBREVMONTHNAME12 "dec"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Switzerland"
  LOCALE_SCURRENCY "fr."
  LOCALE_SDATE "-"
  LOCALE_SDAYNAME1 "glindesdi"
  LOCALE_SDAYNAME2 "mardi"
  LOCALE_SDAYNAME3 "mesemna"
  LOCALE_SDAYNAME4 "gievgia"
  LOCALE_SDAYNAME5 "venderdi"
  LOCALE_SDAYNAME6 "sonda"
  LOCALE_SDAYNAME7 "dumengia"
  LOCALE_SDECIMAL ","
  LOCALE_SENGCOUNTRY "Switzerland"
  LOCALE_SENGCURRNAME "Swiss Franc"
  LOCALE_SENGLANGUAGE "Romansh"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "CHF"
  LOCALE_SISO3166CTRYNAME "CH"
  LOCALE_SISO639LANGNAME "rm"
  LOCALE_SLANGUAGE "Romansh (Switzerland)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, d MMMM yyyy"
  LOCALE_SMONDECIMALSEP ","
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "schaner"
  LOCALE_SMONTHNAME2 "favrer"
  LOCALE_SMONTHNAME3 "mars"
  LOCALE_SMONTHNAME4 "avrigl"
  LOCALE_SMONTHNAME5 "matg"
  LOCALE_SMONTHNAME6 "zercladur"
  LOCALE_SMONTHNAME7 "fanadur"
  LOCALE_SMONTHNAME8 "avust"
  LOCALE_SMONTHNAME9 "settember"
  LOCALE_SMONTHNAME10 "october"
  LOCALE_SMONTHNAME11 "november"
  LOCALE_SMONTHNAME12 "december"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "'"
  LOCALE_SNAME "rm-CH"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Svizra"
  LOCALE_SNATIVECURRNAME "Franc svizzer"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "Rumantsch (Svizra)"
  LOCALE_SNATIVELANGNAME "Rumantsch"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "RMS "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd-MM-yyyy"
  LOCALE_SSHORTESTDAYNAME1 "gli"
  LOCALE_SSHORTESTDAYNAME2 "ma"
  LOCALE_SSHORTESTDAYNAME3 "me"
  LOCALE_SSHORTESTDAYNAME4 "gie"
  LOCALE_SSHORTESTDAYNAME5 "ve"
  LOCALE_SSHORTESTDAYNAME6 "so"
  LOCALE_SSHORTESTDAYNAME7 "du"
  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 "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"
}
