/*
 * Copyright 1998 Juergen Schmied
 * Copyright 2008 Michael Stefaniuc
 *
 * 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"

LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

MENU_001 MENU DISCARDABLE
BEGIN
        MENUITEM "Pictograme &mari",    FCIDM_SHVIEW_BIGICON
        MENUITEM "Pictograme m&ici",    FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Listă",              FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Detalii",            FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
        POPUP ""
        BEGIN
          POPUP "&Mod afișare"
          BEGIN
            MENUITEM "Pictograme &mari",        FCIDM_SHVIEW_BIGICON
            MENUITEM "Pictograme m&ici",        FCIDM_SHVIEW_SMALLICON
            MENUITEM "&Listă",                  FCIDM_SHVIEW_LISTVIEW
            MENUITEM "&Detalii",                FCIDM_SHVIEW_REPORTVIEW
          END
          MENUITEM SEPARATOR
          POPUP "Aranjează &pictogramele"
          BEGIN
            MENUITEM "După &nume",      0x30  /* column 0 */
            MENUITEM "După &tip",       0x32  /* column 2 */
            MENUITEM "După &mărime",    0x31  /* ... */
            MENUITEM "După &dată",      0x33
            MENUITEM SEPARATOR
            MENUITEM "&Aranjează automat",      FCIDM_SHVIEW_AUTOARRANGE
          END
          MENUITEM "Aliniază pictogramele",     FCIDM_SHVIEW_SNAPTOGRID
          MENUITEM SEPARATOR
          MENUITEM "Actualizează",              FCIDM_SHVIEW_REFRESH
          MENUITEM SEPARATOR
          MENUITEM "Inserează",                 FCIDM_SHVIEW_INSERT
          MENUITEM "Inserează ca link",         FCIDM_SHVIEW_INSERTLINK
          MENUITEM SEPARATOR
          POPUP "Nou"
          BEGIN
            MENUITEM "&Dosar nou",              FCIDM_SHVIEW_NEWFOLDER
            MENUITEM "&Link nou",               FCIDM_SHVIEW_NEWLINK
            MENUITEM SEPARATOR
          END
          MENUITEM SEPARATOR
          MENUITEM "Proprietăți",               FCIDM_SHVIEW_PROPERTIES
        END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
        POPUP ""
        BEGIN
          MENUITEM "&Selecție"          FCIDM_SHVIEW_OPEN
          MENUITEM "E&xploreză",        FCIDM_SHVIEW_EXPLORE
          MENUITEM "&Deschide",         FCIDM_SHVIEW_OPEN
          MENUITEM SEPARATOR
          MENUITEM "Dec&upează",        FCIDM_SHVIEW_CUT
          MENUITEM "&Copiază",          FCIDM_SHVIEW_COPY
          MENUITEM SEPARATOR
          MENUITEM "Crează &link",      FCIDM_SHVIEW_CREATELINK
          MENUITEM "&Șterge",           FCIDM_SHVIEW_DELETE
          MENUITEM "&Redenumește",      FCIDM_SHVIEW_RENAME
          MENUITEM SEPARATOR
          MENUITEM "&Proprietăți",      FCIDM_SHVIEW_PROPERTIES
        END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&File"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "E&xit", IDM_CPANEL_EXIT
    END

    POPUP "&View"
    BEGIN
        MENUITEM "Pictograme &mari",    FCIDM_SHVIEW_BIGICON
        MENUITEM "Pictograme m&ici",    FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Listă",              FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Detalii",            FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Help"
    BEGIN
        MENUITEM "&About Control Panel...", IDM_CPANEL_ABOUT
    END
END

SHBRSFORFOLDER_MSGBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 15, 40, 188, 192
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Selectare dosar"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Renunță", 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 LOADONCALL MOVEABLE DISCARDABLE 15, 40, 218, 196
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | DS_MODALFRAME | DS_SETFONT | DS_3DLOOK
CAPTION "Selectare dosar"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Dosar:", 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 "&Creează un dosar nou", IDD_MAKENEWFOLDER, 12, 174, 80, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "OK", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Renunță", 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 "Mesaj"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Da", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Da la &toate", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Nu", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Renunță", 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 LOADONCALL MOVEABLE DISCARDABLE 15, 40, 220, 152
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Despre %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "OK", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "&Licența Wine...", 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 "Rulând pe %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Wine a fost vinificat de:", IDC_ABOUT_WINE_TEXT, 8, 54, 204, 10
}

SHELL_RUN_DLG DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 227, 95
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Shell Dlg"
{
 ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Introduceți numele unui program, dosar, document sau resursă internet și Wine îl va deschide.", 12289, 36, 11, 182, 18
 LTEXT "&Deschide:", 12305, 7, 39, 29, 10
 CONTROL "", 12298, "COMBOBOX", WS_TABSTOP | WS_GROUP | WS_VSCROLL | WS_VISIBLE | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_DROPDOWN, 39, 37, 183, 100
 DEFPUSHBUTTON "OK", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Renunță", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Navighează...", 12288, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
        IDS_SHV_COLUMN1         "Fișier"
        IDS_SHV_COLUMN2         "Mărime"
        IDS_SHV_COLUMN3         "Tip"
        IDS_SHV_COLUMN4         "Modificat"
        IDS_SHV_COLUMN5         "Atribute"
        IDS_SHV_COLUMN6         "Mărime"
        IDS_SHV_COLUMN7         "Spațiu disponibil"
        IDS_SHV_COLUMN8         "Nume"
        IDS_SHV_COLUMN9         "Comentarii"
        IDS_SHV_COLUMN10        "Proprietar"
        IDS_SHV_COLUMN11        "Grup"
        IDS_SHV_COLUMN_DELFROM  "Locația originală"
        IDS_SHV_COLUMN_DELDATE  "Data ștergerii"
        IDS_SHV_COL_DOCS        "Documente"
        IDS_SHV_COL_STATUS      "Stare"
        IDS_SHV_COL_LOCATION    "Locație"
        IDS_SHV_COL_MODEL       "Model"

        /* special folders */
        IDS_DESKTOP             "Birou"
        IDS_MYCOMPUTER          "Computerul meu"
        IDS_RECYCLEBIN_FOLDER_NAME      "Gunoi"
	IDS_CONTROLPANEL	"Panoul de control"

        /* context menus */
        IDS_VIEW_LARGE          "Pictograme &mari"
        IDS_VIEW_SMALL          "Pictograme m&ici"
        IDS_VIEW_LIST           "&Listă"
        IDS_VIEW_DETAILS        "&Detalii"
        IDS_SELECT              "Selectează"
        IDS_OPEN                "Deschide"

	IDS_CREATEFOLDER_DENIED "Nu se poate crea un nou dosar: Permisiune refuzată."
	IDS_CREATEFOLDER_CAPTION "Eroare la crearea unui nou dosar"
	IDS_DELETEITEM_CAPTION "Confirmați ștergerea fișierului"
	IDS_DELETEFOLDER_CAPTION "Confirmați ștergerea dosarului"
	IDS_DELETEITEM_TEXT "Sunteți sigur că vreți să ștergeți '%1'?"
	IDS_DELETEMULTIPLE_TEXT "Sunteți sigur că vreți să ștergeți acest %1 elemente?"
	IDS_DELETESELECTED_TEXT "Sunteți sigur că vreți să ștergeți elementele selectate?"
	IDS_TRASHITEM_TEXT "Sunteți sigur că vreți să trimiteți '%1' la gunoi?"
	IDS_TRASHFOLDER_TEXT "Sunteți sigur că vreți să trimiteți '%1' și tot conținutul lui la gunoi?"
	IDS_TRASHMULTIPLE_TEXT "Sunteți sigur că vreți să trimiteți aceste %1 elemente la gunoi?"
	IDS_CANTTRASH_TEXT "Elementul '%1' nu poate fi trimis la gunoi. Vreți să îl ștergeți?"
	IDS_OVERWRITEFILE_TEXT "Acest dosar conține deja un fișier numit '%1'.\n\nVreți să îl înlocuiți?"
	IDS_OVERWRITEFILE_CAPTION "Confirmați suprascrierea fișierului"
	IDS_OVERWRITEFOLDER_TEXT "Acest dosar conține deja un dosar numit '%1'.\n\n"\
	    "Dacă fișierele din dosarul destinație au același nume cu fișierele din dosarul\n"\
	    "selectat vor fi înlocuite. Mai vreți să mutați sau să copiați dosarul?"

        /* message box strings */
        IDS_RESTART_TITLE       "Repornire"
        IDS_RESTART_PROMPT      "Vreți să simulați o repornire de Windows?"
        IDS_SHUTDOWN_TITLE      "Oprire"
        IDS_SHUTDOWN_PROMPT     "Vreți să opriți sesiunea de Wine?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Nu se poate afișa caseta de rulare fișier (eroare internă)"
        IDS_RUNDLG_BROWSE_ERROR    "Nu se poate afișa caseta de navigare (eroare internă)"
        IDS_RUNDLG_BROWSE_CAPTION  "Navighează"
        IDS_RUNDLG_BROWSE_FILTER   "Fișiere executabile\0*.exe\0Toate fișierele\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Meniu Start\\Programe"
	IDS_PERSONAL                "Documentele mele"
	IDS_FAVORITES               "Favorite"
	IDS_STARTUP                 "Meniu Start\\Programe\\AutoStart"
	IDS_RECENT                  "Recente"
	IDS_SENDTO                  "SendTo"
	IDS_STARTMENU               "Meniu Start"
	IDS_MYMUSIC                 "Muzica mea"
	IDS_MYVIDEO                 "Filmele mele"
	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        "Documente"
	IDS_ADMINTOOLS              "Meniu Start\\Programe\\Scule administrative"
	IDS_COMMON_MUSIC            "Documente\\Muzica mea"
	IDS_COMMON_PICTURES         "Documente\\Pozele mele"
	IDS_COMMON_VIDEO            "Documente\\Filmele mele"
	IDS_CDBURN_AREA             "Local Settings\\Application Data\\Microsoft\\CD Burning"

	IDS_NEWFOLDER		"Dosar nou"

	IDS_CPANEL_TITLE        "Panoul de control al Wine"
	IDS_CPANEL_NAME         "Nume"
	IDS_CPANEL_DESCRIPTION  "Descriere"

	IDS_SHLEXEC_NOASSOC     "Nici un program Windows nu este configurat să deschidă fișiere de acest tip."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Licența Wine"
IDS_LICENSE,
"Wine 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.\n\n\
Wine 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.\n\n\
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."
}
