/*
 * HTML Help resources
 * Slovenian Language Support
 *
 * Copyright 2008 Rok Mandeljc
 *
 * 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
 */

#pragma code_page(65001)

LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT

STRINGTABLE
BEGIN
    IDS_CONTENTS     "&Vsebina"
    IDS_INDEX        "I&ndeks"
    IDS_SEARCH       "&Iskanje"
    IDS_FAVORITES    "&Priljubljene"
END

STRINGTABLE
BEGIN
    IDTB_EXPAND      "Pokaži"
    IDTB_CONTRACT    "Skrij"
    IDTB_STOP        "Ustavi"
    IDTB_REFRESH     "Osveži"
    IDTB_BACK        "Nazaj"
    IDTB_HOME        "Domov"
    IDTB_SYNC        "Sinhroniziraj"
    IDTB_PRINT       "Natisni"
    IDTB_OPTIONS     "Možnosti"
    IDTB_FORWARD     "Naprej"
    IDTB_NOTES       "IDTB_NOTES"
    IDTB_BROWSE_FWD  "IDTB_BROWSE_FWD"
    IDTB_BROWSE_BACK "IDT_BROWSE_BACK"
    IDTB_CONTENTS    "IDTB_CONTENTS"
    IDTB_INDEX       "IDTB_INDEX"
    IDTB_SEARCH      "IDTB_SEARCH"
    IDTB_HISTORY     "IDTB_HISTORY"
    IDTB_FAVORITES   "IDTB_FAVORITES"
    IDTB_JUMP1       "Skok1"
    IDTB_JUMP2       "Skok2"
    IDTB_CUSTOMIZE   "Prilagodi"
    IDTB_ZOOM        "Zoom"
    IDTB_TOC_NEXT    "IDTB_TOC_NEXT"
    IDTB_TOC_PREV    "IDTB_TOC_PREV"
END

#pragma code_page(default)
