/*
 * 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_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 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_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
    }
}
