/*
 * Start
 * Lithuanian Language Support
 *
 * Copyright 2009 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 "resources.h"

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

LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL

STRINGTABLE DISCARDABLE
{
STRING_USAGE, "Paleisti programą ar atverti dokumentą programoje, paprastai naudojamoje failams su tuo prievardžiu.\n\
Naudojimas:\n\
start [parametrai] programos_failo_vardas [...]\n\
start [parametrai] dokumento_failo_vardas\n\
\n\
Parametrai:\n\
/M[inimized] Paleisti programą suskleistą.\n\
/MAX[imized] Paleisti programą išskleistą.\n\
/R[estored]  Paleisti programą normaliai (nei suskleistą, nei išskleistą).\n\
/W[ait]      Laukti kol paleista programa baigs darbą, tada išeiti su jos išėjimo kodu.\n\
/Unix        Naudoti Unix failo vardą ir paleisti failą kaip windows naršyklėje.\n\
/L           Parodyti galutinio naudotojo licenciją.\n\
\n\
start.exe versija 0.2 (C) 2003, Dan Kegel\n\
Start pateikiama BE JOKIŲ GARANTIJŲ; detales rasite paleidę su /L parametru.\n\
Ši programa yra laisva programinė įranga; galite ją platinti\n\
tam tikromis sąlygomis; paleiskite „start /L“ išsamiai informacijai gauti.\n\
"

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

STRING_EXECFAIL, "Nepavyko paleisti programos arba nėra programos susietos su nurodytu failu.\nShellExecuteEx nepavyko"

STRING_UNIXFAIL "Nepavyko paversti nurodyto Unix failo pavadinimo į DOS failo pavadinimą."
}
