/*
 * Copyright 2009-2010 Aurimas Fišeras <aurimas@gmail.com>
 *
 * 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_LITHUANIAN, SUBLANG_NEUTRAL

MENU_001 MENU DISCARDABLE
BEGIN
	MENUITEM "&Didelės piktogramos",	FCIDM_SHVIEW_BIGICON
	MENUITEM "&Mažos piktogramos",	FCIDM_SHVIEW_SMALLICON
	MENUITEM "&Sąrašas",			FCIDM_SHVIEW_LISTVIEW
	MENUITEM "&Išsamus",			FCIDM_SHVIEW_REPORTVIEW
END

/*
 shellview background menu
*/
MENU_002 MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  POPUP "&Rodymas"
	  BEGIN
	    MENUITEM "&Didelės piktogramos",	FCIDM_SHVIEW_BIGICON
	    MENUITEM "&Mažos piktogramos",		FCIDM_SHVIEW_SMALLICON
	    MENUITEM "&Sąrašas",				FCIDM_SHVIEW_LISTVIEW
	    MENUITEM "&Išsamus",				FCIDM_SHVIEW_REPORTVIEW
	  END
	  MENUITEM SEPARATOR
	  POPUP "Išdėstyti &piktogramas"
	  BEGIN
	    MENUITEM "Pagal &vardą",	0x30	/* column 0 */
	    MENUITEM "Pagal &tipą",		0x32	/* column 2 */
	    MENUITEM "Pagal d&ydį",		0x31	/* ... */
	    MENUITEM "Pagal &datą",		0x33
	    MENUITEM SEPARATOR
	    MENUITEM "&Automatiškai išdėstyti",	FCIDM_SHVIEW_AUTOARRANGE
	  END
	  MENUITEM "Sulygiuoti piktogramas",	FCIDM_SHVIEW_SNAPTOGRID
	  MENUITEM SEPARATOR
	  MENUITEM "Atnaujinti",		FCIDM_SHVIEW_REFRESH
	  MENUITEM SEPARATOR
	  MENUITEM "Įdėti",		FCIDM_SHVIEW_INSERT
	  MENUITEM "Įdėti kaip nuorodą",	FCIDM_SHVIEW_INSERTLINK
	  MENUITEM SEPARATOR
	  POPUP "Naujas"
	  BEGIN
	    MENUITEM "Naujas &aplankas",	FCIDM_SHVIEW_NEWFOLDER
	    MENUITEM "Nauja &nuoroda",	FCIDM_SHVIEW_NEWLINK
	    MENUITEM SEPARATOR
	  END
	  MENUITEM SEPARATOR
	  MENUITEM "Savybės",	FCIDM_SHVIEW_PROPERTIES
	END
END

/*
 shellview item menu
*/
MENU_SHV_FILE MENU DISCARDABLE
BEGIN
	POPUP ""
	BEGIN
	  MENUITEM "Iš&rinkti"		FCIDM_SHVIEW_OPEN
	  MENUITEM "Naršy&ti",		FCIDM_SHVIEW_EXPLORE
	  MENUITEM "&Atverti",		FCIDM_SHVIEW_OPEN
	  MENUITEM SEPARATOR
	  MENUITEM "&Iškirpti",		FCIDM_SHVIEW_CUT
	  MENUITEM "&Kopijuoti",		FCIDM_SHVIEW_COPY
	  MENUITEM SEPARATOR
	  MENUITEM "Sukurti &nuorodą",	FCIDM_SHVIEW_CREATELINK
	  MENUITEM "&Šalinti",		FCIDM_SHVIEW_DELETE
	  MENUITEM "&Pervadinti",		FCIDM_SHVIEW_RENAME
	  MENUITEM SEPARATOR
	  MENUITEM "&Savybės",	FCIDM_SHVIEW_PROPERTIES
	END
END

MENU_CPANEL MENU
BEGIN
    POPUP "&Failas"
    BEGIN
        MENUITEM SEPARATOR
        MENUITEM "&Išeiti", IDM_CPANEL_EXIT
    END

    POPUP "&Rodymas"
    BEGIN
        MENUITEM "&Didelės piktogramos", FCIDM_SHVIEW_BIGICON
        MENUITEM "&Mažos piktogramos", FCIDM_SHVIEW_SMALLICON
        MENUITEM "&Sąrašas", FCIDM_SHVIEW_LISTVIEW
        MENUITEM "&Išsamus", FCIDM_SHVIEW_REPORTVIEW
    END

    POPUP "&Žinynas"
    BEGIN
        MENUITEM "&Apie valdymo skydelį...", 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 "Parinkti aplanką"
FONT 8, "MS Shell Dlg"
{
 DEFPUSHBUTTON "Gerai", 1, 80, 176, 50, 12, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Atsisakyti", 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 "Parinkti aplanką"
FONT 8, "MS Shell Dlg"
{
 LTEXT "", IDD_TITLE, 10, 8, 198, 24
 LTEXT "", IDD_STATUS, 10, 25, 198, 12
 LTEXT "Aplankas:", 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 "&Kurti naują aplanką", IDD_MAKENEWFOLDER, 12, 174, 70, 14, WS_GROUP | WS_TABSTOP
 DEFPUSHBUTTON "Gerai", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP
 PUSHBUTTON "Atsisakyti", 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 "Pranešimas"
FONT 8, "MS Shell Dlg"
{
    DEFPUSHBUTTON "&Taip", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "Taip &visiems", IDD_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Ne", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP
    PUSHBUTTON "&Atsisakyti", 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 "Apie %s"
FONT 10, "MS Shell Dlg"
{
 DEFPUSHBUTTON "Gerai", IDOK, 153, 133, 60, 12, WS_TABSTOP
 PUSHBUTTON "Wine &licencija...", 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 "Paleista su %s", IDC_ABOUT_STATIC_TEXT3, 42, 34, 170, 10
 LTEXT "Prie Wine kūrimo prisidėjo:", 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 "", IDC_RUNDLG_ICON, 7, 11, 18, 20, WS_VISIBLE
 LTEXT "Įrašykite programos pavadinimą, aplanką, dokumentą ar interneto resursą ir Wine jums jį atvers.", IDC_RUNDLG_DESCRIPTION, 36, 11, 182, 18
 LTEXT "&Atverti:", 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 "Gerai", IDOK, 62, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "Atsisakyti", IDCANCEL, 116, 63, 50, 14, WS_TABSTOP
 PUSHBUTTON "&Parinkti...", IDC_RUNDLG_BROWSE, 170, 63, 50, 14, WS_TABSTOP
}

STRINGTABLE
{
        /* columns in the shellview */
	IDS_SHV_COLUMN1		"Failas"
	IDS_SHV_COLUMN2		"Dydis"
	IDS_SHV_COLUMN3		"Tipas"
	IDS_SHV_COLUMN4		"Modifikuotas"
	IDS_SHV_COLUMN5		"Atributai"
	IDS_SHV_COLUMN6		"Dydis"
	IDS_SHV_COLUMN7		"Prieinamas dydis"
	IDS_SHV_COLUMN8		"Vardas"
	IDS_SHV_COLUMN9		"Komentarai"
	IDS_SHV_COLUMN10	"Savininkas"
	IDS_SHV_COLUMN11	"Grupė"
	IDS_SHV_COLUMN_DELFROM	"Originali vieta"
	IDS_SHV_COLUMN_DELDATE	"Pašalinimo data"
	IDS_SHV_COL_DOCS	"Dokumentai"
	IDS_SHV_COL_STATUS	"Būsena"
	IDS_SHV_COL_LOCATION	"Vieta"
	IDS_SHV_COL_MODEL	"Modelis"

        /* special folders */
	IDS_DESKTOP		"Darbalaukis"
	IDS_MYCOMPUTER		"Kompiuteris"
	IDS_RECYCLEBIN_FOLDER_NAME      "Šiukšlinė"
	IDS_CONTROLPANEL	"Valdymo skydelis"

        /* context menus */
	IDS_VIEW_LARGE		"&Didelės piktogramos"
	IDS_VIEW_SMALL		"&Mažos piktogramos"
	IDS_VIEW_LIST		"&Sąrašas"
	IDS_VIEW_DETAILS	"&Išsamus"
	IDS_SELECT		"Iš&rinkti"
	IDS_OPEN		"&Atverti"

	IDS_CREATEFOLDER_DENIED "Nepavyko sukurti naujo aplanko: neužtenka teisių."
	IDS_CREATEFOLDER_CAPTION "Klaida kuriant naują aplanką"
	IDS_DELETEITEM_CAPTION "Patvirtinti failo šalinimą"
	IDS_DELETEFOLDER_CAPTION "Patvirtinti aplanko šalinimą"
	IDS_DELETEITEM_TEXT "Ar tikrai norite pašalinti „%1“?"
	IDS_DELETEMULTIPLE_TEXT "Ar tikrai norite pašalinti šiuos %1 elementus?"
	IDS_DELETESELECTED_TEXT "Ar tikrai norite pašalinti išrinktus elementus?"
	IDS_TRASHITEM_TEXT "Ar tikrai norite perkelti „%1“ į šiukšlinę?"
	IDS_TRASHFOLDER_TEXT "Ar tikrai norite perkelti „%1“ ir jo turinį į šiukšlinę?"
	IDS_TRASHMULTIPLE_TEXT "Ar tikrai norite perkelti šiuos %1 elementus į šiukšlinę?"
	IDS_CANTTRASH_TEXT "Šis elementas „%1“ negali būti perkeltas į šiukšlinę. Ar norite jį pašalinti vietoj šiukšlinės?"
	IDS_OVERWRITEFILE_TEXT "Šis aplankas jau turi failą vardu „%1“.\n\nAr norite jį pakeisti?"
	IDS_OVERWRITEFILE_CAPTION "Patvirtinti failo perrašymą"
	IDS_OVERWRITEFOLDER_TEXT "Šis aplankas jau turi aplanką vardu „%1“.\n\n"\
	    "Jei failai paskirties aplanke yra pavadinti tais pačiais vardais kaip ir failai\n"\
	    "išrinktame aplanke, tai jie bus pakeisti. Ar vis dar norite perkelti ar kopijuoti\n"\
	    "šį aplanką?"

        /* message box strings */
        IDS_RESTART_TITLE       "Paleisti iš naujo"
        IDS_RESTART_PROMPT      "Ar norite simuliuoti Windows paleidimą iš naujo?"
        IDS_SHUTDOWN_TITLE      "Stabdyti"
        IDS_SHUTDOWN_PROMPT     "Ar norite sustabdyti šią Wine sesiją?"

        /* Run File dialog */
        IDS_RUNDLG_ERROR           "Nepavyko parodyti failo paleidimo dialogo lango (vidinė klaida)"
        IDS_RUNDLG_BROWSE_ERROR    "Nepavyko parodyti parinkimo dialogo lango (vidinė klaida)"
        IDS_RUNDLG_BROWSE_CAPTION  "Parinkti"
        IDS_RUNDLG_BROWSE_FILTER   "Vykdomieji failai\0*.exe\0Visi failai\0*.*\0\0"

        /* shell folder path default values */
	IDS_PROGRAMS                "Pradžios meniu\\Programos"
	IDS_PERSONAL                "Dokumentai"
	IDS_FAVORITES               "Adresynas"
	IDS_STARTUP                 "Pradžios meniu\\Programos\\Paleidimas"
	IDS_RECENT                  "Paskiausi"
	IDS_SENDTO                  "Siųsti"
	IDS_STARTMENU               "Pradžios meniu"
	IDS_MYMUSIC                 "Muzika"
	IDS_MYVIDEO                 "Vaizdai"
	IDS_DESKTOPDIRECTORY        "Darbalaukis"
	IDS_NETHOOD                 "Tinkle"
	IDS_TEMPLATES               "Šablonai"
	IDS_APPDATA                 "Programų duomenys"
	IDS_PRINTHOOD               "Spausdintuvai"
	IDS_LOCAL_APPDATA           "Vietinės nuostatos\\Programų duomenys"
	IDS_INTERNET_CACHE          "Vietinės nuostatos\\Laikini interneto failai"
	IDS_COOKIES                 "Slapukai"
	IDS_HISTORY                 "Vietinės nuostatos\\Istorija"
	IDS_PROGRAM_FILES           "Programų failai"
	IDS_MYPICTURES              "Paveikslai"
	IDS_PROGRAM_FILES_COMMON    "Programų failai\\Bendrieji failai"
	IDS_COMMON_DOCUMENTS        "Dokumentai"
	IDS_ADMINTOOLS              "Pradžios meniu\\Programos\\Administravimo įrankiai"
	IDS_COMMON_MUSIC            "Dokumentai\\Muzika"
	IDS_COMMON_PICTURES         "Dokumentai\\Paveikslai"
	IDS_COMMON_VIDEO            "Dokumentai\\Vaizdai"
	IDS_CDBURN_AREA             "Vietinės nuostatos\\Programų duomenys\\Microsoft\\CD rašymas"

	IDS_NEWFOLDER		"Naujas aplankas"

	IDS_CPANEL_TITLE            "Wine valdymo skydelis"
	IDS_CPANEL_NAME             "Pavadinimas"
	IDS_CPANEL_DESCRIPTION      "Aprašas"

	IDS_SHLEXEC_NOASSOC         "Jokia Windows programa nėra sukonfigūruota atidaryti šio tipo failų."
}

STRINGTABLE
{
IDS_LICENSE_CAPTION,            "Wine licencija"
IDS_LICENSE,
"Wine yra laisva programinė įranga; galite ją platinti ir/ar \
modifikuoti GNU laisvosios bendrosios viešosios licencijos (LGPL) \
sąlygomis, kurios paskelbtos Laisvosios programinės įrangos fondo \
(FSF); 2.1-osios arba (Jūsų pasirinkimu) bet kurios vėlesnės \
licencijos versijos sąlygomis.\n\n\
Wine yra platinama tikintis, kad ji bus naudinga, bet BE JOKIŲ \
GARANTIJŲ; net be numanomų PERKAMUMO ar TINKAMUMO KONKREČIAI \
UŽDUOČIAI garantijų. Išsamią informaciją rasite GNU laisvojoje \
bendrojoje viešojoje licencijoje.\n\n\
Jūs turėjote gauti GNU laisvosios bendrosios viešosios licencijos \
kopiją kartu su Wine; jei negavote, rašykite adresu \
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, \
Boston, MA 02110-1301, USA."
}
