/*
 * Copyright 2010 Andras Kovacs
 *
 * 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 "shresdef.h"

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

LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT

MENU_001 MENU
BEGIN
	MENUITEM "Na&gy ikonok",	FCIDM_SHVIEW_BIGICON
	MENUITEM "Ki&s ikonok",		FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Részletek",		FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU
BEGIN
	POPUP ""
	BEGIN
	  POPUP "Né&zet"
	  BEGIN
	    MENUITEM "Na&gy ikonok",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "Ki&s ikonok",	FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Lista",		FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Részletek",	FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "&Ikonok elrendezése"
	  BEGIN
	    MENUITEM "&Név szerint",	0x30	/* column 0 */
	    MENUITEM "&Típus szerint",	0x32	/* column 2 */
	    MENUITEM "&Méret szerint",	0x31	/* ... */
	    MENUITEM "&Dátum szerint",	0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Automatikus elrendezés",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Ikonok igazítása",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Frissítés",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Beillesztés",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Beillesztés linkként",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Új"
	  BEGIN
	    MENUITEM "Új ma&ppa",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Új &link",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Tulajdonságok",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "&Kijelölés"		FCIDM_SHVIEW_OPEN
	  MENUITEM "B&öngészés",	FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Megnyitás",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "Ki&vágás",		FCIDM_SHVIEW_CUT
	  MENUITEM "M&ásolás",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "&Link létrehozása",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "Tö&rlés",		FCIDM_SHVIEW_DELETE
	  MENUITEM "Átneve&zés",	FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "Tula&jdonságok",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Fájl"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "Ki&lépés", IDM_CPANEL_EXIT
    END

    POPUP "Né&zet"
    BEGIN
        MENUITEM "Na&gy ikonok", FCIDM_SHVIEW_BIGICON
        MENUITEM "Ki&s ikonok", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Lista", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Részletek", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Súgó"
    BEGIN
        MENUITEM "&Vezérlőpult névjegye...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Mappa tallózása"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Mégse", 2, 134, 176, 50, 12, WS_GROUP | WS_TABSTOP
 LTEXT "", IDD_TITLE, 4, 4, 180, 12
 LTEXT "", IDD_STATUS, 4, 25, 180, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	4, 40, 180, 120
}

SHNEWBRSFORFOLDER_MSGBOX DIALOG 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Mappa tallózása"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Mappa:", IDD_FOLDER, 10, 156, 40, 12
 CONTROL "", IDD_TREEVIEW, "SysTreeView32",
	TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT |
	WS_BORDER | WS_TABSTOP,
	12, 38, 194, 105
 EDITTEXT IDD_FOLDERTEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "&Új mappa létrehozása", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Mégse", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP
}

SHELL_YESTOALL_MSGBOX DIALOG 200, 100, 280, 90
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Üzenet"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Igen", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Összesre igen", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Nem", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Mégse", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP
    ICON "", IDD_ICON, 10, 10, 16, 16
    LTEXT "", IDD_MESSAGE, 40, 10, 238, 52, 0
}

SHELL_ABOUT_MSGBOX DIALOG 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "%s névjegye"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "Wine &licensz...", IDC_ABOUT_LICENSE, 153, 113, 60, 12, WS_TABSTOP
 LISTBOX IDC_ABOUT_LISTBOX, 8, 65, 137, 82, LBS_NOTIFY | WS_VSCROLL | WS_BORDER
 ICON "", stc1, 10, 10, 30, 30
 LTEXT "", IDC_ABOUT_STATIC_TEXT1, 42, 10, 170, 10
 LTEXT "", IDC_ABOUT_STATIC_TEXT2, 42, 22, 170, 10
 LTEXT "Ezen fut: %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "A Wine-t készítették:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Írjon be programot, mappát, dokumentumot, Internetes erőforrást és a Wine megnyitja Önnek.", IDC_RUNDLG_DESCRIPTION, 36, 11, 182, 18
 LTEXT "&Megnyitás:", IDC_RUNDLG_LABEL, 7, 39, 24, 10
 CONTROL "", IDC_RUNDLG_EDITPATH, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 36, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Mégse", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Tallózás...", IDC_RUNDLG_BROWSE, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Fájl"
	IDS_SHV_COLUMN2		"Méret"
	IDS_SHV_COLUMN3		"Típus"
	IDS_SHV_COLUMN4		"Módosítva"
	IDS_SHV_COLUMN5		"Attribútumok"
	IDS_SHV_COLUMN6		"Méret"
	IDS_SHV_COLUMN7		"Elérhető méret"
	IDS_SHV_COLUMN8		"Név"
	IDS_SHV_COLUMN9		"Megjegyzések"
	IDS_SHV_COLUMN10	"Tulajdonos"
	IDS_SHV_COLUMN11	"Csoport"
	IDS_SHV_COLUMN_DELFROM	"Eredeti hely"
	IDS_SHV_COLUMN_DELDATE	"Törlési dátum"
	IDS_SHV_COL_DOCS	"Dokumentumok"
	IDS_SHV_COL_STATUS	"Állapot"
	IDS_SHV_COL_LOCATION	"Hely"
	IDS_SHV_COL_MODEL	"Modell"

        /* special folders */
	IDS_DESKTOP		"Asztal"
	IDS_MYCOMPUTER		"Sajátgép"
	IDS_RECYCLEBIN_FOLDER_NAME      "Lomtár"
	IDS_CONTROLPANEL	"Vezérlőpult"

        /* context menus */
	IDS_VIEW_LARGE		"Na&gy ikonok"
	IDS_VIEW_SMALL		"Ki&s ikonok"
	IDS_VIEW_LIST		"&Lista"
	IDS_VIEW_DETAILS	"&Részletek"
	IDS_SELECT		"Kiválasztás"
	IDS_OPEN		"Megnyitás"

	IDS_CREATEFOLDER_DENIED "Nem lehet új mappát létrehozni: Hozzáférés megtagadva."
	IDS_CREATEFOLDER_CAPTION "Hiba az új mappa létrehozása során"
	IDS_DELETEITEM_CAPTION "Fájl törlési megerősítés"
	IDS_DELETEFOLDER_CAPTION "Mappa törlési megerősítés"
	IDS_DELETEITEM_TEXT "Biztos hogy törölni szeretné ezt: '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Biztos hogy törölni szeretné ezt a(z) %1 elemet?"
	IDS_DELETESELECTED_TEXT "Biztos hogy törölni szeretné a kiváalsztott elem(eke)t?"
	IDS_TRASHITEM_TEXT "Biztos hogy bele szeretné helyezni ezt: '%1' a lomtárba?"
	IDS_TRASHFOLDER_TEXT "Biztos hogy bele szeretné helyezni ezt: '%1' és teljes tartalmát a lomtárba?"
	IDS_TRASHMULTIPLE_TEXT "Biztos ohgy bele szeretné helyezni ezt a(z) %1 elemet a lomtárba?"
	IDS_CANTTRASH_TEXT "A(z) '%1' elem nem helyezhető bele a lomtárba. Szeretné törölni ehelyett?"
	IDS_OVERWRITEFILE_TEXT "Ez a mappa már tartalmaz egy '%1' nevű fájlt.\n\nLe szeretné cserélni?"
	IDS_OVERWRITEFILE_CAPTION "Fájl felülírási megerősítés"
	IDS_OVERWRITEFOLDER_TEXT "Ez a mapp már tartalmaz egy '%1' nevű mappát.\n\n"\
	    "Ha a célmappában lévő  fájloknak egyezik a nevük a kiválasztott mappában\n"\
	    "akkor le lesznek cserélve. Még mindig folytatni szeretné a mappa\n"\
	    "másolását vagy áthelyezését?"

        /* message box strings */
        IDS_RESTART_TITLE       "Újraindítás"
        IDS_RESTART_PROMPT      "Szimulálni szeretne egy Windows újraindítást?"
        IDS_SHUTDOWN_TITLE      "Leállítás"
        IDS_SHUTDOWN_PROMPT     "Le szeretné állítani a Wine munkamenetét?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Nem tudom megjeleníteni a fájl futtatás dialógusablakot (belső hiba)"
        IDS_RUNDLG_BROWSE_ERROR    "Nem tudom megjeleníteni a tallózás dialógusablakot (belső hiba)"
        IDS_RUNDLG_BROWSE_CAPTION  "Tallózás"
        IDS_RUNDLG_BROWSE_FILTER   "Futtatható fájlok\0*.exe\0Összes fájl\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Start Menu\\Programs"
	IDS_PERSONAL                "My Documents"
	IDS_FAVORITES               "Favorites"
	IDS_STARTUP                 "Start Menu\\Programs\\StartUp"
	IDS_RECENT                  "Recent"
	IDS_SENDTO                  "SendTo"
	IDS_STARTMENU               "Start Menu"
	IDS_MYMUSIC                 "My Music"
	IDS_MYVIDEO                 "My Videos"
	IDS_DESKTOPDIRECTORY        "Desktop"
	IDS_NETHOOD                 "NetHood"
	IDS_TEMPLATES               "Templates"
	IDS_APPDATA                 "Application Data"
	IDS_PRINTHOOD               "PrintHood"
	IDS_LOCAL_APPDATA           "Local Settings\\Application Data"
	IDS_INTERNET_CACHE          "Local Settings\\Temporary Internet Files"
	IDS_COOKIES                 "Cookies"
	IDS_HISTORY                 "Local Settings\\History"
	IDS_PROGRAM_FILES           "Program Files"
	IDS_MYPICTURES              "My Pictures"
	IDS_PROGRAM_FILES_COMMON    "Program Files\\Common Files"
	IDS_COMMON_DOCUMENTS        "Documents"
	IDS_ADMINTOOLS              "Start Menu\\Programs\\Administrative Tools"
	IDS_COMMON_MUSIC            "Music"
	IDS_COMMON_PICTURES         "Pictures"
	IDS_COMMON_VIDEO            "Videos"
	IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"

	IDS_NEWFOLDER		"Új mappa"

	IDS_CPANEL_TITLE            "Wine vezérlőpult"
	IDS_CPANEL_NAME             "Név"
	IDS_CPANEL_DESCRIPTION      "Leírás"

        IDS_SHLEXEC_NOASSOC         "Nincs Windowsos program társítva ennek a fájltípusnak a megnyitásához."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Wine Licensz"
IDS_LICENSE,
"A Wine szabad szoftver; szabadon terjesztheti, vagy \
módosíthatja a GNU Lesser General Public Liszenc \
feltételei szerint, amit a Free Software Foundation \
készített; mind a 2.1 verziójú licensz, vagy \
(választása szerint) bármely későbbi verzió használható.\n\n\
A Winet abban a reményben terjesztik, hogy hasznos lesz, \
ugyanakkor SEMILYEN GARANCIA NINCS RÁ; még garancia az \
ELADHATÓSÁGRA, illetve az ALKALMASSÁG AZ ELADHATÓSÁGI \
SZÁNDÉKRA sem. Nézze meg a GNU Lesser General Public \
Licenszt a további részletekért.\n\n\
Önnek kapnia kellett egy másolatot a GNU Lesser General \
Public Licenszből, ha nem írjon a Free Software \
Foundation, Inc-nek: 51 Franklin St, Fifth Floor, \
Boston, MA 02110-1301, USA."
}
