/*
 * IP configuration utility
 * Ukrainian language support
 *
 * Copyright 2010 Andrew Nguyen
 * Copyright 2010 Igor Paliychuk
 *
 * 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 "ipconfig.h"

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

LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT

STRINGTABLE
{
    STRING_USAGE, "Використання: ipconfig [ /? | /all ]\n"
    STRING_INVALID_CMDLINE, "Помилка: Вказані невідомі чи невірні параметри командного рядка\n"
    STRING_ADAPTER_FRIENDLY, "%s адаптер %s\n"
    STRING_ETHERNET, "Ethernet"
    STRING_UNKNOWN, "Невідомо"
    STRING_CONN_DNS_SUFFIX, "DNS-суфікс підключення"
    STRING_IP_ADDRESS, "IP-адреса"
    STRING_HOSTNAME, "Ім'я хосту"
    STRING_NODE_TYPE, "Тип вузла"
    STRING_BROADCAST, "Передача"
    STRING_PEER_TO_PEER, "Peer-to-peer"
    STRING_MIXED, "Змішаний"
    STRING_HYBRID, "Гібрид"
    STRING_IP_ROUTING, "IP-маршрутизація включена"
    STRING_DESCRIPTION, "Опис"
    STRING_PHYS_ADDR, "Фізична адреса"
    STRING_DHCP_ENABLED, "DHCP ввімкнено"
    STRING_YES, "Так"
    STRING_NO, "Ні"
}
