/*
 * WineFile
 * Japanese Language Support
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 *
 * 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
 */

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

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "ファイル(&F)"  {
        MENUITEM "開く(&O)\tEnter",                ID_ACTIVATE
        MENUITEM "移動(&M)...\tF7",                ID_FILE_MOVE
        MENUITEM "コピー(&C)...\tF8",                ID_FILE_COPY
        MENUITEM "&In Clipboard...\tF9",        118
        MENUITEM "削除(&D)\tDel",                ID_FILE_DELETE
        MENUITEM "名前の変更(&N)...",                  109
        MENUITEM "プロパティ(&I)...\tAlt+Enter",   ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "圧縮(&O)...",                119
        MENUITEM "解凍(&O)...",              120
        MENUITEM SEPARATOR
        MENUITEM "実行(&R)...",                     ID_EXECUTE
        MENUITEM "印刷(&P)...",                   102
        MENUITEM "関連付け...",                103
        MENUITEM SEPARATOR
        MENUITEM "ディレクトリを作成(&E)...",        111
        MENUITEM "検索(&H)...",                  104
        MENUITEM "ファイルを選択(&S)...",            116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "終了(&X)\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "終了(&X)",                       ID_FILE_EXIT
#endif
    }

    POPUP "ディスク(&D)"  {
        MENUITEM "ディスクをコピー(&C)...",               201
        MENUITEM "&Label Disk...",              202
        MENUITEM SEPARATOR
        MENUITEM "ディスクをフォーマット(&F)...",             ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "&Make System Disk...", -1 /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "ネットワークドライブに接続(&N)",      ID_CONNECT_NETWORK_DRIVE
        MENUITEM "ネットワークドライブを切断(&D)",   ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "Share as...",                 254
        MENUITEM "&Remove Share...",            255
        MENUITEM SEPARATOR
        MENUITEM "ドライブを選択(&S)...",            251
    }

    POPUP "ディレクトリ(&R)"  {
        MENUITEM "&Next Level\t+",              301
        MENUITEM "ツリーを展開(&T)\t*",             302
        MENUITEM "すべてを展開(&A)\tStrg+*",         303
        MENUITEM "ツリーを折り畳む(&T)\t-",           304
        MENUITEM SEPARATOR
        MENUITEM "&Mark Children",              505
    }

    POPUP "表示(&V)"  {
        MENUITEM "ツリーとディレクトリ(&R)",         413
        MENUITEM "ツリーのみ(&E)",                  411
        MENUITEM "ディレクトリのみ(&O)",             412
        MENUITEM SEPARATOR
        MENUITEM "分割(&L)",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "名前(&N)",                       ID_VIEW_NAME
        MENUITEM "すべてのファイル詳細(&A)",           ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "部分詳細(&P)...",         ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "名前で並べ替え(&S)",               ID_VIEW_SORT_NAME
        MENUITEM "種類で並べ替え(&B)",               ID_VIEW_SORT_TYPE
        MENUITEM "サイズで並べ替え(&Z)",               ID_VIEW_SORT_SIZE
        MENUITEM "日付で並べ替え(&D)",               ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Filter by &...",              ID_VIEW_FILTER
    }

    POPUP "オプション(&O)"  {
        MENUITEM "確認(&C)...",            501
        MENUITEM "フォント(&F)...",                    ID_SELECT_FONT
        MENUITEM "ツールバーをカスタマイズ(&B)...",       512
        MENUITEM SEPARATOR
        MENUITEM "ツールバー(&T)",                    ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "ドライブバー(&D)",                   ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "ステータスバー(&S)",                 ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "全画面表示(&U)\tCtrl+Shift+S",  ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Minimize on run",            504
        MENUITEM "終了時に設定を保存(&S)",      ID_VIEW_SAVESETTINGS
    }


    POPUP "セキュリティ(&S)"  {
        MENUITEM "&Access...",                  605
        MENUITEM "&Logging...",                 606
        MENUITEM "&Owner...",                   607
    }

    POPUP "ウィンドウ(&W)"  {
        MENUITEM "新規ウィンドウ(&W)",                 ID_WINDOW_NEW
        MENUITEM "重ねて表示\tCtrl+F5",          ID_WINDOW_CASCADE
        MENUITEM "上下に並べて表示(&H)",          ID_WINDOW_TILE_HORZ
        MENUITEM "左右に並べて表示(&V)\tCtrl+F4",   ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Arrange Automatically",       ID_WINDOW_AUTOSORT
#endif
        MENUITEM "Arrange &Symbols",            ID_WINDOW_ARRANGE
        MENUITEM "更新(&R)\tF5",                ID_REFRESH
    }

    POPUP "ヘルプ(&H)"  {
        MENUITEM "ヘルプ トピック(&H)\tF1",            ID_HELP
        MENUITEM "ヘルプの検索(&S)...\tF1",         ID_HELP
        MENUITEM "ヘルプを使う(&U)\tF1",             ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "Winefile について(&A)...",          ID_ABOUT
    }
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "実行"
FONT 9, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "コマンド(&C):", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "As &Symbol", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "キャンセル", 2, 158, 23, 47, 14
    PUSHBUTTON      "ヘルプ(&H)", 254, 158, 43, 47, 14
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "移動先を選択"
FONT 9, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "パス(&P):", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "キャンセル", 2, 158, 23, 47, 14
    PUSHBUTTON      "参照(&B)", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "By File Type"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "&Name:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "File Type",-1,7,23,87,56
    CONTROL         "&Directories",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programs",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "Docu&ments",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Other files",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Show Hidden/&System Files",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Properties for %s"
FONT 9, "MS Shell Dlg"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,191,29,50,14
    LTEXT           "&File Name:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Full &Path:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Last Change:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Version:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Cop&yright:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Size:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Attributes",-1,7,79,158,46
    CONTROL         "&Read Only",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "H&idden",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Archive",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&System",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Compressed",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "&Version Information",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Applying font settings"
    IDS_FONT_SEL_ERROR      "Error while selecting new font."
}

STRINGTABLE
{
    IDS_WINEFILE            "Wine ファイルマネージャ"
    IDS_ERROR               "Error"
    IDS_ROOT_FS             "root fs"
    IDS_UNIXFS              "unixfs"
    IDS_DESKTOP             "Desktop"
    IDS_SHELL               "シェル"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "未実装"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "名前"
    IDS_COL_SIZE            "サイズ"
    IDS_COL_CDATE           "CDate"
    IDS_COL_ADATE           "ADate"
    IDS_COL_MDATE           "MDate"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "リンク"
    IDS_COL_ATTR            "属性"
    IDS_COL_SEC             "セキュリティ"

    IDS_FREE_SPACE_FMT      "%s of %s free"
}

#pragma code_page(default)
