/*
 * HTML Help Serbian resources
 *
 * Copyright 2005 James Hawkins
 * Copyright 2010 Đorđe Vasiljević
 *
 * 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"

#pragma code_page(65001)

LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_CYRILLIC

STRINGTABLE
BEGIN
    IDS_CONTENTS     "&Садржај"
    IDS_INDEX        "&Попис"
    IDS_SEARCH       "&Претрага"
    IDS_FAVORITES    "&Омиљено"
END

STRINGTABLE
BEGIN
    IDTB_EXPAND      "Прикажи"
    IDTB_CONTRACT    "Сакриј"
    IDTB_STOP        "Заустави"
    IDTB_REFRESH     "Освежи"
    IDTB_BACK        "Назад"
    IDTB_HOME        "Почетна"
    IDTB_SYNC        "Усклади"
    IDTB_PRINT       "Штампај"
    IDTB_OPTIONS     "Опције"
    IDTB_FORWARD     "Проследи"
    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       "Прелаз 1"
    IDTB_JUMP2       "Прелаз 2"
    IDTB_CUSTOMIZE   "Прилагоди"
    IDTB_ZOOM        "Увећај"
    IDTB_TOC_NEXT    "IDTB_TOC_NEXT"
    IDTB_TOC_PREV    "IDTB_TOC_PREV"
END

LANGUAGE LANG_SERBIAN, SUBLANG_SERBIAN_LATIN

STRINGTABLE
BEGIN
    IDS_CONTENTS     "&Sadržaj"
    IDS_INDEX        "&Popis"
    IDS_SEARCH       "&Pretraga"
    IDS_FAVORITES    "&Omiljeno"
END

STRINGTABLE
BEGIN
    IDTB_EXPAND      "Prikaži"
    IDTB_CONTRACT    "Sakrij"
    IDTB_STOP        "Zaustavi"
    IDTB_REFRESH     "Osveži"
    IDTB_BACK        "Nazad"
    IDTB_HOME        "Početna"
    IDTB_SYNC        "Uskladi"
    IDTB_PRINT       "Štampaj"
    IDTB_OPTIONS     "Opcije"
    IDTB_FORWARD     "Prosledi"
    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       "Prelaz 1"
    IDTB_JUMP2       "Prelaz 2"
    IDTB_CUSTOMIZE   "Prilagodi"
    IDTB_ZOOM        "Uvećaj"
    IDTB_TOC_NEXT    "IDTB_TOC_NEXT"
    IDTB_TOC_PREV    "IDTB_TOC_PREV"
END
