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

/* 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 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 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         "这些设置只改变寄存器值(register values)。\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 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 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 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 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 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 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 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 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
}
