/*
* Add/Remove Programs Korean resources
*
* Copyright 2001-2002, 2008 Owen Rudge
* Copyright 2005,2006,2007,2008,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 "res.h"

#pragma code_page(65001)

LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT

STRINGTABLE
{
   IDS_CPL_TITLE, "프로그램 추가/삭제"
   IDS_CPL_DESC, "새 소프트웨어를 설치하거나,이미 설치된 소프트웨어를 당신의 컴퓨터에서 삭제 할 수 있습니다."
   IDS_TAB1_TITLE, "프로그램"

   IDS_UNINSTALL_FAILED, "언인스톨러를 실행할 수 없습니다, '%s'. 당신은 이 프로그램의 언인스톨 정보를 레지스트리에서 지우겠습니까?"
   IDS_NOT_SPECIFIED, "지정되지 않음"
   IDS_COLUMN_NAME, "이름"
   IDS_COLUMN_PUBLISHER, "제작사"
   IDS_COLUMN_VERSION, "버젼"
   IDS_INSTALL_FILTER, "설치 프로그램0*instal*.exe;*setup*.exe;*.msi\0프로그램 (*.exe)\0*.exe\0모든 파일들 (*.*)\0*.*\0\0"

   IDS_REMOVE, "제거(&R)..."
   IDS_MODIFY_REMOVE, "고치기(&M)/제거..."
}

STRINGTABLE
{
    IDS_DOWNLOADING     "다운로드중..."
    IDS_INSTALLING      "설치하는 중..."
    IDS_INVALID_SHA     "다운로드한 파일의 체크섬에 문제가 있습니다..망가진 파일의 설치를 취소하는 중입니다."
}

IDD_MAIN DIALOG 0, 0, 320, 220
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "설치/삭제"
FONT 9, "MS Shell Dlg"
{
 CONTROL "플로피 디스크나 시디롬이나 ,하드디스크에서 새 프로그램을 설치하려면  [설치]를 클릭하십시오.", 1000, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 7, 270, 20
 CONTROL "설치(&I)...", IDC_INSTALL, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 246, 26, 64, 14
 CONTROL "", -1, "STATIC", SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 7, 46, 303, 1
 CONTROL 2, 1001, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 7, 21, 20
 CONTROL "이 소프트웨어는 자동으로 삭제되었을 수도 있습니다.설치된 구성요소를 고치거나 프로그램을 지우려면 , 추가/삭제 목록에서 선택하십시오..", 1002, "STATIC", SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 40, 57, 270, 36
 CONTROL "", IDL_PROGRAMS, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SORTASCENDING | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 7, 90, 303, 100
 CONTROL "지원  정보(&S)...", IDC_SUPPORT_INFO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 104, 198, 64, 14
 CONTROL "고치기(&M)...", IDC_MODIFY, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 172, 198, 68, 14
 CONTROL "지우기(&R)...", IDC_ADDREMOVE, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 244, 198, 68, 14
 CONTROL 3, 1003, "STATIC", SS_ICON | WS_CHILD | WS_VISIBLE, 7, 57, 21, 20
}

IDD_INFO DIALOG 0, 0, 256, 138
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "지원 정보"
FONT 9, "MS Shell Dlg"
{
 CONTROL "확인", IDOK, "BUTTON", BS_DEFPUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 103, 116, 50, 14
 CONTROL "이 정보는 %s: 에서 기술 지원을 받기 위해 사용됩니다", IDC_INFO_LABEL, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 12, 9, 228, 19
 CONTROL "제작사:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 30, 60, 8
 CONTROL "버젼:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 40, 60, 8
 CONTROL "연락처:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 50, 60, 8
 CONTROL "지원 정보:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 60, 64, 8
 CONTROL "지원 전화:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 70, 68, 8
 CONTROL "주의사항:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 80, 60, 8
 CONTROL "제품 업데이트:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 90, 60, 8
 CONTROL "설명:", -1, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 16, 100, 60, 8
 CONTROL "", IDC_INFO_PUBLISHER, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 30, 136, 8
 CONTROL "", IDC_INFO_VERSION, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 40, 136, 8
 CONTROL "", IDC_INFO_CONTACT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 50, 136, 8
 CONTROL "", IDC_INFO_SUPPORT, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 60, 136, 8
 CONTROL "", IDC_INFO_PHONE, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 70, 136, 8
 CONTROL "", IDC_INFO_README, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 80, 136, 8
 CONTROL "", IDC_INFO_UPDATES, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 90, 136, 8
 CONTROL "", IDC_INFO_COMMENTS, "static", SS_LEFT | WS_CHILD | WS_VISIBLE, 104, 100, 136, 8
}

ID_DWL_DIALOG DIALOG  0, 0, 260, 95
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wine Gecko 설치관리자"
FONT 8, "MS Shell Dlg"
{
    LTEXT "Wine은 HTML 임베딩 프로그램이 정상적으로 작동하기 위해서 " \
	          "필요로 하는 Gecko 패키지를 찾을 수 없습니다. WIne은 당신을 위해 자동으로 다운로드하고 설치할 것입니다.\n\n\n" \
		  "주위:당신의 배포판의 패키지를 대신 사용하는 것을 추천합니다. " \
	          "자세한 것은 http://wiki.winehq.org/Gecko를 보십시오.",
          ID_DWL_STATUS, 10, 10, 240, 60, SS_LEFT
    CONTROL "진행상황", ID_DWL_PROGRESS, PROGRESS_CLASSA, WS_BORDER|PBS_SMOOTH, 10, 40, 240, 12
    DEFPUSHBUTTON "설치(&I)", ID_DWL_INSTALL, 200, 70, 50, 15, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "취소(&C)", IDCANCEL, 140, 70, 50, 15, WS_GROUP | WS_TABSTOP
}
