/*
 * 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
{
    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_RUN
        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
    }
}

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL

/* Menu */

IDM_WINEFILE MENU
{
    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_RUN
        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
    }
}
