/*
 * XCOPY - Wine-compatible xcopy program
 * Korean language support
 *
 * Copyright (C) 2007 J. Edmeades
 * Copyright (C) 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 "xcopy.h"

#pragma code_page(65001)

LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_INVPARMS, "올바르지 않은 매개변수의 갯수 - xcopy /?로 도움말을 보시오\n"
    STRING_INVPARM,  "올바르지 않은 매개변수 '%s' -  xcopy /?로 도움말을 보시오\n"
    STRING_PAUSE,    "<enter> 를 누르면 복사가 시작될 것입니다\n"
    STRING_SIMCOPY,  "%d 파일이 복사될 것입니다\n"
    STRING_COPY,     "%d 파일이 복사되었습니다\n"
    STRING_QISDIR,   "'%s'이 복사할 파일이나 디렉토리?\n\
                     입니까?\n\
                     (F - 파일, D - 디렉토리)\n"
    STRING_SRCPROMPT,"%s? (예|아니오)\n"
    STRING_OVERWRITE,"%s를 덮어쓰겠습니까? (예|아니오|모두)\n"
    STRING_COPYFAIL, "Copying of '%s' to '%s' failed with r/c %d\n"
    STRING_OPENFAIL, "'%s' 열기 실패\n"
    STRING_READFAIL, "'%s를 읽지 못했습니다'\n"
    STRING_YES_CHAR, "Y"
    STRING_NO_CHAR,  "N"
    STRING_ALL_CHAR, "A"
    STRING_FILE_CHAR,"F"
    STRING_DIR_CHAR, "D"

    STRING_HELP,
"XCOPY - 원본 파일이나 디렉토리 구조를 목적지로 복사\n\
\n\
문법:\n\
XCOPY 원본 [대상] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t     [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Where:\n\
\n\
[/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을\n\
\t복사\n\
[/S]  디렉토리하고 하위 디렉토리 복사\n\
[/E]  빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\
[/Q]  조용하게 복사되는 파일이나 디렉토리를 표시하지 않고 복사.\n\
[/F]  복사하는 동안 완전한 원본과 대상 보여주기\n\
[/L]  복사될 것을 보여주면서 가상으로 작업\n\
[/W]  복사시작 하기 전에 확인하기\n\
[/T]  파일은 복사하지 않고 빈 디렉토리 구조만 복사\n\
[/Y]  파일 덮어 쓸 때 확인하지 않기\n\
[/-Y] 파일을 덮어 쓸 때 확인하기\n\
[/P]  복사하는 동안에 각가의 원본 파일마다 확인\n\
[/N]  짧은 이름을 사용해서 복사\n\
[/U]  이미 대상 디렉토리에 존재하는 파일만 복사\n\
[/R]  읽기 전용 파일도 덮어 쓰기\n\
[/H]  숨은 파일이나 시스템 파일도 포함해서 복사\n\
[/C]  복사하는 동안에 에러가 발생해도 계속 진행\n\
[/A]  오직 압축 속성이 설정되어있는 파일만 복사\n\
[/M]  오직 압축 속성을 제거하면서  압축 속성이 설정되어있는\n\
\t파일만 복사\n\
[/D | /D:m-d-y] 지정된 날짜 후에 수정되거나 새로운 파일 복사.\n\
\t\tI만약 어떠한 날짜도 지정되지 않으면,오직 원본보다\n\
\t\t대상이 오래된 것만 복사\n\n"

}
