/*
 * Swedish resources for oleacc
 *
 * Copyright 2010 Anders Jonsson
 *
 * 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 "oleacc.h"

#pragma code_page(65001)

LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL

STRINGTABLE
{
    0 "okänt objekt" /* undocumented */
    ROLE_SYSTEM_TITLEBAR    "titelrad"
    ROLE_SYSTEM_MENUBAR     "menyrad"
    ROLE_SYSTEM_SCROLLBAR   "rullningslist"
    ROLE_SYSTEM_GRIP        "grepp"
    ROLE_SYSTEM_SOUND       "ljud"
    ROLE_SYSTEM_CURSOR      "muspekare"
    ROLE_SYSTEM_CARET       "markör"
    ROLE_SYSTEM_ALERT       "varning"
    ROLE_SYSTEM_WINDOW      "fönster"
    ROLE_SYSTEM_CLIENT      "klient"
    ROLE_SYSTEM_MENUPOPUP   "popupmeny"
    ROLE_SYSTEM_MENUITEM    "menypost"
    ROLE_SYSTEM_TOOLTIP     "tooltip"
    ROLE_SYSTEM_APPLICATION "program"
    ROLE_SYSTEM_DOCUMENT    "dokument"
    ROLE_SYSTEM_PANE        "ruta"
    ROLE_SYSTEM_CHART       "diagram"
    ROLE_SYSTEM_DIALOG      "dialog"
    ROLE_SYSTEM_BORDER      "kant"
    ROLE_SYSTEM_GROUPING    "gruppering"
    ROLE_SYSTEM_SEPARATOR   "avskiljare"
    ROLE_SYSTEM_TOOLBAR     "verktygsrad"
    ROLE_SYSTEM_STATUSBAR   "statusrad"
    ROLE_SYSTEM_TABLE        "tabell"
    ROLE_SYSTEM_COLUMNHEADER "kolumnhuvud"
    ROLE_SYSTEM_ROWHEADER    "radhuvud"
    ROLE_SYSTEM_COLUMN       "kolumn"
    ROLE_SYSTEM_ROW          "rad"
    ROLE_SYSTEM_CELL         "cell"
    ROLE_SYSTEM_LINK         "länk"
    ROLE_SYSTEM_HELPBALLOON  "hjälpballong"
    ROLE_SYSTEM_CHARACTER    "tecken"
    ROLE_SYSTEM_LIST         "lista"
    ROLE_SYSTEM_LISTITEM     "listelement"
    ROLE_SYSTEM_OUTLINE      "disposition"
    ROLE_SYSTEM_OUTLINEITEM  "dispositionspost"
    ROLE_SYSTEM_PAGETAB      "bladflik"
    ROLE_SYSTEM_PROPERTYPAGE "egenskapssida"
    ROLE_SYSTEM_INDICATOR    "indikator"
    ROLE_SYSTEM_GRAPHIC      "grafik"
    ROLE_SYSTEM_STATICTEXT   "statisk text"
    ROLE_SYSTEM_TEXT         "text"
    ROLE_SYSTEM_PUSHBUTTON   "tryckknapp"
    ROLE_SYSTEM_CHECKBUTTON  "markeringsknapp"
    ROLE_SYSTEM_RADIOBUTTON  "envalsknapp"
    ROLE_SYSTEM_COMBOBOX     "kombinationsruta"
    ROLE_SYSTEM_DROPLIST     "listruta"
    ROLE_SYSTEM_PROGRESSBAR  "förloppsmätare"
    ROLE_SYSTEM_DIAL         "mätare"
    ROLE_SYSTEM_HOTKEYFIELD  "snabbknappsfält"
    ROLE_SYSTEM_SLIDER       "glidreglage"
    ROLE_SYSTEM_SPINBUTTON   "snurrknapp"
    ROLE_SYSTEM_DIAGRAM      "diagram"
    ROLE_SYSTEM_ANIMATION    "animation"
    ROLE_SYSTEM_EQUATION     "ekvation"
    ROLE_SYSTEM_BUTTONDROPDOWN "listruteknapp"
    ROLE_SYSTEM_BUTTONMENU   "menyknapp"
    ROLE_SYSTEM_BUTTONDROPDOWNGRID "listruteknapp (rutnät)"
    ROLE_SYSTEM_WHITESPACE   "blanktecken"
    ROLE_SYSTEM_PAGETABLIST  "bladflikslista"
    ROLE_SYSTEM_CLOCK        "klocka"
    ROLE_SYSTEM_SPLITBUTTON  "delad knapp"
    ROLE_SYSTEM_IPADDRESS    "IP-adress"
    ROLE_SYSTEM_OUTLINEBUTTON "dispositionsknapp"
}
