/*
 * wordpad (Simplified and Traditional Chinese Resource)
 *
 * 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_MAINMENU MENU DISCARDABLE
BEGIN
    POPUP "文件(&F)"
    BEGIN
        MENUITEM "新建(&N)...\tCtrl+N", ID_FILE_NEW
        MENUITEM "打开(&O)...\tCtrl+O", ID_FILE_OPEN
        MENUITEM "保存(&S)\tCtrl+S", ID_FILE_SAVE
        MENUITEM "另存为(&A)...", ID_FILE_SAVEAS
        MENUITEM SEPARATOR
        MENUITEM "打印(&P)...\tCtrl+P", ID_PRINT
        MENUITEM "打印预览(&W)...", ID_PREVIEW
        MENUITEM "页面设置(&E)...", ID_PRINTSETUP
        MENUITEM SEPARATOR
        MENUITEM "退出(&X)", ID_FILE_EXIT
    END
    POPUP "编辑(&E)"
    BEGIN
        MENUITEM "撤销(&U)\tCtrl+Z", ID_EDIT_UNDO
        MENUITEM "重做(&E)\tCtrl+Y", ID_EDIT_REDO
        MENUITEM SEPARATOR
        MENUITEM "剪切(&T)\tCtrl+X", ID_EDIT_CUT
        MENUITEM "复制(&C)\tCtrl+C", ID_EDIT_COPY
        MENUITEM "粘贴(&P)\tCtrl+V", ID_EDIT_PASTE
        MENUITEM "删除(&D)\tDEL", ID_EDIT_CLEAR
        MENUITEM "全选(&S)\tCtrl+A", ID_EDIT_SELECTALL
        MENUITEM SEPARATOR
        MENUITEM "查找(&F)...\tCrtl+F", ID_FIND
        MENUITEM "找下一个(&N)\tF3", ID_FIND_NEXT
        MENUITEM "替换(&R)...\tCtrl+H", ID_REPLACE
        MENUITEM SEPARATOR
        MENUITEM "只读(&0))", ID_EDIT_READONLY
        MENUITEM "已改动(M)", ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "其他(&X)"
        BEGIN
            MENUITEM "选择信息(&I)", ID_EDIT_SELECTIONINFO
            MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
            MENUITEM "默认格式(&D)", ID_EDIT_DEFCHARFORMAT
            MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
            MENUITEM "获取文字(&G)", ID_EDIT_GETTEXT
        END
    END
    POPUP "视图(&V)"
    BEGIN
        MENUITEM "工具栏(&T)", ID_TOGGLE_TOOLBAR
        MENUITEM "格式工具栏(&F)", ID_TOGGLE_FORMATBAR
        MENUITEM "标尺(&R)", ID_TOGGLE_RULER
        MENUITEM "状态栏(&S)", ID_TOGGLE_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "选项(&O)...", ID_VIEWPROPERTIES
    END
    POPUP "插入(&I)"
    BEGIN
        MENUITEM "日期时间(&D)...", ID_DATETIME
    END
    POPUP "格式(&O)"
    BEGIN
        MENUITEM "字体(&F)..", ID_FONTSETTINGS
        MENUITEM "子弹点(&B)", ID_BULLET
        MENUITEM "段落(&P)...", ID_PARAFORMAT
        MENUITEM "标签(&T)...", ID_TABSTOPS
        POPUP "背景(&D)"
        BEGIN
            MENUITEM "系统(&S)\tCtrl+1", ID_BACK_1
            MENUITEM "淡黄色(&P)\tCtrl+2", ID_BACK_2
        END
    END
    POPUP "帮助(&H)"
    BEGIN
        MENUITEM "关于 &Wine 写字板", ID_ABOUT
    END
END

IDM_POPUP MENU DISCARDABLE
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "剪切(&T)", ID_EDIT_CUT
        MENUITEM "复制(&C)", ID_EDIT_COPY
        MENUITEM "粘贴(&P)", ID_EDIT_PASTE
        MENUITEM SEPARATOR
        MENUITEM "子弹点(&B)"       ID_BULLET
        MENUITEM "段落(&P)..."        ID_PARAFORMAT
    END
END

IDD_DATETIME DIALOG DISCARDABLE 30, 20, 130, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "日期和时间"
FONT 9, "MS Song"
BEGIN
    LTEXT        "可用格式",0,3,2,100,15
    LISTBOX      IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "确定(&O)",IDOK,87,12,40,12
    PUSHBUTTON   "取消(&C)",IDCANCEL,87,26,40,12
END

IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "新建"
FONT 9, "MS Song"
BEGIN
    LTEXT        "新文件类型",0,3,2,100,15
    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "确定(&O)",IDOK,97,12,40,12
    PUSHBUTTON   "取消(&C)",IDCANCEL,97,26,40,12
END

IDD_PARAFORMAT DIALOG DISCARDABLE 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "段落格式"
FONT 9, "MS Song"
BEGIN
    GROUPBOX "缩进", 0, 10, 10, 120, 68
    LTEXT "左", 0, 15, 22, 40, 13
    EDITTEXT IDC_PARA_LEFT, 55, 20, 60, 13
    LTEXT "右", 0, 15, 40, 40, 13
    EDITTEXT IDC_PARA_RIGHT, 55, 38, 60, 13
    LTEXT "第一行", 0, 15, 58, 40, 13
    EDITTEXT IDC_PARA_FIRST, 55, 56, 60, 13
    LTEXT "对齐", 0, 15, 87, 40, 13
    COMBOBOX IDC_PARA_ALIGN, 55, 85, 60, 60, CBS_DROPDOWNLIST
    PUSHBUTTON "确定(&O)", IDOK, 137, 15, 50, 15
    PUSHBUTTON "取消(&C)", IDCANCEL, 137, 33, 50, 15
END

IDD_TABSTOPS DIALOG DISCARDABLE 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "标签"
FONT 9, "MS Song"
BEGIN
    GROUPBOX "标签停点", 0, 10, 10, 120, 90
    COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT
    DEFPUSHBUTTON "添加(&A)", ID_TAB_ADD, 20, 80, 45, 15
    PUSHBUTTON "删除(&R)", ID_TAB_DEL, 72, 80, 45, 15
    PUSHBUTTON "确定(&O)", IDOK, 137, 15, 50, 15
    PUSHBUTTON "取消(&C)", IDCANCEL, 137, 33, 50, 15
    PUSHBUTTON "全部删除(&R)", ID_TAB_EMPTY, 137, 51, 50, 15
END

IDD_FORMATOPTS DIALOG DISCARDABLE 0, 0, 280, 110
STYLE DS_SYSMODAL
Caption ""
FONT 9, "MS Song"
BEGIN
    GROUPBOX "自动换行", 0, 10, 10, 130, 85
    RADIOBUTTON "No line wrapping", IDC_PAGEFMT_WN, 18, 25, 117, 15
    RADIOBUTTON "按视窗宽度(&W)", IDC_PAGEFMT_WW, 18, 45, 117, 15
    RADIOBUTTON "按纸张宽度(&M)", IDC_PAGEFMT_WM, 18, 65, 117, 15
    GROUPBOX "工具栏", 0, 150, 10, 120, 85
    CHECKBOX "工具栏(&T)", IDC_PAGEFMT_TB, 160, 20, 80, 15
    CHECKBOX "格式工具栏(&F)", IDC_PAGEFMT_FB, 160, 38, 80, 15
    CHECKBOX "标尺(&R)", IDC_PAGEFMT_RU, 160, 56, 80, 15
    CHECKBOX "状态栏(&S)", IDC_PAGEFMT_SB, 160, 74, 80, 15
    LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_RICHTEXT_FILES_RTF,     "RTF丰富格式 (*.rtf)"
    STRING_TEXT_FILES_TXT,         "文本文件 (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "统一码文本文件 (*.txt)"
    STRING_ALL_FILES,              "所有文件 (*.*)"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_ALIGN_LEFT,            "左"
    STRING_ALIGN_RIGHT,           "右"
    STRING_ALIGN_CENTER,          "中"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_NEWFILE_RICHTEXT,     "RTF丰富格式文件"
    STRING_NEWFILE_TXT,          "文本文件 "
    STRING_NEWFILE_TXT_UNICODE,  "统一码文本文件"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_PRINTER_FILES_PRN,        "打印文件 (*.PRN)"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_VIEWPROPS_TITLE,          "选项"
    STRING_VIEWPROPS_TEXT,           "文本文字"
    STRING_VIEWPROPS_RICHTEXT,       "丰富格式文字"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_PREVIEW_PRINT,            "打印"
    STRING_PREVIEW_NEXTPAGE,         "下一页"
    STRING_PREVIEW_PREVPAGE,         "上一页"
    STRING_PREVIEW_TWOPAGES,         "双页"
    STRING_PREVIEW_ONEPAGE,          "单页"
    STRING_PREVIEW_CLOSE,            "关闭"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_UNITS_CM,             "cm"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "Document"
    STRING_PROMPT_SAVE_CHANGES,  "保存改动到 '%s'?"
    STRING_SEARCH_FINISHED,      "文件查找结束."
    STRING_LOAD_RICHED_FAILED,   "RichEdit 装载失败."
    STRING_SAVE_LOSEFORMATTING,  "你已经选择保存为文本文件, " \
                                 "这可能导致格式丢失. " \
                                 "你确定要这么做吗?"
    STRING_INVALID_NUMBER,       "数字格式无效"
    STRING_OLE_STORAGE_NOT_SUPPORTED, "不支持OLE 储存文件"
    STRING_WRITE_FAILED,              "不能保存文件."
    STRING_WRITE_ACCESS_DENIED,       "你没有保存文件的权力."
    STRING_OPEN_FAILED,               "不能打开文件."
    STRING_OPEN_ACCESS_DENIED,        "你没有打开文件的权力."
END

LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL

IDM_MAINMENU MENU DISCARDABLE
BEGIN
    POPUP "檔案(&F)"
    BEGIN
        MENUITEM "新建(&N)...\tCtrl+N", ID_FILE_NEW
        MENUITEM "開啟(&O)...\tCtrl+O", ID_FILE_OPEN
        MENUITEM "儲存(&S)\tCtrl+S", ID_FILE_SAVE
        MENUITEM "另存為(&A)...", ID_FILE_SAVEAS
        MENUITEM SEPARATOR
        MENUITEM "列印(&P)...\tCtrl+P", ID_PRINT
        MENUITEM "列印預覽(&W)...", ID_PREVIEW
        MENUITEM "頁面設定(&E)...", ID_PRINTSETUP
        MENUITEM SEPARATOR
        MENUITEM "結束(&X)", ID_FILE_EXIT
    END
    POPUP "編輯(&E)"
    BEGIN
        MENUITEM "復原(&U)\tCtrl+Z", ID_EDIT_UNDO
        MENUITEM "重做(&E)\tCtrl+Y", ID_EDIT_REDO
        MENUITEM SEPARATOR
        MENUITEM "剪下(&T)\tCtrl+X", ID_EDIT_CUT
        MENUITEM "複製(&C)\tCtrl+C", ID_EDIT_COPY
        MENUITEM "貼上(&P)\tCtrl+V", ID_EDIT_PASTE
        MENUITEM "刪除(&D)\tDEL", ID_EDIT_CLEAR
        MENUITEM "全選(&S)\tCtrl+A", ID_EDIT_SELECTALL
        MENUITEM SEPARATOR
        MENUITEM "查找(&F)...\tCrtl+F", ID_FIND
        MENUITEM "找下一個(&N)\tF3", ID_FIND_NEXT
        MENUITEM "替換(&R)...\tCtrl+H", ID_REPLACE
        MENUITEM SEPARATOR
        MENUITEM "唯讀(&0))", ID_EDIT_READONLY
        MENUITEM "已改動(M)", ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "其他(&X)"
        BEGIN
            MENUITEM "選擇資訊(&I)", ID_EDIT_SELECTIONINFO
            MENUITEM "文字格式(&F)", ID_EDIT_CHARFORMAT
            MENUITEM "默認格式(&D)", ID_EDIT_DEFCHARFORMAT
            MENUITEM "段落格式(&H)", ID_EDIT_PARAFORMAT
            MENUITEM "獲取文字(&G)", ID_EDIT_GETTEXT
        END
    END
    POPUP "檢視(&V)"
    BEGIN
        MENUITEM "工具欄(&T)", ID_TOGGLE_TOOLBAR
        MENUITEM "格式工具欄(&F)", ID_TOGGLE_FORMATBAR
        MENUITEM "標尺(&R)", ID_TOGGLE_RULER
        MENUITEM "狀態欄(&S)", ID_TOGGLE_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "選項(&O)...", ID_VIEWPROPERTIES
    END
    POPUP "插入(&I)"
    BEGIN
        MENUITEM "日期時間(&D)...", ID_DATETIME
    END
    POPUP "格式(&O)"
    BEGIN
        MENUITEM "字型(&F)..", ID_FONTSETTINGS
        MENUITEM "子彈點(&B)", ID_BULLET
        MENUITEM "段落(&P)...", ID_PARAFORMAT
        MENUITEM "標籤(&T)...", ID_TABSTOPS
        POPUP "背景(&D)"
        BEGIN
            MENUITEM "系統(&S)\tCtrl+1", ID_BACK_1
            MENUITEM "淡黃色(&P)\tCtrl+2", ID_BACK_2
        END
    END
    POPUP "幫助(&H)"
    BEGIN
        MENUITEM "關於 &Wine 寫字板", ID_ABOUT
    END
END

IDM_POPUP MENU DISCARDABLE
BEGIN
    POPUP ""
    BEGIN
        MENUITEM "剪下(&T)", ID_EDIT_CUT
        MENUITEM "複製(&C)", ID_EDIT_COPY
        MENUITEM "貼上(&P)", ID_EDIT_PASTE
        MENUITEM SEPARATOR
        MENUITEM "子彈點(&B)"       ID_BULLET
        MENUITEM "段落(&P)..."        ID_PARAFORMAT
    END
END

IDD_DATETIME DIALOG DISCARDABLE 30, 20, 130, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "日期和時間"
FONT 8, "PMingLiu"
BEGIN
    LTEXT        "可用格式",0,3,2,100,15
    LISTBOX      IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "確定(&O)",IDOK,87,12,40,12
    PUSHBUTTON   "取消(&C)",IDCANCEL,87,26,40,12
END

IDD_NEWFILE DIALOG DISCARDABLE 30, 20, 140, 80
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "新建"
FONT 8, "PMingLiu"
BEGIN
    LTEXT        "新檔案類型",0,3,2,100,15
    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "確定(&O)",IDOK,97,12,40,12
    PUSHBUTTON   "取消(&C)",IDCANCEL,97,26,40,12
END

IDD_PARAFORMAT DIALOG DISCARDABLE 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "段落格式"
FONT 8, "PMingLiu"
BEGIN
    GROUPBOX "縮進", 0, 10, 10, 120, 68
    LTEXT "左", 0, 15, 22, 40, 13
    EDITTEXT IDC_PARA_LEFT, 55, 20, 60, 13
    LTEXT "右", 0, 15, 40, 40, 13
    EDITTEXT IDC_PARA_RIGHT, 55, 38, 60, 13
    LTEXT "第一行", 0, 15, 58, 40, 13
    EDITTEXT IDC_PARA_FIRST, 55, 56, 60, 13
    LTEXT "對齊", 0, 15, 87, 40, 13
    COMBOBOX IDC_PARA_ALIGN, 55, 85, 60, 60, CBS_DROPDOWNLIST
    PUSHBUTTON "確定(&O)", IDOK, 137, 15, 50, 15
    PUSHBUTTON "取消(&C)", IDCANCEL, 137, 33, 50, 15
END

IDD_TABSTOPS DIALOG DISCARDABLE 30, 20, 200, 110
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
Caption "標籤"
FONT 8, "PMingLiu"
BEGIN
    GROUPBOX "標籤停點", 0, 10, 10, 120, 90
    COMBOBOX IDC_TABSTOPS, 20, 20, 100, 60, CBS_SIMPLE | CBS_SORT
    DEFPUSHBUTTON "添加(&A)", ID_TAB_ADD, 20, 80, 45, 15
    PUSHBUTTON "刪除(&R)", ID_TAB_DEL, 72, 80, 45, 15
    PUSHBUTTON "確定(&O)", IDOK, 137, 15, 50, 15
    PUSHBUTTON "取消(&C)", IDCANCEL, 137, 33, 50, 15
    PUSHBUTTON "全部刪除(&R)", ID_TAB_EMPTY, 137, 51, 50, 15
END

IDD_FORMATOPTS DIALOG DISCARDABLE 0, 0, 280, 110
STYLE DS_SYSMODAL
Caption ""
FONT 8, "PMingLiu"
BEGIN
    GROUPBOX "自動換行", 0, 10, 10, 130, 85
    RADIOBUTTON "按視窗寬度(&W)", IDC_PAGEFMT_WW, 18, 25, 117, 15
    RADIOBUTTON "按紙張寬度(&M)", IDC_PAGEFMT_WM, 18, 45, 117, 15
    GROUPBOX "工具欄", 0, 150, 10, 120, 85
    CHECKBOX "工具欄(&T)", IDC_PAGEFMT_TB, 160, 20, 80, 15
    CHECKBOX "格式工具欄(&F)", IDC_PAGEFMT_FB, 160, 38, 80, 15
    CHECKBOX "標尺(&R)", IDC_PAGEFMT_RU, 160, 56, 80, 15
    CHECKBOX "狀態欄(&S)", IDC_PAGEFMT_SB, 160, 74, 80, 15
    LTEXT "", IDC_PAGEFMT_ID, 0,0,0,0
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_RICHTEXT_FILES_RTF,     "RTF豐富格式 (*.rtf)"
    STRING_TEXT_FILES_TXT,         "文本檔案 (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "統一碼文本檔案 (*.txt)"
    STRING_ALL_FILES,              "所有檔案 (*.*)"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_ALIGN_LEFT,            "左"
    STRING_ALIGN_RIGHT,           "右"
    STRING_ALIGN_CENTER,          "中"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_NEWFILE_RICHTEXT,     "RTF豐富格式檔案"
    STRING_NEWFILE_TXT,          "文本檔案 "
    STRING_NEWFILE_TXT_UNICODE,  "統一碼文本檔案"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_PRINTER_FILES_PRN,        "列印檔案 (*.PRN)"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_VIEWPROPS_TITLE,          "選項"
    STRING_VIEWPROPS_TEXT,           "文本文字"
    STRING_VIEWPROPS_RICHTEXT,       "豐富格式文字"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_PREVIEW_PRINT,            "列印"
    STRING_PREVIEW_NEXTPAGE,         "下一頁"
    STRING_PREVIEW_PREVPAGE,         "上一頁"
    STRING_PREVIEW_TWOPAGES,         "雙頁"
    STRING_PREVIEW_ONEPAGE,          "單頁"
    STRING_PREVIEW_CLOSE,            "關閉"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_UNITS_CM,             "cm"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "Document"
    STRING_PROMPT_SAVE_CHANGES,  "儲存改動到 '%s'?"
    STRING_SEARCH_FINISHED,      "檔案查找結束."
    STRING_LOAD_RICHED_FAILED,   "RichEdit 裝載失敗."
    STRING_SAVE_LOSEFORMATTING,  "你已經選擇儲存為文本檔案, " \
                                 "這可能導致格式丟失. " \
                                 "你確定要這麼做嗎?"
    STRING_INVALID_NUMBER,       "數字格式無效"
    STRING_OLE_STORAGE_NOT_SUPPORTED, "不支援OLE 儲存檔案"
    STRING_WRITE_FAILED,              "不能儲存檔案."
    STRING_WRITE_ACCESS_DENIED,       "你沒有儲存檔案的權力."
    STRING_OPEN_FAILED,               "不能開啟檔案."
    STRING_OPEN_ACCESS_DENIED,        "你沒有開啟檔案的權力."
END

#pragma code_page(default)
