/*
 * OleView (Simplified and Traditional Chinese Resources)
 *
 * 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

IDM_MENU MENU
{
    POPUP "文件(&F)"
    {
        MENUITEM "文件绑定(&B)...", IDM_BIND
        MENUITEM "查看 &TypeLib...", IDM_TYPELIB
        MENUITEM SEPARATOR
        MENUITEM "系统设置(&S)...", IDM_SYSCONF
        MENUITEM "运行注册表编辑器(&R)", IDM_REGEDIT
        MENUITEM SEPARATOR
        MENUITEM "退出(&X)", IDM_EXIT
    }
    POPUP "对象(&O)"
    {
        POPUP "&CoCreateInstance 参数"
        {
            MENUITEM "CLSCTX_&INPROC_SERVER", IDM_FLAG_INSERV,CHECKED
            MENUITEM "CLSCTX_INPROC_&HANDLER", IDM_FLAG_INHANDL
            MENUITEM "CLSCTX_&LOCAL_SERVER", IDM_FLAG_LOCSERV,CHECKED
            MENUITEM "CLSCTX_&REMOTE_SERVER", IDM_FLAG_REMSERV
        }
        MENUITEM SEPARATOR
        MENUITEM "查看类型信息(&T)", IDM_TYPEINFO, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "创建实例(&I)", IDM_CREATEINST, GRAYED
        MENUITEM "创建实例在(&O)...", IDM_CREATEINSTON, GRAYED
        MENUITEM "释放实例(&R)", IDM_RELEASEINST, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "复制 C&LSID 到剪贴板", IDM_COPYCLSID, GRAYED
        MENUITEM "复制 &HTML 对象标记到剪贴板", IDM_HTMLTAG, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "视图(&V)...", IDM_VIEW, GRAYED
    }
    POPUP "视图(&V)"
    {
        MENUITEM "专家状态(&E)", IDM_EXPERT,CHECKED
        MENUITEM SEPARATOR
        MENUITEM "隐藏部件分类(&H)", IDM_HIDDEN, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "工具栏(&T)", IDM_TOOLBAR,CHECKED
        MENUITEM "状态栏(&S)", IDM_STATUSBAR,CHECKED
        MENUITEM SEPARATOR
        MENUITEM "刷新(&R)\tF5", IDM_REFRESH
    }
    POPUP "帮助(&H)"
    {
        MENUITEM "关于 &OleView", IDM_ABOUT
    }
}

IDM_TYPELIB MENU
{
    POPUP "文件(&F)"
    {
        MENUITEM "另存为(&S)...", IDM_SAVEAS
        MENUITEM "关闭(&C)", IDM_CLOSE
    }
    POPUP "视图(&V)"
    {
        MENUITEM "按类型分组(&G)", IDM_GROUP
        MENUITEM SEPARATOR
        MENUITEM "工具栏(&T)", IDM_TOOLBAR
        MENUITEM "状态栏(&S)", IDM_STATUSBAR,CHECKED
    }
}

STRINGTABLE
{
    IDS_APPNAME            "OleView"
    IDS_APPTITLE           "OleView"
    IDS_READY              "待命"
    IDS_ABOUT              "OleView - OLE/COM 对象查看器"
    IDS_ABOUTVER           "版本 1.0 "
    IDS_TYPELIBTITLE       "ITypeLib 查看器"
    IDS_OPEN               "打开"
    IDS_OPEN_TYPELIB_FILTER "TypeLib 文件 (*.tlb;*.olb;*.dll;*.ocx;*.exe)\0*.tlb;*.olb;*.dll;*.ocx;*.exe\0All Files (*.*)\0*.*\0\0"

    IDM_BIND,              "通过文件绰号绑定到文件"
    IDM_TYPELIB,           "打开 TypeLib 文件并查看内容"
    IDM_SYSCONF,           "修改本机分布式 COM 设置"
    IDM_REGEDIT,           "运行 Wine 注册表编辑器"
    IDM_EXIT,              "退出程序. 提示保存"
    IDM_CREATEINST,        "创建当前选定对象实例"
    IDM_CREATEINSTON,      "创建当前选定对象在指定计算机的实例"
    IDM_RELEASEINST,       "释放当前选定对象实例"
    IDM_COPYCLSID,         "把当前选定项目的 GUID 复制到剪贴板"
    IDM_VIEW,              "显示选定项目的查看器"
    IDM_FLAG_INSERV,       "呼叫 CoGetClassObject 时使用 CLSCTX_INPROC_SERVER"
    IDM_FLAG_INHANDL,      "呼叫 CoGetClassObject 时使用 CLSCTX_INPROC_HANDLER"
    IDM_FLAG_LOCSERV,      "呼叫 CoGetClassObject 时使用 CLSCTX_LOCAL_SERVER"
    IDM_FLAG_REMSERV,      "呼叫 CoGetClassObject 时使用 CLSCTX_REMOTE_SERVER"
    IDM_EXPERT,            "切换专家和新手显示模式"
    IDM_HIDDEN,            "切换隐藏组件类显示"
    IDM_TOOLBAR,           "显示或隐藏工具栏"
    IDM_STATUSBAR,         "显示或隐藏状态栏"
    IDM_REFRESH,           "刷新所有名单"
    IDM_ABOUT,             "显示程序信息、版本号及版权"

    IDM_SAVEAS,            "存为 .IDL 或 .H 文件"
    IDM_CLOSE,             "关闭窗口"
    IDM_GROUP,             "按类别分组"

    IDS_TREE_OC,           "对象类型"
    IDS_TREE_GBCC,         "按部件类型分组"
    IDS_TREE_O1O,          "OLE 1.0 对象"
    IDS_TREE_CLO,          "COM 函数库对象"
    IDS_TREE_AO,           "所有对象"
    IDS_TREE_AID,          "应用程序 IDs"
    IDS_TREE_TL,           "类型函数库"
    IDS_TL_VER,            "版本"
    IDS_TREE_I,            "界面"

    IDS_TAB_REG,           "注册表"
    IDS_TAB_IMPL,          "实行"
    IDS_TAB_ACTIV,         "激活"

    IDS_CGCOFAIL,          "CoGetClassObject 失败."
    IDS_ERROR_UNKN,        "未知错误"
    IDS_TRUE,              "真"
    IDS_FALSE,             "假"
    IDS_BYTES,             "字节"

    IDS_ERROR_LOADTYPELIB, "LoadTypeLib( %s ) 失败 ($%x)"
    IDS_INHERITINTERFACES, "遗传界面"
}

DLG_CREATEINSTON DIALOG DISCARDABLE 0, 0, 250, 41
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "连接到另外一台计算机"
FONT 9, "MS Shell Dlg"
{
    LTEXT         "计算机名称(&M):", -1, 5, 6, 190, 8
    EDITTEXT    IDC_MACHINE, 5, 16, 190, 12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON "确定(&O)", IDOK, 200, 5, 45, 14
    PUSHBUTTON    "取消(&C)", IDCANCEL, 200, 22, 45, 14
}

DLG_SYSCONF DIALOG DISCARDABLE 0, 0, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "系统设置"
FONT 9, "MS Shell Dlg"
{
    LTEXT         "系统设置", -1, 5, 6, 160, 8
    CHECKBOX      "启用分布式CO&M", IDC_ENABLEDCOM, 5, 20, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX      "启用远程连接(限&Win95)", IDC_ENABLEREMOTE, 5, 35, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    LTEXT         "这些设置只改变注册表值.\n它对Wine的性能没有影响.", -1, 5, 50, 160, 40
    DEFPUSHBUTTON "确定(&O)", IDOK, 70, 80, 45, 14
    PUSHBUTTON    "取消(&C)", IDCANCEL, 120, 80, 45, 14
}

DLG_DEFAULT_IV DIALOG DISCARDABLE 0, 0, 280, 50
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "默认界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "界面", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "IID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "关闭(&C)", IDCANCEL, 230, 6, 45, 14
    PUSHBUTTON    "查看类型信息(&V)", IDC_VIEWTYPEINFO, 6, 31, 70, 14, WS_DISABLED
}

DLG_IPERSIST_IV DIALOG DISCARDABLE 0, 0, 280, 29
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersist 界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "类别名称:", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "CLSID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "关闭(&C)", IDCANCEL, 230, 6, 45, 14
}

DLG_IPERSISTSTREAM_IV DIALOG DISCARDABLE 0, 0, 280, 68
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersistStream 界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "类别名称:", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "CLSID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "关闭(&C)", IDCANCEL, 230, 6, 45, 14
    PUSHBUTTON    "已修改(&I)", IDC_ISDIRTY_BUTTON, 6, 31, 50, 14
    LTEXT   "???", IDC_ISDIRTY, 60, 34, 145, 8
    PUSHBUTTON    "获取最大(&G)", IDC_GETSIZEMAX_BUTTON, 6, 49, 50, 14
    LTEXT   "???", IDC_GETSIZEMAX, 60, 52, 145, 8
}

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL

IDM_MENU MENU
{
    POPUP "檔案(&F)"
    {
        MENUITEM "檔案綁定(&B)...", IDM_BIND
        MENUITEM "查看 &TypeLib...", IDM_TYPELIB
        MENUITEM SEPARATOR
        MENUITEM "系統設定(&S)...", IDM_SYSCONF
        MENUITEM "執行註冊表編輯器(&R)", IDM_REGEDIT
        MENUITEM SEPARATOR
        MENUITEM "結束(&X)", IDM_EXIT
    }
    POPUP "對象(&O)"
    {
        POPUP "&CoCreateInstance 參數"
        {
            MENUITEM "CLSCTX_&INPROC_SERVER", IDM_FLAG_INSERV,CHECKED
            MENUITEM "CLSCTX_INPROC_&HANDLER", IDM_FLAG_INHANDL
            MENUITEM "CLSCTX_&LOCAL_SERVER", IDM_FLAG_LOCSERV,CHECKED
            MENUITEM "CLSCTX_&REMOTE_SERVER", IDM_FLAG_REMSERV
        }
        MENUITEM SEPARATOR
        MENUITEM "查看類型資訊(&T)", IDM_TYPEINFO, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "創建實例(&I)", IDM_CREATEINST, GRAYED
        MENUITEM "創建實例在(&O)...", IDM_CREATEINSTON, GRAYED
        MENUITEM "釋放實例(&R)", IDM_RELEASEINST, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "複製 C&LSID 到剪貼板", IDM_COPYCLSID, GRAYED
        MENUITEM "複製 &HTML 對象標記到剪貼板", IDM_HTMLTAG, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "檢視(&V)...", IDM_VIEW, GRAYED
    }
    POPUP "檢視(&V)"
    {
        MENUITEM "專家狀態(&E)", IDM_EXPERT,CHECKED
        MENUITEM SEPARATOR
        MENUITEM "隱藏部件分類(&H)", IDM_HIDDEN, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "工具欄(&T)", IDM_TOOLBAR,CHECKED
        MENUITEM "狀態欄(&S)", IDM_STATUSBAR,CHECKED
        MENUITEM SEPARATOR
        MENUITEM "刷新(&R)\tF5", IDM_REFRESH
    }
    POPUP "幫助(&H)"
    {
        MENUITEM "關於 &OleView", IDM_ABOUT
    }
}

IDM_TYPELIB MENU
{
    POPUP "檔案(&F)"
    {
        MENUITEM "另存為(&S)...", IDM_SAVEAS
        MENUITEM "關閉(&C)", IDM_CLOSE
    }
    POPUP "檢視(&V)"
    {
        MENUITEM "按類型分組(&G)", IDM_GROUP
        MENUITEM SEPARATOR
        MENUITEM "工具欄(&T)", IDM_TOOLBAR
        MENUITEM "狀態欄(&S)", IDM_STATUSBAR,CHECKED
    }
}

STRINGTABLE
{
    IDS_APPNAME            "OleView"
    IDS_APPTITLE           "OleView"
    IDS_READY              "待命"
    IDS_ABOUT              "OleView - OLE/COM 對象查看器"
    IDS_ABOUTVER           "版本 1.0 "
    IDS_TYPELIBTITLE       "ITypeLib 查看器"
    IDS_OPEN               "開啟"
    IDS_OPEN_TYPELIB_FILTER "TypeLib 檔案 (*.tlb;*.olb;*.dll;*.ocx;*.exe)\0*.tlb;*.olb;*.dll;*.ocx;*.exe\0All Files (*.*)\0*.*\0\0"

    IDM_BIND,              "通過檔案綽號綁定到檔案"
    IDM_TYPELIB,           "開啟 TypeLib 檔案並查看內容"
    IDM_SYSCONF,           "修改本機分佈式 COM 設定"
    IDM_REGEDIT,           "執行 Wine 註冊表編輯器"
    IDM_EXIT,              "結束程式. 提示儲存"
    IDM_CREATEINST,        "創建當前選定對象實例"
    IDM_CREATEINSTON,      "創建當前選定對象在指定電腦的實例"
    IDM_RELEASEINST,       "釋放當前選定對象實例"
    IDM_COPYCLSID,         "把當前選定項目的 GUID 複製到剪貼板"
    IDM_VIEW,              "顯示選定項目的查看器"
    IDM_FLAG_INSERV,       "呼叫 CoGetClassObject 時使用 CLSCTX_INPROC_SERVER"
    IDM_FLAG_INHANDL,      "呼叫 CoGetClassObject 時使用 CLSCTX_INPROC_HANDLER"
    IDM_FLAG_LOCSERV,      "呼叫 CoGetClassObject 時使用 CLSCTX_LOCAL_SERVER"
    IDM_FLAG_REMSERV,      "呼叫 CoGetClassObject 時使用 CLSCTX_REMOTE_SERVER"
    IDM_EXPERT,            "切換專家和新手顯示模式"
    IDM_HIDDEN,            "切換隱藏組件類顯示"
    IDM_TOOLBAR,           "顯示或隱藏工具欄"
    IDM_STATUSBAR,         "顯示或隱藏狀態欄"
    IDM_REFRESH,           "刷新所有名單"
    IDM_ABOUT,             "顯示程式資訊、版本號及版權"

    IDM_SAVEAS,            "存為 .IDL 或 .H 檔案"
    IDM_CLOSE,             "關閉窗口"
    IDM_GROUP,             "按類別分組"

    IDS_TREE_OC,           "對象類型"
    IDS_TREE_GBCC,         "按部件類型分組"
    IDS_TREE_O1O,          "OLE 1.0 對象"
    IDS_TREE_CLO,          "COM 函式庫對象"
    IDS_TREE_AO,           "所有對象"
    IDS_TREE_AID,          "應用程式 IDs"
    IDS_TREE_TL,           "類型函式庫"
    IDS_TL_VER,            "版本"
    IDS_TREE_I,            "界面"

    IDS_TAB_REG,           "註冊表"
    IDS_TAB_IMPL,          "實行"
    IDS_TAB_ACTIV,         "激活"

    IDS_CGCOFAIL,          "CoGetClassObject 失敗."
    IDS_ERROR_UNKN,        "未知錯誤"
    IDS_TRUE,              "真"
    IDS_FALSE,             "假"
    IDS_BYTES,             "字節"

    IDS_ERROR_LOADTYPELIB, "LoadTypeLib( %s ) 失敗 ($%x)"
    IDS_INHERITINTERFACES, "遺傳界面"
}

DLG_CREATEINSTON DIALOG DISCARDABLE 0, 0, 250, 41
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "連接到另外一台電腦"
FONT 9, "MS Shell Dlg"
{
    LTEXT         "電腦名稱(&M):", -1, 5, 6, 190, 8
    EDITTEXT    IDC_MACHINE, 5, 16, 190, 12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON "確定(&O)", IDOK, 200, 5, 45, 14
    PUSHBUTTON    "取消(&C)", IDCANCEL, 200, 22, 45, 14
}

DLG_SYSCONF DIALOG DISCARDABLE 0, 0, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "系統設定"
FONT 9, "MS Shell Dlg"
{
    LTEXT         "系統設定", -1, 5, 6, 160, 8
    CHECKBOX      "啟用分佈式CO&M", IDC_ENABLEDCOM, 5, 20, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX      "啟用遠程連接(限&Win95)", IDC_ENABLEREMOTE, 5, 35, 160, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    LTEXT         "這些設定只改變註冊表值.\n它對Wine的性能沒有影響.", -1, 5, 50, 160, 40
    DEFPUSHBUTTON "確定(&O)", IDOK, 70, 80, 45, 14
    PUSHBUTTON    "取消(&C)", IDCANCEL, 120, 80, 45, 14
}

DLG_DEFAULT_IV DIALOG DISCARDABLE 0, 0, 280, 50
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "默認界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "界面", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "IID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "關閉(&C)", IDCANCEL, 230, 6, 45, 14
    PUSHBUTTON    "查看類型資訊(&V)", IDC_VIEWTYPEINFO, 6, 31, 70, 14, WS_DISABLED
}

DLG_IPERSIST_IV DIALOG DISCARDABLE 0, 0, 280, 29
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersist 界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "類別名稱:", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "CLSID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "關閉(&C)", IDCANCEL, 230, 6, 45, 14
}

DLG_IPERSISTSTREAM_IV DIALOG DISCARDABLE 0, 0, 280, 68
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "IPersistStream 界面查看器"
FONT 9, "MS Shell Dlg"
{
    LTEXT   "類別名稱:", -1, 5, 6, 50, 8
    LTEXT   "", IDC_LABEL, 60, 6, 145, 8
    LTEXT   "CLSID:", -1, 5, 16, 50, 8
    LTEXT   "", IDC_IDENTIFIER, 60, 16, 165, 8
    DEFPUSHBUTTON "關閉(&C)", IDCANCEL, 230, 6, 45, 14
    PUSHBUTTON    "已修改(&I)", IDC_ISDIRTY_BUTTON, 6, 31, 50, 14
    LTEXT   "???", IDC_ISDIRTY, 60, 34, 145, 8
    PUSHBUTTON    "獲取最大(&G)", IDC_GETSIZEMAX_BUTTON, 6, 49, 50, 14
    LTEXT   "???", IDC_GETSIZEMAX, 60, 52, 145, 8
}

#pragma code_page(default)
