/*
 * 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
{
    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 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 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  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 사용가능"
}
