/*
 * Locale definitions for Japanese
 *
 * 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_JAPANESE, SUBLANG_DEFAULT
{
  LOCALE_FONTSIGNATURE L"\x0283\x8000\x6cf8\x38c7\x0010\x0000\x0000\x0000\x0000\x0002\x0000\x0000\x0000\x0002\x0000\x0000"
  LOCALE_ICALENDARTYPE "1"
  LOCALE_ICENTURY "1"
  LOCALE_ICOUNTRY "81"
  LOCALE_ICURRDIGITS "0"
  LOCALE_ICURRENCY "0"
  LOCALE_IDATE "2"
  LOCALE_IDAYLZERO "1"
  LOCALE_IDEFAULTANSICODEPAGE "932"
  LOCALE_IDEFAULTCODEPAGE "932"
  LOCALE_IDEFAULTCOUNTRY "81"
  LOCALE_IDEFAULTEBCDICCODEPAGE "20290"
  LOCALE_IDEFAULTLANGUAGE "0411"
  LOCALE_IDEFAULTMACCODEPAGE "10001"
  LOCALE_IDEFAULTUNIXCODEPAGE "20932"
  LOCALE_IDIGITS "2"
  LOCALE_IDIGITSUBSTITUTION "1"
  LOCALE_IFIRSTDAYOFWEEK "6"
  LOCALE_IFIRSTWEEKOFYEAR "0"
  LOCALE_IINTLCURRDIGITS "2"
  LOCALE_ILANGUAGE "0411"
  LOCALE_ILDATE "2"
  LOCALE_ILZERO "1"
  LOCALE_IMEASURE "0"
  LOCALE_IMONLZERO "1"
  LOCALE_INEGCURR "1"
  LOCALE_INEGNUMBER "1"
  LOCALE_INEGSEPBYSPACE "0"
  LOCALE_INEGSIGNPOSN "3"
  LOCALE_INEGSYMPRECEDES "1"
  LOCALE_INEUTRAL "0"
  LOCALE_IOPTIONALCALENDAR "3"
  LOCALE_IPAPERSIZE "9"
  LOCALE_IPOSSEPBYSPACE "0"
  LOCALE_IPOSSIGNPOSN "3"
  LOCALE_IPOSSYMPRECEDES "1"
  LOCALE_IREADINGLAYOUT "2"
  LOCALE_ITIME "1"
  LOCALE_ITIMEMARKPOSN "0"
  LOCALE_ITLZERO "0"
  LOCALE_S1159 "午前"
  LOCALE_S2359 "午後"
  LOCALE_SABBREVCTRYNAME "JPN"
  LOCALE_SABBREVDAYNAME1 "月"
  LOCALE_SABBREVDAYNAME2 "火"
  LOCALE_SABBREVDAYNAME3 "水"
  LOCALE_SABBREVDAYNAME4 "木"
  LOCALE_SABBREVDAYNAME5 "金"
  LOCALE_SABBREVDAYNAME6 "土"
  LOCALE_SABBREVDAYNAME7 "日"
  LOCALE_SABBREVLANGNAME "JPN"
  LOCALE_SABBREVMONTHNAME1 "1"
  LOCALE_SABBREVMONTHNAME2 "2"
  LOCALE_SABBREVMONTHNAME3 "3"
  LOCALE_SABBREVMONTHNAME4 "4"
  LOCALE_SABBREVMONTHNAME5 "5"
  LOCALE_SABBREVMONTHNAME6 "6"
  LOCALE_SABBREVMONTHNAME7 "7"
  LOCALE_SABBREVMONTHNAME8 "8"
  LOCALE_SABBREVMONTHNAME9 "9"
  LOCALE_SABBREVMONTHNAME10 "10"
  LOCALE_SABBREVMONTHNAME11 "11"
  LOCALE_SABBREVMONTHNAME12 "12"
  LOCALE_SABBREVMONTHNAME13 ""
  LOCALE_SCOUNTRY "Japan"
  LOCALE_SCURRENCY L"\x00a5"
  LOCALE_SDATE "/"
  LOCALE_SDAYNAME1 "月曜日"
  LOCALE_SDAYNAME2 "火曜日"
  LOCALE_SDAYNAME3 "水曜日"
  LOCALE_SDAYNAME4 "木曜日"
  LOCALE_SDAYNAME5 "金曜日"
  LOCALE_SDAYNAME6 "土曜日"
  LOCALE_SDAYNAME7 "日曜日"
  LOCALE_SDECIMAL "."
  LOCALE_SENGCOUNTRY "Japan"
  LOCALE_SENGCURRNAME "Japanese Yen"
  LOCALE_SENGLANGUAGE "Japanese"
  LOCALE_SGROUPING "3;0"
  LOCALE_SINTLSYMBOL "JPY"
  LOCALE_SISO3166CTRYNAME "JP"
  LOCALE_SISO639LANGNAME "ja"
  LOCALE_SLANGUAGE "Japanese"
  LOCALE_SLIST ","
  LOCALE_SLONGDATE "yyyy'年'M'月'd'日'"
  LOCALE_SMONDECIMALSEP "."
  LOCALE_SMONGROUPING "3;0"
  LOCALE_SMONTHNAME1 "1月"
  LOCALE_SMONTHNAME2 "2月"
  LOCALE_SMONTHNAME3 "3月"
  LOCALE_SMONTHNAME4 "4月"
  LOCALE_SMONTHNAME5 "5月"
  LOCALE_SMONTHNAME6 "6月"
  LOCALE_SMONTHNAME7 "7月"
  LOCALE_SMONTHNAME8 "8月"
  LOCALE_SMONTHNAME9 "9月"
  LOCALE_SMONTHNAME10 "10月"
  LOCALE_SMONTHNAME11 "11月"
  LOCALE_SMONTHNAME12 "12月"
  LOCALE_SMONTHNAME13 ""
  LOCALE_SMONTHOUSANDSEP ","
  LOCALE_SNAME "ja-JP"
  LOCALE_SNATIVECTRYNAME "日本"
  LOCALE_SNATIVECURRNAME "円"
  LOCALE_SNATIVEDIGITS "0123456789"
  LOCALE_SNATIVEDISPLAYNAME "日本語 (日本)"
  LOCALE_SNATIVELANGNAME "日本語"
  LOCALE_SNEGATIVESIGN "-"
  LOCALE_SOPENTYPELANGUAGETAG "JAN "
  LOCALE_SPOSITIVESIGN ""
  LOCALE_SSCRIPTS "Hani;Hira;Kana;"
  LOCALE_SSHORTDATE "yyyy/MM/dd"
  LOCALE_SSHORTESTDAYNAME1 "月"
  LOCALE_SSHORTESTDAYNAME2 "火"
  LOCALE_SSHORTESTDAYNAME3 "水"
  LOCALE_SSHORTESTDAYNAME4 "木"
  LOCALE_SSHORTESTDAYNAME5 "金"
  LOCALE_SSHORTESTDAYNAME6 "土"
  LOCALE_SSHORTESTDAYNAME7 "日"
  LOCALE_SSHORTTIME "H:mm"
  LOCALE_SSORTNAME "XJIS"
  LOCALE_STHOUSAND ","
  LOCALE_STIME ":"
  LOCALE_STIMEFORMAT "H:mm:ss"
  LOCALE_SYEARMONTH "yyyy'年'M'月'"

  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"
}
