/*
 * Copyright 2008 by Katayama Hirofumi MZ
 *
 * 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
 */

/* UTF-8 */
#pragma code_page(65001)

LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT

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 "クリア(&C)\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 "読み取り専用(&O)",            ID_EDIT_READONLY
        MENUITEM "変更あり(&M)",                ID_EDIT_MODIFIED
        MENUITEM SEPARATOR
        POPUP "E&xtras"
        BEGIN
            MENUITEM "Selection &info",         ID_EDIT_SELECTIONINFO
            MENUITEM "Character &format",       ID_EDIT_CHARFORMAT
            MENUITEM "&Def. char format",       ID_EDIT_DEFCHARFORMAT
            MENUITEM "Paragrap&h format",       ID_EDIT_PARAFORMAT
            MENUITEM "&Get text",               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 "&PostThat yellowish\tCtrl+2", ID_BACK_2
        END
    END
    POPUP "ヘルプ(&H)"
    BEGIN
        MENUITEM "Wine Wordpadについて(&A)"      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 Shell Dlg"
BEGIN
    LTEXT        "利用できる形式",0,3,2,100,15
    LISTBOX      IDC_DATETIME,3,12,80,65,LBS_NOINTEGRALHEIGHT|LBS_NOTIFY
    PUSHBUTTON   "&OK",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 Shell Dlg"
BEGIN
    LTEXT        "新しい文書形式",0,3,2,100,15
    LISTBOX      IDC_NEWFILE,3,12,90,65,LBS_NOINTEGRALHEIGHT
    PUSHBUTTON   "&OK",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 Shell Dlg"
BEGIN
    GROUPBOX "インデント", 0, 10, 10, 120, 68
    LTEXT "左(&L)", 0, 15, 22, 40, 13
    EDITTEXT IDC_PARA_LEFT, 55, 20, 60, 13
    LTEXT "右(&R)", 0, 15, 40, 40, 13
    EDITTEXT IDC_PARA_RIGHT, 55, 38, 60, 13
    LTEXT "最初の行(&F)", 0, 15, 58, 40, 13
    EDITTEXT IDC_PARA_FIRST, 55, 56, 60, 13
    LTEXT "整列(&A)", 0, 15, 87, 40, 13
    COMBOBOX IDC_PARA_ALIGN, 55, 85, 60, 60, CBS_DROPDOWNLIST
    PUSHBUTTON "&OK", 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 Shell Dlg"
BEGIN
    GROUPBOX "タブの停止位置(&T)", 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 "&OK", IDOK, 137, 15, 50, 15
    PUSHBUTTON "キャンセル(&C)", IDCANCEL, 137, 33, 50, 15
    PUSHBUTTON "すべて削除(&L)", ID_TAB_EMPTY, 137, 51, 50, 15
END

IDD_FORMATOPTS DIALOG DISCARDABLE 0, 0, 280, 110
STYLE DS_SYSMODAL
CAPTION ""
FONT 9, "MS Shell Dlg"
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)"
    STRING_TEXT_FILES_TXT,         "テキスト文書 (*.txt)"
    STRING_TEXT_FILES_UNICODE_TXT, "Unicodeテキスト文書(*.txt)"
    STRING_ALL_FILES,              "すべてのファイル (*.*)"
END

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

STRINGTABLE DISCARDABLE
BEGIN
    STRING_NEWFILE_RICHTEXT,     "リッチテキスト文書"
    STRING_NEWFILE_TXT,          "テキスト文書"
    STRING_NEWFILE_TXT_UNICODE,  "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,         "2ページ"
    STRING_PREVIEW_ONEPAGE,          "1ページ"
    STRING_PREVIEW_CLOSE,            "閉じる"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_UNITS_CM,             "cm"
END

STRINGTABLE DISCARDABLE
BEGIN
    STRING_DEFAULT_FILENAME,     "文書"
    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)
