/*
 * 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
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
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
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 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 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 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 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 "実行するプログラムまたは、開くフォルダ名や ドキュメント名、 インターネット リソース名を入力してください。", 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	"削除日"
	IDS_SHV_COL_DOCS	"文書"
	IDS_SHV_COL_STATUS	"状態"
	IDS_SHV_COL_LOCATION	"場所"
	IDS_SHV_COL_MODEL	"機種名"

        /* 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_PROGRAM_FILESX86        "Program Files (x86)"
	IDS_MYPICTURES              "My Pictures"
	IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
	IDS_PROGRAM_FILES_COMMONX86 "Program Files (x86)\\Common Files"
	IDS_COMMON_DOCUMENTS        "Documents"
	IDS_ADMINTOOLS              "Start Menu\\Programs\\Administrative Tools"
	IDS_COMMON_MUSIC            "Music"
	IDS_COMMON_PICTURES         "Pictures"
	IDS_COMMON_VIDEO            "Videos"
	IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"
	IDS_CONTACTS                "Contacts"
	IDS_LINKS                   "Links"
	IDS_PHOTO_ALBUMS            "Pictures\\Slide Shows"
	IDS_PLAYLISTS               "Music\\Playlists"
	IDS_PUBLIC_DOWNLOADS        "Downloads"
	IDS_PUBLIC_GAME_TASKS       "Microsoft\\Windows\\GameExplorer"
	IDS_PUBLIC_LIBRARIES        "Microsoft\\Windows\\Libraries"
	IDS_PUBLIC_RINGTONES        "Microsoft\\Windows\\Ringtones"
	IDS_SAMPLE_MUSIC            "Music\\Sample Music"
	IDS_SAMPLE_PICTURES         "Pictures\\Sample Pictures"
	IDS_SAMPLE_PLAYLISTS        "Music\\Sample Playlists"
	IDS_SAMPLE_VIDEOS           "Videos\\Sample Videos"
	IDS_SAVED_GAMES             "Saved Games"
	IDS_SAVED_SEARCHES          "Searches"
	IDS_USER_PROFILES           "Users"
	IDS_COMMON_OEM_LINKS        "OEM Links"
	IDS_DOCUMENTS               "Documents"
	IDS_DOWNLOADS               "Downloads"
	IDS_LOCAL_APPDATA_LOW       "AppData\\LocalLow"

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