/*
 * Regedit resources
 *
 * Copyright 2004 Hajime Segawa
 *
 * 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

/*
 * Menu
 */

IDR_REGEDIT_MENU MENU DISCARDABLE
BEGIN
    POPUP "レジストリ(&R)"
    BEGIN
        MENUITEM "レジストリのインポート(&I)...",    ID_REGISTRY_IMPORTREGISTRYFILE
        MENUITEM "レジストリのエクスポート(&E)...",    ID_REGISTRY_EXPORTREGISTRYFILE
        MENUITEM SEPARATOR
        MENUITEM "ネットワークレジストリに接続(&C)...", ID_REGISTRY_CONNECTNETWORKREGISTRY, GRAYED
        MENUITEM "ネットワークレジストリから切断(&D)...", ID_REGISTRY_DISCONNECTNETWORKREGISTRY, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "印刷(&P)\tCtrl+P",              ID_REGISTRY_PRINT, GRAYED
        MENUITEM SEPARATOR
        MENUITEM "終了(&x)",                       ID_REGISTRY_EXIT
    END
    POPUP "編集(&E)"
    BEGIN
        MENUITEM "変更(&M)",                     ID_EDIT_MODIFY
        MENUITEM SEPARATOR
        POPUP "新規(&N)"
        BEGIN
            MENUITEM "キー(&K)",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "文字列値(&S)",               ID_EDIT_NEW_STRINGVALUE
            MENUITEM "バイナリ値(&B)",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "DWORD値(&D)",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "複数行文字列値(&M)",         ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "削除(&D)\tDel",                ID_EDIT_DELETE
        MENUITEM "名前の変更(&R)\tF2",                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "キー名をコピー(&C)",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "検索(&F)\tCtrl+F",               ID_EDIT_FIND, GRAYED
        MENUITEM "次の検索候補(&x)\tF3",              ID_EDIT_FINDNEXT, GRAYED
    END
    POPUP "表示(&V)"
    BEGIN
        MENUITEM "ステータスバー(&B)",                 ID_VIEW_STATUSBAR
        MENUITEM SEPARATOR
        MENUITEM "分割(&l)",                      ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "リフレッシュ(&R)\tF5",                ID_VIEW_REFRESH
    END
    POPUP "お気に入り(&F)"
    BEGIN
        MENUITEM "お気に入りに追加(&A)...",          ID_FAVORITES_ADDTOFAVORITES
        MENUITEM "お気に入りから削除(&R)...",           ID_FAVORITES_REMOVEFAVORITE
    END
    POPUP "ヘルプ(&H)"
    BEGIN
        MENUITEM "ヘルプ(&H)\tF1",            ID_HELP_HELPTOPICS
        MENUITEM SEPARATOR
        MENUITEM "バージョン情報(&A)",      ID_HELP_ABOUT
    END
END

IDR_POPUP_MENUS MENU DISCARDABLE
BEGIN
  POPUP ""
  BEGIN
	MENUITEM "変更(&M)",                     ID_EDIT_MODIFY
	MENUITEM "バイナリデータを変更",          ID_EDIT_MODIFY_BIN
	MENUITEM SEPARATOR
	MENUITEM "削除(&D)\tDel",                ID_EDIT_DELETE
	MENUITEM "名前の変更(&R)",                     ID_EDIT_RENAME
  END
  POPUP ""
  BEGIN
        POPUP "新規(&N)"
        BEGIN
            MENUITEM "キー(&K)",                        ID_EDIT_NEW_KEY
            MENUITEM SEPARATOR
            MENUITEM "文字列値(&S)",               ID_EDIT_NEW_STRINGVALUE
            MENUITEM "バイナリ値(&B)",               ID_EDIT_NEW_BINARYVALUE
            MENUITEM "DWORD値(&D)",                ID_EDIT_NEW_DWORDVALUE
            MENUITEM "複数行文字列値(&M)",         ID_EDIT_NEW_MULTI_STRINGVALUE
        END
        MENUITEM SEPARATOR
        MENUITEM "削除(&D)\tDel",                ID_EDIT_DELETE
        MENUITEM "名前の変更(&R)\tF2",                 ID_EDIT_RENAME
        MENUITEM SEPARATOR
        MENUITEM "エクスポート(&E)...",               ID_EDIT_EXPORT
        MENUITEM "キー名をコピー(&C)",              ID_EDIT_COPYKEYNAME
        MENUITEM SEPARATOR
        MENUITEM "検索(&F)\tCtrl+F",               ID_EDIT_FIND, GRAYED
  END
END


/*
 * Dialog
 */

IDD_EXPORT_TEMPLATE DIALOG DISCARDABLE  50, 50, 278, 54
STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS |
    WS_BORDER
FONT 9, "MS Shell Dlg"
BEGIN
    GROUPBOX "レジストリのエクスポート", IDC_EXPORT_BASE, 6, 6, 266, 42, WS_GROUP
    AUTORADIOBUTTON "すべて(&A)", IDC_EXPORT_ALL, 12, 15, 244, 12
    AUTORADIOBUTTON "選択された部分(&E):", IDC_EXPORT_SELECTED, 12, 30, 70, 12
    EDITTEXT IDC_EXPORT_PATH, 82, 30, 184, 12
END

IDD_FIND DIALOG DISCARDABLE  22, 17, 220, 85
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "検索"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "検索:",IDC_STATIC,5,7,119,8
    EDITTEXT        IDC_VALUE_NAME,40,5,125,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    LTEXT           "検索対象:",IDC_STATIC,5, 22, 119, 8
    CHECKBOX        "キー", IDC_FIND_KEYS, 5, 34, 90, 10, WS_TABSTOP | WS_GROUP | BS_AUTOCHECKBOX
    CHECKBOX        "値の名前", IDC_FIND_VALUES, 5, 46, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "値の中身", IDC_FIND_CONTENT, 5, 58, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    CHECKBOX        "完全に一致するものだけ", IDC_FIND_WHOLE, 5, 70, 90, 10, WS_TABSTOP | BS_AUTOCHECKBOX
    DEFPUSHBUTTON   "検索",IDOK,175,5,40,15,WS_GROUP
    PUSHBUTTON      "閉じる",IDCANCEL,175,24,40,15, WS_GROUP
END

IDD_ADDFAVORITE DIALOG DISCARDABLE  22, 17, 210, 55
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "お気に入りに追加"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "名前:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,120,36,40,15,WS_GROUP
    PUSHBUTTON      "キャンセル",IDCANCEL,165,36,40,15,WS_GROUP
END

IDD_DELFAVORITE DIALOG DISCARDABLE  22, 17, 210, 90
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "お気に入りの削除"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "名前:",IDC_STATIC,5,5,119,8
    LISTBOX         IDC_NAME_LIST,5,15,200,52, WS_BORDER | WS_TABSTOP | LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL
    DEFPUSHBUTTON   "OK",IDOK,120,72,40,15,WS_GROUP
    PUSHBUTTON      "キャンセル",IDCANCEL,165,72,40,15,WS_GROUP
END

IDD_EDIT_STRING DIALOG DISCARDABLE  22, 17, 210, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "文字列の編集"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "値の名前:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "データ:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK",IDOK,140,60,30,11,WS_GROUP
    PUSHBUTTON   "キャンセル",IDCANCEL,175,60,30,11,WS_GROUP
END

IDD_EDIT_DWORD DIALOG DISCARDABLE  22, 17, 210, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "DWORD値の編集"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "値の名前:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL | WS_DISABLED
    LTEXT           "データ:",IDC_STATIC,5,30,90,8
    EDITTEXT        IDC_VALUE_DATA,5,40,90,12, WS_BORDER | WS_TABSTOP
    GROUPBOX        "ベース", IDC_DWORD_BASE, 120, 30, 85, 37, BS_GROUPBOX
    AUTORADIOBUTTON "16進数", IDC_DWORD_HEX, 130, 40, 60, 10, WS_TABSTOP
    AUTORADIOBUTTON "10進数", IDC_DWORD_DEC, 130, 52, 60, 10, WS_TABSTOP
    DEFPUSHBUTTON   "OK",IDOK,140,80,30,11,WS_GROUP
    PUSHBUTTON   "キャンセル",IDCANCEL,175,80,30,11,WS_GROUP
END

IDD_EDIT_BINARY DIALOG DISCARDABLE  22, 17, 170, 100
STYLE DS_MODALFRAME | DS_NOIDLEMSG | WS_CAPTION | WS_SYSMENU
CAPTION "バイナリ値の編集"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "値の名前:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,160,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "値のデータ:",IDC_STATIC,5,30,90,8
    CONTROL         "",IDC_VALUE_DATA,"HexEdit",WS_TABSTOP,5,40,160,40
    DEFPUSHBUTTON   "OK",IDOK,80,83,40,15,WS_GROUP
    PUSHBUTTON   "キャンセル",IDCANCEL,125,83,40,15,WS_GROUP
END

IDD_EDIT_MULTI_STRING DIALOG DISCARDABLE  22, 17, 210, 175
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "複数行文字列の編集"
FONT 9, "MS Shell Dlg"
BEGIN
    LTEXT           "値の名前:",IDC_STATIC,5,5,119,8
    EDITTEXT        IDC_VALUE_NAME,5,15,200,12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL| WS_DISABLED
    LTEXT           "値のデータ:",IDC_STATIC,5,30,119,8
    EDITTEXT        IDC_VALUE_DATA,5,40,200,112, WS_BORDER | WS_TABSTOP | WS_HSCROLL | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN
    DEFPUSHBUTTON   "OK",IDOK,120,156,40,15,WS_GROUP
    PUSHBUTTON   "キャンセル",IDCANCEL,165,156,40,15,WS_GROUP
END

/*
 * String Table
 */

STRINGTABLE DISCARDABLE
BEGIN
    IDS_LIST_COLUMN_NAME    "名前"
    IDS_LIST_COLUMN_TYPE    "タイプ"
    IDS_LIST_COLUMN_DATA    "データ"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_APP_TITLE           "レジストリエディタ"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_MENU        "レジストリ全体を操作するコマンド"
    ID_EDIT_MENU            "値とキーを編集するコマンド"
    ID_VIEW_MENU            "レジストリウィンドウをカスタマイズするコマンド"
    ID_FAVORITES_MENU       "よく使うキーにアクセスするコマンド"
    ID_HELP_MENU            "レジストリエディタについてのヘルプや情報を表示するコマンド"
    ID_EDIT_NEW_MENU        "新しいキーや値を作成するコマンド"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_EDIT_MODIFY          "値のデータを変更"
    ID_EDIT_NEW_KEY         "新しいキーを追加"
    ID_EDIT_NEW_STRINGVALUE "新しい文字列値を追加"
    ID_EDIT_NEW_BINARYVALUE "新しいバイナリを追加"
    ID_EDIT_NEW_DWORDVALUE  "新しいDWORD値を追加"
    ID_EDIT_NEW_MULTI_STRINGVALUE "新しい複数行文字列値を追加"
    ID_REGISTRY_IMPORTREGISTRYFILE "テキストファイルをレジストリにインポート"
    ID_REGISTRY_EXPORTREGISTRYFILE
                            "レジストリの一部または全部をテキストファイルにエクスポート"
    ID_REGISTRY_CONNECTNETWORKREGISTRY
                            "リモートコンピュータのレジストリに接続"
    ID_REGISTRY_DISCONNECTNETWORKREGISTRY
                            "リモートコンピュータのレジストリから切断"
    ID_REGISTRY_PRINT       "レジストリの一部または全部を印刷"
/*    ID_HELP_HELPTOPICS      "レジストリエディタのヘルプを開く" */
    ID_HELP_ABOUT           "プログラムの情報、バージョン、著作者を表示"
END

STRINGTABLE DISCARDABLE
BEGIN
    ID_REGISTRY_EXIT        "レジストリエディタを終了"
    ID_FAVORITES_ADDTOFAVORITES "キーをお気に入りに追加"
    ID_FAVORITES_REMOVEFAVORITE "キーをお気に入りから削除"
    ID_VIEW_STATUSBAR       "ステータスバーを表示・隠す"
    ID_VIEW_SPLIT           "ペイン間のしきりの位置を変更"
    ID_VIEW_REFRESH         "ウィンドウをリフレッシュ"
    ID_EDIT_DELETE          "選択した項目を削除"
    ID_EDIT_RENAME          "選択した項目の名前を変更"
    ID_EDIT_COPYKEYNAME     "選択したキーの名前をクリップボードにコピー"
    ID_EDIT_FIND            "キー、値、データから文字列を検索"
    ID_EDIT_FINDNEXT        "以前の検索条件において次の候補を検索"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_ERROR		    "エラー"
    IDS_BAD_KEY		    "キー '%s'が所得できません"
    IDS_BAD_VALUE           "値 '%s'が所得できません"
    IDS_UNSUPPORTED_TYPE    "このタイプのキーは編集できません (%u)"
    IDS_TOO_BIG_VALUE       "値が大きすぎます (%u)"
    IDS_DELETE_BOX_TITLE    "値の削除確認"
    IDS_DELETE_BOX_TEXT     "本当に '%s'を削除しますか?"
    IDS_DELETE_BOX_TEXT_MULTIPLE "これらの値を削除しますか?"
    IDS_NEWKEY              "新しいキー #%d"
    IDS_NEWVALUE            "新しい値 #%d"
    IDS_NOTFOUND            "検索文字列 '%s'が見つかりません"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_FILEDIALOG_IMPORT_TITLE   "レジストリ ファイルのインポート"
    IDS_FILEDIALOG_EXPORT_TITLE   "レジストリ ファイルのエクスポート"
    IDS_FILEDIALOG_FILTER         "登録ファイル\0*.reg\0Win9x/NT4 登録ファイル (REGEDIT4)\0*.reg\0すべてのファイル (*.*)\0*.*\0\0"
END

STRINGTABLE DISCARDABLE
BEGIN
    IDS_REGISTRY_ROOT_NAME           "マイ コンピュータ"
    IDS_REGISTRY_DEFAULT_VALUE       "(既定)"
    IDS_REGISTRY_VALUE_NOT_SET       "(値の設定なし)"
    IDS_REGISTRY_VALUE_CANT_DISPLAY  "(cannot display value)"
    IDS_REGISTRY_UNKNOWN_TYPE        "(unknown %d)"
END

/*****************************************************************/

/*
 * TEXTINCLUDE
 */

1 TEXTINCLUDE DISCARDABLE
BEGIN
    "resource.h\0"
END

/*****************************************************************/

#pragma code_page(default)
