/*
 * 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
 */

#include "resource.h"

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

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

/* Menu */

IDM_WINEFILE MENU
{
    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_RUN
        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_SELECT_DESTINATION DIALOG 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 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  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"
}
