/*
 * HTML Help resources
 * Dutch Language Support
 *
 * Copyright 2005 Hans Leidekker
 *
 * 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"

LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL

STRINGTABLE
BEGIN
    IDS_CONTENTS     "&Inhoud"
    IDS_INDEX        "I&ndex"
    IDS_SEARCH       "&Zoeken"
    IDS_FAVORITES    "&Favorieten"
END

STRINGTABLE
BEGIN
    IDTB_EXPAND      "Weergeven"
    IDTB_CONTRACT    "Verbergen"
    IDTB_STOP        "Stop"
    IDTB_REFRESH     "Actualiseren"
    IDTB_BACK        "Terug"
    IDTB_HOME        "Startpagina"
    IDTB_SYNC        "Synchroniseren"
    IDTB_PRINT       "Afdrukken"
    IDTB_OPTIONS     "Instellingen"
    IDTB_FORWARD     "Vooruit"
    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       "Sprong1"
    IDTB_JUMP2       "Sprong2"
    IDTB_CUSTOMIZE   "Aanpassen"
    IDTB_ZOOM        "Vergroten"
    IDTB_TOC_NEXT    "IDTB_TOC_NEXT"
    IDTB_TOC_PREV    "IDTB_TOC_PREV"
END
