/*
 * WineFile
 *
 * Copyright 2000 Martin Fuchs
 * Copyright 2002 Steven Edwards
 * Copyright 2002 Alexandre Julliard
 * Copyright 2010 Claudia Cotună
 *                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 "resource.h"

LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL

#pragma code_page(65001)

/* Menu */

IDM_WINEFILE MENU FIXED IMPURE
{
    POPUP "&Fișier"  {
        MENUITEM "Desc&hide\tEnter",                    ID_ACTIVATE
        MENUITEM "&Mutare...\tF7",                      ID_FILE_MOVE
        MENUITEM "&Copiere...\tF8",                     ID_FILE_COPY
        MENUITEM "În cl&ipboard...\tF9",                118
        MENUITEM "Șter&ge\tDel",                        ID_FILE_DELETE
        MENUITEM "Rede&numire...",                      109
        MENUITEM "Proprietăț&i...\tAlt+Enter",          ID_EDIT_PROPERTIES
        MENUITEM SEPARATOR
        MENUITEM "C&omprimare...",                      119
        MENUITEM "Dec&omprimare...",                    120
        MENUITEM SEPARATOR
        MENUITEM "E&xecutare...",                       ID_RUN
        MENUITEM "Im&primare...",                       102
        MENUITEM "Asociere...",                         103
        MENUITEM SEPARATOR
        MENUITEM "Cr&eare director...",                 111
        MENUITEM "Că&utare...",                         104
        MENUITEM "&Selectare fișiere...",               116
        MENUITEM SEPARATOR
#ifndef _NO_EXTENSIONS
        MENUITEM "Înc&hide\Alt+X",                      ID_FILE_EXIT
#else
        MENUITEM "Înc&hide",                            ID_FILE_EXIT
#endif
    }

    POPUP "&Disc"  {
        MENUITEM "&Copiere disc...",                    201
        MENUITEM "E&tichetare disc...",                 202
        MENUITEM SEPARATOR
        MENUITEM "&Formatare disc...",                  ID_FORMAT_DISK
#ifdef _WIN95
        MENUITEM "Creare disc siste&m...",              -1 /*TODO*/
#endif
        MENUITEM SEPARATOR
        MENUITEM "Co&nectează unitatea de rețea",       ID_CONNECT_NETWORK_DRIVE
        MENUITEM "&Deconectează unitatea de rețea",     ID_DISCONNECT_NETWORK_DRIVE
        MENUITEM SEPARATOR
        MENUITEM "Partajare ca...",                     254
        MENUITEM "Elimina&re partajare...",             255
        MENUITEM SEPARATOR
        MENUITEM "&Selectare unitate...",               251
    }

    POPUP "Di&rectoare"  {
        MENUITEM "&Nivelul următor\t+",                 301
        MENUITEM "Extinde ar&borele\t*",                302
        MENUITEM "Extinde t&ot\tStrg+*",                303
        MENUITEM "Restrân&ge arborele\t-",              304
        MENUITEM SEPARATOR
        MENUITEM "&Marchează copiii",                   505
    }

    POPUP "&Vizualizare"  {
        MENUITEM "Arbo&re și director",                 413
        MENUITEM "Numai arbor&ele",                     411
        MENUITEM "Numai direct&orul",                   412
        MENUITEM SEPARATOR
        MENUITEM "Sep&ară",                             ID_VIEW_SPLIT
        MENUITEM SEPARATOR
        MENUITEM "&Nume",                               ID_VIEW_NAME
        MENUITEM "To&ate detaliile ",                   ID_VIEW_ALL_ATTRIBUTES, CHECKED
        MENUITEM "Detalii &parțiale...",                ID_VIEW_SELECTED_ATTRIBUTES
        MENUITEM SEPARATOR
        MENUITEM "&Sortează după nume",                 ID_VIEW_SORT_NAME
        MENUITEM "Sortează după &tip",                  ID_VIEW_SORT_TYPE
        MENUITEM "Sortează după &mărime",               ID_VIEW_SORT_SIZE
        MENUITEM "Sortează după &dată",                 ID_VIEW_SORT_DATE
        MENUITEM SEPARATOR
        MENUITEM "Filtrare după &...",                  ID_VIEW_FILTER
    }

    POPUP "&Opțiuni"  {
        MENUITEM "&Confirmare...",                      501
        MENUITEM "&Font...",                            ID_SELECT_FONT
        MENUITEM "Personalizare &bară de unelte...",    512
        MENUITEM SEPARATOR
        MENUITEM "Bara de unel&te",                     ID_VIEW_TOOL_BAR, CHECKED
        MENUITEM "Bara &de unitate",                    ID_VIEW_DRIVE_BAR, CHECKED
        MENUITEM "Bara de &stare",                      ID_VIEW_STATUSBAR, CHECKED
#ifndef _NO_EXTENSIONS
        MENUITEM "Pe tot ecran&ul\tCtrl+Shift+S",       ID_VIEW_FULLSCREEN
#endif
        MENUITEM SEPARATOR
        MENUITEM "&Minimizează la execuție",            504
        MENUITEM "&Salvează configurația la închidere", ID_VIEW_SAVESETTINGS
    }

    POPUP "&Securitate"  {
        MENUITEM "&Acces...",                           605
        MENUITEM "Înre&gistrare...",                    606
        MENUITEM "Pr&oprietar...",                      607
    }

    POPUP "&Fereastră"  {
        MENUITEM "&Fereastră nouă",                     ID_WINDOW_NEW
        MENUITEM "Cascadă\tCtrl+F5",                    ID_WINDOW_CASCADE
        MENUITEM "Mozaic &orizontal",                   ID_WINDOW_TILE_HORZ
        MENUITEM "Mozaic &vertical\tCtrl+F4",           ID_WINDOW_TILE_VERT
#ifndef _NO_EXTENSIONS
        MENUITEM "Aranjează automat",                   ID_WINDOW_AUTOSORT
#endif
        MENUITEM "Aranjează &simbolurile",              ID_WINDOW_ARRANGE
        MENUITEM "Actualiza&re\tF5",                    ID_REFRESH
    }

    POPUP "A&jutor"  {
        MENUITEM "&Subiecte în ajutor...\tF1",          ID_HELP
        MENUITEM "&Căutare în ajutor...\tF1",           ID_HELP
        MENUITEM "&Utilizare ajutor\tF1",               ID_HELP_USING
        MENUITEM SEPARATOR
        MENUITEM "Des&pre Winefile...",                 ID_ABOUT
    }
}

IDD_SELECT_DESTINATION DIALOG FIXED IMPURE 15, 13, 210, 63
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Selectare destinație"
FONT 8, "MS Shell Dlg"
{
    CONTROL         "", 101, "Static", SS_SIMPLE|SS_NOPREFIX, 3, 6, 162, 10
    CONTROL         "Ca&le:", -1, "Static", SS_LEFTNOWORDWRAP|WS_GROUP, 3, 18, 60, 10
    EDITTEXT        201, 3, 29, 134, 12, ES_AUTOHSCROLL
    DEFPUSHBUTTON   "OK", 1, 158, 6, 47, 14
    PUSHBUTTON      "Anulează", 2, 158, 23, 47, 14
    PUSHBUTTON      "Navi&gare", 254, 158, 43, 47, 14
}

IDD_DIALOG_VIEW_TYPE DIALOG DISCARDABLE 15, 13, 161, 97
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "După tipul de fișier"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "&Nume:",-1,7,8,22,10
    EDITTEXT        IDC_VIEW_PATTERN,31,7,63,12,ES_AUTOHSCROLL
    GROUPBOX        "Tip fișier",-1,7,23,87,56
    CONTROL         "&Directoare",IDC_VIEW_TYPE_DIRECTORIES,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,32,70,10
    CONTROL         "&Programe",IDC_VIEW_TYPE_PROGRAMS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,43,70,10
    CONTROL         "Docu&mente",IDC_VIEW_TYPE_DOCUMENTS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,54,70,10
    CONTROL         "&Alte fișiere",IDC_VIEW_TYPE_OTHERS,"Button",
                    BS_AUTOCHECKBOX | WS_TABSTOP,13,65,70,10
    CONTROL         "Arată fișierele ascunse/de &sistem",IDC_VIEW_TYPE_HIDDEN,
                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,126,9
    DEFPUSHBUTTON   "OK",IDOK,104,7,50,14
    PUSHBUTTON      "Anulează",IDCANCEL,104,24,50,14
END

IDD_DIALOG_PROPERTIES DIALOG DISCARDABLE  0, 0, 248, 215
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Proprietăți pentru %s"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,191,7,50,14
    PUSHBUTTON      "Anulează",IDCANCEL,191,29,50,14
    LTEXT           "Nume &fișier:",-1,7,7,59,9
    EDITTEXT        IDC_STATIC_PROP_FILENAME,71,7,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Calea com&pletă:",-1,7,18,59,9
    EDITTEXT        IDC_STATIC_PROP_PATH,71,18,120,9, ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Ultima modificare:",-1,7,29,59,9
    EDITTEXT        IDC_STATIC_PROP_LASTCHANGE,71,29,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Versiune:",-1,7,40,59,9
    EDITTEXT        IDC_STATIC_PROP_VERSION,71,40,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Drep&t de autor:",-1,7,51,59,9
    EDITTEXT        IDC_STATIC_PROP_COPYRIGHT,71,51,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    LTEXT           "Dimensiune:",-1,7,62,59,9
    EDITTEXT        IDC_STATIC_PROP_SIZE,71,62,120,9,ES_READONLY | NOT WS_BORDER | WS_TABSTOP
    GROUPBOX        "Atribute",-1,7,79,158,46
    CONTROL         "Doar citi&re",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,91,68,9
    CONTROL         "Ascu&ns",IDC_CHECK_HIDDEN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,91,68,9
    CONTROL         "&Arhivă",IDC_CHECK_ARCHIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,101,68,9
    CONTROL         "&Sistem",IDC_CHECK_SYSTEM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,92,101,68,9
    CONTROL         "&Comprimat",IDC_CHECK_COMPRESSED,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,17,111,68,9
    GROUPBOX        "Informații despre &versiune",-1,7,129,234,79
    LISTBOX         IDC_LIST_PROP_VERSION_TYPES,13,139,107,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_LIST_PROP_VERSION_VALUES,123,139,111,63,ES_MULTILINE | ES_READONLY | WS_VSCROLL
END


STRINGTABLE
{
    IDS_FONT_SEL_DLG_NAME   "Se aplică opțiunile de font"
    IDS_FONT_SEL_ERROR      "Eroare la selectarea unui nou font."
}

STRINGTABLE
{
    IDS_WINEFILE            "Administrator Wine File"
    IDS_ERROR               "Eroare"
    IDS_ROOT_FS             "director rădăcină"
    IDS_UNIXFS              "director unix"
    IDS_DESKTOP             "Desktop"
    IDS_SHELL               "Shell"
    IDS_TITLEFMT            "%s - %s"
    IDS_NO_IMPL             "Neimplementat încă"
    IDS_WINE_FILE           "Wine File"
}

STRINGTABLE
{
    IDS_COL_NAME            "Nume"
    IDS_COL_SIZE            "Dimensiune"
    IDS_COL_CDATE           "Ultima schimbare de stare (ctime)"
    IDS_COL_ADATE           "Ultima accesare"
    IDS_COL_MDATE           "Ultima modificare"
    IDS_COL_IDX             "Index/Inode"
    IDS_COL_LINKS           "Legături"
    IDS_COL_ATTR            "Atribute"
    IDS_COL_SEC             "Securitate"

    IDS_FREE_SPACE_FMT      "%s din %s liber"
}
