/*
 * Locale definitions for French (Switzerland)
 *
 * 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_FRENCH, SUBLANG_FRENCH_SWISS
{
  LOCALE_FONTSIGNATURE L"\x002f\x8000\x3808\x0000\x0000\x0000\x0000\x0000\x0001\x0000\x0000\x4000\x0013\x0000\x0000\xc5d4"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "41"
  LOCALE_ICURRDIGITS "2"
  LOCALE_ICURRENCY "2"
  LOCALE_IDATE "1"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "1252"
  LOCALE_IDEFAULTCODEPAGE "850"
  LOCALE_IDEFAULTCOUNTRY "41"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20297"
  LOCALE_IDEFAULTLANGUAGE "100c"
  LOCALE_IDEFAULTMACCODEPAGE "10000"
  LOCALE_IDEFAULTUNIXCODEPAGE "28605"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "0"
  LOCALE_IFIRSTWEEKOFYEAR "2"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "100c"
  LOCALE_ILDATE "1"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  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 "lun."
  LOCALE_SABBREVDAYNAME2 "mar."
  LOCALE_SABBREVDAYNAME3 "mer."
  LOCALE_SABBREVDAYNAME4 "jeu."
  LOCALE_SABBREVDAYNAME5 "ven."
  LOCALE_SABBREVDAYNAME6 "sam."
  LOCALE_SABBREVDAYNAME7 "dim."
  LOCALE_SABBREVLANGNAME "FRS"
  LOCALE_SABBREVMONTHNAME1 "janv."
  LOCALE_SABBREVMONTHNAME2 "févr."
  LOCALE_SABBREVMONTHNAME3 "mars"
  LOCALE_SABBREVMONTHNAME4 "avr."
  LOCALE_SABBREVMONTHNAME5 "mai"
  LOCALE_SABBREVMONTHNAME6 "juin"
  LOCALE_SABBREVMONTHNAME7 "juil."
  LOCALE_SABBREVMONTHNAME8 "août"
  LOCALE_SABBREVMONTHNAME9 "sept."
  LOCALE_SABBREVMONTHNAME10 "oct."
  LOCALE_SABBREVMONTHNAME11 "nov."
  LOCALE_SABBREVMONTHNAME12 "déc."
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Switzerland"
  LOCALE_SCURRENCY "SFr."
  LOCALE_SDATE "."
  LOCALE_SDAYNAME1 "lundi"
  LOCALE_SDAYNAME2 "mardi"
  LOCALE_SDAYNAME3 "mercredi"
  LOCALE_SDAYNAME4 "jeudi"
  LOCALE_SDAYNAME5 "vendredi"
  LOCALE_SDAYNAME6 "samedi"
  LOCALE_SDAYNAME7 "dimanche"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Switzerland"
  LOCALE_SENGCURRNAME "Swiss Franc"
  LOCALE_SENGLANGUAGE "French"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "CHF"
  LOCALE_SISO3166CTRYNAME "CH"
  LOCALE_SISO639LANGNAME "fr"
  LOCALE_SLANGUAGE "French (Switzerland)"
  LOCALE_SLIST ";"
  LOCALE_SLONGDATE "dddd, d. MMMM yyyy"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "janvier"
  LOCALE_SMONTHNAME2 "février"
  LOCALE_SMONTHNAME3 "mars"
  LOCALE_SMONTHNAME4 "avril"
  LOCALE_SMONTHNAME5 "mai"
  LOCALE_SMONTHNAME6 "juin"
  LOCALE_SMONTHNAME7 "juillet"
  LOCALE_SMONTHNAME8 "août"
  LOCALE_SMONTHNAME9 "septembre"
  LOCALE_SMONTHNAME10 "octobre"
  LOCALE_SMONTHNAME11 "novembre"
  LOCALE_SMONTHNAME12 "décembre"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP "'"
  LOCALE_SNAME "fr-CH"
  LOCALE_SNAN "NaN"
  LOCALE_SNATIVECTRYNAME "Suisse"
  LOCALE_SNATIVECURRNAME "Franc suisse"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "français (Suisse)"
  LOCALE_SNATIVELANGNAME "français"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "FRA "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Latn;"
  LOCALE_SSHORTDATE "dd.MM.yyyy"
  LOCALE_SSHORTESTDAYNAME1 "lu"
  LOCALE_SSHORTESTDAYNAME2 "ma"
  LOCALE_SSHORTESTDAYNAME3 "me"
  LOCALE_SSHORTESTDAYNAME4 "je"
  LOCALE_SSHORTESTDAYNAME5 "ve"
  LOCALE_SSHORTESTDAYNAME6 "sa"
  LOCALE_SSHORTESTDAYNAME7 "di"
  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 "Europe occidentale et États-Unis d'Amérique"
  LGRPID_CENTRAL_EUROPE+LGRPID_RES_BASE "Europe centrale"
  LGRPID_BALTIC+LGRPID_RES_BASE "Baltique"
  LGRPID_GREEK+LGRPID_RES_BASE "Grec"
  LGRPID_CYRILLIC+LGRPID_RES_BASE "Cyrillique"
  LGRPID_TURKISH+LGRPID_RES_BASE "Turc"
  LGRPID_JAPANESE+LGRPID_RES_BASE "Japonais"
  LGRPID_KOREAN+LGRPID_RES_BASE "Coréen"
  LGRPID_TRADITIONAL_CHINESE+LGRPID_RES_BASE "Chinois traditionnel"
  LGRPID_SIMPLIFIED_CHINESE+LGRPID_RES_BASE "Chinois simplifié"
  LGRPID_THAI+LGRPID_RES_BASE "Thaï"
  LGRPID_HEBREW+LGRPID_RES_BASE "Hébreu"
  LGRPID_ARABIC+LGRPID_RES_BASE "Arabe"
  LGRPID_VIETNAMESE+LGRPID_RES_BASE "Vietnamien"
  LGRPID_INDIC+LGRPID_RES_BASE "Indien"
  LGRPID_GEORGIAN+LGRPID_RES_BASE "Géorgien"
  LGRPID_ARMENIAN+LGRPID_RES_BASE "Arménien"
}
