/*
 * cryptdlg dll Lithuanian resources
 *
 * 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
 */

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

LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL

STRINGTABLE DISCARDABLE
{
    IDS_CERT_POLICY "Liudijimo politika"
    IDS_POLICY_ID "Politikos identifikatorius: "
    IDS_POLICY_QUALIFIER_INFO "Politikos kvalifikatoriaus informacija"
    IDS_POLICY_QUALIFIER_ID "Politikos kvalifikatoriaus identifikatorius="
    IDS_CPS "CPS"
    IDS_USER_NOTICE "Naudotojo pranešimas"
    IDS_QUALIFIER "Kvalifikatorius"
    IDS_NOTICE_REF "Pranešimo nuoroda"
    IDS_ORGANIZATION "Organizacija="
    IDS_NOTICE_NUM "Pranešimo numeris="
    IDS_NOTICE_TEXT "Pranešimo tekstas="
}

#pragma code_page(default)
