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