/*
 * Copyright 1998 Juergen Schmied
 *
 * 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
 */

#include "shresdef.h"

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

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "大きいアイコン(&G)",	FCIDM_SHVIEW_BIGICON
	MENUITEM "小さいアイコン(&M)",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "一覧(&L)",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "詳細(&D)",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "表示(&V)"
	  BEGIN
	    MENUITEM "大きいアイコン(&G)",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "小さいアイコン(&M)",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "一覧(&L)",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "詳細(&D)",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "アイコンの整列(&I)"
	  BEGIN
	    MENUITEM "名前順(&N)",	0x30	/* column 0 */
	    MENUITEM "種類順(&T)",	0x32	/* column 2 */
	    MENUITEM "サイズ順(&S)",	0x31	/* ... */
	    MENUITEM "日付順(&D)",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "アイコンの自動整列(&A)",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "等間隔に整列",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "更新",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "貼り付け",		FCIDM_SHVIEW_INSERT
	  MENUITEM "ショートカットの貼り付け",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "新規作成"
	  BEGIN
	    MENUITEM "新規フォルダ(&F)",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "新規ショートカット(&L)",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "プロパティ",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "選択(&S)"		FCIDM_SHVIEW_OPEN
	  MENUITEM "エクスプローラ(&X)",	FCIDM_SHVIEW_EXPLORE
	  MENUITEM "開く(&O)",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "切り取り(&U)",		FCIDM_SHVIEW_CUT
	  MENUITEM "コピー(&C)",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "ショートカットの作成(&L)",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "削除(&D)",		FCIDM_SHVIEW_DELETE
	  MENUITEM "名前の変更(&R)",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "プロパティ(&P)",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "ファイル(&F)"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "終了(&X)", IDM_CPANEL_EXIT
    END

    POPUP "表示(&V)"
    BEGIN
        MENUITEM "大きいアイコン(&G)", FCIDM_SHVIEW_BIGICON
        MENUITEM "小さいアイコン(&M)", FCIDM_SHVIEW_SMALLICON
        MENUITEM "一覧(&L)", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "詳細(&D)", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "ヘルプ(&H)"
    BEGIN
        MENUITEM "コントロール パネルについて(&A)...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "フォルダの参照"
FONT 9, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "キャンセル", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "フォルダの参照"
FONT 9, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "フォルダ:", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "新しいフォルダの作成(&M)", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "キャンセル", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "メッセージ"
FONT 9, "MS Shell Dlg"
{
    DEFPUSHBUTTON "はい(&Y)", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "すべてはい(&A)", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "いいえ(&N)", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "キャンセル(&C)", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "%s について"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "Wine ライセンス(&L)...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 170, 10
 LTEXT "Running on %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine was brought to you by:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 9, "MS Shell Dlg"
{
 ICON "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Wine で実行するプログラム、または開くフォルダ名、ドキュメント名、インターネット リソース名を入力してください。", IDC_RUNDLG_DESCRIPTION, 36, 11, 182, 18
 LTEXT "名前(&O):", IDC_RUNDLG_LABEL, 7, 39, 24, 10
 CONTROL "", IDC_RUNDLG_EDITPATH, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "キャンセル", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "参照(&B)...", IDC_RUNDLG_BROWSE, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"ファイル"
	IDS_SHV_COLUMN2		"サイズ"
	IDS_SHV_COLUMN3		"ファイルの種類"
	IDS_SHV_COLUMN4		"更新日時"
	IDS_SHV_COLUMN5		"属性"
	IDS_SHV_COLUMN6		"合計サイズ"
	IDS_SHV_COLUMN7		"空き容量"
	IDS_SHV_COLUMN8		"名前"
	IDS_SHV_COLUMN9		"コメント"
	IDS_SHV_COLUMN10	"所有者"
	IDS_SHV_COLUMN11	"グループ"
	IDS_SHV_COLUMN_DELFROM	"元の場所"
	IDS_SHV_COLUMN_DELDATE	"削除日"

        /* special folders */
	IDS_DESKTOP		"デスクトップ"
	IDS_MYCOMPUTER		"マイ コンピュータ"
	IDS_RECYCLEBIN_FOLDER_NAME      "ごみ箱"
	IDS_CONTROLPANEL	"コントロール パネル"

        /* context menus */
	IDS_VIEW_LARGE		"大きいアイコン(&G)"
	IDS_VIEW_SMALL		"小さいアイコン(&M)"
	IDS_VIEW_LIST		"一覧(&L)"
	IDS_VIEW_DETAILS	"詳細(&D)"
	IDS_SELECT		"選択"
	IDS_OPEN		"開く"

	IDS_CREATEFOLDER_DENIED "新しいフォルダを作成できませんでした。アクセスが拒否されました。"
	IDS_CREATEFOLDER_CAPTION "フォルダの作成に失敗"
	IDS_DELETEITEM_CAPTION "ファイルの削除の確認"
	IDS_DELETEFOLDER_CAPTION "フォルダの削除の確認"
	IDS_DELETEITEM_TEXT "'%1' を削除しますか?"
	IDS_DELETEMULTIPLE_TEXT "これら %1 ファイルを削除しますか?"
	IDS_DELETESELECTED_TEXT "選択されているファイルを削除しますか?"
	IDS_TRASHITEM_TEXT "'%1' をごみ箱に移しますか?"
	IDS_TRASHFOLDER_TEXT "'%1' とその中にあるすべてのファイルをごみ箱に移しますか?"
	IDS_TRASHMULTIPLE_TEXT "これら %1 ファイルをごみ箱に移しますか?"
	IDS_CANTTRASH_TEXT "'%1' はごみ箱に移せません。代わりに削除しますか?"
	IDS_OVERWRITEFILE_TEXT "このフォルダにはすでに '%1' というファイルが存在します。\n\nこのファイルを上書きしますか?"
	IDS_OVERWRITEFILE_CAPTION "ファイルの上書きの確認"
	IDS_OVERWRITEFOLDER_TEXT "このフォルダにはすでに '%1' というフォルダが存在します。\n\n"\
	    "移動またはコピー先フォルダに選択されたフォルダ内のファイルと\n"\
	    "同じ名前のファイルがある場合、新しいファイルで上書きされます。\n"\
	    "フォルダの移動またはコピーを続けますか?"

        /* message box strings */
        IDS_RESTART_TITLE       "再起動"
        IDS_RESTART_PROMPT      "Windows の再起動をシミュレートしますか?"
        IDS_SHUTDOWN_TITLE      "シャットダウン"
        IDS_SHUTDOWN_PROMPT     "Wine セッションをシャットダウンしますか?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "[ファイルを指定して実行]ダイアログを表示できません。(内部エラー)"
        IDS_RUNDLG_BROWSE_ERROR    "[参照]ダイアログを表示できません (内部エラー)"
        IDS_RUNDLG_BROWSE_CAPTION  "参照"
        IDS_RUNDLG_BROWSE_FILTER   "実行可能ファイル\0*.exe\0すべてのファイル\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Start Menu\\Programs"
	IDS_PERSONAL                "My Documents"
	IDS_FAVORITES               "Favorites"
	IDS_STARTUP                 "Start Menu\\Programs\\StartUp"
	IDS_RECENT                  "Recent"
	IDS_SENDTO                  "SendTo"
	IDS_STARTMENU               "Start Menu"
	IDS_MYMUSIC                 "My Music"
	IDS_MYVIDEO                 "My Videos"
	IDS_DESKTOPDIRECTORY        "Desktop"
	IDS_NETHOOD                 "NetHood"
	IDS_TEMPLATES               "Templates"
	IDS_APPDATA                 "Application Data"
	IDS_PRINTHOOD               "PrintHood"
	IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
	IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Local Settings\\History"
	IDS_PROGRAM_FILES           "Program Files"
	IDS_MYPICTURES              "My Pictures"
	IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
	IDS_COMMON_DOCUMENTS        "Documents"
	IDS_ADMINTOOLS              "Start Menu\\Programs\\Administrative Tools"
	IDS_COMMON_MUSIC            "Documents\\My Music"
	IDS_COMMON_PICTURES         "Documents\\My Pictures"
	IDS_COMMON_VIDEO            "Documents\\My Videos"
	IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"

	IDS_NEWFOLDER		"新しいフォルダ"

	IDS_CPANEL_TITLE            "Wine コントロール パネル"
	IDS_CPANEL_NAME             "名前"
	IDS_CPANEL_DESCRIPTION      "説明"

	IDS_SHLEXEC_NOASSOC         "このファイルの種類に関連付けられた Windows プログラムはありません。"
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Wine ライセンス"
IDS_LICENSE,
"Wine 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.\n\n\
Wine 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.\n\n\
You should have received a copy of the GNU Lesser General Public \
License along with Wine; if not, write to the Free Software \
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA."
}
