/*
 * Program Manager
 * Simplified and Traditional Chinese Language Support
 *
 * Copyright 2002 liuspider <liuspider@yahoo.com>
 * Copyright 2008 Hongbo Ni <hongbo.at.njstar.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
 */

/* Chinese text is encoded in UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

/* Menu */

MAIN_MENU MENU
{
 POPUP "文件(&F)" {
   MENUITEM "新建(&N)...",              PM_NEW
   MENUITEM "打开(&O)\tEnter",             PM_OPEN
   MENUITEM "移动(&M)...\tF7",             PM_MOVE,      GRAYED
   MENUITEM "复制(&C)...\tF8",             PM_COPY,      GRAYED
   MENUITEM "删除(&D)\tEntf",           PM_DELETE
   MENUITEM "属性(&A)...\tAlt+Enter",       PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "执行(&E)...",          PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "退出 Windows(&X)...",             PM_EXIT
 }
 POPUP "选项(&O)" {
   MENUITEM "自动排列(&A)",  PM_AUTO_ARRANGE
   MENUITEM "运行时最小化(&M)",    PM_MIN_ON_RUN
   MENUITEM "退出时保存设置(&S)", PM_SAVE_SETTINGS
 }
 POPUP "窗口(&W)" {
   MENUITEM "层叠(&O)\tShift+F5",       PM_OVERLAP
   MENUITEM "并排(&S)\tShift+F4",  PM_SIDE_BY_SIDE
   MENUITEM "排列图标(&A)",       PM_ARRANGE
 }

POPUP "帮助(&H)" {
   MENUITEM "内容(&C)",         PM_CONTENTS
   MENUITEM "搜索(&S)...",           PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "如何使用帮助(&H)",     PM_HELPONHELP
   MENUITEM "教程(&T)",         PM_TUTORIAL
   MENUITEM SEPARATOR

   POPUP "资料信息(&I)..." {
     MENUITEM "用户许可协议(&L)",        PM_LICENSE
     MENUITEM "责任无关(&N)",    PM_NO_WARRANTY
     MENUITEM "关于 Wine(&A)",     PM_ABOUT_WINE
   }
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "新建"
{
RADIOBUTTON   "",                 PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "程序组(&G)",   PM_NEW_GROUP,    20, 18,  80, 15
RADIOBUTTON   "",                 PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         "程序(&P)", PM_NEW_PROGRAM,  20, 38,  80, 15
DEFPUSHBUTTON "确定",          IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",        PM_HELP,        105, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Move' */

DIALOG_MOVE DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "移动程序"
{
LTEXT         "移动程序:",    IDIGNORE,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "从此程序组中:", IDIGNORE,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "移动到程序组(&T):",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "确定",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Copy' */

DIALOG_COPY DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "复制程序"
{
LTEXT         "复制程序:",    IDIGNORE,            5,  5,  90, 15
LTEXT         "",                     PM_PROGRAM,         95,  5,  90, 15
LTEXT         "从此程序组中:", IDIGNORE,            5, 13,  90, 15
LTEXT         "",                     PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "移动到程序组(&T):",   PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                              PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "确定",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",          IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",            PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Group attributes' */

DIALOG_GROUP DIALOG 0, 0, 230, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "程序组属性"
{
LTEXT     "描述(&D):", PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                            PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     "组文件(&G):",        PM_FILE_TXT,          05, 38,  50, 10
EDITTEXT                            PM_FILE,              60, 38,  90, 15, WS_TABSTOP
DEFPUSHBUTTON "确定",            IDOK,                155,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",        IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",          PM_HELP,             155, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Program attributes' */

DIALOG_PROGRAM DIALOG 0, 0, 250, 105
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "程序属性"
{
LTEXT         "描述(&D):",  PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                                   PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "命令行(&C):", PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                                   PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "工作目录(&W):",    PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                                   PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "快捷键(&K):",      PM_HOT_KEY_TXT,       05, 55,  60, 10
EDITTEXT                                   PM_HOT_KEY,           80, 55,  90, 15, WS_TABSTOP
ICON          "",                          PM_ICON,              20, 70
CHECKBOX      "",                          PM_SYMBOL,            80, 75,  10, 10, WS_TABSTOP
LTEXT         "启动后最小化(&M)",       IDIGNORE,             95, 75,  75, 10
DEFPUSHBUTTON "确定",                   IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",               IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "浏览(&B)...",               PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "修改图标(&I)...", PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",                 PM_HELP,             185, 85,  60, 15, WS_TABSTOP
}

/* Dialog `Symbol' */

DIALOG_SYMBOL DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "修改图标"
{
LTEXT     "文件名(&F):",    PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                         PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "当前图标(&I):", PM_SYMBOL_LIST_TXT,  5, 30, 125, 10
COMBOBOX                         PM_SYMBOL_LIST,      5, 40, 125, 50,
   CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_OWNERDRAWFIXED | WS_TABSTOP
DEFPUSHBUTTON "确定",         IDOK,              135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",     IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "浏览(&B)...",    PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",       PM_HELP,           135, 65,  60, 15, WS_TABSTOP
}

/* Dialog `Execute' */

DIALOG_EXECUTE DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "执行程序"
{
LTEXT     "命令行(&C):", IDIGNORE,   05, 15, 120, 10
EDITTEXT                               PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",                      PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "启动后最小化(&M)",   IDIGNORE,   20, 45, 120, 10
DEFPUSHBUTTON "确定",               IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "浏览(&B)...",          PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "帮助(&H)",             PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE
{
IDS_PROGRAM_MANAGER,		"程序管理器"
IDS_ERROR,			"错误"
IDS_WARNING,			"警告"
IDS_INFO,			"信息"
IDS_DELETE,			"删除"
IDS_DELETE_GROUP_s,		"是否删除程序组 `%s' ？"
IDS_DELETE_PROGRAM_s,		"是否删除程序组 `%s' ?"
IDS_NOT_IMPLEMENTED,		"此功能未实现"
IDS_FILE_READ_ERROR_s,		"读取文件 %s 时发生错误。"
IDS_FILE_WRITE_ERROR_s,		"写入文件 %s 时发生错误。"
IDS_GRPFILE_READ_ERROR_s,	"不能打开组文件 `%s' 。\n是否继续尝试？"
IDS_OUT_OF_MEMORY,		"内存溢出。"
IDS_WINHELP_ERROR,		"没有可用的帮助信息。"
IDS_UNKNOWN_FEATURE_s,		"在 %s 中发现未知特性"
IDS_FILE_NOT_OVERWRITTEN_s,	"文件 %s 已经存在。不覆盖已有文件。"
IDS_SAVE_GROUP_AS_s,		"将程序组保存为 %s 可以避免复盖已有的文件。"
IDS_NO_HOT_KEY,			"未定义"
IDS_ALL_FILES,			"所有文件 (*.*)"
IDS_PROGRAMS,			"程序"
IDS_LIBRARIES_DLL,		"动态连接库 (*.dll)"
IDS_SYMBOL_FILES,		"图标文件"
IDS_SYMBOLS_ICO,		"图标 (*.ico)"
}

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL

/* Menu */

MAIN_MENU MENU
{
 POPUP "檔案(&F)" {
   MENUITEM "新建(&N)...",           PM_NEW
   MENUITEM "開啟(&O)\tEnter",        PM_OPEN
   MENUITEM "移動(&M)...\tF7",        PM_MOVE,      GRAYED
   MENUITEM "複製(&C)...\tF8",        PM_COPY,      GRAYED
   MENUITEM "刪除(&D)\tEntf",         PM_DELETE
   MENUITEM "屬性(&A)...\tAlt+Enter",  PM_ATTRIBUTES
   MENUITEM SEPARATOR
   MENUITEM "執行(&E)...",           PM_EXECUTE
   MENUITEM SEPARATOR
   MENUITEM "結束 Windows(&X)...",    PM_EXIT
 }
 POPUP "選項(&O)" {
   MENUITEM "自動排列(&A)",          PM_AUTO_ARRANGE
   MENUITEM "執行時最小化(&M)",       PM_MIN_ON_RUN
   MENUITEM "結束時儲存設定(&S)",     PM_SAVE_SETTINGS
 }
 POPUP "窗口(&W)" {
   MENUITEM "層疊(&O)\tShift+F5",     PM_OVERLAP
   MENUITEM "並排(&S)\tShift+F4",     PM_SIDE_BY_SIDE
   MENUITEM "排列圖標(&A)",          PM_ARRANGE
 }

POPUP "幫助(&H)" {
   MENUITEM "內容(&C)",             PM_CONTENTS
   MENUITEM "搜索(&S)...",           PM_SEARCH
   MENUITEM SEPARATOR
   MENUITEM "如何使用幫助(&H)",      PM_HELPONHELP
   MENUITEM "教程(&T)",             PM_TUTORIAL
   MENUITEM SEPARATOR

   POPUP "資料資訊(&I)..." {
     MENUITEM "用戶許可協議(&L)",    PM_LICENSE
     MENUITEM "責任無關(&N)",       PM_NO_WARRANTY
     MENUITEM "關於 Wine(&A)",      PM_ABOUT_WINE
   }
 }
}

/* Dialog `New' */

DIALOG_NEW DIALOG 0, 0, 170, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "新建"
{
RADIOBUTTON   "",          PM_NEW_GROUP,    10, 15,  10, 15
LTEXT         "程式組(&G)", PM_NEW_GROUP,    20, 18,  80, 15
RADIOBUTTON   "",          PM_NEW_PROGRAM,  10, 35,  10, 15
LTEXT         "程式(&P)",   PM_NEW_PROGRAM,  20, 38,  80, 15
DEFPUSHBUTTON "確定",      IDOK,           105,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",      IDCANCEL,       105, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",   PM_HELP,        105, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Move' */

DIALOG_MOVE DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "移動程式"
{
LTEXT         "移動程式:",         IDIGNORE,            5,  5,  90, 15
LTEXT         "",                 PM_PROGRAM,         95,  5,  90, 15
LTEXT         "從此程式組中:",      IDIGNORE,            5, 13,  90, 15
LTEXT         "",                 PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "移動到程式組(&T):",  PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                          PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "確定",              IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",              IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",          PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Copy' */

DIALOG_COPY DIALOG 0, 0, 250, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "複製程式"
{
LTEXT         "複製程式:",        IDIGNORE,            5,  5,  90, 15
LTEXT         "",                PM_PROGRAM,         95,  5,  90, 15
LTEXT         "從此程式組中:",    IDIGNORE,            5, 13,  90, 15
LTEXT         "",                PM_FROM_GROUP,      95, 13,  90, 15
LTEXT         "移動到程式組(&T):", PM_TO_GROUP_TXT,     5, 28, 140, 15
COMBOBOX                         PM_TO_GROUP,         5, 38, 140, 50, WS_TABSTOP | CBS_DROPDOWNLIST
DEFPUSHBUTTON "確定",            IDOK,              185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",            IDCANCEL,          185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",        PM_HELP,           185, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Group attributes' */

DIALOG_GROUP DIALOG 0, 0, 230, 65
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "程式組屬性"
{
LTEXT     "描述(&D):",    PM_DESCRIPTION_TXT,   05, 18,  50, 10
EDITTEXT                 PM_DESCRIPTION,       60, 18,  90, 15, WS_TABSTOP
LTEXT     "組檔案(&G):",  PM_FILE_TXT,          05, 38,  50, 10
EDITTEXT                 PM_FILE,              60, 38,  90, 15, WS_TABSTOP
DEFPUSHBUTTON "確定",    IDOK,                155,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",    IDCANCEL,            155, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)", PM_HELP,             155, 45,  60, 15, WS_TABSTOP
}

/* Dialog `Program attributes' */

DIALOG_PROGRAM DIALOG 0, 0, 250, 105
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "程式屬性"
{
LTEXT         "描述(&D):",      PM_DESCRIPTION_TXT,   05, 10,  60, 10
EDITTEXT                       PM_DESCRIPTION,       80, 10,  90, 15, WS_TABSTOP
LTEXT         "指令行(&C):",    PM_COMMAND_LINE_TXT,  05, 25,  60, 10
EDITTEXT                       PM_COMMAND_LINE,      80, 25,  90, 15, WS_TABSTOP
LTEXT         "工作目錄(&W):",  PM_DIRECTORY_TXT,     05, 40,  60, 10
EDITTEXT                       PM_DIRECTORY,         80, 40,  90, 15, WS_TABSTOP
LTEXT         "快捷鍵(&K):",    PM_HOT_KEY_TXT,       05, 55,  60, 10
EDITTEXT                       PM_HOT_KEY,           80, 55,  90, 15, WS_TABSTOP
ICON          "",              PM_ICON,              20, 70
CHECKBOX      "",              PM_SYMBOL,            80, 75,  10, 10, WS_TABSTOP
LTEXT         "啟動後最小化(&M)", IDIGNORE,             95, 75,  75, 10
DEFPUSHBUTTON "確定",           IDOK,                185,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",           IDCANCEL,            185, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "瀏覽(&B)...",     PM_BROWSE,           185, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "修改圖標(&I)...", PM_OTHER_SYMBOL,     185, 65,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",       PM_HELP,             185, 85,  60, 15, WS_TABSTOP
}

/* Dialog `Symbol' */

DIALOG_SYMBOL DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "修改圖標"
{
LTEXT     "檔案名(&F):",     PM_ICON_FILE_TXT,    5, 15,  40, 10
EDITTEXT                    PM_ICON_FILE,       45, 15,  85, 15, WS_TABSTOP
LTEXT     "當前圖標(&I):",   PM_SYMBOL_LIST_TXT,  5, 30, 125, 10
COMBOBOX                    PM_SYMBOL_LIST,      5, 40, 125, 50,
   CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | CBS_OWNERDRAWFIXED | WS_TABSTOP
DEFPUSHBUTTON "確定",       IDOK,              135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",       IDCANCEL,          135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "瀏覽(&B)...", PM_BROWSE,         135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",   PM_HELP,           135, 65,  60, 15, WS_TABSTOP
}

/* Dialog `Execute' */

DIALOG_EXECUTE DIALOG 0, 0, 200, 85
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "執行程式"
{
LTEXT         "指令行(&C):",    IDIGNORE,   05, 15, 120, 10
EDITTEXT                       PM_COMMAND, 05, 25, 120, 15, WS_TABSTOP
CHECKBOX      "",              PM_SYMBOL,  05, 45,  10, 10, WS_TABSTOP
LTEXT         "啟動後最小化(&M)", IDIGNORE,   20, 45, 120, 10
DEFPUSHBUTTON "確定",           IDOK,      135,  5,  60, 15, WS_TABSTOP
PUSHBUTTON    "取消",           IDCANCEL,  135, 25,  60, 15, WS_TABSTOP
PUSHBUTTON    "瀏覽(&B)...",     PM_BROWSE, 135, 45,  60, 15, WS_TABSTOP
PUSHBUTTON    "幫助(&H)",       PM_HELP,   135, 65,  60, 15, WS_TABSTOP
}

/* Strings */

STRINGTABLE DISCARDABLE
{
IDS_PROGRAM_MANAGER,		"程式管理器"
IDS_ERROR,			"錯誤"
IDS_WARNING,			"警告"
IDS_INFO,			"資訊"
IDS_DELETE,			"刪除"
IDS_DELETE_GROUP_s,		"是否刪除程式組 `%s' ？"
IDS_DELETE_PROGRAM_s,		"是否刪除程式組 `%s' ?"
IDS_NOT_IMPLEMENTED,		"此功能未實現"
IDS_FILE_READ_ERROR_s,		"讀取檔案 %s 時發生錯誤。"
IDS_FILE_WRITE_ERROR_s,		"寫入檔案 %s 時發生錯誤。"
IDS_GRPFILE_READ_ERROR_s,	"不能開啟組檔案 `%s' 。\n是否繼續嘗試？"
IDS_OUT_OF_MEMORY,		"內存溢出。"
IDS_WINHELP_ERROR,		"沒有可用的幫助資訊。"
IDS_UNKNOWN_FEATURE_s,		"在 %s 中發現未知特性"
IDS_FILE_NOT_OVERWRITTEN_s,	"檔案 %s 已經存在。不覆蓋已有檔案。"
IDS_SAVE_GROUP_AS_s,		"將程式組儲存為 %s 可以避免復蓋已有的檔案。"
IDS_NO_HOT_KEY,			"未定義"
IDS_ALL_FILES,			"所有檔案 (*.*)"
IDS_PROGRAMS,			"程式"
IDS_LIBRARIES_DLL,		"動態連接庫 (*.dll)"
IDS_SYMBOL_FILES,		"圖標檔案"
IDS_SYMBOLS_ICO,		"圖標 (*.ico)"
}

#pragma code_page(default)
