/*
 * 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_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"
}
