/*
 * Regedit resources
 *
 * Copyright 2002 Robert Dickenson
 * Copyright 2005 Mike McCormack
 * Copyright 2007,2010 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"

/* Korean resources */

#pragma code_page(65001)

LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU
BEGIN
    POPUP "레지스트리(&R)"
    BEGIN
        MENUITEM "레지스트리 파일 가져오기(&I)...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "레지스트리 파일 내보내기(&E)...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "원격 레지스트리 연결(&C)...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "원격 레지스트리 연결 끊기(&D)...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "인쇄(&P)\tCtrl+P",             ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "끝내기(&X)",                   ID_REGISTRY_EXIT
    END
    POPUP "편집(&E)"
    BEGIN
        MENUITEM "수정(&M)",                     ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "새로 만들기(&N)"
        BEGIN
            MENUITEM "&키(&K)",                 ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "문자열 값(&S)",            ID_EDIT_NEW_STRINGVALUE
            MENUITEM "이진값(&B)",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "DWORD 값(&D)",             ID_EDIT_NEW_DWORDVALUE
            MENUITEM "다중 문자열 값(&M)",       ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "삭제(&D)\tDel",                ID_EDIT_DELETE
        MENUITEM "이름 바꾸기(&R)\tF2",          ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "키 이름 복사(&C)",             ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "찾기(&F)\tCtrl+F",             ID_EDIT_FIND, GRAYED
        MENUITEM "다음 찾기(&x)\tF3",            ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "보기(&V)"
    BEGIN
        MENUITEM "상태 표기줄(&B)",              ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "나누기(&L)",                   ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "새로 고침(&R)\tF5",            ID_VIEW_REFRESH
    END
    POPUP "즐겨 찾기(&F)"
    BEGIN
        MENUITEM "즐겨 찾기 추가(&A)...",           ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "즐겨 찾기 제거(&R)...",           ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "도움말(&H)"
    BEGIN
        MENUITEM "도움말 항목(&H)\tF1",          ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "레지스트리 편집기 정보(&A)",   ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "수정(&M)",                     ID_EDIT_MODIFY
	MENUITEM "이진값 고치기",                ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "삭제(&D)\tDel",                ID_EDIT_DELETE
	MENUITEM "이름 바꾸기(&R)",              ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "새로 만들기(&N)"
        BEGIN
            MENUITEM "&키(&K)",                  ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "문자열 값(&S)",            ID_EDIT_NEW_STRINGVALUE
            MENUITEM "이진값(&B)",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "DWORD 값(&D)",             ID_EDIT_NEW_DWORDVALUE
            MENUITEM "다중 문자열 값(&M)",       ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "삭제(&D)\tDel",                ID_EDIT_DELETE
        MENUITEM "이름 바꾸기(&R)\tF2",          ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "내보내기(&E)...",           ID_EDIT_EXPORT
        MENUITEM "키 이름 복사(&C)",             ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "찾기(&F)\tCtrl+F",             ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_ADDFAVORITE DIALOG  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "즐겨 찾기 추가"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "이름:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "확인",IDOK,140,38,30,13,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,38,30,13, WS_GROUP
END

IDD_DELFAVORITE DIALOG  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "즐겨 찾기 제거"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "이름:",IDC_STATIC,5,5,119,8
    LISTBOX         IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
    DEFPUSHBUTTON   "확인",IDOK,140,71,30,14,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,71,30,14, WS_GROUP
END

IDD_EDIT_STRING DIALOG  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "문자열 편집"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "값 이름:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "값 데이터:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "확인",IDOK,140,58,30,14,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,58,30,14,WS_GROUP
END

IDD_EDIT_DWORD DIALOG  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "DWORD 편집"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "값 이름:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "값 데이터:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "단위", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "16 진수", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "10 진수", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "확인",IDOK,140,77,30,14,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,77,30,14,WS_GROUP
END

IDD_EDIT_BINARY DIALOG  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "이진 값 편집"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "값 이름:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "값 데이터:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,4,40,160,40
    DEFPUSHBUTTON   "확인",IDOK,140,81,30,15,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,80,30,15,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "다중 문자열 편집"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "값 이름:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "값 데이터:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "확인",IDOK,140,158,30,13,WS_GROUP
    PUSHBUTTON      "취소",IDCANCEL,175,158,30,13,WS_GROUP
END

IDD_FIND DIALOG  22, 17, 210, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "찾기"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "찾기:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "찾기 옵션:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "키", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "값 이름", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "값 내용", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "완전한 단어만 찾기", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "찾기",IDOK,175,3,30,14,WS_GROUP
    PUSHBUTTON      "닫기",IDCANCEL,175,22,30,11, WS_GROUP
END

IDD_EXPORT_TEMPLATE DIALOG  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
WS_BORDER
FONT 9, "MS Shell Dlg"
BEGIN
    GROUPBOX        "레지스트리 불러오기", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "모두(&A)", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "선택된 부분만(&E):", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT        IDC_EXPORT_PATH, 82, 30, 184, 12
END

/*
 * String Table
 */

STRINGTABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "이름"
    IDS_LIST_COLUMN_TYPE    "종류"
    IDS_LIST_COLUMN_DATA    "데이터"
END

STRINGTABLE
BEGIN
    IDS_APP_TITLE           "레지스트리 편집기"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_MENU        "모든 레지스트리 작업 명령 포함"
    ID_EDIT_MENU            "키의 값 편집 명령 포함"
    ID_VIEW_MENU            "레지스트리 창 사용자 정의하는 명령 포함"
    ID_FAVORITES_MENU       "자주 사용하는 키 접근하는 명령 포함"
    ID_HELP_MENU            "레지스트리 편집기 정보와 도움말 보여주는 명령 포함"
    ID_EDIT_NEW_MENU        "새 키나 값 만드는 명령 포함"
END

STRINGTABLE
BEGIN
    ID_EDIT_MODIFY          "값 데이타 고치기"
    ID_EDIT_NEW_KEY         "새 키 더하기"
    ID_EDIT_NEW_STRINGVALUE "새 문자열 값 더하기"
    ID_EDIT_NEW_BINARYVALUE "새 바이너리 값 더하기"
    ID_EDIT_NEW_DWORDVALUE  "새 더블 워드 값 더하기"
    ID_EDIT_NEW_MULTI_STRINGVALUE "새 다중 문자열 값 더하기"
    ID_REGISTRY_IMPORTREGISTRYFILE "텍스트 파일을 레지스트리에 끼워넣기"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "레지스트리의 전부나 일부분을 텍스트 파일로 내보내기"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "원격 컴퓨터의 레지스트리 연결"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "원격 컴퓨터의 레지스트리 연결 해제"
    ID_REGISTRY_PRINT       "레지스트리 전부나 부분 인쇄하기"
/*    ID_HELP_HELPTOPICS      "레지스트리 편집기 도움말 열기" */
    ID_HELP_ABOUT           "풀그림 정보,버젼, 저작권 보여주기"
END

STRINGTABLE
BEGIN
    ID_REGISTRY_EXIT        "레지스트리 편집기 나가기"
    ID_FAVORITES_ADDTOFAVORITES "즐겨 찾기 목록에 키 더하기"
    ID_FAVORITES_REMOVEFAVORITE "즐겨 찾기 목록에 키 지우기"
    ID_VIEW_STATUSBAR       "상태바 보여주거나 숨기기"
    ID_VIEW_SPLIT           "두 틀을 나누는 위치 바꾸기"
    ID_VIEW_REFRESH         "창 다시 읽기"
    ID_EDIT_DELETE          "이 섹션 지우기"
    ID_EDIT_RENAME          "이 섹션 이름바꾸기"
    ID_EDIT_COPYKEYNAME     "선택된 키의 이름을 클립보드에 복사"
    ID_EDIT_FIND            "키,값이나 데이타에서 텍스트 문자열 찾기"
    ID_EDIT_FINDNEXT        "이전 찾기에서 지정된 문자열로 다시 찾기"
    ID_EDIT_EXPORT          "레지스트리의 선택된 부분을 텍스트 파일로 내보내기"
END

STRINGTABLE
BEGIN
    IDS_ERROR		    "에러"
    IDS_BAD_KEY		    "키 '%s'를 질의할 수 없습니다"
    IDS_BAD_VALUE           "값 '%s'를 질의할 수 없습니다"
    IDS_UNSUPPORTED_TYPE    "이 타입 (%u)의 키를 고칠 수 없습니다"
    IDS_TOO_BIG_VALUE       "값이 너무 큽니다 (%u)"
    IDS_DELETE_BOX_TITLE    "값 지우기 확인"
    IDS_DELETE_BOX_TEXT     "당신은 이 값 '%s'을 정말로 지우겠습니까?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "이 값들을 정말로 지우겠습니까?"
    IDS_NEWKEY              "새 키 #%d"
    IDS_NEWVALUE            "새 값 #%d"
    IDS_NOTFOUND            "'%s'을 찾을 수 없습니다"
END


STRINGTABLE
BEGIN
   IDS_FILEDIALOG_IMPORT_TITLE   "레이지스트 파일 불러오기"
   IDS_FILEDIALOG_EXPORT_TITLE   "레지스트리 파일 내보내기"
   IDS_FILEDIALOG_FILTER         "레지스트리 파일\0*.reg\0Win9x/NT4 레지스트리 파일 (REGEDIT4)\0*.reg\0모든 파일 (*.*)\0*.*\0\0"
END

STRINGTABLE
BEGIN
   IDS_REGISTRY_ROOT_NAME           "내 컴퓨터"
   IDS_REGISTRY_DEFAULT_VALUE       "(기본)"
   IDS_REGISTRY_VALUE_NOT_SET       "(값이 정해지지 않음)"
   IDS_REGISTRY_VALUE_CANT_DISPLAY  "(값을 보여 줄수 없음)"
   IDS_REGISTRY_UNKNOWN_TYPE        "(알 수 없는 %d)"
END

/*****************************************************************/



/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

/*****************************************************************/
