/*
 * WineFile
 * 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
 */

#include "resource.h"

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

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "文件(&F)"  {
        MENUITEM "打开(&O)\tEnter",           ID_ACTIVATE
        MENUITEM "移动(&M)...\tF7",           ID_FILE_MOVE
        MENUITEM "复制(&C)...\tF8",           ID_FILE_COPY
        MENUITEM "位于剪贴板(&I)...\tF9",     118
        MENUITEM "删除(&D)\tDel",             ID_FILE_DELETE
        MENUITEM "改名(&N)...",               109
        MENUITEM "属性(&I)...\tAlt+Enter",    ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "压缩(&O)...",               119
        MENUITEM "解压缩(&O)...",             120
        MENUITEM SEPARATOR
        MENUITEM "运行(&R)...",               ID_EXECUTE
        MENUITEM "打印(&P)...",               102
        MENUITEM "配置文件相关...",             103
        MENUITEM SEPARATOR
        MENUITEM "建立目录(&E)...",           111
        MENUITEM "查找(&H)...",               104
        MENUITEM "选择文件(&S)...",           116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "退出(&X)\tAlt+X",           ID_FILE_EXIT
#else
        MENUITEM "退出(&X)",                  ID_FILE_EXIT
#endif
    }

    POPUP "磁盘(&D)"  {
        MENUITEM "复制(&C)...",               201
        MENUITEM "命名(&L)...",               202
        MENUITEM SEPARATOR
        MENUITEM "格式化(&)...",              ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "建立系统盘(&M)...", -1  /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "连接网络驱动器(&N)",        ID_CONNECT_NETWORK_DRIVE
        MENUITEM "断开网络驱动器连接(&D)",    ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "共享为...",                   254
        MENUITEM "删除共享(&R)...",           255
        MENUITEM SEPARATOR
        MENUITEM "选择驱动器(&S)...",         251
    }

    POPUP "目录(&D)"  {
        MENUITEM "下一层(&N)\t+",             301
        MENUITEM "展开(&T)\t*",               302
        MENUITEM "全部展开(&A)\tStrg+*",      303
        MENUITEM "折叠(&R)\t-",               304
        MENUITEM SEPARATOR
        MENUITEM "标记子目录(&M)",            505
    }

    POPUP "视图(&V)"  {
        MENUITEM "目录树机器内容(&R)",        413
        MENUITEM "仅显示目录树(&E)",          411
        MENUITEM "仅显示目录内容(&O)",        412
        MENUITEM SEPARATOR
        MENUITEM "分割(&L)",                  ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "文件名称(&N)",              ID_VIEW_NAME
        MENUITEM "文件详情列表(&A)",          ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "部分属性(&P)...",           ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "按文件名排序(&S)",          ID_VIEW_SORT_NAME
        MENUITEM "按类型排序(&B)",            ID_VIEW_SORT_TYPE
        MENUITEM "按大小排序(&Z)",            ID_VIEW_SORT_SIZE
        MENUITEM "按日期排序(&D)",            ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "定制排序...",                 ID_VIEW_FILTER
    }

    POPUP "选项(&O)"  {
        MENUITEM "确定方式(&C)...",           501
        MENUITEM "字体(&F)...",               ID_SELECT_FONT
        MENUITEM "定制工具条(&B)...",         512
        MENUITEM SEPARATOR
        MENUITEM "工具条(&T)",                ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "驱动器列表(&D)",            ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "状态栏(&S)",                ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "全屏(&U)\tCtrl+Shift+S",    ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "启动后最小化(&M)",          504
        MENUITEM "退出时保存设置(&S)",        511
    }


    POPUP "安全(&S)"  {
        MENUITEM "访问(&A)...",               605
        MENUITEM "登录(&L)...",               606
        MENUITEM "所有者(&O)...",             607
    }

    POPUP "窗口(&W)"  {
        MENUITEM "新建(&W)",                   ID_WINDOW_NEW
        MENUITEM "层叠\tCtrl+F5",               ID_WINDOW_CASCADE
        MENUITEM "水平平铺(&H)",              ID_WINDOW_TILE_HORZ
        MENUITEM "垂直平铺(&)\tCtrl+F4",      ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "自动排列",                    ID_WINDOW_AUTOSORT
#endif
        MENUITEM "自动排列图标(&S)",          ID_WINDOW_ARRANGE
        MENUITEM "刷新(&R)\tF5",              ID_REFRESH
    }

    POPUP "&?"  {
        MENUITEM "帮助主题(&H)\tF1",          ID_HELP
        MENUITEM "搜索帮助(&S)...\tF1",       ID_HELP
        MENUITEM "使用帮助(&U)\tF1",          ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&关于 Winefile...",           ID_ABOUT
    }
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "运行"
FONT 9, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "命令(&C):", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "作为连接(&S)", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "确定", 1, 158, 6, 47, 14
    PUSHBUTTON      "取消", 2, 158, 23, 47, 14
    PUSHBUTTON      "帮助(&H)", 254, 158, 43, 47, 14
}

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "檔案(&F)"  {
        MENUITEM "開啟(&O)\tEnter",           ID_ACTIVATE
        MENUITEM "移動(&M)...\tF7",           ID_FILE_MOVE
        MENUITEM "複製(&C)...\tF8",           ID_FILE_COPY
        MENUITEM "位於剪貼板(&I)...\tF9",     118
        MENUITEM "刪除(&D)\tDel",             ID_FILE_DELETE
        MENUITEM "改名(&N)...",               109
        MENUITEM "屬性(&I)...\tAlt+Enter",    ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "壓縮(&O)...",               119
        MENUITEM "解壓縮(&O)...",             120
        MENUITEM SEPARATOR
        MENUITEM "執行(&R)...",               ID_EXECUTE
        MENUITEM "列印(&P)...",               102
        MENUITEM "配置檔案相關...",             103
        MENUITEM SEPARATOR
        MENUITEM "建立目錄(&E)...",           111
        MENUITEM "查找(&H)...",               104
        MENUITEM "選擇檔案(&S)...",           116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "結束(&X)\tAlt+X",           ID_FILE_EXIT
#else
        MENUITEM "結束(&X)",                  ID_FILE_EXIT
#endif
    }

    POPUP "磁盤(&D)"  {
        MENUITEM "複製(&C)...",               201
        MENUITEM "命名(&L)...",               202
        MENUITEM SEPARATOR
        MENUITEM "格式化(&)...",              ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "建立系統盤(&M)...", -1  /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "連接網路儲存槽(&N)",        ID_CONNECT_NETWORK_DRIVE
        MENUITEM "斷開網路儲存槽連接(&D)",    ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "共享為...",                   254
        MENUITEM "刪除共享(&R)...",           255
        MENUITEM SEPARATOR
        MENUITEM "選擇儲存槽(&S)...",         251
    }

    POPUP "目錄(&D)"  {
        MENUITEM "下一層(&N)\t+",             301
        MENUITEM "展開(&T)\t*",               302
        MENUITEM "全部展開(&A)\tStrg+*",      303
        MENUITEM "折疊(&R)\t-",               304
        MENUITEM SEPARATOR
        MENUITEM "標記子目錄(&M)",            505
    }

    POPUP "檢視(&V)"  {
        MENUITEM "目錄樹機器內容(&R)",        413
        MENUITEM "僅顯示目錄樹(&E)",          411
        MENUITEM "僅顯示目錄內容(&O)",        412
        MENUITEM SEPARATOR
        MENUITEM "分割(&L)",                  ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "檔案名稱(&N)",              ID_VIEW_NAME
        MENUITEM "檔案詳情列表(&A)",          ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "部分屬性(&P)...",           ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "按檔案名排列(&S)",          ID_VIEW_SORT_NAME
        MENUITEM "按類型排列(&B)",            ID_VIEW_SORT_TYPE
        MENUITEM "按大小排列(&Z)",            ID_VIEW_SORT_SIZE
        MENUITEM "按日期排列(&D)",            ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "定製排列...",                 ID_VIEW_FILTER
    }

    POPUP "選項(&O)"  {
        MENUITEM "確定方式(&C)...",           501
        MENUITEM "字型(&F)...",               ID_SELECT_FONT
        MENUITEM "定製工具條(&B)...",         512
        MENUITEM SEPARATOR
        MENUITEM "工具條(&T)",                ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "儲存槽列表(&D)",            ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "狀態欄(&S)",                ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "全屏(&U)\tCtrl+Shift+S",    ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "啟動後最小化(&M)",          504
        MENUITEM "結束時儲存設定(&S)",        511
    }


    POPUP "安全(&S)"  {
        MENUITEM "訪問(&A)...",               605
        MENUITEM "登錄(&L)...",               606
        MENUITEM "所有者(&O)...",             607
    }

    POPUP "窗口(&W)"  {
        MENUITEM "新建(&W)",                   ID_WINDOW_NEW
        MENUITEM "層疊\tCtrl+F5",               ID_WINDOW_CASCADE
        MENUITEM "水平平鋪(&H)",              ID_WINDOW_TILE_HORZ
        MENUITEM "垂直平鋪(&)\tCtrl+F4",      ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "自動排列",                    ID_WINDOW_AUTOSORT
#endif
        MENUITEM "自動排列圖標(&S)",          ID_WINDOW_ARRANGE
        MENUITEM "刷新(&R)\tF5",              ID_REFRESH
    }

    POPUP "&?"  {
        MENUITEM "幫助主題(&H)\tF1",          ID_HELP
        MENUITEM "搜索幫助(&S)...\tF1",       ID_HELP
        MENUITEM "使用幫助(&U)\tF1",          ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "&關於 Winefile...",           ID_ABOUT
    }
}


IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "執行"
FONT 9, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "指令(&C):", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    CONTROL         "作為連接(&S)", 214, "Button", BS_AUTOCHECKBOX|WS_TABSTOP,3, 45, 71, 12
    DEFPUSHBUTTON   "確定", 1, 158, 6, 47, 14
    PUSHBUTTON      "取消", 2, 158, 23, 47, 14
    PUSHBUTTON      "幫助(&H)", 254, 158, 43, 47, 14
}
