Sync xcopy, iexplore, winhlp32, wordpad and write to wine 1.3.10

svn path=/trunk/; revision=50150
This commit is contained in:
Daniel Reimer 2010-12-26 16:25:30 +00:00
parent 07bf61809e
commit 8354381c8b
15 changed files with 550 additions and 205 deletions

View file

@ -34,7 +34,7 @@ STRINGTABLE
STRING_SIMCOPY, "%d file saranno copiati\n" STRING_SIMCOPY, "%d file saranno copiati\n"
STRING_COPY, "%d file copiato/i\n" STRING_COPY, "%d file copiato/i\n"
STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\ STRING_QISDIR, "'%s' è il nome di un file o una cartella\n\
nell'obiettivo?\n\ nella destinazione?\n\
(F - File, C - Cartella)\n" (F - File, C - Cartella)\n"
STRING_SRCPROMPT,"%s? (Sì|No)\n" STRING_SRCPROMPT,"%s? (Sì|No)\n"
STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n" STRING_OVERWRITE,"Sovrascrivere %s? (Sì|No|Tutti)\n"

View file

@ -56,7 +56,7 @@ XCOPY 원본 [대상] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\n\ \n\
Where:\n\ Where:\n\
\n\ \n\
[/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을 \n\ [/I] 만약 대상이 존재하지 않는 경우 디렉토리로 가정하고 두개나 더 많은 파일을\n\
\t복사\n\ \t복사\n\
[/S] 디렉토리하고 하위 디렉토리 복사\n\ [/S] 디렉토리하고 하위 디렉토리 복사\n\
[/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\ [/E] 빈 디렉토리를 포함해서 디렉토리와 하위 디렉토리 복사\n\

View file

@ -0,0 +1,141 @@
/*
* XCOPY - Wine-compatible xcopy program
* Serbian language support
*
* Copyright (C) 2007 J. Edmeades
* Copyright 2010 Đorđe Vasiljević
*
* 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_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
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\
(Д - датотека, Ф - фасцикла)\n"
STRING_SRCPROMPT,"%s? (Да|Не)\n"
STRING_OVERWRITE,"Заменити %s? (Да|Не|Све)\n"
STRING_COPYFAIL, "Умножавање „%s“ у „%s“ није успело са r/c %d\n"
STRING_OPENFAIL, "Отварање „%s“ датотеке није успело\n"
STRING_READFAIL, "Читање „%s“ датотеке није успело\n"
STRING_YES_CHAR, "Д"
STRING_NO_CHAR, "Н"
STRING_ALL_CHAR, "С"
STRING_FILE_CHAR,"Д"
STRING_DIR_CHAR, "Ф"
STRING_HELP,
"XCOPY — умножава изворне датотеке или гране фасцикли у одредиште\n\
\n\
Синтакса:\n\
XCOPY извор [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Где:\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\tАко датум није унесен, умножи само ако је одредиште старије\n\
\t\tод извора\n\n"
}
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
STRINGTABLE
{
STRING_INVPARMS, "Neispravan broj parametara. Koristite xcopy /? za pomoć\n"
STRING_INVPARM, "Neispravan parametar „%s“. Koristite xcopy /? za pomoć\n"
STRING_PAUSE, "Pritisnite <enter> da započnete umnožavanje\n"
STRING_SIMCOPY, "%d datoteka/e će biti umoženo\n"
STRING_COPY, "%d datoteka/e je umnoženo\n"
STRING_QISDIR, "Da li je „%s“ naziv datoteke ili fascikla\n\
na odredištu?\n\
(D - datoteka, F - fascikla)\n"
STRING_SRCPROMPT,"%s? (Da|Ne)\n"
STRING_OVERWRITE,"Zameniti %s? (Da|Ne|Sve)\n"
STRING_COPYFAIL, "Umnožavanje „%s“ u „%s“ nije uspelo sa r/c %d\n"
STRING_OPENFAIL, "Otvaranje „%s“ datoteke nije uspelo\n"
STRING_READFAIL, "Čitanje „%s“ datoteke nije uspelo\n"
STRING_YES_CHAR, "D"
STRING_NO_CHAR, "N"
STRING_ALL_CHAR, "S"
STRING_FILE_CHAR,"D"
STRING_DIR_CHAR, "F"
STRING_HELP,
"XCOPY — umnožava izvorne datoteke ili grane fascikli u odredište\n\
\n\
Sintaksa:\n\
XCOPY izvor [dest] [/I] [/S] [/Q] [/F] [/L] [/W] [/T] [/N] [/U]\n\
\t [/R] [/H] [/C] [/P] [/A] [/M] [/E] [/D] [/Y] [/-Y]\n\
\n\
Gde:\n\
\n\
[/I] Pretpostavi fasciklu kada odredište ne postoji i kada se umnožavaju dve ili\n\
\tviše datoteka\n\
[/S] Umnoži fascikle i potfascikle\n\
[/E] Umnoži fascikle i potfascikle zajedno s praznim\n\
[/Q] Ne prikazuj nazive tokom umnožavanja.\n\
[/F] Prikaži ceo izvor i odredište tokom umnožavanja\n\
[/L] Oponašaj radnju prikazujući nazive koji će biti umnoženi\n\
[/W] Pitaj pre počinjanja umnožavanja\n\
[/T] Pravi praznu strukturu fascikle, ali ne umnožava datoteke\n\
[/Y] Potisni upit pri zamenjivanju datoteka\n\
[/-Y] Omogući upit pri zamenjivanju datoteka\n\
[/P] Pitaj za svaku izvornu datoteku pre umnožavanja\n\
[/N] Umnoži koristeći kratke nazive\n\
[/U] Umnoži samo one datoteke koje postoje u odredištu\n\
[/R] Zameni sve datoteke koje se samo čitaju\n\
[/H] Uključi sakrivene i sistemske datoteke u umnožavanje\n\
[/C] Nastavi iako dođe do greške u umnožavanju\n\
[/A] Umnoži samo arhivirane datoteke\n\
[/M] Umnoži samo arhivirane datoteke i ukloni\n\
\tosobine arhive\n\
[/D | /D:m-d-y] Umnoži nove ili izmenjene datoteke nakon određenog datuma.\n\
\t\tAko datum nije unesen, umnoži samo ako je odredište starije\n\
\t\tod izvora\n\n"
}

View file

@ -43,5 +43,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "Ro.rc" #include "Ro.rc"
#include "Ru.rc" #include "Ru.rc"
#include "Si.rc" #include "Si.rc"
#include "Sr.rc"
#include "Sv.rc" #include "Sv.rc"
#include "Uk.rc" #include "Uk.rc"

View file

@ -49,6 +49,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(xcopy); WINE_DEFAULT_DEBUG_CHANNEL(xcopy);
/* Prototypes */ /* Prototypes */
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
WCHAR *supplieddestination, DWORD *flags);
static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem, static int XCOPY_ProcessSourceParm(WCHAR *suppliedsource, WCHAR *stem,
WCHAR *spec, DWORD flags); WCHAR *spec, DWORD flags);
static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem,
@ -108,17 +110,6 @@ int wmain (int argc, WCHAR *argvW[])
const WCHAR PROMPTSTR1[] = {'/', 'Y', 0}; const WCHAR PROMPTSTR1[] = {'/', 'Y', 0};
const WCHAR PROMPTSTR2[] = {'/', 'y', 0}; const WCHAR PROMPTSTR2[] = {'/', 'y', 0};
const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0}; const WCHAR COPYCMD[] = {'C', 'O', 'P', 'Y', 'C', 'M', 'D', 0};
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
/*
* Parse the command line
*/
/* Confirm at least one parameter */
if (argc < 2) {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
return RC_INITERROR;
}
/* Preinitialize flags based on COPYCMD */ /* Preinitialize flags based on COPYCMD */
if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) { if (GetEnvironmentVariableW(COPYCMD, copyCmd, MAXSTRING)) {
@ -135,126 +126,17 @@ int wmain (int argc, WCHAR *argvW[])
lose */ lose */
flags |= OPT_COPYHIDSYS; flags |= OPT_COPYHIDSYS;
/* Skip first arg, which is the program name */ /*
argvW++; * Parse the command line
*/
while (argc > 1) if ((rc = XCOPY_ParseCommandLine(suppliedsource, supplieddestination,
{ &flags)) != RC_OK) {
argc--; if (rc == RC_HELP)
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(*argvW)); return RC_OK;
else
/* First non-switch parameter is source, second is destination */ return rc;
if (*argvW[0] != '/') {
if (suppliedsource[0] == 0x00) {
lstrcpyW(suppliedsource, *argvW);
} else if (supplieddestination[0] == 0x00) {
lstrcpyW(supplieddestination, *argvW);
} else {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
return RC_INITERROR;
}
} else {
/* Process all the switch options
Note: Windows docs say /P prompts when dest is created
but tests show it is done for each src file
regardless of the destination */
switch (toupper(argvW[0][1])) {
case 'I': flags |= OPT_ASSUMEDIR; break;
case 'S': flags |= OPT_RECURSIVE; break;
case 'Q': flags |= OPT_QUIET; break;
case 'F': flags |= OPT_FULL; break;
case 'L': flags |= OPT_SIMULATE; break;
case 'W': flags |= OPT_PAUSE; break;
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
case 'Y': flags |= OPT_NOPROMPT; break;
case 'N': flags |= OPT_SHORTNAME; break;
case 'U': flags |= OPT_MUSTEXIST; break;
case 'R': flags |= OPT_REPLACEREAD; break;
case 'H': flags |= OPT_COPYHIDSYS; break;
case 'C': flags |= OPT_IGNOREERRORS; break;
case 'P': flags |= OPT_SRCPROMPT; break;
case 'A': flags |= OPT_ARCHIVEONLY; break;
case 'M': flags |= OPT_ARCHIVEONLY |
OPT_REMOVEARCH; break;
/* E can be /E or /EXCLUDE */
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
NORM_IGNORECASE | SORT_STRINGSORT,
&argvW[0][1], 8,
EXCLUDE, -1) == 2) {
if (XCOPY_ProcessExcludeList(&argvW[0][9])) {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
return RC_INITERROR;
} else flags |= OPT_EXCLUDELIST;
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
break;
/* D can be /D or /D: */
case 'D': if ((argvW[0][2])==':' && isdigit(argvW[0][3])) {
SYSTEMTIME st;
WCHAR *pos = &argvW[0][3];
BOOL isError = FALSE;
memset(&st, 0x00, sizeof(st));
/* Parse the arg : Month */
st.wMonth = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
/* Parse the arg : Day */
if (!isError) {
st.wDay = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
}
/* Parse the arg : Day */
if (!isError) {
st.wYear = _wtol(pos);
if (st.wYear < 100) st.wYear+=2000;
}
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
SYSTEMTIME st;
WCHAR datestring[32], timestring[32];
flags |= OPT_DATERANGE;
/* Debug info: */
FileTimeToSystemTime (&dateRange, &st);
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
sizeof(datestring)/sizeof(WCHAR));
GetTimeFormatW(0, TIME_NOSECONDS, &st,
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
WINE_TRACE("Date being used is: %s %s\n",
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
} else {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
return RC_INITERROR;
}
} else {
flags |= OPT_DATENEWER;
}
break;
case '-': if (toupper(argvW[0][2])=='Y')
flags &= ~OPT_NOPROMPT; break;
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
return RC_OK;
default:
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(*argvW));
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), *argvW);
return RC_INITERROR;
}
}
argvW++;
} }
/* Default the destination if not supplied */
if (supplieddestination[0] == 0x00)
lstrcpyW(supplieddestination, wchr_dot);
/* Trace out the supplied information */ /* Trace out the supplied information */
WINE_TRACE("Supplied parameters:\n"); WINE_TRACE("Supplied parameters:\n");
WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource)); WINE_TRACE("Source : '%s'\n", wine_dbgstr_w(suppliedsource));
@ -310,6 +192,211 @@ int wmain (int argc, WCHAR *argvW[])
} }
/* =========================================================================
XCOPY_ParseCommandLine - Parses the command line
========================================================================= */
static BOOL is_whitespace(WCHAR c)
{
return c == ' ' || c == '\t';
}
static WCHAR *skip_whitespace(WCHAR *p)
{
for (; *p && is_whitespace(*p); p++);
return p;
}
/* Windows XCOPY uses a simplified command line parsing algorithm
that lacks the escaped-quote logic of build_argv(), because
literal double quotes are illegal in any of its arguments.
Example: 'XCOPY "c:\DIR A" "c:DIR B\"' is OK. */
static int find_end_of_word(const WCHAR *word, WCHAR **end)
{
BOOL in_quotes = 0;
const WCHAR *ptr = word;
for (;;) {
for (; *ptr != '\0' && *ptr != '"' &&
(in_quotes || !is_whitespace(*ptr)); ptr++);
if (*ptr == '"') {
in_quotes = !in_quotes;
ptr++;
}
/* Odd number of double quotes is illegal for XCOPY */
if (in_quotes && *ptr == '\0')
return RC_INITERROR;
if (*ptr == '\0' || (!in_quotes && is_whitespace(*ptr)))
break;
}
*end = (WCHAR*)ptr;
return RC_OK;
}
/* Remove all double quotes from a word */
static void strip_quotes(WCHAR *word, WCHAR **end)
{
WCHAR *rp, *wp;
for (rp = word, wp = word; *rp != '\0'; rp++) {
if (*rp == '"')
continue;
if (wp < rp)
*wp = *rp;
wp++;
}
*wp = '\0';
*end = wp;
}
static int XCOPY_ParseCommandLine(WCHAR *suppliedsource,
WCHAR *supplieddestination, DWORD *pflags)
{
const WCHAR EXCLUDE[] = {'E', 'X', 'C', 'L', 'U', 'D', 'E', ':', 0};
DWORD flags = *pflags;
WCHAR *cmdline, *word, *end, *next;
int rc = RC_INITERROR;
cmdline = _wcsdup(GetCommandLineW());
if (cmdline == NULL)
return rc;
/* Skip first arg, which is the program name */
if ((rc = find_end_of_word(cmdline, &word)) != RC_OK)
goto out;
word = skip_whitespace(word);
while (*word)
{
WCHAR first;
if ((rc = find_end_of_word(word, &end)) != RC_OK)
goto out;
next = skip_whitespace(end);
first = word[0];
*end = '\0';
strip_quotes(word, &end);
WINE_TRACE("Processing Arg: '%s'\n", wine_dbgstr_w(word));
/* First non-switch parameter is source, second is destination */
if (first != '/') {
if (suppliedsource[0] == 0x00) {
lstrcpyW(suppliedsource, word);
} else if (supplieddestination[0] == 0x00) {
lstrcpyW(supplieddestination, word);
} else {
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARMS));
goto out;
}
} else {
/* Process all the switch options
Note: Windows docs say /P prompts when dest is created
but tests show it is done for each src file
regardless of the destination */
switch (toupper(word[1])) {
case 'I': flags |= OPT_ASSUMEDIR; break;
case 'S': flags |= OPT_RECURSIVE; break;
case 'Q': flags |= OPT_QUIET; break;
case 'F': flags |= OPT_FULL; break;
case 'L': flags |= OPT_SIMULATE; break;
case 'W': flags |= OPT_PAUSE; break;
case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break;
case 'Y': flags |= OPT_NOPROMPT; break;
case 'N': flags |= OPT_SHORTNAME; break;
case 'U': flags |= OPT_MUSTEXIST; break;
case 'R': flags |= OPT_REPLACEREAD; break;
case 'H': flags |= OPT_COPYHIDSYS; break;
case 'C': flags |= OPT_IGNOREERRORS; break;
case 'P': flags |= OPT_SRCPROMPT; break;
case 'A': flags |= OPT_ARCHIVEONLY; break;
case 'M': flags |= OPT_ARCHIVEONLY |
OPT_REMOVEARCH; break;
/* E can be /E or /EXCLUDE */
case 'E': if (CompareStringW(LOCALE_USER_DEFAULT,
NORM_IGNORECASE | SORT_STRINGSORT,
&word[1], 8,
EXCLUDE, -1) == 2) {
if (XCOPY_ProcessExcludeList(&word[9])) {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
goto out;
} else flags |= OPT_EXCLUDELIST;
} else flags |= OPT_EMPTYDIR | OPT_RECURSIVE;
break;
/* D can be /D or /D: */
case 'D': if (word[2]==':' && isdigit(word[3])) {
SYSTEMTIME st;
WCHAR *pos = &word[3];
BOOL isError = FALSE;
memset(&st, 0x00, sizeof(st));
/* Parse the arg : Month */
st.wMonth = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
/* Parse the arg : Day */
if (!isError) {
st.wDay = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (*pos++ != '-') isError = TRUE;
}
/* Parse the arg : Day */
if (!isError) {
st.wYear = _wtol(pos);
while (*pos && isdigit(*pos)) pos++;
if (st.wYear < 100) st.wYear+=2000;
}
if (!isError && SystemTimeToFileTime(&st, &dateRange)) {
SYSTEMTIME st;
WCHAR datestring[32], timestring[32];
flags |= OPT_DATERANGE;
/* Debug info: */
FileTimeToSystemTime (&dateRange, &st);
GetDateFormatW(0, DATE_SHORTDATE, &st, NULL, datestring,
sizeof(datestring)/sizeof(WCHAR));
GetTimeFormatW(0, TIME_NOSECONDS, &st,
NULL, timestring, sizeof(timestring)/sizeof(WCHAR));
WINE_TRACE("Date being used is: %s %s\n",
wine_dbgstr_w(datestring), wine_dbgstr_w(timestring));
} else {
XCOPY_FailMessage(ERROR_INVALID_PARAMETER);
goto out;
}
} else {
flags |= OPT_DATENEWER;
}
break;
case '-': if (toupper(word[2])=='Y')
flags &= ~OPT_NOPROMPT; break;
case '?': XCOPY_wprintf(XCOPY_LoadMessage(STRING_HELP));
rc = RC_HELP;
goto out;
default:
WINE_TRACE("Unhandled parameter '%s'\n", wine_dbgstr_w(word));
XCOPY_wprintf(XCOPY_LoadMessage(STRING_INVPARM), word);
goto out;
}
}
word = next;
}
/* Default the destination if not supplied */
if (supplieddestination[0] == 0x00)
lstrcpyW(supplieddestination, wchr_dot);
*pflags = flags;
rc = RC_OK;
out:
free(cmdline);
return rc;
}
/* ========================================================================= /* =========================================================================
XCOPY_ProcessSourceParm - Takes the supplied source parameter, and XCOPY_ProcessSourceParm - Takes the supplied source parameter, and
@ -432,8 +519,10 @@ static int XCOPY_ProcessDestParm(WCHAR *supplieddestination, WCHAR *stem, WCHAR
if (attribs == INVALID_FILE_ATTRIBUTES) { if (attribs == INVALID_FILE_ATTRIBUTES) {
/* If /I supplied and wildcard copy, assume directory */ /* If /I supplied and wildcard copy, assume directory */
if (flags & OPT_ASSUMEDIR && /* Also if destination ends with backslash */
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) { if ((flags & OPT_ASSUMEDIR &&
(wcschr(srcspec, '?') || wcschr(srcspec, '*'))) ||
(supplieddestination[lstrlenW(supplieddestination)-1] == '\\')) {
isDir = TRUE; isDir = TRUE;

View file

@ -26,6 +26,7 @@
#define RC_CTRLC 2 #define RC_CTRLC 2
#define RC_INITERROR 4 #define RC_INITERROR 4
#define RC_WRITEERROR 5 #define RC_WRITEERROR 5
#define RC_HELP 6
#define OPT_ASSUMEDIR 0x00000001 #define OPT_ASSUMEDIR 0x00000001
#define OPT_RECURSIVE 0x00000002 #define OPT_RECURSIVE 0x00000002

View file

@ -16,13 +16,13 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
#define WINE_OLESELFREGISTER #define WINE_FILEDESCRIPTION_STR "Wine Internet Explorer"
#define WINE_FILEDESCRIPTION_STR "Wine core exe"
#define WINE_FILENAME_STR "iexplore.exe" #define WINE_FILENAME_STR "iexplore.exe"
#define WINE_FILEVERSION 6,0,2900,2180 #define WINE_FILEVERSION 6,0,2900,2180
#define WINE_FILEVERSION_STR "6.0.2900.2180" #define WINE_FILEVERSION_STR "6.0.2900.2180"
#define WINE_PRODUCTVERSION 6,0,2900,2180 #define WINE_PRODUCTVERSION 6,0,2900,2180
#define WINE_PRODUCTVERSION_STR "6.0.2900.2180" #define WINE_PRODUCTVERSION_STR "6.0.2900.2180"
#define WINE_EXTRAVALUES VALUE "OLESelfRegister",""
#include "wine/wine_common_ver.rc" #include "wine/wine_common_ver.rc"

View file

@ -21,49 +21,51 @@
#include "winhelp_res.h" #include "winhelp_res.h"
#pragma code_page(65001)
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
/* Menu */ /* Menu */
MAIN_MENU MENU MAIN_MENU MENU
{ {
POPUP "파일(&F)" { POPUP "파일(&F)" {
MENUITEM "열기(&O)...", MNID_FILE_OPEN MENUITEM "열기(&O)...", MNID_FILE_OPEN
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "인쇄(&P)", MNID_FILE_PRINT MENUITEM "인쇄(&P)", MNID_FILE_PRINT
MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP MENUITEM "프린터 설정(&S)...", MNID_FILE_SETUP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "종료(&E)", MNID_FILE_EXIT MENUITEM "종료(&E)", MNID_FILE_EXIT
} }
POPUP "편집(&E)" { POPUP "편집(&E)" {
MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG MENUITEM "복사(&C)...", MNID_EDIT_COPYDLG
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE MENUITEM "주석(&A)...", MNID_EDIT_ANNOTATE
} }
POPUP "책갈피(&B)" { POPUP "책갈피(&B)" {
MENUITEM "정의(&D)...", MNID_BKMK_DEFINE MENUITEM "정의(&D)...", MNID_BKMK_DEFINE
} }
POPUP "옵션(&O)" { POPUP "옵션(&O)" {
POPUP "가능한 도움말 보이기" POPUP "가능한 도움말 보이기"
BEGIN BEGIN
MENUITEM "기본", MNID_OPTS_HELP_DEFAULT MENUITEM "기본", MNID_OPTS_HELP_DEFAULT
MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE MENUITEM "보이기", MNID_OPTS_HELP_VISIBLE
MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE MENUITEM "보여주지 않기", MNID_OPTS_HELP_NONVISIBLE
END END
MENUITEM "기록", MNID_OPTS_HISTORY MENUITEM "기록", MNID_OPTS_HISTORY
POPUP "글꼴" POPUP "글꼴"
BEGIN BEGIN
MENUITEM "작게", MNID_OPTS_FONTS_SMALL MENUITEM "작게", MNID_OPTS_FONTS_SMALL
MENUITEM "보통", MNID_OPTS_FONTS_NORMAL MENUITEM "보통", MNID_OPTS_FONTS_NORMAL
MENUITEM "크게", MNID_OPTS_FONTS_LARGE MENUITEM "크게", MNID_OPTS_FONTS_LARGE
END END
MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS MENUITEM "시스템 색상 사용", MNID_OPTS_SYSTEM_COLORS
} }
POPUP "도움말(&H)" { POPUP "도움말(&H)" {
MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON MENUITEM "도움말 사용법(&O)", MNID_HELP_HELPON
MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP MENUITEM "항상 위(&T)", MNID_HELP_HELPTOP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "정보(&I)...", MNID_HELP_ABOUT MENUITEM "Wine 도움말 정보(&I)...", MNID_HELP_ABOUT
} }
} }
@ -71,7 +73,7 @@ MAIN_MENU MENU
IDD_INDEX DIALOG 0, 0, 200, 190 IDD_INDEX DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 9, "MS Shell Dlg" FONT 9, "MS Shell Dlg"
CAPTION "인덱스" CAPTION "인덱스"
{ {
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
} }
@ -79,50 +81,50 @@ CAPTION "
IDD_SEARCH DIALOG 0, 0, 200, 190 IDD_SEARCH DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 9, "MS Shell Dlg" FONT 9, "MS Shell Dlg"
CAPTION "찾기" CAPTION "찾기"
{ {
LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150 LTEXT "아직 구현되지 않음", -1, 10, 10, 180, 150
} }
/* Strings */ /* Strings */
STRINGTABLE STRINGTABLE
{ {
STID_WINE_HELP, "Wine 도움말" STID_WINE_HELP, "Wine 도움말"
STID_WHERROR, "에러" STID_WHERROR, "에러"
STID_WARNING, "경고" STID_WARNING, "경고"
STID_INFO, "정보" STID_INFO, "정보"
STID_NOT_IMPLEMENTED, "구현되지 않았음" STID_NOT_IMPLEMENTED, "구현되지 않았음"
STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생" STID_HLPFILE_ERROR_s, "도움말 파일 `%s'를 읽는 도중 오류 발생"
STID_INDEX, "목차(&C)" STID_INDEX, "목차(&C)"
STID_CONTENTS, "요약" STID_CONTENTS, "요약"
STID_BACK, "뒤로(&B)" STID_BACK, "뒤로(&B)"
STID_ALL_FILES, "모든 파일 (*.*)" STID_ALL_FILES, "모든 파일 (*.*)"
STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)" STID_HELP_FILES_HLP, "도움말 파일 (*.hlp)"
STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?" STID_FILE_NOT_FOUND_s "%s을 찾을 수 없습니다'. 이 파일을 직접 찾겠습니까?"
STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중" STID_NO_RICHEDIT "richedit 구현을 찾을수 업습니다.. 취소중"
STID_PSH_INDEX, "도움말 목차: " STID_PSH_INDEX, "도움말 목차: "
} }
CONTEXT_MENU MENU CONTEXT_MENU MENU
BEGIN BEGIN
POPUP "" POPUP ""
BEGIN BEGIN
MENUITEM "주석...", MNID_CTXT_ANNOTATE MENUITEM "주석...", MNID_CTXT_ANNOTATE
MENUITEM "복사", MNID_CTXT_COPY MENUITEM "복사", MNID_CTXT_COPY
MENUITEM "인쇄...", MNID_CTXT_PRINT MENUITEM "인쇄...", MNID_CTXT_PRINT
POPUP "글꼴" POPUP "글꼴"
BEGIN BEGIN
MENUITEM "좁게", MNID_CTXT_FONTS_SMALL MENUITEM "좁게", MNID_CTXT_FONTS_SMALL
MENUITEM "보통", MNID_CTXT_FONTS_NORMAL MENUITEM "보통", MNID_CTXT_FONTS_NORMAL
MENUITEM "넓게", MNID_CTXT_FONTS_LARGE MENUITEM "넓게", MNID_CTXT_FONTS_LARGE
END END
POPUP "도움말 항상 보이기" POPUP "도움말 항상 보이기"
BEGIN BEGIN
MENUITEM "기본", MNID_CTXT_HELP_DEFAULT MENUITEM "기본", MNID_CTXT_HELP_DEFAULT
MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE MENUITEM "보이기", MNID_CTXT_HELP_VISIBLE
MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE MENUITEM "안 보이기", MNID_CTXT_HELP_NONVISIBLE
END END
MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS MENUITEM "시스템 색상 사용", MNID_CTXT_SYSTEM_COLORS
END END
END END

View file

@ -4,6 +4,7 @@
* *
* Copyright 2002 liuspider <liuspider@yahoo.com> * Copyright 2002 liuspider <liuspider@yahoo.com>
* Copyright 2008 Hongbo Ni <hongbo.at.njstar.com> * Copyright 2008 Hongbo Ni <hongbo.at.njstar.com>
* Copyright 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@ -37,7 +38,7 @@ MAIN_MENU MENU
MENUITEM "打印(&P)", MNID_FILE_PRINT MENUITEM "打印(&P)", MNID_FILE_PRINT
MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP MENUITEM "打印机设置(&S)...", MNID_FILE_SETUP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "退出(&E)", MNID_FILE_EXIT MENUITEM "退出(&X)", MNID_FILE_EXIT
} }
POPUP "编辑(&E)" { POPUP "编辑(&E)" {
MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG MENUITEM "复制(&C)...", MNID_EDIT_COPYDLG
@ -48,7 +49,7 @@ MAIN_MENU MENU
MENUITEM "定义(&D)...", MNID_BKMK_DEFINE MENUITEM "定义(&D)...", MNID_BKMK_DEFINE
} }
POPUP "选项(&O)" { POPUP "选项(&O)" {
POPUP "显示帮助" POPUP "总是显示帮助"
BEGIN BEGIN
MENUITEM "默认", MNID_OPTS_HELP_DEFAULT MENUITEM "默认", MNID_OPTS_HELP_DEFAULT
MENUITEM "显示", MNID_OPTS_HELP_VISIBLE MENUITEM "显示", MNID_OPTS_HELP_VISIBLE
@ -67,10 +68,26 @@ MAIN_MENU MENU
MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON MENUITEM "如何使用帮助(&O)", MNID_HELP_HELPON
MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP MENUITEM "总是在最前面(&T)", MNID_HELP_HELPTOP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "资料信息(&I)...", MNID_HELP_ABOUT MENUITEM "关于 Wine 帮助(&I)...", MNID_HELP_ABOUT
} }
} }
IDD_INDEX DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
CAPTION "索引"
{
LISTBOX IDC_INDEXLIST, 10, 10, 180, 150, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_BORDER
}
IDD_SEARCH DIALOG 0, 0, 200, 190
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Shell Dlg"
CAPTION "搜索"
{
LTEXT "尚未实现", -1, 10, 10, 180, 150
}
/* Strings */ /* Strings */
STRINGTABLE STRINGTABLE
{ {
@ -79,17 +96,40 @@ STID_WHERROR, "错误"
STID_WARNING, "警告" STID_WARNING, "警告"
STID_INFO, "信息" STID_INFO, "信息"
STID_NOT_IMPLEMENTED, "未实现" STID_NOT_IMPLEMENTED, "未实现"
STID_HLPFILE_ERROR_s, "读入帮助文件 %s 时发生错误" STID_HLPFILE_ERROR_s, "读入帮助文件“%s”时发生错误"
STID_INDEX, "内容(&C)" STID_INDEX, "索引(&I)"
STID_CONTENTS, "概要" STID_CONTENTS, "概要"
STID_BACK, "返回(&B)" STID_BACK, "返回(&B)"
STID_ALL_FILES, "所有文件 (*.*)" STID_ALL_FILES, "所有文件 (*.*)"
STID_HELP_FILES_HLP, "帮助文件 (*.hlp)" STID_HELP_FILES_HLP, "帮助文件 (*.hlp)"
STID_FILE_NOT_FOUND_s "不能打开文件 '%s'. 你想要自己找这个文件吗?" STID_FILE_NOT_FOUND_s "找不到文件“%s”。 你想要自己找这个文件吗?"
STID_NO_RICHEDIT "找不到 richedit... 终止" STID_NO_RICHEDIT "找不到 richedit 的实现……终止"
STID_PSH_INDEX, "帮助内容: " STID_PSH_INDEX, "帮助主题:"
} }
CONTEXT_MENU MENU
BEGIN
POPUP ""
BEGIN
MENUITEM "注释...", MNID_CTXT_ANNOTATE
MENUITEM "复制", MNID_CTXT_COPY
MENUITEM "打印...", MNID_CTXT_PRINT
POPUP "字体"
BEGIN
MENUITEM "小号", MNID_CTXT_FONTS_SMALL
MENUITEM "中号", MNID_CTXT_FONTS_NORMAL
MENUITEM "大号", MNID_CTXT_FONTS_LARGE
END
POPUP "总是显示帮助"
BEGIN
MENUITEM "默认", MNID_CTXT_HELP_DEFAULT
MENUITEM "显示", MNID_CTXT_HELP_VISIBLE
MENUITEM "不显示", MNID_CTXT_HELP_NONVISIBLE
END
MENUITEM "使用系统颜色", MNID_CTXT_SYSTEM_COLORS
END
END
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
/* Menu */ /* Menu */

View file

@ -30,7 +30,6 @@ IDI_WINHELP ICON winhelp.ico
#include "Es.rc" #include "Es.rc"
#include "Fi.rc" #include "Fi.rc"
#include "Hu.rc" #include "Hu.rc"
#include "Ko.rc"
#include "No.rc" #include "No.rc"
#include "Pl.rc" #include "Pl.rc"
#include "Sk.rc" #include "Sk.rc"
@ -44,6 +43,7 @@ IDI_WINHELP ICON winhelp.ico
#include "He.rc" #include "He.rc"
#include "It.rc" #include "It.rc"
#include "Ja.rc" #include "Ja.rc"
#include "Ko.rc"
#include "Lt.rc" #include "Lt.rc"
#include "Nl.rc" #include "Nl.rc"
#include "Pt.rc" #include "Pt.rc"

View file

@ -61,7 +61,7 @@ BEGIN
MENUITEM SEPARATOR MENUITEM SEPARATOR
POPUP "其他(&X)" POPUP "其他(&X)"
BEGIN BEGIN
MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO MENUITEM "选中信息(&I)", ID_EDIT_SELECTIONINFO /* 准确性待议 */
MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT
MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
@ -118,7 +118,7 @@ BEGIN
BEGIN BEGIN
MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */ MENUITEM "黑色", ID_COLOR_BLACK /* 未找到“标准译名表” */
MENUITEM "栗色", ID_COLOR_MAROON MENUITEM "栗色", ID_COLOR_MAROON
MENUITEM "调和绿", ID_COLOR_GREEN MENUITEM "绿", ID_COLOR_GREEN
MENUITEM "橄榄色" ID_COLOR_OLIVE MENUITEM "橄榄色" ID_COLOR_OLIVE
MENUITEM "藏青" ID_COLOR_NAVY MENUITEM "藏青" ID_COLOR_NAVY
MENUITEM "紫色" ID_COLOR_PURPLE MENUITEM "紫色" ID_COLOR_PURPLE
@ -126,7 +126,7 @@ BEGIN
MENUITEM "灰色" ID_COLOR_GRAY MENUITEM "灰色" ID_COLOR_GRAY
MENUITEM "银色" ID_COLOR_SILVER MENUITEM "银色" ID_COLOR_SILVER
MENUITEM "红色" ID_COLOR_RED MENUITEM "红色" ID_COLOR_RED
MENUITEM "绿色" ID_COLOR_LIME MENUITEM "青柠色" ID_COLOR_LIME
MENUITEM "黄色" ID_COLOR_YELLOW MENUITEM "黄色" ID_COLOR_YELLOW
MENUITEM "蓝色" ID_COLOR_BLUE MENUITEM "蓝色" ID_COLOR_BLUE
MENUITEM "洋红" ID_COLOR_FUCHSIA /* =magenta? */ MENUITEM "洋红" ID_COLOR_FUCHSIA /* =magenta? */

View file

@ -162,7 +162,7 @@ static void AddButton(HWND hwndToolBar, int nImage, int nCommand)
button.iBitmap = nImage; button.iBitmap = nImage;
button.idCommand = nCommand; button.idCommand = nCommand;
button.fsState = TBSTATE_ENABLED; button.fsState = TBSTATE_ENABLED;
button.fsStyle = TBSTYLE_BUTTON; button.fsStyle = BTNS_BUTTON;
button.dwData = 0; button.dwData = 0;
button.iString = -1; button.iString = -1;
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button); SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
@ -176,7 +176,7 @@ static void AddSeparator(HWND hwndToolBar)
button.iBitmap = -1; button.iBitmap = -1;
button.idCommand = 0; button.idCommand = 0;
button.fsState = 0; button.fsState = 0;
button.fsStyle = TBSTYLE_SEP; button.fsStyle = BTNS_SEP;
button.dwData = 0; button.dwData = 0;
button.iString = -1; button.iString = -1;
SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button); SendMessageW(hwndToolBar, TB_ADDBUTTONSW, 1, (LPARAM)&button);
@ -1818,7 +1818,7 @@ static LRESULT OnCreate( HWND hWnd )
if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi)) if(!SendMessageW(hReBarWnd, RB_SETBARINFO, 0, (LPARAM)&rbi))
return -1; return -1;
hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|TBSTYLE_BUTTON, hToolBarWnd = CreateToolbarEx(hReBarWnd, CCS_NOPARENTALIGN|CCS_NOMOVEY|WS_VISIBLE|WS_CHILD|TBSTYLE_TOOLTIPS|BTNS_BUTTON,
IDC_TOOLBAR, IDC_TOOLBAR,
1, hInstance, IDB_TOOLBAR, 1, hInstance, IDB_TOOLBAR,
NULL, 0, NULL, 0,
@ -1880,7 +1880,7 @@ static LRESULT OnCreate( HWND hWnd )
SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb); SendMessageW(hReBarWnd, RB_INSERTBAND, -1, (LPARAM)&rbb);
hFormatBarWnd = CreateToolbarEx(hReBarWnd, hFormatBarWnd = CreateToolbarEx(hReBarWnd,
CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | TBSTYLE_BUTTON, CCS_NOPARENTALIGN | CCS_NOMOVEY | WS_VISIBLE | TBSTYLE_TOOLTIPS | BTNS_BUTTON,
IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON)); IDC_FORMATBAR, 8, hInstance, IDB_FORMATBAR, NULL, 0, 16, 16, 16, 16, sizeof(TBBUTTON));
AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD); AddButton(hFormatBarWnd, 0, ID_FORMAT_BOLD);

View file

@ -0,0 +1,38 @@
/*
* Serbian language support
*
* Copyright (C) 2007 Mikolaj Zalewski
* Copyright 2010 Đorđe Vasiljević
*
* 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 "resources.h"
#pragma code_page(65001)
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC
STRINGTABLE
{
IDS_FAILED, "Покретање Писанке није успело"
}
LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN
STRINGTABLE
{
IDS_FAILED, "Pokretanje Pisanke nije uspelo"
}

View file

@ -0,0 +1,31 @@
/*
* Simplified Chinese language support
*
* Copyright (C) 2010 Cheer Xiao <xiaqqaix.at.gmail.com>
*
* 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 "resources.h"
/* Chinese text is encoded in UTF-8 */
#pragma code_page(65001)
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
STRINGTABLE
{
IDS_FAILED, "启动写字板失败"
}

View file

@ -39,4 +39,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#include "Ro.rc" #include "Ro.rc"
#include "Ru.rc" #include "Ru.rc"
#include "Si.rc" #include "Si.rc"
#include "Sr.rc"
#include "Uk.rc" #include "Uk.rc"
#include "Zh.rc"