/*
 * WineFile
 * Korean Language Support
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 * Copyright 2005,2007,2010,2011 YunSong Hwang
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_KOREAN, 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 "클립보드로(&I)...\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 "나가기(Ex)\tAlt+X",                ID_FILE_EXIT
#else
        MENUITEM "나가기(&x)",                       ID_FILE_EXIT
#endif
    }

    POPUP "디스크(&D)"  {
        MENUITEM "디스크 복사(&C)...",               201
        MENUITEM "디스크 라벨(&L)...",              202
        MENUITEM SEPARATOR
        MENUITEM "디스크 포맷(&F)...",             ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "시스템 디스크 만들기(&M)...", -1 /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "네트워크 드라이브 연결(&N)",      ID_CONNECT_NETWORK_DRIVE
        MENUITEM "네트워크 드라이브 연결 끊기(&D)",   ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "공유...",                 254
        MENUITEM "공유 제거(&R)...",            255
        MENUITEM SEPARATOR
        MENUITEM "드라이브 선택(&S)...",            251
    }

    POPUP "디렉토리(&R)"  {
        MENUITEM "다음 단계(&N)\t+",              301
        MENUITEM "트리 확장(&T)\t*",             302
        MENUITEM "모두 확장(&A)\tStrg+*",         303
        MENUITEM "트리 정리(&T)\t-",           304
        MENUITEM SEPARATOR
        MENUITEM "하위 체크(&M)",              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 "&...로 여과",              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 "실행시 최소화(&M)",            504
        MENUITEM "나갈때 설정 저장(&S)",      511
    }


    POPUP "보안(&S)"  {
        MENUITEM "접근(&A)...",                  605
        MENUITEM "로깅(&L)...",                 606
        MENUITEM "소유자(&O)...",                   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 "자동 정렬",       ID_WINDOW_AUTOSORT
#endif
        MENUITEM "심벌로 정렬(&S)",            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 관련 정보(&I)...",     ID_ABOUT
    }
}

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   "확인", 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 "파일 타입으로"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "이름(&N):",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "파일 타입",-1,7,23,87,56
    CONTROL         "디렉토리(&D)",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "풀그림(&P)",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "문서파일(&M)",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "다른 파일(&O)",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "숨김/시스템 파일 보여주기(&S)",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,106,9
    DEFPUSHBUTTON   "확인",IDOK,104,7,50,14
    PUSHBUTTON      "취소",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 "%s 속성"
FONT 9, "MS Shell Dlg"
BEGIN
    DEFPUSHBUTTON   "확인",IDOK,191,7,50,14
    PUSHBUTTON      "취소",IDCANCEL,191,29,50,14
    LTEXT           "파일 이름(&F):",-1,7,7,59,9

    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "완전한 경로(&P):",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "마지막 변화:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "버젼:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "저작권(&Y):",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "크기:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "속성",-1,7,79,158,46
    CONTROL         "읽기 전용(&R)",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "숨김(&I)",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "아카이브(&A)",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "시스템(&S)",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "압축(&C)",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "버젼 정보(&V)",-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   "글꼴 설정 적용"
    IDS_FONT_SEL_ERROR      "새 글꼴 선택 에러."
}

STRINGTABLE
{
    IDS_WINEFILE            "Winefile"
    IDS_ERROR               "에러"
    IDS_ROOT_FS             "루트 파일시스템"
    IDS_UNIXFS              "유닉스 파일시스템"
    IDS_DESKTOP             "데스크탑"
    IDS_SHELL               "셀"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "아직 구현안됨"
    IDS_WINE_FILE           "Wine 파일"
}

STRINGTABLE
{
    IDS_COL_NAME            "이름"
    IDS_COL_SIZE            "크기"
    IDS_COL_CDATE           "시(CDate)"
    IDS_COL_ADATE           "초(ADate)"
    IDS_COL_MDATE           "분(MDate)"
    IDS_COL_IDX             "인덱스/아이노드"
    IDS_COL_LINKS           "링크"
    IDS_COL_ATTR            "속성"
    IDS_COL_SEC             "보안"

    IDS_FREE_SPACE_FMT      "%s of %s 사용가능"
}
